破解原理
其实原理很简单。一句话简介:“力量可以创造奇迹”。 Python有两个压缩文件库:zipfile和rarfile。这两个库提供的解压方法extractall()可以指定密码。在这种情况下,第一位老师可以创建一个密码。字典(手动或使用程序),然后一一尝试其中的密码。如果能正常解压,说明密码正确。
实验环境
本文使用的虚拟环境是Pipenv。 Pipenv的详细介绍可以参考我的文章《Python 管理哪家强?》
图书馆
zipfile:Python标准库,使用时直接导入即可
rarfile:Python第三方库,使用时需要安装,API文档(https://rarfile.readthedocs.io/en/latest/api.html)
使用Pipenv 安装rarfile
Pipenv 安装rar 文件
最后将带有密码的压缩包放入实验环境中。
编码
明白了原理,编码就会很简单
准备密码本
“密码本”实际上是一个包含所有可能密码的文件。用户可以手动输入或使用程序。文章最后也会有介绍。
读取压缩文件
# 根据文件扩展名使用不同的库
iffilename.endswith(".zip"):
fp=zipfile.ZipFile(文件名)
eliffilename.endswith(".rar"):
fp=rarfile.RarFile(文件名)
尝试解压
首先尝试不用密码解压。如果成功,说明压缩文件没有密码。
fp.extractall(desPath)
fp.close()
print("没有密码")
返回
暴力破解
尝试:
# 读取密码本文件
fpPwd=open("密码.txt")
除了:
print("当前目录下没有字典文件pwd.txt。")
返回
forpwdinfpPwd:
密码=密码.rstrip()
尝试:
fp.extractall(path=desPath,pwd=pwd.encode())
print("成功!===="+pwd)
fp.close()
休息
除了:
经过
fpPwd.close()
节目入口
if__name__=="__main__":
文件名=sys.argv[1]
ifos.path.isfile(filename)andfilename.endswith((".zip",".rar")):
解密RarZipFile(文件名)
否则:
print("必须是Rar 或Zip 文件")
使用
如果我们想使用上面的代码,只需要在命令行执行python main.py即可。例如python main.py test.zip
运行结果:
$ python main.py test.zip
成功!====323126
扩张
如何获取密码本?
看到这里,细心的朋友一定会发现,核心的东西并不是代码,而是“码本”。理论上,只要密码本中有足够的密码,就可以获取压缩包的密码。这通常也称为“撞库”。
现在问题又来了,如何收集足够的密码呢?当我查资料的时候,发现已经有人整理过了。我分叉了一份,放到了自己的仓库里。有兴趣的可以点击爆破词典(https://github.com/YueYongDev/Blasting_dictionary)
如何加快破解过程?
解决了码本的问题后,深入思考的朋友肯定会有新的疑问。既然密码本如此巨大,如何加快破解过程呢?这里有两个想法
多线程(进程)破解
如果密码本很多,密码数量巨大,我们可以使用多线程(进程)来读取密码。一个进程读取一本密码本,一个线程分段读取密码。当然,如果你是python的话,建议不要使用多线程,因为python中的线程是没有用的。如果您有兴趣,可以阅读相关资料。
利用GPU 加速
我们上面的代码都是在CPU上运行的。即使开启多线程(进程),也只是使用CPU资源。然而,如果我们想加快破解过程,我们实际上可以使用空闲的GPU资源。
在介绍为什么可以使用GPU加速之前,我们需要先明确一点。两者都是为了完成计算任务而设计的。
那么为什么会想到使用GPU 加速呢?这就是关于两者的区别:CPU虽然有多个核心,但总数不超过两位数,而且每个核心的计算能力都极其强大。 GPU的核心数量远远超过CPU,但每个核心的计算能力却与CPU相差甚远。
我们可以举一个简单的例子,解决一个问题,CPU是博士生,GPU是小学生。 CPU负责理解问题并整理出问题的步骤和解决方案,而GPU则负责简单但大量的简单运算。
【Python 技巧:高效解密 ZIP 和 RAR 文件密码】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这真是个厉害的工具啊!
有7位网友表示赞同!
我想试着用它来解开我忘记密码的那个压缩包。
有5位网友表示赞同!
不过要用这个工具破解别人的文件是违法的吧?
有17位网友表示赞同!
Python 果然万能,连解锁都能做到。
有12位网友表示赞同!
有没有什么教程可以教你如何使用这个工具呢?
有20位网友表示赞同!
我想知道它破解密码的速度有多快?
有5位网友表示赞同!
对于新手来说,这太复杂了是不是?
有17位网友表示赞同!
这种工具会不会让人觉得网络安全变得不靠谱?
有14位网友表示赞同!
看来以后要保管好自己的文件密码啊!
有5位网友表示赞同!
这很有用呀,可以帮我解开我朋友发来的加密文件。
有7位网友表示赞同!
会不会影响文件本身的内容呢?
有19位网友表示赞同!
是不是可以用这个工具破解其他格式的文件?
有10位网友表示赞同!
我想学习一下Python编程,这样也许能自己编写这样的工具。
有14位网友表示赞同!
这种工具对安全研究人员来说也很有用吧?
有9位网友表示赞同!
这会不会引发一些道德争议呢?
有6位网友表示赞同!
听说有些人用这种工具破解游戏的账号 PASSWORD,真可怕!
有16位网友表示赞同!
我觉得应该重视网络安全,避免使用这种工具做不正当的事。
有18位网友表示赞同!
学习编程真是个好事,可以为我们解决很多问题!
有17位网友表示赞同!
这个世界越来越依赖科技了,安全问题就越需要重视。
有15位网友表示赞同!
Python 真的是一个很强大的语言!
有16位网友表示赞同!
希望这种技术能够被更好地利用,造福人类!
有17位网友表示赞同!