像我之前的许多人一样,我丢失了7zip密码。实际上它和我以前手机里的其他东西一起被摧毁了。我99%肯定我知道大部分密码所以我认为它可以轻易破解它所以我编写了显示的代码并且它有效,但是非常慢。在6.1秒内尝试21次以获得示例。瓶颈显然是sp.wait()但是我试图绕过的所有东西都不起作用。我想这是有道理的,因为Python在完成之前无法了解该过程。我在subprocess.Popen()上尝试了很多try / except的变种无济于事。请注意,7zip会将该文件的0KB版本放入密码错误的文件夹中,但如果使用正确的密码不生成其他错误,则该文件夹必须为空。代码中的虚构密码。使用7zip v9.2在Python 3.5.1中使用Win 7。任何帮助是极大的赞赏。谢谢,乔。
import os
import time
import itertools
import subprocess
start_time = time.time()
cmdline = r"C:\Program Files\7-Zip\7z e C:\archive.7z -oC:\temp -p"
path = r"C:\temp"
unknown_part='$oz'
known_part='MiStup!dB'
attempts = 0
for password_length in range(2, 4):
for guess in itertools.product(unknown_part, repeat=password_length):
try:
os.remove(r'C:\temp\extractedfile.txt')
except:
None
attempts += 1
guess = ''.join(guess)
newline = cmdline + known_part + guess
sp = subprocess.Popen(newline, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
sp.wait()
if sp.returncode == 0:
print("Password is %s, Found in %i attempts in %s seconds" % (known_part+guess, attempts, time.time()-start_time))
break