生成密码的方式类似与时钟,末尾遍历完了第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. Timus 1712. Cipher Grille 题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  2. 【转】在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection

    首先这是动态ip配置成功的结果 接下来切换到root用户来配置静态的 按照静态ip的配置方法配置好文件后(具体过程这里就不多加说明) 然后保存退出 当我们重启网卡的时候问题来了(因为本人有点强迫症,多 ...

  3. Resultset获取行数和列数

    在Java中,获得ResultSet的总行数的方法有以下几种. 第一种:利用ResultSet的getRow方法来获得ResultSet的总行数 Statement stmt = con.create ...

  4. k8s的存储卷

    存储卷查看:kubectl explain pods.spec.volumes 一.简单的存储方式 1)2个容器之间共享存储..(删除则数据消失) apiVersion: v1 kind: Pod m ...

  5. kubernetes容器集群部署Flannel网络

    Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来. VXLAN:将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头 ...

  6. 命令分析nginx访问日志的用法

    awk分析日志常用高级使用命令方法 分析访问日志(Nginx为例) 日志格式: '$remote_addr - $remote_user [$time_local] "$request&qu ...

  7. CDHkafka脚本

    启动客户端的命令 /opt/cloudera/parcels/KAFKA--/bin/kafka-console-producer --broker-list hadoop102:9092 --top ...

  8. Go(二)函数

    函数是一等公民 与其他主要编程语言的差异 1.可以有多个返回值 2.所有参数都是值传递 slice.map.channel会有传引用是错觉,如切片背后是数组,是一个数据结构,里面包含了指向对应数组的指 ...

  9. cocos2D-X 显示中文

    { 将所在的cpp文件改为utf-8 无签名格式再编译 //但,治标不治本 }

  10. Python--模块之time、random、os、hashlib

    今天开始模块. 首先补充 __init__.py       在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中 ...