python暴力压缩包密码(python暴力zip压缩包)
python暴力压缩包密码(python暴力zip压缩包)
简介
简介: ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料。ZIP通常使用后缀名“.zip”,它的MIME格式为application/zip。当前,ZIP格式属于几种主流的压缩格式之一,其竞争者包括RAR格式以及开放源码的7z格式。从性能上比较,RAR及7z格式较ZIP格式压缩率较高,而7-Zip由于提供了免费的压缩工具而逐渐在更多的领域得到应用。Microsoft从Windows ME操作系统开始内置对zip格式的支持,即使用户的计算机上没有安装解压缩软件,也能打开和制作zip格式的压缩文件,OS X和流行的Linux操作系统也对zip格式提供了类似的支持。因此如果在网络上传播和分发文件,zip格式往往是最常用的选择。
ZIP是一种相当简单的分别压缩每个文件的存档格式。分别压缩文件允许不必读取另外的数据而检索独立的文件;理论上,这种格式允许对不同的文件使用不同的算法。不管用何种方法,对这种格式的一个告诫是对于包含很多小文件的时候,存档会明显的比压缩成一个独立的文件(在类Unix系统中一个经典的例子是普通的tar.gz存档是由一个使用gzip压缩的TAR存档组成)要大。
编码讲解
准备工作
首先是需要创建一个.zip后缀名的压缩包,然后给这个zip压缩包设置一个密码。
注意这里要点击ZIP传统加密。
把这个文件放入到pycharm里面。
开始编码
- 首先是获取文件后缀名
from zipfile import ZipFile
import os
def passwd(path):
# 获取文件的后缀名
suffix_name = os.path.splitext(path)[-1][1:]
print(suffix_name)
if __name__ == '__main__':
passwd("D:\系统默认\桌面\python数据分析\python爬虫\zip\二叉树.zip")
运行结果:
- 没有密码的解压方法
from zipfile import ZipFile
import os
def passwd(path):
# 获取文件的后缀名
suffix_name = os.path.splitext(path)[-1][1:]
# print(suffix_name)
# 如果是zip文件
if suffix_name == 'zip':
# 开始读zip文件
with ZipFile(path, 'r') as zip:
# 解压到指定文件目录下
("D:\系统默认\桌面\python数据分析\python爬虫\\target")
if __name__ == '__main__':
passwd("D:\系统默认\桌面\python数据分析\python爬虫\zip\二叉树.zip")
运行结果: 对于没有密码的解压,我们写到这一步就可以了,如果设置了有密码,然后了我们就会发现,这个会报错。
- 编写枚举密码的函数 如果学过算法的就知道了,这个就是算法里面的,那个排列组合题,在java和c++里面,需要自己去写,而且这个时间复杂度还很高,在python立面别人已经帮忙做好了这个功能。
def create_pwd(words):
# 通过导入这包来设置枚举序列
import itertools as its
# 设置基础需要枚举的字符集
# 这个base的意思就是把words集合的字符取repeat次组合
# 打印出来
base = its.product(words, repeat=2)
for i in base:
print(''.join(i))
运行结果
- 用暴力来程序 其实我们学过算法就知道,其实只要稍微密码长度长一点,基本上就不能够被了,除非需要涉及到哈希字典,这个我们以后再讨论,现在就只讨论暴力的写法。
完整代码
代码语言:javascript代码运行次数:0运行复制from zipfile import ZipFile
import os
def passwd(path, pwd):
# 获取文件的后缀名
suffix_name = os.path.splitext(path)[-1][1:]
# print(suffix_name)
# 如果是zip文件
if suffix_name == 'zip':
# 开始读zip文件
with ZipFile(path, 'r') as zip:
# print("当前尝试的密码是:%s"%(pwd))
# 解压到指定文件目录下
try:
# print(('utf-8'))
("D:\系统默认\桌面\python数据分析\python爬虫\\target", pwd=('utf-8'))
print("解压成功,密码是:%s"%(pwd))
return True
except Exception as e: # 添加一个异常处理
pass
def create_pwd(words):
# 通过导入这包来设置枚举序列
import itertools as its
# 设置基础需要枚举的字符集
# 这个base的意思就是把words集合的字符取repeat次组合
# 打印出来
base = its.product(words, repeat=6)
# 一般需要把这个打印函数注释 因为这个函数运行很消耗时间的
for i in base:
# print(''.join(i))
yield ''.join(i) # 把这个函数制作成一个迭代器
if __name__ == '__main__':
words = '12456789'
dir = 'D:\系统默认\桌面\python数据分析\python爬虫\zip\二叉树.zip'
for p in create_pwd(words):
flag = passwd(dir, p)
if flag == True:
break
运行结果: 这个结果的命名很奇怪,但是问题不大只要可以解压,后面会讲解一下,比较难的解压方法,涉及到算法。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 20 条评论) |
本站网友 hosts文件修复 | 4分钟前 发表 |
涉及到算法 | |
本站网友 男人和美女睡觉 | 11分钟前 发表 |
比较难的解压方法 | |
本站网友 电脑防辐射 | 25分钟前 发表 |
他于1989年1月公布了该格式的资料 | |
本站网友 野田洋次郎 | 7分钟前 发表 |
# 添加一个异常处理 pass def create_pwd(words) | |
本站网友 博扬 | 15分钟前 发表 |
# 开始读zip文件 with ZipFile(path | |
本站网友 盐城地税 | 10分钟前 发表 |
words = '12456789' dir = 'D | |
本站网友 复古风格装修图片 | 6分钟前 发表 |
这种格式允许对不同的文件使用不同的算法 | |
本站网友 南广学院 | 14分钟前 发表 |
除非需要涉及到哈希字典 | |
本站网友 日本樱花电器 | 5分钟前 发表 |
\系统默认\桌面\python数据分析\python爬虫\zip\二叉树.zip")运行结果: 对于没有密码的解压 | |
本站网友 谷歌公司市值 | 17分钟前 发表 |
然后给这个zip压缩包设置一个密码 | |
本站网友 成都翡翠城二手房 | 13分钟前 发表 |
他于1989年1月公布了该格式的资料 | |
本站网友 鱼尾纹价格 | 6分钟前 发表 |
编写枚举密码的函数 如果学过算法的就知道了 | |
本站网友 李光洁博客 | 28分钟前 发表 |
编码讲解准备工作首先是需要创建一个.zip后缀名的压缩包 | |
本站网友 东莞叫鸡 | 29分钟前 发表 |
然后给这个zip压缩包设置一个密码 | |
本站网友 小米公司地址 | 3分钟前 发表 |
后面会讲解一下 | |
本站网友 男女生了没 | 28分钟前 发表 |
# 开始读zip文件 with ZipFile(path | |
本站网友 霸王洗发水事件 | 11分钟前 发表 |
# print("当前尝试的密码是 | |
本站网友 口周皮炎 | 4分钟前 发表 |
现在就只讨论暴力的写法 | |
本站网友 蛇皮的作用 | 8分钟前 发表 |
# print(''.join(i)) yield ''.join(i) # 把这个函数制作成一个迭代器 if __name__ == '__main__' |