Python3:9行代码帮助小姐姐找回压缩包密码,而小姐姐的回报,让我害羞了~ ~
1、引言
虽然平时就会帮助小姐姐解决各种问题,
但是最近,特比多!
像我这种比较喜欢乐于助人而又害羞的绅士,怎么好意思拒绝呢~
今天小姐姐让我帮她找回旅游自拍照的压缩包密码~
我来还原一下当时的对话情节:
小姐姐:小鱼,请问现在有没有时间,请你帮个忙?
小鱼:现在在忙呢,有啥事?
小姐姐:我的压缩包密码忘记了,你能帮忙找回来吗?
小鱼:你的压缩包密码忘记了,你自己想想啊!
小姐姐:想不起来了,对我挺重要的, 是我的旅游自拍照呢~
小鱼:自拍照? 就是你在朋友圈发的去厦门的?
小姐姐:嗯,是的啊,如果你现在没时间的话,我在让别人帮忙吧
小鱼:别别别,不用,我现在就有时间,厦不厦门的没关系,主要我就喜欢助人为乐~
小姐姐:那我把压缩包发给你
小鱼:好嘞, 这密码是数字还是英文?
小姐姐:数字的,
小鱼:好嘞,这容易呦~
2、代码实战
2.1 单线程破解纯数字
我们看下,小姐姐的压缩包,是zip,且是5位数的数字类型密码,
考虑到只有5位数字,所以我们就直接单线程来搞定
2.1.1 代码编写
编写代码
# -*- coding: utf-8 -*-
# @Time : 2023-08-24
# @Author : carl_DJ
import zipfile,time,sys
start_time = time.time()
def extra():
#读取压缩包文件
zfile = zipfile.ZipFile('C:\Project\厦门旅游自拍照.zip')
#循环获取密码
for num in range(1,99999,1):
#做了判断,增加可读性
try:
pwd = str(num)
zfile.extractall(path='.',pwd=pwd.encode('utf-8'))
#获取压缩包密码
print(f"压缩包密码为:{pwd}")
#获取结束时间
end_time = time.time()
#输出运行时间
print(f"单线程解压花费时间:{end_time - start_time}")
sys.exit(0)
except Exception as e:
#我相信我一定能破解压缩包密码,这里就直接pass
#pass
#获取抛出的异常原因
print(f"获取压缩包密码失败:{format(e)}")
#运行
if __name__ == '__main__':
extra()
编写完代码,我们就要去执行它,看看小姐姐的照片 压缩包密码是啥…
2.1.2 执行结果
执行结果
就是67866 我的天哪,我赶紧告诉小姐姐。
2.2 多线程破解数字+字母
小鱼:小姐姐,你的压缩包密码是 67866,
小姐姐:厉害啊,那既然你这么厉害,那我就奖励一个压缩包,里面可是有更好照片哦~~
小鱼:… 当真??
小姐姐:当真…,这次是数字+字母哦压缩包传给你了…
唉我去~
还上来难度了,但是为了体现出我的技术,我必须给安排了!
谁不想看小姐姐的自拍照呢
2.2.1 代码编写
老规矩,直接上代码,
代码编写
# -*- coding:utf-8 -*-
# @Time : 2023-08-24
# @Author : carl_DJ
import random,zipfile,time,sys
class PicItem():
#设定搜索范围,数字+字母
picset = 'abcdefghijklmnopqrstuvwxyz0123456789'
#传入min 和max参数
def __init__(self,min,max):
#比较min 和max大小
if min < max:
self.minlen = min
self.maxlen = max
else:
self.ninlen = max
self.maxlen = min
#直接返回self实例对象
def __iter__(self):
return self
#通过循环,生成密码
def __next__(self):
#rec设置为空
rec = ''
for i in range(0,random.randrange(self.minlen,self.maxlen+1)):
rec += random.choice(PicItem.picset)
return rec
def extra():
#设定开始时间
start_time = time.time()
#读取文件
zfile = zipfile.ZipFile('C:\Project\小姐姐自拍照.zip','r')
# 随机迭代出1~6位数的密码,在不明确位数的时候做相应的调整
for password in PicItem(1,6):
if zfile:
try:
zfile.extractall(path='.',pwd=str(password).encode('utf-8'))
print (f'小姐姐压缩包密码:{password}')
# print ("小姐姐压缩包密码是:" %passwprd)
end_time = time.time()
print (f'当前破解压缩包花了{end_time-start_time}秒')
sys.exit(0)
#不匹配,抛出异常
except Exception as e:
print (f'错误密码:{password}')
pass
if __name__=="__main__":
extra()
编写完,我们就执行,
然后稍稍等待,独自一人偷偷的看小姐姐给我的福利~
压缩包里面有三张图片, 所以程序需要跑一会,别着急
2.2.2 执行结果
我们看下代码运行的效果
等的花儿都谢了,终于等到密码了~*
我不能展示密码,不然小姐姐会不开心的
嘿嘿, 我们输入密码,看看小姐姐的自拍照
打开图片效果
我是小鱼:
- CSDN 博客专家;
- 阿里云 专家博主;
- 51CTO 博客专家;
- 51认证讲师;
- 认证金牌面试官;
- 职场培训规划师;
- 多个国内主流技术社区的认证专家博主;
- 多款主流产品(阿里云等)测评一、二等奖获得者;
关注我,带你学习更多更专业更前言的Python技术。
- 点赞
- 收藏
- 关注作者
评论(0)