【Python脚本进阶】1.3、第二个脚本:Zip文件口令破解机
目录
一、简介
概述:
二、示例
示例:
优化
提高性能
任意性
注:
测试方法:
一、简介
概述:
编写Zip文件口令破解机要学习zipfile 库的使用方法
打开Python解释器, 我们用help('zipfile')命令进一步了解这个库, 并重点看一下ZipFile 类中的extractall()方法。这个类和这个方法对我们编程破解有口令保护的Zip文件是很有用的。extractall()方法用可选参数指定密码的方式
二、示例
示例:
编写一个脚本知道口令情况,测试Zip 文件库的用法
导库, 用带有口令保护的Zip文件的文件名, 实例化一个新的ZipFile类。要解压这个Zip文件, 我们使用extractall()方法, 并在可选参数pwd上填入口令
import zipfile zFile = zipfile.ZipFile("1.zip") zFile.extractall(pwd="secret")
分析错误密码会是什么情况,来捕获和处理异常代码
import zipfile zFile = zipfile.ZipFile("1.zip") try:zFile.extractall(pwd="wrong") except Exception as e:print(e)
可以用因口令不正确而抛出的异常,来测试字典文件中是否有Zip 文件的口令。
实例化一个ZipFile 类, 打开字典文件, 遍历并测试字典中的每个单词,如extractall()函数的执行没有出错, 则打印一条消息, 输出正确的口令。如果extractall()函数抛出口令错误, 就忽略这个异常, 并继续测试字典中的下一个口令
import zipfile zFile = zipfile.ZipFile('1.zip') passFile = open('dietionary.txt') for line in passFile.readlines():password = line.strip('\n')try:zFile.extractall(pwd=password)print('Password = ' + password + '\n')exit(0)except Exception as e:pass
优化
不再是线性执行的程序。将程序模块化成分离函数,用函数模块化脚本
import zipfile def extractFile(zFile, password):try:zFile.extractall(pwd=password)return passwordexcept Exception as e:return edef main():zFile = zipfile.ZipFile('1.zip')passFile = open('dictionary.txt')for line in passFile.readlines():password = line.strip('\n')guess = extractFile(zFile, password)if guess:print('Password = ' + password + '\n')exit(0)if __name__ == '__main__':main()
提高性能
利用线程同时测试多个口令, 而不是只能逐个测试词库中的单词。对词库中的每个单词, 都会生成一个新的线程去测试它。
import zipfile from threading import Thread def extractFile(zFile, password):try:zFile.extractall(pwd=password)print('Found password ' + password + '\n')except:passdef main():zFile = zipfile.ZipFile('1.zip')passFile = open('dictionary.txt')for line in passFile.readlines():password = line.strip('\n')t = Thread(target=extractFile, args=(zFile, password))t.start()if __name__ == '__main__':main()
任意性
用户可以指定要破解的Zip 文件的文件名和字典文件的文件名。 需要导入optparse库,是用于解析下面脚本的标志和可选参数的。在zipfile-cracker脚本中,我们将添加两个强制性flags一zip文件名和字库名
import zipfile import optparse from threading import Threaddef extractFile(zFile, password):try:zFile.extractall(pwd=password)print('Found password ' + password + '\n')except:passdef main():parser = optparse.OptionParser("usage%prog" + "-f <zipfile> -d <dictionary>")parser.add_option('-f', dest='znarne', type='string', help='specify zip file')parser.add_option('-d', dest='dnarne', type='string', help='specify dictionary file')(options, args) = parser.parse_args()if (options.zname == None) | (options.dnarne == None):print(parser.usage)exit(0)else:zname = options.znamedname = options.dnamezFile = zipfile.ZipFile(zname)passFile = open(dname)for line in passFile.readlines():password = line.strip('\n')t = Thread(target=extractFile, args=(zFile, password))t.start()if __name__ == '__main__':main()
注:
1、OptionParser是python中用来处理命令行的模块,在我们使用python进行流程化开发中必要的工具
2、add_option
3、args)= parser.parse_args()属性给与args实例: 把parser中设置的所有"add_argument"给返回到args子类实例当中, 那么parser中增加的属性内容都会在args实例中,使用即可
测试方法:
Python 脚本.py -f 文件.zip -d 字典.txt
【Python脚本进阶】1.3、第二个脚本:Zip文件口令破解机相关推荐
- 【Python黑帽子】——简易的ZIP文件密码破解器
作者名:Demo不是emo 主页面链接:主页传送门 创作初心:一切为了她 座右铭:不要让时代的悲哀成为你的悲哀 专研方向:网络安全,数据结构 每日emo:突然感觉也没什么好emo的了,仿佛时间已经将 ...
- Python脚本完美解决Linux环境解压.zip文件乱码问题
1.vi uzip(文件名) 2.复制以下Python程序 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # uzip.py 4 5 impo ...
- Python zipfile:高效处理 ZIP 文件(翻译)
zipfile 可以很方便地读取.写入.提取zip文件.如果在日常工作中经常需要将某些文件打包到zip,不妨试试用它实现一定程度的自动化办公.另外 Python 的 Zip imports 也是一个有 ...
- python批量解压文件,python批量解压zip文件的方法
python怎样压缩和解压缩ZIP文件 说明 python使用zipfile模块来压缩和解压zip文件 才能最好于孤独中培养:品格最好在世界的汹涌波涛中形成. 代码 import os,os.path ...
- 第八课-第二讲 08_02_bash脚本编程之七 case语句及脚本选项进阶
第八课-第二讲 08_02_bash脚本编程之七 case语句及脚本选项进阶 一. 面向过程 控制结构 顺序结构 选择结构 循环结构 选择结构 if语句 单分支,双分支,多分支 case 语句 cas ...
- 【Python脚本进阶】2.3、利用FTP与Web批量抓“ 肉机”(终)
前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...
- python爬虫进阶,突破反脚本机制(反爬机制)
前言 相信大家在做爬虫或者自动化脚本时或多或少的都能遇到反爬机制(或者说反脚本机制),最常见的反脚本机制都是在登录时进行验证,据本人大量实战(帮粉丝写脚本)发现,基本上只要有点水平的网站都会有反脚本的 ...
- arcgis python脚本实现从界面选择输入输出_arcgis python脚本实现从界面选择输入输出_ArcGIS Python编程案例(2)-使用ArcPy编写脚本......
本章将涉及以下案例: 使用ArcGIS Python窗体 访问ArcPy 从脚本中执行工具 使用ArcGIS桌面软件帮助系统 使用变量存储数据 访问ArcPy中的模块 引言 地理处理任务往往是耗时且重 ...
- python脚本迁移数据库_Django 数据库迁移脚本
django修改模型后更新数据库 当django改变模型过后,需要重新更新数据库,更新方法如下 比如app的名字是rango python manage.py makemigrations rango ...
最新文章
- windows下使用lighttpd+php(fastcgi)+mysql
- Javag工程师成神之路(2019正式版)
- geany搭建python环境_第一章:搭建Python的开发环境
- java数据结构博客园_Java数据结构
- php curl http2,用php做ios http2推送服务遇到的坑
- java.util.Scanner简单应用
- SpringSecurity SecurityContextHolderSecurityContext
- 【Thinkphp5+Ueditor】Thinkphp5中用Ueditor无法获取内容的问题
- Spring Boot 日志
- Spring整合Struts2,Hibernate的xml方式
- 【PANet】《Path Aggregation Network for Instance Segmentation》
- java左右斜杠的相互转化
- Python 获取LOL所有英雄的传说
- 自我职业生涯规划的三步走
- python \xe6\xb5解码
- 用计算机写作文主题,用计算机写作文教学设计.doc
- Warning: preg_match(): Compilation failed: PCRE does not support
- 人脸识别系统_人脸注册
- Android设备唯一码的获取
- Python UnitTest接口自动化实战