Zip文件破解器python 3只会在文本文件末尾使用密码
Posted
技术标签:
【中文标题】Zip文件破解器python 3只会在文本文件末尾使用密码【英文标题】:Zip file cracker python 3 will only use password at end of text file 【发布时间】:2014-03-26 02:03:32 【问题描述】:我几天来一直在寻找和捣乱,试图在 python 3 中制作一个 zip 饼干。
我有一个名为 passwords.txt 的文本文件,其中包含我的密码。并且每个密码都在一个新行中。 (行与行之间没有空格)
例如:
password
house
qwerty
脚本运行正常,并将在我的 zip 中提取文件。 (zip密码是qwerty)。但是如果我像这样重新排列我的列表:
password
qwerty
house
脚本不会破解 zip。如果将“qwerty”作为列表中的唯一密码,它将正常工作,如果“qwerty”是列表中的最后一个密码,它将正常工作。对我来说,就像使用正确密码后脚本没有终止一样。我需要朝着正确的方向努力。
这是我的(简单)代码:(我不是专家)
import zipfile
with open('passwords.txt') as passwordList:
myZip = zipfile.ZipFile('test.zip')
for line in passwordList:
try:
myZip.setpassword(pwd=line.encode())
myZip.extractall()
except:
pass
myZip.close()
我们将不胜感激。
【问题讨论】:
我猜......你从文件中读取的行有行尾字符,所以它们实际上不是正确的密码。最后一行没有行尾字符,因为它后面没有空行,所以当密码在那个位置时它可以工作。作为循环中的第一件事,在try
上方添加:line = line.strip()
以从行的开头/结尾删除空格/换行符。
【参考方案1】:
使用line.strip(b'\n')
而不是line.strip()
从您的line
变量中删除\n
,因为密码本身可能有空格。
您也可以将pwd
直接传递给extractall
。
import zipfile
zip_file = zipfile.ZipFile('test.zip')
output_verbose = 2 # increase that for long password list
with open('passwords.txt', 'rb') as password_list:
for index, line in enumerate(password_list):
try:
pwd = line.strip(b'\n')
zip_file.extractall(pwd=pwd)
except RuntimeError:
if index % output_verbose == 0:
print('. The word not matched.'.format(index + 1, pwd))
else:
print('. Wow ! found the password: '.format(index + 1, pwd))
break
zip_file.close()
演示:
1. The b'password' word not matched.
2. Wow ! found the password: b'qwerty'
【讨论】:
【参考方案2】:justin = '''
+=======================================+
|..........Zip Cracker v 1.........|
+---------------------------------------+
|#Author: JUSTIN |
|#Contact: www.fb.com/rootx |
+=======================================+
|..........ZIP Cracker v 1.........|
+---------------------------------------+
'''
print justin
import zipfile
z1 = raw_input("Enter Your Zip File:")
z = zipfile.ZipFile(z1)
pf1=str(raw_input( "Enter password list: "))
pf=open(pf1,'r')
for x in pf.readlines():
password = x.strip('\n')
try:
z.extractall(pwd=password)
print "pass=" +password+ "\n"
exit(0)
except Exception,e:
pass
【讨论】:
欢迎来到 SO 并感谢您发布答案。请考虑在您的代码中添加上下文。另外,请正确格式化您的代码。有关格式化的帮助,请参阅 this page以上是关于Zip文件破解器python 3只会在文本文件末尾使用密码的主要内容,如果未能解决你的问题,请参考以下文章