百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

小明用Python暴力破解压缩文件zip密码,省了250块钱

csdh11 2024-12-29 02:11 13 浏览

那天晚上

小明和你一样

在某个小网站上搜寻某些

私密的学习资料



突然看到论坛有人提供了

一个非常牛逼的资源


小明怀着激动的心情

下载了下来



他怀着激动的心情

打开了这个压缩文件

看到就只有这么一个 txt



小明就是一顿双击

可是突然发现

这玩意居然需要密码



???

裤子都脱了

你给我看这个?



小明只好找到楼主

求他给下解压密码


对方只是冷淡的回应了一句

“250块钱不讲价”


小明摸了摸自己

刚穿上裤子的口袋


感叹了一句:



骂了一句楼主没良心之后

小明叹了口气...


回到 zip 文件面前

想着碰碰运气

随便输了几个密码


可惜都是错误的



这可咋办呢?

看不到文件内容

心理贼难受



过了一会

小明灵光一闪


这不,关注了

“学习 Python 的正确姿势”

这个公众号有段时间了


自己用 Python 来把密码给破解了

应该不难吧?



于是小明看了一下

Python 文档


找到了一个叫做

zipfile 的库

专门用来操作 zip 文件的



往下拉

小明突然看到这个方法



小明心中一乐

这不正是我想要的嘛


使用 extractall 方法解压文件

pwd 传入 zip 密码就可以了


自己不知道密码

一个一个试就太慢了


小明突然想到了这玩意



让 Python 疯狂的去调用这个 extractall 方法

每次传入的 pwd 都不同

直到试到密码正确为止

这不就只是时间问题了么?



思路有了

代码撸起


小明希望可以开发一个破解脚本

说不定以后还可以用得着


像这样



可以让 Python 直接暴力破解

也可以传入自定义的密码字典文件去破解


于是他使用了 click 来定义

命令参数的使用



可以通过 b 的参数值

判断使用哪种破解方式



首先来写一下字典破解的方式


使用这种方式

说明用户手上有密码字典文件了



那么只要读取这些密码

挨个去解压就 ok


首先使用 ZipFile 打开

要破解的压缩文件



接着打开用户传入的字典文件

挨个密码读取



接着就可以调用 extractall

来依次尝试密码了


如果没报密码错误

说明密码正确


把正确的密码打印出来

否则就是错误密码


或者

你这字典密码压根就没有正确的密码



ok

传入一个 10000 个密码的字典文件

试着运行一波



恩,还可以

不过字典文件密码太少

没那么轻易找得到



接下来再来写另一种情况


当用户字典密码文件找不到正确的

或者用户压根就没有字典密码咋办


可能你也想到了

可以使用迭代呀



于是

小明把键盘的按钮都

死命敲了个遍



然后使用 itertools 的 product

就可以迭代生成各种密码了


比如要生成各种 6 位的密码

就可以这样



运行起来就是这样的



因为不知道密码的长度

所以可以从一位数的密码开始生成

然后逐个击破



同样的

将每次生成的密码

逐个尝试



如果发现一位数的密码都不正确

就将生成的密码长度 +1

以此类推



来试试



恩,有内味了



写完之后

小明就开始跑他的压缩文件了



等啊等啊等啊

感觉密码应该不是很简单

需要等一段时间

索性就让它跑着

然后睡觉去了



小明第二天起来

发现密码出来了!!



虽然小明感觉被这密码

嘲讽了一番


但还是怀着激动的心情

小明打开了压缩文件

输入了密码



密码正确

打开文件

天机不可泄露



小明看到之后

直接哭晕在厕所



(完)


本故事纯属虚构

如有雷同

???


咱们下回见

peace!

相关推荐

探索Java项目中日志系统最佳实践:从入门到精通

探索Java项目中日志系统最佳实践:从入门到精通在现代软件开发中,日志系统如同一位默默无闻却至关重要的管家,它记录了程序运行中的各种事件,为我们排查问题、监控性能和优化系统提供了宝贵的依据。在Java...

用了这么多年的java日志框架,你真的弄懂了吗?

在项目开发过程中,有一个必不可少的环节就是记录日志,相信只要是个程序员都用过,可是咱们自问下,用了这么多年的日志框架,你确定自己真弄懂了日志框架的来龙去脉嘛?下面笔者就详细聊聊java中常用日志框架的...

物理老师教你学Java语言(中篇)(物理专业学编程)

第四章物质的基本结构——类与对象...

一文搞定!Spring Boot3 定时任务操作全攻略

各位互联网大厂的后端开发小伙伴们,在使用SpringBoot3开发项目时,你是否遇到过定时任务实现的难题呢?比如任务调度时间不准确,代码报错却找不到方向,是不是特别头疼?如今,随着互联网业务规模...

你还不懂java的日志系统吗 ?(java的日志类)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

谈谈枚举的新用法--java(java枚举的作用与好处)

问题的由来前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了!事情是这样的,做过游戏的都知道,buff,需要分类型,且...

你还不懂java的日志系统吗(javaw 日志)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

Java 8之后的那些新特性(三):Java System Logger

去年12月份log4j日志框架的一个漏洞,给Java整个行业造成了非常大的影响。这个事情也顺带把log4j这个日志框架推到了争议的最前线。在Java领域,log4j可能相对比较流行。而在log4j之外...

Java开发中的日志管理:让程序“开口说话”

Java开发中的日志管理:让程序“开口说话”日志是程序员的朋友,也是程序的“嘴巴”。它能让程序在运行过程中“开口说话”,告诉我们它的状态、行为以及遇到的问题。在Java开发中,良好的日志管理不仅能帮助...

吊打面试官(十二)--Java语言中ArrayList类一文全掌握

导读...

OS X 效率启动器 Alfred 详解与使用技巧

问:为什么要在Mac上使用效率启动器类应用?答:在非特殊专业用户的环境下,(每天)用户一般可以在系统中进行上百次操作,可以是点击,也可以是拖拽,但这些只是过程,而我们的真正目的是想获得结果,也就是...

Java中 高级的异常处理(java中异常处理的两种方式)

介绍异常处理是软件开发的一个关键方面,尤其是在Java中,这种语言以其稳健性和平台独立性而闻名。正确的异常处理不仅可以防止应用程序崩溃,还有助于调试并向用户提供有意义的反馈。...

【性能调优】全方位教你定位慢SQL,方法介绍下!

1.使用数据库自带工具...

全面了解mysql锁机制(InnoDB)与问题排查

MySQL/InnoDB的加锁,一直是一个常见的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?下面是不同锁等级的区别表级锁:开销小,加锁快;不会出现死锁;锁定粒度...

看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

一、什么是死锁加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获...