如何绕过rar密码提取文件(rar绕过密码解压手机)

caocao2年前教程363

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

hashcat怎么解压缩文件密码

一、破解原理

其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfilerarfile,这两个库提供的解压缩方法 extractall() 可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩表示密码正确。

二、实验环境

本文采取的虚拟环境为 Pipenv.

利用 Pipenv 安装 rarfile

  • pipenv install rarfile

最后,再将一个带有密码的压缩包放入实验环境中即可。

三、编码

知道原理后,编码就会非常简单了。

准备密码本

「密码本」其实就是一个包含了所有可能密码的文件,用户可以手动录入,也可以用程序录入。文末还会有一个介绍。

读取压缩文件

  • # 根据文件扩展名,使用不同的库
  • if filename.endswith('.zip'):
  • fp = zipfile.ZipFile(filename)
  • elif filename.endswith('.rar'):
  • fp = rarfile.RarFile(filename)

尝试解压

先尝试不用密码解压缩,如果成功则表示压缩文件没有密码

  • fp.extractall(desPath)
  • fp.close()
  • print('No password')
  • return

暴力破解

  • try:
  • # 读取密码本文件
  • fpPwd = open('pwd.txt')
  • except:
  • print('No dict file pwd.txt in current directory.')
  • return
  • for pwd in fpPwd:
  • pwd = pwd.rstrip()
  • try:
  • fp.extractall(path=desPath, pwd=pwd.encode())
  • 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 main.py即可。例如python main.py test.zip

运行结果:

  • $ python main.py test.zip
  • Success! ====> 323126

五、扩展

密码本如何获取?

如何加速破解过程?

解决了密码本的问题,深入思考的小伙伴的一定又会有新的疑问,密码本既然如此庞大,那如何加速破解的过程呢?这里给出两个思路。

多线程(进程)破解

密码本如果很多且密码数量庞大时,我们可以采用多线程(进程)的方式读取密码,一个进程读一个密码本,一个线程分段读密码。当然,如果是在 Python 中,建议不要采用多线程,因为 Python 中的线程就是鸡肋,有兴趣的可以阅读相关资料。

  • import zipfile
  • import itertools
  • from concurrent.futures import ThreadPoolExecutor
  • def extract(file, password):
  • if not flag: return
  • file.extractall(path='.', pwd=''.join(password).encode('utf-8'))
  • def result(f):
  • exception = f.exception()
  • if not exception:
  • # 如果获取不到异常说明破解成功
  • print('密码为:', f.pwd)
  • global flag
  • flag = False
  • if __name__ == '__main__':
  • # 创建一个标志用于判断密码是否破解成功
  • flag = True
  • # 创建一个线程池
  • pool = ThreadPoolExecutor(100)
  • nums = [str(i) for i in range(10)]
  • chrs = [chr(i) for i in range(65, 91)]
  • # 生成数字 字母的6位数密码
  • password_lst = itertools.permutations(nums + chrs, 6)
  • # 创建文件句柄
  • zfile = zipfile.ZipFile("加密文件.zip", 'r')
  • for pwd in password_lst:
  • if not flag:
  • break
  • f = pool.submit(extract, zfile, pwd)
  • f.pwd = pwd
  • f.pool = pool
  • f.add_done_callback(result)

利用 GPU 加速

我们以上的代码都是运行在 CPU 上的,即使开启多线程(进程)也只是利用到 CPU 的资源,但如果想要加速破解过程,我们其实还可以利用闲置的 GPU 资源。

在介绍为什么可以利用 GPU 加速前,我们需要明确一个观点,两者都为了完成计算任务而设计。

那为什么会想到使用 GPU 加速呢?这是就要说到两者的不同了:CPU 虽然有多核,但总数没有超过两位数,并且每个核的运算能力极其强大。而 GPU 的核数远超 CPU,但每个核的运算能力与 CPU 的核相比就相差甚远了。

我们可以简单的举个例子,解一道题,CPU 就是博士生,GPU 就是小学生,CPU 负责理解题目并且整理出解题的步骤以及解法,而 GPU 负责其中很简单但是数量又很大的简单运算就行了。

因此理论上在破解密码的过程中,我们完全可以使用 GPU 来加速这一过程。

事实上,这样的工具也已经出现了,Hashcat 便是最出名的一个,它号称是世界上最快的密码恢复工具,可以基于 CPU/GPU 等工作。

算就行了。

因此理论上在破解密码的过程中,我们完全可以使用 GPU 来加速这一过程。

事实上,这样的工具也已经出现了,Hashcat 便是最出名的一个,它号称是世界上最快的密码恢复工具,可以基于 CPU/GPU 等工作。

阅读剩余的62%

相关文章

上班了蹭网又来,看无线网络如何破解

上班了蹭网又来,看无线网络如何破解

在这篇文章中,我们将探讨如何破解无线网络并防止被人蹭网。故事开始于我在朋友家享受无线上网时突然断网的经历。我意识到有人在蹭我的路由器,于是我重启了路由器,更改了密码并启用了WAP加密。但是,我也想了解...

在 VirtualBox 上安装 Kali Linux 的最安全快捷的方式 |

在 VirtualBox 上安装 Kali Linux 的最安全快捷的方式 |

在 VirtualBox 上安装 Kali Linux已经讨论过这个问题,所以我不会再次赘述。 虽然你可以通过替换现有的操作系统来安装 Kali Linux,但通过虚拟机使用它将是一个更好、更安全的选...

教你如何用Win10自带虚拟机安装Kali linux系统「续」

教你如何用Win10自带虚拟机安装Kali linux系统「续」

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 关于Kali linux...

关于万能钥匙那些事儿

关于万能钥匙那些事儿

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 最近我翻看了一下我的旧手...