引言

前段时间有位小姐姐下载了一个加密的压缩包资源,里面是最新在上映的电影,遂找到我想要我帮她破解一下。

博主想这还不简单,就到网上找了一个压缩包密码破解软件,但是使用的时候发现,他是用暴力破解字典来进行破解的,结果软件下载包里没自带。

这还不简单就生成一个破解字典,让程序去做咯~~~

心酸历程一——纯数字字典

据“数据分析”(即不可靠的数据推断),加密的密码长度一般不会超过6位,一般都是数字形式。那可以直接使用range从0生成到999999,然后做个format就可以了,如下面代码所示。

with open('violence_breaks_dictionary.txt','w') as f:for i in range(0,1e6):f.write('{}\n'.format(i))

轻松搞定纯数字字典,放到破解软件里破解了一番,等程序运行完,发现没有一个密码是正确的。随即实验了7位纯数字、8位纯数字。。。。。。甚至11位纯数字(一般手机号为11位),都不对。

如此可以看出,密码可能不为纯数字形式,可能是大写字母、小写字母与数字的组合。

心酸历程二——字母+数字字典

字母+数字的形式,着实有点费脑,因为要一次性生成1位到6位的所有组合情况,用for或者while循环,显然并不能直接做到。(ps:其实是可以的,但是那种方法有点不符合一个程序猿的基本素养)

number=[str(i) for i in range(10)] # 数字
ALPHABET=[chr(i) for i in range(65,26+65)] # 大写字母
alphabet=[chr(i) for i in range(97,97+26)] # 小写字母
char_set=('',)+tuple(number+ALPHABET+alphabet)
with open('violence_breaks_dictionary.txt','w') as f:for i1 in char_set:for i2 in char_set:for i3 in char_set:for i4 in char_set:for i5 in char_set:for i6 in char_set:f.write(f'{i1}{i2}{i3}{i4}{i5}{i6}\n')

那么,问题来了,如何用有限的代码,来实现生成字母+数字形式的1到6位所有可能的组合的暴力破解的字典呢?

某头躺在床上,想到一个很棒的神奇,那就是递归。

所以有了一个版本的代码,如下所示。

number=[str(i) for i in range(10)] # 数字
ALPHABET=[chr(i) for i in range(65,26+65)] #大写字母
alphabet=[chr(i) for i in range(97,97+26)] #小写字母
char_set=tuple(number+ALPHABET+alphabet)nl = []def gan_number(n):if n==1:nl.extend(char_set)yield char_setelse:for i in char_set:char_item=[i+item_ for item in gan_number(n - 1) for item_ in item]nl.extend(char_item)yield char_itemprint(list(gan_number(6)))
print(nl)

跑了很久很久。。。千呼万唤始出来,看着最后的nl的输出,感觉貌似没有问题,但是数据太多,那就测试一下gan_number(2)的输出结果。

结果,很明显,并不好,因为n=1的数据重复了很多次,那么怎么办,很简单,gan_number(n - 1) 的调用不妨到循环里,只让他调用一次咯~~~r

number=[str(i) for i in range(10)] # 数字
ALPHABET=[chr(i) for i in range(65,26+65)] #大写字母
alphabet=[chr(i) for i in range(97,97+26)] #小写字母
char_set=tuple(number+ALPHABET+alphabet)nl = []def gan_number(n):if n==1:nl.extend(char_set)yield char_setelse:gan_=gan_number(n - 1)for i in char_set:char_item=[i+item_ for item in gan_ for item_ in item]nl.extend(char_item)yield char_itemprint(list(gan_number(6)))
print(nl)

然后,事情哪有这么简单,toyoung,tosimple.

咋回事,代码怎么不按照套路出牌~年轻人,不讲武德啊。(开个玩笑~)

这是怎么回事,那么不得不说到python迭代器(请参考这篇文章)了,详细的在这里面说了,这里就不重复了。

所以这里问题关键就是,迭代器是一个“阅完即焚”的东西,说白了,数据只能提取一次。

那么怎么办呢,那只能取消他迭代器的特性,简单的说,就是把数据全取出来,然后再让他去执行下面的for循环。

number=[str(i) for i in range(10)] # 数字
ALPHABET=[chr(i) for i in range(65,26+65)] #大写字母
alphabet=[chr(i) for i in range(97,97+26)] #小写字母
char_set=tuple(number+ALPHABET+alphabet)nl = []def gan_number(n):if n==1:nl.extend(char_set)yield char_setelse:gan_=tuple(gan_number(n - 1))for i in char_set:char_item=[i+item_ for item in gan_ for item_ in item]nl.extend(char_item)yield char_itemprint(list(gan_number(6)))
print(nl)

如此,得到的就是我们所需要的结果,最后只需要把nl的数据保存成文件就行。

number=[str(i) for i in range(10)] # 数字
ALPHABET=[chr(i) for i in range(65,26+65)] #大写字母
alphabet=[chr(i) for i in range(97,97+26)] #小写字母
char_set=tuple(number+ALPHABET+alphabet)nl = []def gan_number(n):if n==1:nl.extend(char_set)yield char_setelse:gan_=tuple(gan_number(n - 1))for i in char_set:char_item=[i+item_ for item in gan_ for item_ in item]nl.extend(char_item)yield char_itemprint(list(gan_number(6)))
with open('violence_breaks_dictionary.txt','w') as f:for item in nl:f.write(item+'\n')

帮助小姐姐破解加密压缩包(一)——暴力破解字典生成相关推荐

  1. 2022年网络安全比赛--压缩包文件暴力破解中职组(超详细)

    2022年比赛压缩包文件暴力破解解析 一.竞赛时间 180分钟 共计3小时 二.竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.通过本地PC中渗透测试平台Kali使用Nmap扫描目标靶机服 ...

  2. 如何面对高水平的破解组织 谈暴力破解应对

    如何面对高水平的破解组织 谈暴力破解应对 2005-05-09, 11:18 sanit 共享软件是目前世界上软件业比较热门的话题,国内更是如此.成千上万的中国程序员以极大的热情投入到这个领域来,都憧 ...

  3. 口令暴力破解--Telnet协议暴力破解、数据库暴力破解与远程桌面暴力破解

    Telnet协议暴力破解 Telnet Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.要开始一个 ...

  4. mac下密码加密zip,暴力破解zip,生成密钥字典

    2019独角兽企业重金招聘Python工程师标准>>> 电脑在送修售后之前对一些文件zip加密并且删除了原文件,然后忘了这回事了,悲催的是等到捡起这些文件时候已经忘记密码是啥. 加密 ...

  5. 压缩包.zip暴力破解方法

    一: 前言 本方法基于虚拟机下的kali系统,软件为kali自带的fcrackzip,有兴趣的童鞋请自行研究下载. 二:方法说明 fcrackzip -help 常用参数中文说明: -b 暴力破解模式 ...

  6. 借助7Z.exe 实现RAR压缩包密码暴力破解 C语言实现

    吐槽几句 rar压缩包暴力破解这种软件 , 原理上挺简单的其实 , 就是不断的用字符去碰 , 指不定啥时候能碰上 , 爆破破解不就是这么回事嘛 , 之前下载个学习资料 , 说好的童叟无欺, 结果却给我 ...

  7. 密码破解---实验六:暴力破解

    目录 一.实验目的及要求 二.实验原理 四.实验步骤及内容 4.1登录DVWA 4.2利用burp suite爆破 五.实验总结 六.分析与思考 一.实验目的及要求 通过该实验熟悉爆破的原理和Burp ...

  8. Java加密算法—凯撒加密实现以及暴力破解

    目录 1.概念 2.加密实现 3.解密实现 4.频率分析法破解 1.概念 凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码.这是一种位移加密方式,只对26个字母 ...

  9. 使用Reaver对WPS加密网络进行暴力破解

    WPS状态探测 探测开启了WPS功能的AP,WPS Locked状态为NO的表示开启了WPS功能. wash -i wlan0mon PIN码获取 reaver -i wlan0mon -b MAC地 ...

  10. 使用JohnTheRipper对有密码加密的ZIP压缩包文件进行暴力破解

    背景 对加密的ZIP压缩包进行密码破解的方式有很多,网上也有很多文章,今天只介绍一种--JohnTheRipper. JohnTheRipper 摘自百度百科: John the Ripper,是一个 ...

最新文章

  1. FUSE——用户空间文件系统
  2. 2019微生物组—宏基因组分析技术研讨会第五期
  3. spark-submit参数说明--standalone
  4. SpringMVC+MyBatis+Redis开启二级缓存配置
  5. linux如何右键新建文件夹,在Ubuntu 18.04右键菜单中增加新文档(New Document)及其他类型选项...
  6. python sanic_如何使用Python和Sanic使代码快速异步
  7. Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库
  8. 接口测试Fiddler实战
  9. 翁恺c语言程序设计入门作业,程序设计入门——C语言
  10. 如何制作U盘启动盘并且安装系统(保姆级教学)
  11. leetcode 有效的括号
  12. element tabs 的基础类型下划线不显示
  13. 用pygame做一个简单的python小游戏---贪吃蛇
  14. 贷还是不贷:如何用 Python 和机器学习帮你决策?
  15. Zblog插件-zblong插件中心
  16. bigdata_舆情挖掘项目
  17. python 返回绝对值
  18. android 横向照片流,MAC下将Android照片与iCloud照片流同步的方法
  19. 【喜报】“深度强化学习实验室”战略合作伙伴”南栖仙策“完成Pre-A轮融资,高瓴创投领投
  20. GPS北斗双模技术应用开发研究--数据解析

热门文章

  1. Allied Vision相机
  2. 车牌识别代码OpenCV
  3. 六、小程序|App抓包-移动端抓包app-抓包
  4. 怎么在博客上积累代码量?
  5. java实现小程序订阅消息推送(附源码)
  6. 心电图分析软件_狼疮性心肌炎39例临床特点及预后分析
  7. 华为宣布了,鸿蒙 OS 2.0 开放源代码
  8. java自学一般要学多久?学会了有什么作用?
  9. 重置winsock目录
  10. python 代理抓包_python requests代理设置,fiddler抓包