暴力穷举zip、rar压缩文件的密码
生成密码的方式类似与时钟,末尾遍历完了第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压缩文件的密码的更多相关文章
- Mac上zip,rar,tar文件命令解压和压缩
经常遇到在windowns上的压缩文件,在mac上解压出现问题,特意总结了下在Terminal里常用命令的方式解压和压缩文件 1.zip压缩文件 zip命令的参数很多,可以利用"zip -- ...
- mac系统中怎么打开rar/zip等压缩文件?
平常使用mac的同学们,可能经常要接受下别人发过来的rar文件,可惜的时mac os x系统默认是不能打开rar文件(不知道以后苹果会支持rar不?),那么我们该如何去解圧rar文件,接下来我将介绍. ...
- 利用itertools生成密码字典,多线程撞库破解rar压缩文件密码
脚本功能: 利用itertools生成密码字典(迭代器形式) 多线程并发从密码字典中取出密码进行验证 验证成功后把密码写入文件中保存 #!/usr/bin/env python # -*- codin ...
- Dream------Java--ant zip 对压缩文件进行指定位置的修改
ant zip 对压缩文件进行指定位置的修改 实现功能: 对2中文件进行修改: 需求: 在XX文件中,从二进制流的200字节位置开始,往后的30位字节数量.插入一个值 由于涉及到公司内部,不方便写太多 ...
- 关于在linux系统环境下解压rar压缩文件
如果在zip压缩文件,可以使有unzip来进行解压.可以直接使用yum进行下载. 但如果是rar类型压缩文件,使用yum就可能无法直接安装. 要到网址:https://www.rarlab.com/d ...
- C# 解压RAR压缩文件
此方法适用于C盘windows文件夹中有WinRAR.exe文件 /// 解压文件(不带密码) RAR压缩程序 返回解压出来的文件数量 /// </summary> /// <par ...
- linux zip,tar压缩文件夹 忽略 .git 文件夾
linux zip 忽略 .git 文件夾 # zip 命令 zip -r bitvolution.zip bitvolution -x *.git* # tar命令压缩文件夹忽略 .git文件夹 t ...
- 使用java API进行zip递归压缩文件夹以及解压
一.概述 在本篇文章中,给大家介绍一下如何将文件进行zip压缩以及如何对zip包解压.所有这些都是使用Java提供的核心库java.util.zip来实现的. 二.压缩文件 首先我们来学习一个简单的例 ...
- 使用zip.js压缩文件和解压文件
zip.js官方网站为:https://stuk.github.io/jszip/ 在此说明,下面的例子基本上来自官方示例,大家可以做参考,官方示例地址为:https://stuk.github.io ...
随机推荐
- poj3264 Balanced Lineup(树状数组)
题目传送门 Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 64655 Accepted: ...
- 棋盘问题(DFS)& Dungeon Master (BFS)
1棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的 ...
- 48.Course Schedule(课程安排)
Level: Medium 题目描述: There are a total of n courses you have to take, labeled from 0 to n-1. Some c ...
- 对php引用的理解
/** * 引用是符号表别名 */ // $a与$b指向同一个变量 $a = &$b; // 定义函数foo,参数为引用类型:&$var,无函数体 function foo(& ...
- MAC如何与linux服务器传递文件
scp命令可以从本地拷贝文件到Linux服务器,也可以将Linux服务器文件下载到本地 将远程/root/articaleFetch/dist目录下文件和文件夹拷贝到dist文件夹 scp root@ ...
- linux随笔-04
管道符.重定向与环境变量&vim编辑器 输入输出重定向 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入. 标准输出重定向(STDOUT,文件描述符为 ...
- #Ubuntu16.0.4 LTS 安装RabbitMQ
1.ubuntu下安装配置rabbitmq-server服务器环境:ubuntu16.0.4(向下兼容14.0.4)软件版本:RabbitMQ 3.7.5 .Erlang 20.1.7参考文档:htt ...
- 在 Visual Studio 中使用 Q# 进行量子编程
1 量子计算机与量子编程 1.1 量子计算机 Quantum computing is computing using quantum-mechanical phenomena, such as su ...
- jQuery实现网页放大镜功能
京东等电商网站中可以对商品进行放大观察,本文要实现的就是模仿这个放大镜功能,大致效果如下图所示: 简要说明实现思路: 1.原图窗口与放大窗口插入的是同一个图片,不过原图窗口的图片要适当缩小,放大窗口图 ...
- Linux-PAM认证
在新主机更改用户密码的时候,经常会出现"passwd: Have exhausted maximum number of retries for service"的报错 [root ...