前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python实战】---- 30行代码破解加密压缩包

【Python实战】---- 30行代码破解加密压缩包

作者头像
Rattenking
发布2021-09-07 17:09:11
2.3K0
发布2021-09-07 17:09:11
举报
文章被收录于专栏:Rattenking

1. 需求是这样的

老板发我一个加密压缩包,告诉我是6位数的数字密码,让我将压缩包解压!

2. 环境

  1. 命令解压工具 7-zip;7-zip下载
  2. python 自带的执行命令模块 subprocess;

3. 安装 7-zip 配置环境变量

  1. 安装 7-zip,找到 7-zip 的应用程序路径;
  2. 将该路径配置环境变量;参考菜鸟Windows 10 配置Java 环境变量

4. 循环生成所有6位数的数字密码

代码语言:javascript
复制
for i in range(1000000):
    pwd = str(("%06d"%i))

5. 验证密码

  1. 组装验证密码的 7z 命令;
  2. 对密码进行验证,成功返回0;
代码语言:javascript
复制
  cmd = f'7z t -p{pwd} ./test.zip'
  status = subprocess.call(cmd)

6. 拿到正确密码解压

  1. 组装 7z 解压命令,将所有的解压文件输出到当前路径的all文件夹下;
  2. 执行解压命令;
代码语言:javascript
复制
	cmd = f'7z x -p{pwd} ./test.zip -y -aos -o"./all/"'
  	subprocess.call(cmd)

7. 全部代码

代码语言:javascript
复制
#!/usr/bin/env python
"""
@Author  :Rattenking
@Date    :2021/06/02 15:42
@CSDN	 :https://blog.csdn.net/m0_38082783
"""

import time
import subprocess

def get_current_time_stamp():
  times = time.time()
  time_stamp = int(round(times * 1000))
  return time_stamp

def verify_password(pwd):
  cmd = f'7z t -p{pwd} ./test.zip'
  status = subprocess.call(cmd)
  return status

def unzip_file_other_folder(pwd):
  print(f'正确的密码是:{pwd}')
  cmd = f'7z x -p{pwd} ./test.zip -y -aos -o"./all/"'
  subprocess.call(cmd)

def get_all_possible_password():
  for i in range(1000000):
    pwd = str(("%06d"%i))
    status = verify_password(pwd)
    if status == 0:
      unzip_file_other_folder(pwd)
      break

if __name__ == "__main__":
  start = get_current_time_stamp()
  get_all_possible_password()
  end = get_current_time_stamp()
  print(f"解压压缩包用时:{end - start}ms")

8. 执行结果

9. 总结

  1. 查找合适的命令解压工具;
  2. 熟悉解压工具命令;
  3. 执行命令,熟悉不同执行结果的返回状态。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 需求是这样的
  • 2. 环境
  • 3. 安装 7-zip 配置环境变量
  • 4. 循环生成所有6位数的数字密码
  • 5. 验证密码
  • 6. 拿到正确密码解压
  • 7. 全部代码
  • 8. 执行结果
  • 9. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档