在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包
各位好 又见面了 我是曹操 今天给大家带来一篇新的教程
希望各位细心学习 低调用网
from unrar.rarfile import RarFile
import concurrent.futures as cf
from zipfile import ZipFile
import time
import os
文章目录
- 软件下载
- win64:
- mac、linux和win32用户请参考打包教程使用源代码打包。
- 破解测试
- 文件说明
- 项目简介
- 这是一个基于python开发的压缩包密码破解软件,利用多线程技术高速地读取密码字典并对压缩包尝试破解。
- 项目地址
- 破解思路
- 压缩包加密算法基本上都是不可逆的,即我们不能在算法层面上推理出它的明文。所以我们只能用穷举法不断的碰撞,大白话就是随机生成很多密码,然后一个一个的试。具体思路如下:
- 开发环境
pip install unrar
D:Program Files (x86)UnrarDLL
├─Documentation
├─Examples
├─NoCrypt
├─Examples
└─x64
│ └─UnRAR64.lib
├─UnRAR.lib
- os、time、zipfile和concurrent.futures都是python内置模块,无需安装。
- unrar是第三方模块,可以通过pip指令安装:
- 根据pypi官网可知,安装后还需要配置一下库文件才能正常使用:
- 具体配置教程如下:(windows)
- 下载库文件的压缩包
- 选择解压路径D:Program Files (x86)UnrarDLL,点击Install解压
- 解压后的主要目录结构如下:
f = open('pwd.txt', 'w')
l = [str(i) for i in range(10)]
for i in l:
for j in l:
for k in l:
f.write(i+j+k+'n')
f.close()
4. 配置系统环境变量。变量名必须是:UNRAR_LIB_PATH,变量值:D:Program Files (x86)UnrarDLLx64UnRAR64.dll(如果你是win32系统,变量值:D:Program Files (x86)UnrarDLLUnRAR.dll)
5. 配置完成后,记得点击确定保存,然后重启代码编辑器vscode或pycharm,不重启不会生效的!
- 顺便一提:
- 解压rar文件时,我们用的模块是unrar里面的rarfile,其实还有个直接叫rarfile的包,但是那个rarfile包依赖unrar环境,配置还很复杂,所以我直接放弃了,用unrar即可。
- 生成字典
- 这里我生成了一个包含所有三位数的字典,并按行保存到pwd.txt文件中。
def crack(self, funcname):
book = open(self.bookname)
with cf.ThreadPoolExecutor(12) as tp:
while True:
pwd = book.readline().strip()
tp.submit(funcname, pwd)
- 当然,实际情况是很复杂的。密码可能不止三位,并且不仅包含数字,还有字母和特殊字符等。你可以在我的代码基础上做些修改,生成更为复杂的密码字典。如果你不想自己写代码,我这里也为大家准备好了一个43G的大字典(你下载的是压缩过的只有80MB,下载后请解压):
- 43G大字典:
- 这里再推荐一个提供密码字典下载的网站:
- 读取密码
- 密码字典一般都很大,假如你用的密码字典是43GB,直接读整个文件的话可能会导致内存溢出,所以我们一般是按行读,读一行处理一行,处理完成后指针会自动帮你定位到下一行,往复循环即可,具体python实现如下:
def zip_crack(self, pwd):
runtime = self.show()
print(f'破解已用时: {runtime} 当前密码: {pwd}', end='r')
try:
zip_file = ZipFile(self.filename)
zip_file.pwd = pwd.encode()
zip_file.extractall()
print(f'破解已完成: {runtime} 压缩密码: {pwd}')
with open('res.txt','w') as f:
f.write(pwd)
os._exit(0)
except:
pass
def rar_crack(self, pwd):
runtime = self.show()
print(f'破解已用时: {runtime} 当前密码: {pwd}', end='r')
try:
rar_file = RarFile(self.filename, pwd=pwd)
rar_file.extractall()
print(f'破解已完成: {runtime} 压缩密码: {pwd}')
with open('res.txt','w') as f:
f.write(pwd)
os._exit(0)
except:
pass
from unrar.rarfile import RarFile
import concurrent.futures as cf
from zipfile import ZipFile
import time
import os
class CompressionCrack(object):
def __init__(self):
self.filename = input('请输入压缩文件的绝对路径: ')
self.bookname = input('请输入密码字典的绝对路径: ')
self.startTime = time.time()
def show(self):
runtime = round(time.time()-self.startTime)
if runtime > 3600:
h = int(runtime/3600)
m = int(runtime % 3600/60)
s = runtime % 3600 % 60
runtime = f'{h}h{m}m{s}s'
elif runtime > 60:
m = int(runtime/60)
s = runtime % 60
runtime = f'{m}m{s}s'
else:
runtime = f'{runtime}s'
return runtime
def zip_crack(self, pwd):
runtime = self.show()
print(f'破解已用时: {runtime} 当前密码: {pwd}', end='r')
try:
zip_file = ZipFile(self.filename)
zip_file.pwd = pwd.encode()
zip_file.extractall()
print(f'破解已完成: {runtime} 压缩密码: {pwd}')
with open('res.txt', 'w') as f:
f.write(pwd)
os._exit(0)
except:
pass
def rar_crack(self, pwd):
runtime = self.show()
print(f'破解已用时: {runtime} 当前密码: {pwd}', end='r')
try:
rar_file = RarFile(self.filename, pwd=pwd)
rar_file.extractall()
print(f'破解已完成: {runtime} 压缩密码: {pwd}')
with open('res.txt', 'w') as f:
f.write(pwd)
os._exit(0)
except:
pass
def crack(self, funcname):
book = open(self.bookname)
with cf.ThreadPoolExecutor(12) as tp:
while True:
pwd = book.readline().strip()
tp.submit(funcname, pwd)
def main(self):
if self.filename.endswith('.zip'):
filetype = 1
elif self.filename.endswith('.rar'):
filetype = 0
else:
print('不支持的压缩格式,必须是rar或zip')
os._exit(0)
if filetype:
self.crack(self.zip_crack)
else:
self.crack(self.rar_crack)
if __name__ == "__main__":
CompressionCrack().main()
- 尝试破解
- 10.1. 尝试破解zip格式的压缩包
- 10.2. 尝试破解rar格式的压缩包
- 完整代码
- 软件打包
- 推荐在pipenv创建的虚拟环境下打包,这样打包的体积会很小,具体打包教程如下:
- 执行命令pip install pipenv安装pipenvcd到项目路径,运行命令pipenv install创建虚拟环境运行命令pipenv shell激活虚拟环境安装项目开发中用到的第三方模块:pip install unrar安装打包工具:pip install pyinstaller执行打包命令:pyinstaller -F -i app.ico run.py
- 第6步执行打包命令前先停一下。
- unrar模块依赖库文件UnRAR64.dll,所以先把UnRAR64.dll复制到项目路径下(win32复制UnRAR.dll)。
- 然后修改pipenv创建的虚拟环境里面的unrar的代码,具体是修改C:Usersxxx.virtualenvspython-compression-crack-ZMK49n5qLibsite-packagesunrar路径下的unrarlib.py文件,将第33行代码由libpath = os.environ.get(‘UNRARLIBPATH’, None)改为libpath = ‘UnRAR64.dll’。
- 好了,可以执行打包命令了:pyinstaller -F -i app.ico run.py。
- 引用参考