生成密码的方式类似与时钟,末尾遍历完了第k位所有的字符,就让第k位的前一位到下一位字符,第k位回到第0个字符。

  对python还不太熟悉,效率比较低,但是能破解简单的密码。

import zipfile
#密码可能有的字符
testSetstr = "w.abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$%&'()*+,-/:;<=>?@[\]^_`{|}~"
# testSetstr = "0123456789"
#
testSetLen = len(testSetstr) #字符中长度
maxtestLen = 5 #要猜的密码的最大长度,时间耗时越久。
filename = 'test.zip' #要解压的文件名
filedir = 'data/' #解压路径
def testPassword(teststr):
r = zipfile.is_zipfile(filename)
if r:
fz = zipfile.ZipFile(filename,'r')
try:
for file in fz.namelist():
fz.extract(file,filedir,pwd=str.encode(teststr))
print("密码是",teststr)
return True
except:
pass
fz.close()
else:
print('不是zip文件,不能解压')
return True
return False
def test(n):
alist = [0] * n
while(alist[0] < testSetLen):
testlist = []
for i in range(n):
testlist.append(testSetstr[alist[i]])
teststr = "".join(testlist)
if(testPassword(teststr)):
return True
alist[n - 1] += 1
for i in range(n-1,0,-1):
if(alist[i] > testSetLen - 1):
alist[i] = 0
alist[i - 1] += 1
if(i - 1 == 0):
print("进度 ",100.0 * alist[i - 1] / testSetLen ,"%")
else:
break
return False
def main():
for i in range(maxtestLen):
print("正在测试长度为",i + 1,"的密码。")
if(test(i + 1)):
return
main()

对于rar文件也类似,但是我还没跑出来……太慢了:

from unrar import rarfile
#密码可能有的字符
testSetstr = "w.abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$%&'()*+,-/:;<=>?@[\]^_`{|}~"
# testSetstr = "0123456789"
#
testSetLen = len(testSetstr) #字符中长度
maxtestLen = 20 #要猜的密码的最大长度,时间耗时越久。
filename = 'xxxxx.rar' #要解压的文件名
filedir = 'data/' #解压路径
rar = rarfile.RarFile(filename)
def testPassword(teststr):
try:
rar.extractall(filedir,pwd=teststr)
print(filename,"的密码是",teststr)
return True
except:
pass
return False
def test(n):
alist = [0] * n
while(alist[0] < testSetLen):
testlist = []
for i in range(n):
testlist.append(testSetstr[alist[i]])
teststr = "".join(testlist)
if(testPassword(teststr)):
return True
alist[n - 1] += 1
for i in range(n-1,0,-1):
if(alist[i] > testSetLen - 1):
alist[i] = 0
alist[i - 1] += 1
if(i - 1 == 0):
print("进度 ",100.0 * alist[i - 1] / testSetLen ,"%")
else:
break
return False
def main():
for i in range(maxtestLen):
print("正在测试长度为",i + 1,"的密码。")
if(test(i + 1)):
return
main()

暴力穷举zip、rar压缩文件的密码的更多相关文章

  1. Mac上zip,rar,tar文件命令解压和压缩

    经常遇到在windowns上的压缩文件,在mac上解压出现问题,特意总结了下在Terminal里常用命令的方式解压和压缩文件 1.zip压缩文件 zip命令的参数很多,可以利用"zip -- ...

  2. mac系统中怎么打开rar/zip等压缩文件?

    平常使用mac的同学们,可能经常要接受下别人发过来的rar文件,可惜的时mac os x系统默认是不能打开rar文件(不知道以后苹果会支持rar不?),那么我们该如何去解圧rar文件,接下来我将介绍. ...

  3. 利用itertools生成密码字典,多线程撞库破解rar压缩文件密码

    脚本功能: 利用itertools生成密码字典(迭代器形式) 多线程并发从密码字典中取出密码进行验证 验证成功后把密码写入文件中保存 #!/usr/bin/env python # -*- codin ...

  4. Dream------Java--ant zip 对压缩文件进行指定位置的修改

    ant zip 对压缩文件进行指定位置的修改 实现功能: 对2中文件进行修改: 需求: 在XX文件中,从二进制流的200字节位置开始,往后的30位字节数量.插入一个值 由于涉及到公司内部,不方便写太多 ...

  5. 关于在linux系统环境下解压rar压缩文件

    如果在zip压缩文件,可以使有unzip来进行解压.可以直接使用yum进行下载. 但如果是rar类型压缩文件,使用yum就可能无法直接安装. 要到网址:https://www.rarlab.com/d ...

  6. C# 解压RAR压缩文件

    此方法适用于C盘windows文件夹中有WinRAR.exe文件 /// 解压文件(不带密码) RAR压缩程序 返回解压出来的文件数量 /// </summary> /// <par ...

  7. linux zip,tar压缩文件夹 忽略 .git 文件夾

    linux zip 忽略 .git 文件夾 # zip 命令 zip -r bitvolution.zip bitvolution -x *.git* # tar命令压缩文件夹忽略 .git文件夹 t ...

  8. 使用java API进行zip递归压缩文件夹以及解压

    一.概述 在本篇文章中,给大家介绍一下如何将文件进行zip压缩以及如何对zip包解压.所有这些都是使用Java提供的核心库java.util.zip来实现的. 二.压缩文件 首先我们来学习一个简单的例 ...

  9. 使用zip.js压缩文件和解压文件

    zip.js官方网站为:https://stuk.github.io/jszip/ 在此说明,下面的例子基本上来自官方示例,大家可以做参考,官方示例地址为:https://stuk.github.io ...

随机推荐

  1. laravel打印查询的sql

    public function __construct( ){ $log = DB :: listen( function( $sql ){ echo $sql; } ); }

  2. 微服务-技术专区-监控专区(Skywalking与Pinpoint) - 监控对比分析

    由于公司目前有200多微服务,微服务之间的调用关系错综复杂,调用关系人工维护基本不可能实现,需要调研一套全链路追踪方案,初步调研之后选取了skywalking和pinpoint进行对比; 选取skyw ...

  3. 43.Word Break(看字符串是否由词典中的单词组成)

    Level:   Medium 题目描述: Given a non-empty string s and a dictionary wordDict containing a list of non- ...

  4. MVC5使用SignalR进行双向通信 (1)

    @a604572782 2015-08-10 09:01 字数 2133 阅读 1245 MVC5使用SignalR进行双向通信 (1) 配置SignalR 在NuGet中通过 install-pac ...

  5. hashlib加密模块,加密方式:(MD5,sha级别)

    三,hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...

  6. Redis-HA

    Redis-HA部署 链接:https://pan.baidu.com/s/1cj5H9snQXqWaC0od1mUuig 提取码:jdqf 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...

  7. Web 请求之--性能相关

    本博客代码运行环境 python : Python 3.7.1rc1 version pip : pip 19.1.1 version Scrapy: scrapy 1.6.0 version asy ...

  8. input file 上传文件类型控制

    文件类型 accept *.3gpp audio/3gpp, video/3gpp.ac3 audio/ac3.asf allpication/vnd.ms-asf.au audio/basic.cs ...

  9. shell 判断字符串是否包含另一个字符串

    1.使用grep s1="abcdefg" s2="bcd" result=$(echo $s1 | grep "${s2}") if [[ ...

  10. qt学习(二):启动画面

    打开一个软件,都会有启动画面. 现在去体验如何实现启动画面:输入图,装载,延时,下一张主部件图 在main.Cpp中实现启动时桌面图片. #include <QtGui/QApplication ...