可能很多人都遇到过这种情况:
2. 自己多年前珍藏的小秘密/重要文件,解压时却怎么也想不起压缩包密码……
今天分享一个技巧,教你破解压缩包密码(包括rar、zip格式)。
先说原理:暴力破解(撞库)
简单来说,就是穷举所有可能的密码,挨个尝试,直到找出正确的密码。
所以,理论上,可以破解任何密码!
方法一,自己动手 丰衣足食
自己写个程序,生成所有可能的密码、挨个尝试,代码也很容易理解。
defbrutal_extract(self,lengths=[4,],lower=False,upper=False,digit=False,punctuation=False):”’#遍历所有可能的密码,暴力破解:paramlengths:密码长度,可以指定所有需要考虑的长度,如[4,5,6]等:paramlower:是否考虑小写字母:paramupper:是否考虑大写字母:paramdigit:是否考虑数字:parampunctuation:是否考虑标点符号:return:”’importstring#用于生成密码本fromitertoolsimportcombinations#用于生成所有可能的密码passward_dict=””iflower:passward_dict =string.ascii_lowercaseifupper:passward_dict =string.ascii_uppercaseifdigit:passward_dict =string.digitsifpunctuation:passward_dict =string.punctuationprint(“密码本:\t{}\n密码长度:\t{}\n”.format(passward_dict,lengths))count=0forlengthinlengths:forpasswardincombinations(passward_dict,length):passward=””.join(passward)count =1print(passward,end=””)ifself.extract(passward):print()print(“一共尝试了{}种可能”.format(count))returnprint(“对不起,暂未找到,请尝试:\n1. 其他密码长度\n2. 包含更多种类的密码字符”)#尝试解压defextract(self,passward):try:self.fp.extractall(path=self.tatget_path,pwd=passward.encode())print()print(‘成功破解该压缩包,密码为:’ passward)self.fp.close()returnTrueexcept:pass
运行结果
我这个示例密码很简单(长度短、类型简单,仅包含小写字母和数字),所以跑起来很快,CPU下1分钟左右就能找到。
但如果你不知道密码的范围、类型,完全瞎猜的话,需要考虑所有长度、所有字符类型(小写字母、大写字母、数字、标点符号),那就需要很大的计算量了。
可能的优化方法有:多线程并行、GPU加速等,有兴趣的可以自己尝试。
方法二,开源工具 自带各种优化
cRARk,自1996年诞生,历经5代完善,目前号称世界上最快的rar解压工具,支持Win32/64, Linux, Mac OS多种平台、GPU加速、各种性能优化!
官方工具没有gui界面,需要通过命令行使用,示例如下:
使用方法
这个工具会自动加载password.def的配置,来尝试各种可能,这里分享一个比较完备的配置方案:
对比一下CPU和GPU的速度:
可以看到,GPU比CPU快了几十倍,每秒可以尝试2万多种可能。
6位数字的银行卡密码,一共有10^6种可能性,可以在1分钟内破解
那为啥银行卡密码还那么安全呢?
因为我银行卡里的钱不值得黑客浪费那1分钟
因为银行不可能给你尝试那么多次!
方法三,人性化的软件(带GUI界面)
还是上面的工具,有热心的第三方提供了人性化的GUI界面,极大便利了非程序员们:
使用方法也一目了然
最后也分享下那两段被加密的视频:
本期资源链接:
python完整程序:
https://gist.github.com/weidafeng/80b4b73f2a1718378220c3a46e8af04f
RAR版工具:http://www.crark.net/#download
ZIP版工具:http://www.crark.net/crark-7zip.html
GUI界面版(仅win):http://www.crark.net/download/crark_gui.zip
往期推荐:
干货| 一键去除PDF令人发指的水印
干货|四款英语语法检查神器-测评&推荐