自学内容网 自学内容网

python:zip文件(加密了)之瞎猜密码

有一个百度网盘下载的 zip文件(加密了),想不花钱就知道密码。

编写 zip_mima.py  如下

# -*- coding: utf-8 -*-
import os
import sys
import zipfile
from datetime import datetime

def try_password(filename, password):
    try:
        with zipfile.ZipFile(filename) as zf:
            zf.extractall(pwd=password.encode('utf-8'))
            print(f"Password found: {password}")
            return True
    except Exception as e:
        #print(f"Incorrect password: {password}")
        return False

filename = "程序员数学:用Python学透线性代数和微积分_.zip"
if not os.path.exists(filename):
    print(f"Error: {filename} not found.")
    sys.exit(1)

time0 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f"time0: {time0}")
# 密码可以是一个单词列表,或者使用更复杂的字典攻击
# 尝试常见密码
with open('password.lst','r') as fp:
    for passwd in fp:
        if try_password(filename, passwd.rstrip()):
            break

time1 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f"time1: {time1}")
passwords = []
fp = open('dictionary.txt','r')
for line in fp:
    passwords.append(line.rstrip())
fp.close()     
n = 0
# 尝试字典密码
for passwd in passwords:
    n +=1
    if n %100000 ==0:
        time1 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        print(f"{n}: {time1}")
    if try_password(filename, passwd):
        break
print(n)
time2 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f"time2: {time2}")

运行  python zip_mima.py 

如果安装了【压缩包密码解除软件】,那么在C:\Users\用户名\AppData\Local\压缩包密码解除软件\dictionary\ 可以找到 dictionary.txt 约120万行。
在C:\Users\用户名\AppData\Local\压缩包密码解除软件\crack\ 有常见密码 password.lst
如果有网友尝试出该zip包密码,请在评论区回复。

参阅:程序员数学:用Python学透线性代数和微积分
aye4


原文地址:https://blog.csdn.net/belldeep/article/details/142727529

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!