Nhận toàn quyền truy cập vào Kiểm tra thâm nhập Python hiệu quả và hơn 60 nghìn tiêu đề khác, với bản dùng thử miễn phí 10 ngày của O'Reilly
Ngoài ra còn có các sự kiện trực tuyến trực tiếp, nội dung tương tác, tài liệu chuẩn bị chứng nhận, v.v.
Giả sử bạn được giao nhiệm vụ điều tra máy tính của kẻ tình nghi và bạn tìm thấy một tệp zip có vẻ rất hữu ích nhưng được bảo vệ bằng mật khẩu. Trong hướng dẫn này, bạn sẽ viết một tập lệnh Python đơn giản để cố bẻ khóa mật khẩu của tệp zip bằng tấn công từ điển
Lưu ý rằng có nhiều công cụ thuận tiện hơn để bẻ khóa các tệp zip trong Linux, chẳng hạn như John the Ripper hoặc fcrackzip [hướng dẫn này chỉ cho bạn cách sử dụng chúng]. Mục tiêu của hướng dẫn này là làm chính xác điều tương tự nhưng với ngôn ngữ lập trình Python
Lấy. Xây dựng 24 công cụ và tập lệnh hack đạo đức bằng sách điện tử Python
Chúng tôi sẽ sử dụng mô-đun zipfile tích hợp sẵn của Python và thư viện tqdm của bên thứ ba để in nhanh các thanh tiến trình
pip3 install tqdm
Như đã đề cập trước đó, chúng tôi sẽ sử dụng tấn công từ điển, có nghĩa là chúng tôi sẽ cần một danh sách từ để bắt buộc tệp zip được bảo vệ bằng mật khẩu này. Đối với hướng dẫn này, chúng tôi sẽ sử dụng danh sách từ big rockyou [với kích thước khoảng 133MB]. Nếu bạn đang dùng Kali Linux, bạn có thể tìm thấy nó trong thư mục /usr/share/wordlists/rockyou. txt. đường dẫn gz. Nếu không, bạn có thể tải xuống tại đây
Bạn cũng có thể sử dụng công cụ crunch để tạo danh sách từ tùy chỉnh của mình khi bạn chỉ định chính xác
Có liên quan. Cách bẻ khóa tệp PDF bằng Python
Mở một tệp Python mới và làm theo
import zipfile
from tqdm import tqdm
Hãy chỉ định tệp zip mục tiêu của chúng tôi cùng với đường dẫn danh sách từ
# the password list path you want to use, must be available in the current directory
wordlist = "rockyou.txt"
# the zip file you want to crack its password
zip_file = "secret.zip"
Để đọc tệp zip trong Python, chúng tôi sử dụng zipfile. Lớp ZipFile có các phương thức để mở, đọc, ghi, đóng, liệt kê và giải nén các tệp zip [chúng tôi sẽ chỉ sử dụng phương thức extractall[] ở đây]
# initialize the Zip File object
zip_file = zipfile.ZipFile[zip_file]
# count the number of words in this wordlist
n_words = len[list[open[wordlist, "rb"]]]
# print the total number of passwords
print["Total passwords to test:", n_words]
Lưu ý rằng chúng tôi đọc toàn bộ danh sách từ và sau đó chỉ lấy số lượng mật khẩu để kiểm tra. Điều này có thể hữu ích cho tqdm để chúng tôi có thể theo dõi chúng tôi đang ở đâu trong quá trình cưỡng bức. Đây là phần còn lại của mã
with open[wordlist, "rb"] as wordlist:
for word in tqdm[wordlist, total=n_words, unit="word"]:
try:
zip_file.extractall[pwd=word.strip[]]
except:
continue
else:
print["[+] Password found:", word.decode[].strip[]]
exit[0]
print["[!] Password not found, try other wordlist."]
Có liên quan. Xây dựng 24 công cụ và tập lệnh hack đạo đức bằng sách điện tử Python
Vì danh sách từ bây giờ là trình tạo Python, nên việc sử dụng tqdm sẽ không cung cấp nhiều thông tin về tiến trình. Đó là lý do tại sao tôi đã giới thiệu tham số tổng để cung cấp cho tqdm cái nhìn sâu sắc về số lượng từ trong tệp
Chúng tôi mở danh sách từ và đọc từng từ một, đồng thời thử dùng nó làm mật khẩu để giải nén tệp zip; . Kết quả là chúng ta sử dụng phương thức strip[] để loại bỏ các khoảng trắng
Phương thức extractall[] sẽ đưa ra một ngoại lệ bất cứ khi nào mật khẩu không chính xác, vì vậy chúng ta có thể chuyển sang mật khẩu tiếp theo, trong trường hợp đó. Nếu không, chúng tôi in đúng mật khẩu và thoát khỏi chương trình
Tôi đã chỉnh sửa mã một chút để chấp nhận các tệp zip và wordlist từ các đối số dòng lệnh. Kiểm tra nó ở đây
Kiểm tra kết quả của tôi
root@rockikz:~# gunzip /usr/share/wordlists/rockyou.txt.gz
root@rockikz:~# python3 zip_cracker.py secret.zip /usr/share/wordlists/rockyou.txt
Total passwords to test: 14344395
3%|▉ | 435977/14344395 [01:15