Python3:9行代码帮助小姐姐找回压缩包密码,而小姐姐的回报,让我害羞了~ ~
日期: 2021-06-04 分类: 个人收藏 598次阅读
1、引言
虽然平时就会帮助小姐姐解决各种问题,
但是最近,特比多!
像我这种比较喜欢乐于助人而又害羞的绅士,怎么好意思拒绝呢~
今天小姐姐让我帮她找回旅游自拍照的压缩包密码~
我来还原一下当时的对话情节:
小姐姐:Carl,请问现在有没有时间,请你帮个忙?
小鱼:现在在忙呢,有啥事?
小姐姐:我的压缩包密码忘记了,你能帮忙找回来吗?
小鱼:你的压缩包密码忘记了,你自己想想啊!
小姐姐:想不起来了,对我挺重要的, 是我的旅游自拍照呢~
小鱼:自拍照? 就是你在朋友圈发的去厦门的?
小姐姐:嗯,是的啊,如果你现在没时间的话,我在让别人帮忙吧
小鱼:别别别,不用,我现在就有时间,厦不厦门的没关系,主要我就喜欢助人为乐~
小姐姐:那我把压缩包发给你
小鱼:好嘞, 这密码是数字还是英文?
小姐姐:数字的,
小鱼:好嘞,这容易呦~
2、代码实战
2.1 单线程破解纯数字
我们看下,小姐姐的压缩包,是zip,且是5位数的数字类型密码,
考虑到只有5位数字,所以我们就直接单线程来搞定
2.1.1 代码编写
编写代码
# -*- coding: utf-8 -*-
# @Time : 2021-06-04
# @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 : 2021-06-04
# @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 执行结果
我们看下代码运行的效果
等的花儿都谢了,终于等到密码了~*
我不能展示密码,不然小姐姐会不开心的
嘿嘿, 我们输入密码,看看小姐姐的自拍照
打开图片效果
我去~~~看到这两张照片,我承认,我草率了
我已经没有信心去展示第三张图片了,
第三张图片,比这两张更丑…
我觉得我跟小姐姐友谊的小船,已经倾斜了~
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
上一篇: 天天百度搜索,你真的会用百度吗?
下一篇: android adidl回调,Android(java)学习笔记189:eclipse 导入项目是提示:某些项目因位于工作空间目录中而被隐藏。...
精华推荐