Python 3解压破解工具只在文本文件末尾使用密码

1 投票
2 回答
3151 浏览
提问于 2025-04-17 23:55

我这几天一直在找方法,想用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 个回答

0

在编程中,有时候我们需要在代码里使用一些特殊的符号或者字符,这些符号可能会影响程序的运行。比如说,如果你在字符串里用到了引号,程序可能会搞不清楚你是想表示字符串的开始还是结束。这时候,我们就需要用到“转义字符”。

转义字符就是告诉程序:“嘿,这个符号我不是要结束字符串的,而是要把它当作普通字符来处理。”在很多编程语言中,转义字符通常是一个反斜杠(\)。比如,如果你想在字符串里放一个引号,你可以这样写:\"。这样程序就知道这个引号是字符串的一部分,而不是结束符号。

除了引号,转义字符还可以用来表示其他一些特殊字符,比如换行符(\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
3

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'

撰写回答