Python 3解压破解工具只在文本文件末尾使用密码
我这几天一直在找方法,想用Python 3写一个解压缩密码的程序。
我有一个文本文件,里面存着我的密码,叫做passwords.txt,每个密码都在新的一行上。(行与行之间没有空格)
比如:
password
house
qwerty
这个脚本运行得不错,可以成功解压我压缩包里的文件。(压缩包的密码是qwerty)。但是如果我把密码列表重新排列成这样:
password
qwerty
house
这个脚本就无法解开压缩包了。如果列表里只有'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()
任何帮助都会很感激。
2 个回答
在编程中,有时候我们需要在代码里使用一些特殊的符号或者字符,这些符号可能会影响程序的运行。比如说,如果你在字符串里用到了引号,程序可能会搞不清楚你是想表示字符串的开始还是结束。这时候,我们就需要用到“转义字符”。
转义字符就是告诉程序:“嘿,这个符号我不是要结束字符串的,而是要把它当作普通字符来处理。”在很多编程语言中,转义字符通常是一个反斜杠(\)。比如,如果你想在字符串里放一个引号,你可以这样写:\"。这样程序就知道这个引号是字符串的一部分,而不是结束符号。
除了引号,转义字符还可以用来表示其他一些特殊字符,比如换行符(\n)或者制表符(\t)。这些字符在代码中有特定的功能,使用转义字符可以让你在字符串中正确地使用它们。
总之,转义字符就是帮助我们在代码中正确使用特殊符号的工具,让程序能够理解我们的意图,而不会产生错误。
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
用 line.strip(b'\n')
来去掉你变量 line
中的 \n
,而不是用 line.strip()
,因为密码周围可能会有空格。
另外,你也可以直接把 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'