Zip-File Password Cracker


  • administrators

    Bài viết của tác giả hoadanang từ diễn đàn cũ chuyển sang.

    • Sử dụng một số hàm cơ bản trong thư viện zipfile của python
    • Cách sử dụng Thread đơn giản trong python.

    Ý tưởng chính ( và rất đơn giản :D) của script này như sau:

    • Tạo 1 file zip được bảo vệ bởi mật khẩu.
    • Có file dictionary.txt chứa các chuỗi ký tự có thể là mật khẩu, mỗi chuỗi ký tự nằm trên một dòng.
    • Lần lượt sử dụng dữ liệu trong file dictionary.txt để giải nén dùng hàm extractall(), nếu đúng thì in ra màn hình mật khẩu tìm được.

    Thực hiện:

    • Tạo file 1.zip có mật khẩu vietnaminfo
    root@agent1 [~/py]# zip -P vietnaminfo 1.zip 1.txt 2.txt
    root@agent1 [~/py]# ll
    total 92K
    drwxr-xr-x  2 root root 4.0K May  6 21:00 ./
    drwxr-x--- 16 root root 4.0K May  6 20:58 ../
    -rw-r--r--  1 root root  318 May  6 21:00 1.zip
    
    • File dictionary.txt
    root@agent1 [~/py]# cat dictionary.txt
    abc
    abc@
    abc@123
    21345
    123123
    abcdef
    dantri
    python
    vietnam
    cham
    info
    abc@0510
    vietnaminfo
    
    • Đoạn script dò mật khẩu
    #!/usr/local/bin/python2.7
    import zipfile
     
     
    def extractFile(zFile,password):
            try:
                    zFile.extractall(pwd=password)
                    print '[+] Found password '+password +'\n'
            except:
                    pass
     
    def main():
            zFile = zipfile.ZipFile('1.zip')
            passFile = open('dictionary.txt')
            for line in passFile.readlines():
                    password = line.strip('\n')
                    guess = extractFile(zFile,password)
                    if guess:
    print '[+] Password = ' + password + '\n'
    exit(0)
     
    if __name__ == '__main__':
            main()
    
    • Đối với mật khẩu dài, file dictionary.txt nhiều dữ liệu nên script cần chạy nhiều lần mới có thể dò ra vì mỗi lần chỉ thử 1 dòng. Để tăng tốc độ ta sử dụng thư viên Thread trong python, nó sẽ tạo các threads cho phép thử cùng lúc làm nhiều tác vụ hơn ( threads là gì thì chắc các bác cũng nắm hết rồi, cái này dành cho newbie như em đọc cho dễ hiểu). Đoạn code sẽ trở thành như sau:
    #!/usr/local/bin/python2.7
    import zipfile
    from threading import Thread
     
    def extractFile(zFile,password):
            try:
                    zFile.extractall(pwd=password)
                    print '[+] Found password '+password +'\n'
            except:
                    pass
     
    def main():
            zFile = zipfile.ZipFile('1.zip')
            passFile = open('dictionary.txt')
            for line in passFile.readlines():
                    password = line.strip('\n')
                    t = Thread(target=extractFile, args=(zFile,password))
                    t.start()
     
    if __name__ == '__main__':
            main()
    
    • Aha em đã tìm ra mật khẩu rồi nhé
    root@agent1] ./zip.py
    
    [+] Found password vietnaminfo
    
    

Log in to reply
 

Looks like your connection to Cộng đồng Python Việt Nam was lost, please wait while we try to reconnect.