问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何用Python写一个暴力破解加密压缩包的程

发布网友 发布时间:2022-04-23 08:50

我来回答

2个回答

懂视网 时间:2022-04-29 16:59

基本原理在于Python标准库zipfile和扩展库unrar提供的解压缩方法extractall()可以指定密码,这样的话首先(手动或用程序)生成一个字典,然后依次尝试其中的密码,如果能够正常解压缩则表示密码正确。

import os
import sys
#zipfile是Python标准库
import zipfile
#尝试导入扩展库unrar,如果没有就临时安装
try:
 from unrar import rarfile
except:
 path = '"'+os.path.dirname(sys.executable)+'scriptspip" install --upgrade pip'
 os.system(path)
 path = '"'+os.path.dirname(sys.executable)+'scriptspip" install unrar'
 os.system(path)
 from unrar import rarfile

def decryptRarZipFile(filename):
 #根据文件扩展名,使用不同的库
 if filename.endswith('.zip'):
 fp = zipfile.ZipFile(filename)
 elif filename.endswith('.rar'):
 fp = rarfile.RarFile(filename)
 #解压缩的目标文件夹
 desPath = filename[:-4]
 if not os.path.exists(desPath):
 os.mkdir(desPath)
 #先尝试不用密码解压缩,如果成功则表示压缩文件没有密码
 try:
 fp.extractall(desPath)
 fp.close()
 print('No password')
 return
 #使用密码字典进行暴力破解
 except:
 try:
  fpPwd = open('pwddict.txt')
 except:
  print('No dict file pwddict.txt in current directory.')
  return
 for pwd in fpPwd:
  pwd = pwd.rstrip()
  try:
  if filename.endswith('.zip'):
   for file in fp.namelist():
   #对zip文件需要重新编码再解码,避免中文乱码
   fp.extract(file, path=desPath, pwd=pwd.encode())
   os.rename(desPath+''+file, desPath+''+file.encode('cp437').decode('gbk'))
   print('Success! ====>'+pwd)
   fp.close()
   break
  elif filename.endswith('.rar'):
   fp.extractall(path=desPath, pwd=pwd)
   print('Success! ====>'+pwd)
   fp.close()
   break
  except:
  pass
 fpPwd.close()

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')

更多Python相关技术文章,请访问Python教程栏目进行学习!

热心网友 时间:2022-04-29 14:07

有些时候加密rar软件经常会忘了密码,但记得密码的大概,于是乎用Python写个程序来暴力破解吧:
首先要搞清楚如何用命令行来解压缩,经研究,rar软件解压是用的unrar.exe,将这个程序拷贝到C:\windows,然后进入加密软件包所在的文件夹,用命令行运行 下面的命令:
unrar.exe e -pabcd 123.rar

程序就是先前拷到C:\windows,然后参数e是指相对路径,如果在是本文件夹下运行这个命令,则只打文件名就可以了,输入密码的方式是-p后面的字段,假定是abcd,最后面的是要解压的文件名。
下面我们解决如何用Python来运行windows下的命令行
import subprocess
command = 'unrar.exe e -n -pabcd 123.rar'
subprocess.call(command)

这样也可以完成解压,既然这样,那就开干吧,写一个暴力循环,我以4位字母为例,字母加的不全,实际使用可以视情况添加
list1=['a','b','c','d']
list2=['a','b','c','d']
list3=['a','b','c','d']
list4=['a','b','c','d']

for i1 in range(0,len(list1),1):
for i2 in range(0,len(list2),1):
for i3 in range(0, len(list3), 1):
for i4 in range(0, len(list4), 1):
password=list1[i1]+list2[i2]+list3[i3]+list4[i4]
print(password)
command = 'unrar.exe e -n -p' + password + ' 123.rar'
child = subprocess.call(command)
if child == 0:
print('解压密码是:',password)
break

child是返回值,为0表示解压成功,可以挑出循环并打印密码了,我实测,4位纯数字或者字母,只需要十多秒就出来了,非常简单
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
嘴巴是黄色的两鬓各一处白色羽毛肚子是灰白色羽毛腿是黄色的 鸟儿对我们有哪些好处? ...是怎么回事?汽车启动时在驾驶舱听到响声,好似拖拉机烟囱里发出... 软电脑各个时代的开机画面如何设置电脑开机画面 ...器空间、外部数据存储器空间和位地址空间的 饿了么微信支付怎么开通 微信支付开通方式分享 饿了么怎样绑定微信? 梦见不认识的拘给它洗澡身上长蛆 与朋友交而不信乎信的意思是什么 与朋友交而不信乎信的意思 浙江农信如何查询余额 查询余额方法 信用卡额度最高批多少 已经充值的电信卡为什么被暂停服务? python 编程 有了加密程序,怎么写解密程序 信用卡额度多少? python文本加密是什么?? 电信手机号被暂停服务? 中国银行的信用卡最高的信用额度是多少? 电信手机号码已被暂停服务怎么办? 电信苹果手机号码突然被暂停服务,电话打不进来是怎么回事? 电信卡暂停服务是什么意思? 信用卡最高额度是多少? 个人信用卡上限额度是多少? 电信卡被暂停服务怎么恢复? 电信手机号暂停服务怎么恢复? 信用卡的最高额度是多少? 联想t60笔记本按什么键进到boosl 联想电脑怎样退出bios界面? 苹果手机怎么充直快手币? 联想电脑安装系统进入bios 按什么键 苹果充值快币如何1:1- 问一问 电信没欠费怎么解除暂停服务? 低端手机哪个牌子的最好??? python 写异或加密 低端手机选择哪部?大家推荐一下 用Python2.7.10编写凯撒密码加密和解密程序 买低端手机1千到2千之内的是选择华为还是vivo?谁推荐一下呢? python程序使用+key+作为参数,对给定的文本文件执行加密运算,加密后的... 都说华为低端手机不能买!为什么呢? Python加密程序 低端手机推荐 五行查询 孩子出生于公历2013年3月5日下午13时40分 请问五行属什么 缺什么 请专业人士给与详细解答 Python中的如何给一个字符串加密 低端手机哪个性价比高 杭州冠骞机械有限公司怎么样? 利用以下python代码编写栏栅加密和解密 当今手机的高端、中端和低端到底是怎么划分档次的? 求好听顺口的名字,希望他天天快乐! 爸爸姓周,妈妈姓赵,男孩,2013年1月23日23点27分出生。谢谢!重奖 国产低档手机哪个牌子价格最便宜 python编写凯撒密码!!!求大神帮助!!! Python编程实现加密解密读取文件
  • 焦点

最新推荐

猜你喜欢

热门推荐