python暴力破解zip加密文件

您所在的位置:网站首页 九首歌女主为什么哭 python暴力破解zip加密文件

python暴力破解zip加密文件

2024-01-25 11:11| 来源: 网络整理| 查看: 265

目录

前言:

一、破解zip加密文件的思路:

1、准备一个加密的zip文件。

2、zipfile模块可以解压zip文件。

3、itertools.permutations实现全字符的全排列。

二、实操代码:

1、实现解压zip文件:

2、实现字符的全排列:

 三、几位密码不知道也可以破解:

前言:

        日常工作中,会遇到一些加密的zip文件,但是因为某些原因或者时间过长,密码不知道了。

但是zip文件中文件有很重要很必须。那么,我们试一试万能的Python,暴力破解密码。

一、破解zip加密文件的思路: 1、准备一个加密的zip文件。 2、zipfile模块可以解压zip文件。

解压时可以提供密码zfile.extractall("./", pwd=password.encode("utf8"))

3、itertools.permutations实现全字符的全排列。

通过函数itertools.permutations("abc", 3)实现全字符的全排列:abc/acb/bca/bac/cab/cba

二、实操代码: 1、实现解压zip文件: import zipfile import itertools filename = "readme.zip" # 创建一个解压的函数,入参为文件名和密码 # 并使用try-except,避免报错中断程序。 def uncompress(file_name, pass_word): try: with zipfile.ZipFile(file_name) as z_file: z_file.extractall("./", pwd=pass_word.encode("utf-8")) return True except: return False 2、实现字符的全排列: import zipfile import itertools filename = "readme.zip" # 创建一个解压的函数,入参为文件名和密码 # 并使用try-except,避免报错中断程序。 def uncompress(file_name, pass_word): try: with zipfile.ZipFile(file_name) as z_file: z_file.extractall("./", pwd=pass_word.encode("utf-8")) return True except: return False # chars是密码可能的字符集 chars = "abcdefghijklmnopqrstuvwxyz0123456789" for c in itertools.permutations(chars, 4): password = ''.join(c) print(password) result = uncompress(filename, password) if not result: print('解压失败。', password) else: print('解压成功。', password) break

本文介绍的zip文件大概知道密码是4位的,字符大概是a-z1-0。并且不存在重复字符的,不会有“aabb”的密码。

zip加压时是选择了zip传统加密!

 三、几位密码不知道也可以破解:

我查了一些资料,zip加密密码最多是12位,那么程序可以修改这样:

import zipfile import itertools filename = "readme.zip" def uncompress(file_name, pass_word): try: with zipfile.ZipFile(file_name) as z_file: z_file.extractall("./", pwd=pass_word.encode("utf-8")) return True except: return False chars = "abcdefghijklmnopqrstuvwxyz0123456789" for i in range(12): for c in itertools.permutations(chars, i): password = ''.join(c) print(password) result = uncompress(filename, password) if not result: print('解压失败。', password) else: print('解压成功。', password) break

增加上一个for循环。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3