目录

一、简介

概述:

二、示例

示例:

优化

提高性能

任意性

注:

测试方法:


一、简介

概述:

编写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文件口令破解机相关推荐

  1. 【Python黑帽子】——简易的ZIP文件密码破解器

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:一切为了她 座右铭:不要让时代的悲哀成为你的悲哀 专研方向:网络安全,数据结构 每日emo:突然感觉也没什么好emo的了,仿佛时间已经将 ...

  2. Python脚本完美解决Linux环境解压.zip文件乱码问题

    1.vi uzip(文件名) 2.复制以下Python程序 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # uzip.py 4 5 impo ...

  3. Python zipfile:高效处理 ZIP 文件(翻译)

    zipfile 可以很方便地读取.写入.提取zip文件.如果在日常工作中经常需要将某些文件打包到zip,不妨试试用它实现一定程度的自动化办公.另外 Python 的 Zip imports 也是一个有 ...

  4. python批量解压文件,python批量解压zip文件的方法

    python怎样压缩和解压缩ZIP文件 说明 python使用zipfile模块来压缩和解压zip文件 才能最好于孤独中培养:品格最好在世界的汹涌波涛中形成. 代码 import os,os.path ...

  5. 第八课-第二讲 08_02_bash脚本编程之七 case语句及脚本选项进阶

    第八课-第二讲 08_02_bash脚本编程之七 case语句及脚本选项进阶 一. 面向过程 控制结构 顺序结构 选择结构 循环结构 选择结构 if语句 单分支,双分支,多分支 case 语句 cas ...

  6. 【Python脚本进阶】2.3、利用FTP与Web批量抓“ 肉机”(终)

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  7. python爬虫进阶,突破反脚本机制(反爬机制)

    前言 相信大家在做爬虫或者自动化脚本时或多或少的都能遇到反爬机制(或者说反脚本机制),最常见的反脚本机制都是在登录时进行验证,据本人大量实战(帮粉丝写脚本)发现,基本上只要有点水平的网站都会有反脚本的 ...

  8. arcgis python脚本实现从界面选择输入输出_arcgis python脚本实现从界面选择输入输出_ArcGIS Python编程案例(2)-使用ArcPy编写脚本......

    本章将涉及以下案例: 使用ArcGIS Python窗体 访问ArcPy 从脚本中执行工具 使用ArcGIS桌面软件帮助系统 使用变量存储数据 访问ArcPy中的模块 引言 地理处理任务往往是耗时且重 ...

  9. python脚本迁移数据库_Django 数据库迁移脚本

    django修改模型后更新数据库 当django改变模型过后,需要重新更新数据库,更新方法如下 比如app的名字是rango python manage.py makemigrations rango ...

最新文章

  1. windows下使用lighttpd+php(fastcgi)+mysql
  2. Javag工程师成神之路(2019正式版)
  3. geany搭建python环境_第一章:搭建Python的开发环境
  4. java数据结构博客园_Java数据结构
  5. php curl http2,用php做ios http2推送服务遇到的坑
  6. java.util.Scanner简单应用
  7. SpringSecurity SecurityContextHolderSecurityContext
  8. 【Thinkphp5+Ueditor】Thinkphp5中用Ueditor无法获取内容的问题
  9. Spring Boot 日志
  10. Spring整合Struts2,Hibernate的xml方式
  11. 【PANet】《Path Aggregation Network for Instance Segmentation》
  12. java左右斜杠的相互转化
  13. Python 获取LOL所有英雄的传说
  14. 自我职业生涯规划的三步走
  15. python \xe6\xb5解码
  16. 用计算机写作文主题,用计算机写作文教学设计.doc
  17. Warning: preg_match(): Compilation failed: PCRE does not support
  18. 人脸识别系统_人脸注册
  19. Android设备唯一码的获取
  20. Python UnitTest接口自动化实战

热门文章

  1. 查询两个表(表1,表2)这两个表有相同的ID
  2. java数组的下界_我的世界Java版1.16 20w12a 发布 添加下界重生锚
  3. Jlink无法使用解决方法
  4. 妹子,你这是要风干它吗?
  5. 研一(下) 新学期新规划
  6. 不断在创业路上寻找突破,他开店多家,没想到公司还上市了
  7. 聚焦2022阿里云直播峰会,洞察直播技术创新应用未来
  8. 漫谈数据结构系列(二)之千里姻缘一“线”牵
  9. PS第五课--钢笔工具
  10. Hadoop学习-HDFS