暴力破解zip压缩包(零基础也可以学会破解zip)
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

对于那些没有做过Python编程的人来说,它可能有点冗长。
当然,对于那些还没有接触过Python的小编在这里准备了一份Python学习资料,希望对大家有所帮助,而一份Python黑客教程大家可以私企小编“01”去获取!
废话少说,我们开始谈正事吧。
2.1准备基础材料
在/home/ziptest/目录中,我创建了两个文件test.zip,这是一个密码为456789的zip包。
txt是一个简单配置几个密码的字典文件。
让我们打开开发工具并开始编写测试代码。
2.2 ZIPFILE
在python中操作zip文件的最简单方法是使用zipfile模块,该模块可用于确定文件是否被压缩,创建和解压缩文件,以及获取有关zipfile的元数据信息。您可以使用python的help方法来查看如何使用该模块。
让我们首先关注ZipFile类。
这个类用于打开、读取、修改和解压缩zip文件。我们想操作一个zip文件,第一步是初始化ZipFile实例。接下来打开准备好的text.zip文件。
import zipfile
zFile=zipfile.ZipFile('/HOME/TEST.ZIP');
我们只传递了一个路径参数,正如您从帮助中看到的,接下来的三个参数都有默认值,因此我们将在这里使用默认值。
让我们看一下ZipFile类的extractall方法。
extractall方法提取压缩包的所有内容。Path为解压路径,members为要解压的文件,PWD为密码。
现在我们可以测试文件解压缩。
import zipfile
zFile=zipfile.ZipFile('/HOME/ZIPTEST/TEST.ZIP');
zFile.extractall('/HOME/',pwd='456789');
运行脚本。
如果密码正确,文件将被正常解压缩。如果密码不正确怎么办?我们在密码中输入了错误的密码。
import zipfile
zFile=zipfile.ZipFile('/HOME/ZIPTEST/TEST.ZIP');
zFile.extractall(path='/HOME/ZIPTEST',pwd='4567890');
程序将抛出“错误密码”异常。
我们可以通过捕捉异常来测试多个密码。
2.3读取字典文件
要在Python中打开文件,请使用open方法,这是一个内置方法。查看Open帮助以获取参数说明。
open方法返回一个文件对象,通过该对象我们可以读取文件的内容。让我们在代码中进行测试。
import zipfile
passFile=open('/HOME/ZIPTEST/DICT.TXT');
for line in passFile.readlines():
password=line.strip('\N');
print(password);
运行结果如下:
让我们使用读取密码强制执行zip文件。
import zipfile
zFile=zipfile.ZipFile('/HOME/ZIPTEST/TEST.ZIP');
passFile=open('/HOME/ZIPTEST/DICT.TXT');
for line in passFile.readlines():
password=line.strip('\N');
try:
zFile.extractall(path='/HOME/ZIPTEST',pwd=password);
print('PASSWORD IS:'+password);
exit(0);
except:
pass;
在上面的代码中,我们使用try - except来捕获异常,如果密码不正确,程序将跳过执行。当密码正确时打印密码并终止程序。运行结果如下:
到目前为止,我们的脚本已经能够对zip文件进行暴力破解,您可以看到它只有大约十几行代码。为了改进应用程序的可用性,让我们重构脚本以利用功能分区。
2.4重构,逐个函数划分
首先定义一个extractFile函数,该函数接受三个参数:一个zipfile对象、要提取的目标路径、密码,如果解密成功,则返回密码。
def extractFile(toPath,zFile,password):
try:
zFile.extractall(path=toPath,pwd=password);
return password;
except Exception,e:
return;
现在让我们声明另一个主方法。
def main():
zFile=zipfile.ZipFile('/HOME/ZIPTEST/TEST.ZIP');
passFile=open('/HOME/ZIP/TEST/DICT.TXT');
for line in passFile.readlines():
password=line.strip('\N');
guess=extractFile('/HOME/',zFile,password);
if guess:
print('SCUCESS'+password);
exit(0);
在main方法中,我们首先初始化zipfile对象,然后打开字典文件,遍历密码,并传递extractFile方法调用。
在分离这两个方法之后,我们需要在程序的入口点调用main方法。完整代码如下:
import zipfile
def extractFile(toPath,zFile,password):
try:
zFile.extractall(path=toPath,pwd=password);
print('SCUCESS'+password);
return password;
except Exception,e:
return;
def main():
zFile=zipfile.ZipFile('/HOME/ZIPTEST/TEST.ZIP');
passFile=open('/HOME/ZIPTEST/DICT.TXT');
for line in passFile.readlines():
password=line.strip('\N');
guess=extractFile('/HOME/',zFile,password);
if guess:
print('SCUCESS'+password);
exit(0);
if __name__=='__MAIN__':
main();
这使得代码更加清晰,但是当我们更改zip和dictionary文件时,我们仍然需要更改代码,这很不方便。正常的程序应该能够传递参数。好的,让我们介绍一下optparse库。
2.5 OPTPARSE
Python有两个内置模块用于处理命令行参数:
一个是getopt,也在《Deep in python》这本书中提到,它只是处理命令行参数;
另一个是optparse,它功能强大且易于使用,可以轻松生成标准的、兼容Unix/posix的命令行描述。
首先,介绍optparse模块,然后强制两个参数,zip文件名和字典文件名。先看一下代码:
def main():
parser=optparse.OptionParser('usage%prog '+\
'-f zipfile -d dictFile');
parser.add_option('-f',dest='zname',type='string',help='specify zip file');
parser.add_option('-d',dest='dname',type='string',help='specify dict file');
(options,args)=parser.parse_args();
if(options.zname==None)|(options.dname==None):
print parse.usage;
exixt(0);
else:
zname=options.zname;
dname=options.dname;
zFile=zipfile.ZipFile(zname);
passFile=open(dname);
for line in passFile.readlines():
password=line.strip('\n');
guess=extractFile('/home/',zFile,password);
if guess:
print('scucess'+password);
exit(0);
首先初始化OptionParser对象,然后添加两个选项——“-f”和“-d”。然后,当程序运行时,通过parse_args方法获得输入参数。如果该参数为空,则打印使用方法并退出程序。
让我们使用终端测试该程序。
无参数:
输入参数:
2.6总结
程序本身没有什么困难,但是通过本入门教程,您可以体验Python编程的基础知识,了解如何查看帮助文档、如何介绍模块、初始化对象、操作zip文件、打开本地文件以及设置命令行参数。
本文主要介绍了关于暴力破解zip压缩包(零基础也可以学会破解zip)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1464063.html