常常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道。 4 j+ {" i- n2 S1 D1 n 一、破解原理3 l' R8 {6 Y/ l4 Q! I
其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile 和 rarfile,这两个库提供的解压缩方法 extractall()可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩表示密码正确。 & r; o/ a' ^6 j9 b, f& |+ N, p二、实验环境6 Y' L s; R0 W, n
本文采取的虚拟环境为 Pipenv. 5 y: T. e. ~! Z/ O Y库: : B& D6 c+ F4 [$ w$ ?$ k' Y
zipfile:Python 标准库,使用时直接导入即可
rarfile:Python 第三方库) K k" m9 p/ Z2 g, p7 F" }
利用 Pipenv 安装 rarfile + e5 C Q: F* |" c& o: I" [( v- Z. s
if __name__ == '__main__':
filename = sys.argv[1]
if os.path.isfile(filename) and filename.endswith(('.zip', '.rar')):
decryptRarZipFile(filename)
else:
print('Must be Rar or Zip file')
四、使用 0 o0 M z$ n* j' P; ~ 如果想要使用上述代码,我们只需在命令行执行python main.py <filename>即可。例如python main.py test.zip3 ~2 b4 ?; P5 [5 [5 k
运行结果: 0 m# M; W; X& O4 |# m1 P; v8 U