python暴力解压rar压缩包

写代码之前先吐槽一下rarfile这个第三方工具

因为unrar的代码不公开所以python的解压工具还要依赖c的动态链接库,可非了我半天时间搜索

具体解决办法:https://blog.csdn.net/ysy950803/article/details/52939708

还有就是rarfile的extractall方法在遇到错误密码的时候竟然没有抛出异常信息,所以检查密码是否正确就只能观察解压路径下文件是否增加,感觉这个办法好蠢。。。

#暴力破解压缩包密码rar版
from unrar import rarfile
def extractfile(file,password):
	try:
		file.extractall(pwd=password)
	except:
		pass

def main():
	fp = rarfile.RarFile('file.rar')
	f = open('pass.txt')
	print('暴力破解开始请等待......')
	for line in f.readlines():
		line = line.strip('\n')
		print(line)
		extractfile(fp,line)
	print('破解结束.....')
if __name__=='__main__':
	main()

 这里可以升级一下,使用optparse库让rar文件、字典文件以参数的形式传给python代码

升级版

#暴力破解压缩包密码rar版
from unrar import rarfile
import optparse
def extractfile(file,password):
	try:
		#print(password)
		file.extractall(pwd=password)
	except:
		pass

def main():
	parser = optparse.OptionParser("Usage%org"+"-f  -d ")
	parser.add_option("-f",dest="rfile",type="string",help="specify rar file")
	parser.add_option("-d",dest="dfile",type="string",help="specify dictionary file")
	(option,args) = parser.parse_args()
	rfile = option.rfile
	dfile = option.dfile
	if(rfile==None or dfile==None):
		print(parser.usage)
		exit(0)
	fp = rarfile.RarFile(rfile)
	f = open(dfile)
	print('暴力破解开始请等待......')
	for line in f.readlines():
		line = line.strip('\n')
		#print(line)
		extractfile(fp,line)
	print('破解结束.....')
if __name__=='__main__':
	main()

示例:

带解压文件和.py文件 字典 在同一目录

python暴力解压rar压缩包_第1张图片

cmd输入命令:

破解成功:

python暴力解压rar压缩包_第2张图片

后记

暴力破解依赖于字典中有正确密码,如果压缩包密码特别复杂或者干脆用中文当密码破解的可能性就比较小了

这里找到一个更好的解决方法

https://blog.csdn.net/ddxwltan/article/details/76551168

你可能感兴趣的:(rar解压,python)