Cách Bẻ Khóa Mật Khẩu File Zip đơn giản với Python
Như các bạn đã biết, định dạng .zip là 1 trong những định dạng nén phổ biến nhất trên PC hay kể cả mobile. Việc crack password file zip cũng thực sự không hề khó, chỉ là việc hơi mất thời gian đối với các mật khẩu phức tạp, trong bài này mình sẽ hướng dẫn sử dụng kĩ thuật Brute Force để crack password một file zip.
1. Các thư viện cần dùng
Thư viện zipfile để xử lí file Zip.
Thư viện itertools để tạo các chuỗi password.
Thư viện time để tính thời gian (cái này mình đưa vào để tính xem mất bao lâu thôi chứ nó không bắt buộc ).
Thư viện itertools để tạo các chuỗi password.
Thư viện time để tính thời gian (cái này mình đưa vào để tính xem mất bao lâu thôi chứ nó không bắt buộc ).
2. Coding
Đầu tiên ta tạo một biến lưu giá trị của tất cả các kí tự trên bàn phím:
CHARACTER ='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()'
Tiếp tục ta viết hàm Brute và sử dụng hàm
extractall trong module zipfile để thử giải nén file zip với password được tạo: def Brute(zipFile,password):
# Thử giải nén file zip
try:
zipFile.extractall(pwd=password.encode())
print ('Password:',password)
return True
except:
pass
Tiếp theo ta có hàm
main: def main():
# File zip cần crack
zipFile = zipfile.ZipFile('filename.zip')
length = 1
start_time = time.clock()
# Lặp cho đến khi tìm ra pass
while True:
# Tạo list pass
listPass = product(CHARACTER, repeat=length)
for tryPass in listPass:
password = ''.join(tryPass)
# Nếu password đúng thì in thời gian và return
if Brute(zipFile,password):
print('Time',time.clock() - start_time,'s')
return
# Nếu list pass sai, tăng độ dài kí tự trong list lên 1
length += 1
Function
product trong module itertools sẽ có nhiệm vụ tạo ra list pass với chiều dài chữ trong biến length. Sau đó hàm Brute sẽ có nhiệm vụ thử giải nén pass trong list này, nếu như sai thì tạo lại list pass với độ dài các chữ tăng thêm 1, cứ thế cho đến khi tìm ra password.
Toàn bộ code:
import zipfile
from itertools import product
import time
CHARACTER = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()'
def Brute(zipFile,password):
# Thử giải nén file zip
try:
zipFile.extractall(pwd=password.encode())
print ('Password:',password)
return True
except:
pass
def main():
# File zip cần crack
zipFile = zipfile.ZipFile('filename.zip')
length = 1
start_time = time.clock()
# Lặp cho đến khi tìm ra pass
while True:
# Tạo list pass
listPass = product(CHARACTER, repeat=length)
for tryPass in listPass:
password = ''.join(tryPass)
# Nếu password đúng thì in thời gian và return
if Brute(zipFile,password):
print('Time',time.clock() - start_time,'s')
return
# Nếu list pass sai, tăng độ dài kí tự trong list lên 1
length += 1
if __name__ == '__main__':
main()
3. Thử nghiệm
Mình tạo một file zip tên là
Takizawa Laura.zip với pass là jav
Chạy thử và kết quả:
Ban đầu, list pass được tạo với length = 1 sẽ có dạng [a, b, c,...] sau đó không được tiếp tục tăng length = 2 nên list trở thành [aa, ab, ac,...] cũng không được nốt, length = 3 thì [aaa, aab,..., jav,...] , tuyệt vời =))
4. Lời kết
Đây là một cách crack file zip đơn giản sử dụng kĩ thuật Brute Force, ưu điểm là luôn tìm ra password, nhưng nhược điểm là phải mất kha khá thời gian với các mật khẩu dài dòng. Tuy nhiên các bạn có thể tăng tốc bằng cách sử dụng module
).
Thread (mình cũng định thêm vào nhưng hơi lười với cả cái này chắc ai cũng biết rồi nên thôi, viết mỗi cái lõi cũng được
Cách Bẻ Khóa Mật Khẩu File Zip đơn giản với Python
Reviewed by ADMIN
on
3:49 PM
Rating:



No comments: