生成密码的方式类似与时钟,末尾遍历完了第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. 配置访问公网主机上的jupyter notebook

    文章结构: 一.安装python 二.安装并配置jupyter并配置jupyter 三.第一个python程序 一.安装python 1.1下载python安装包 # wget https://www ...

  2. C# 与 C++ 互操作(C# 调用 C++ 的动态链接库)

    1.新建 C++ 动态链接库项目 CPlus.cpp: #include "stdafx.h" extern "C" __declspec(dllexport) ...

  3. Using-JSONNET-for-dynamic-JSON-parsing

    原文 https://weblog.west-wind.com/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing With the re ...

  4. 轻松上手nodeJs爬取想要页面的数据

    开始之前请先确保自己安装了Node.js环境!!!!!!!! 1.在项目文件夹安装两个必须的依赖包 npm install superagent -S SuperAgent(官网是这样解释的) --- ...

  5. 使用jquery.validate组件进行前端数据验证并实现异步提交前验证检查

    学习如鹏网掌上组的项目开发,使用到了前端验证,视频里使用的ValidateForm验证框架,但是我使用的Hui的框架中使用的是jquery.validate验证框架 所以自行学习jquery.vali ...

  6. firefox浏览器强制取消自动更新

    问题:Firefox浏览器,在浏览器的设置中已经设置了取消自动升级,实际退出Firefox浏览器重新启动浏览器后还是会升级到最新版本.影响:Firefox浏览器不同的版本的插件的支持兼容不一样,如果需 ...

  7. 第12篇Kubernetes 监控

        一.Weave Scope: Weave Scope 容器地图   创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其 ...

  8. python3.x 匿名函数lambda_扩展sort

    #匿名函数lambda 参数: 表达式关键字 lambda 说明它是一个匿名函数,冒号 : 前面的变量是该匿名函数的参数,冒号后面是函数的返回值,注意这里不需使用 return 关键字. ambda只 ...

  9. java SSLContext

    1. 什么是SSLSocket JDK文档指出,SSLSocket扩展Socket并提供使用SSL或TLS协议的安全套接字. 这种套接字是正常的流套接字,但是它们在基础网络传输协议(如TCP)上添加了 ...

  10. c++ fork进程与同步锁

    首先定义在多进程环境中的锁,采用读写锁,即可以同时读,但只能单独写. 头文件processLock.h #ifndef PROCESSLOCK_H #define PROCESSLOCK_H #inc ...