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
    
    

Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.