当前位置:首页 > 生活百科

zip解压密码是什么(手机上好用的zip破解器使用方法)

栏目:生活百科日期:2025-01-21浏览:0

前言

本文继续记录学习下 Python 的有趣应用:借助 Python 脚本暴力破解 ZIP 加密文件的密码。虽然有相关的工具 ARCHPR 可实现 RAR、ZIP 等压缩加密文件的可视化暴力破解,但是主要是为了学习 Python 编程应用。

Python语法

既然本意是学习 Python 编程,那自然是要对本实战应用场景的编码过程遇到的相关语法知识进行学习。

在此先推荐一个 Python 语法的官方站点:Python官方中文文档,支持下载到本地。

自定义迭代器

迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,迭代器有两个基本的方法:iter() 和 next()。

1、迭代器对象可以使用常规 for 语句进行遍历:

2、也可以使用 next() 函数:

3、Python 支持编写 class 来自定义迭代器,如何自定义一个迭代器:

在自定义的类中添加了__iter__魔法方法可取得迭代器;在自定义的类中通过__next__魔法方法指出所有的数据。

来看看一个简单的自定义可迭代的类示例:

代码运行效果:

Python多线程

线程是 CPU 分配资源的基本单位,但一个程序开始运行后这个程序就变成了一个进程,而一个进程相当于一个或者多个线程。当没有多线程编程时,一个进程也是一个主线程,但有多线程编程时,一个进程包含多个线程,包括主线程。使用线程可以实现程序的并发,Python 多线程快速入门可参见:python3 多线程编程。

Python3 线程中常用的两个模块为:

(1)_thread;(2)threading (推荐使用)

其中 thread 模块已被废弃,用户可以使用 threading 模块代替。所以在 Python3 中不能再使用 “thread” 模块,为了兼容性,Python3 将 thread 重命名为 “_thread”。

1、函数创建多线程

Python3 中提供了一个内置模块threading.Thread,可以很方便的创建多线程,threading.Thread()一般接收2个参数:

1)线程函数名:要放置线程让其后台执行的函数,有用户自己定义,主要不要加();

2)线程函数的参数:线程函数名所需的参数,以 tuple 元组的形式传入,如果不需要参数,可以不指定。

下面来看看一个简单的多线程示例:

代码运行效果:

2、类创建多线程

首先,自定义一个类,对这个自定义的类有两个要求:

1)必须继承 threading.Thread 这个父类;2)必须重写 run() 这个方法:run() 方法相当于第一种方法中的线程函数,可以写自己需要的业务逻辑代码,在start()后将会调用。

来看看示例代码:

3、 join() 方法

多线程中 join() 作用是调用 join() 的线程阻塞直到某一线程结束才继续执行。来看看示例代码:

代码运行效果:

4、线程的同步——锁

当一个进程拥有多个线程之后,如果他们各做各的任务互没有关系还行,但既然属于同一个进程,他们之间总是具有一定关系的。比如多个线程都要对某个数据进行修改,则可能会出现不可预料的结果。为保证操作正确,就需要引入锁来进行线程间的同步。

Python3 中的 threading 模块提供了 RLock 锁(可重入锁):

对于某一时间只能让一个线程操作的语句放到 RLock 的 acquire 方法 和 release 方法之间;即 acquire() 函数相当于给 RLock 锁 上锁,而 release() 函数相当于解锁。

来看看一个简单的演示案例:

代码运行效果:

5、多线程函数小结:

Python脚本

下面将从单线程、多线程两种角度实现 ZIP 加密文件的密码爆破。

单线程数字爆破

先来生成一个用数字密码(“101”)加密的 ZIP 压缩文件 password.zip,压缩文件为图片 pasword.png(注意勾选 “ZIP 传统加密” 的选项,后面的代码不支持 WinRAR 新式的默认加密方式),如下图所示:

爆破密码的脚本也相对简单,直接上代码:

以上代码没什么需要特别解释的,简单补充两点:

需要注意的是在爆破过程需要使用异常处理机制避免密码错误时程序直接终止;对于 zipfile 库的用法有疑问请参见官方文档:ZipFile数据压缩与存档。

下面直接来看看 Pycharm 中运行脚本的效果:

单线程字符爆破

先来看看脚本:

将 password.png 重新压缩并将解压密码设置为 “ab12” 数字与字母组合的字符串,上述利用自定义迭代器生成的字符组合范围太广了,爆破起来可能跑到天荒地老……故演示此代码时我依据已知的密码对代码做了如下更改:

设置缩小字符范围:letters = &‘abcd0123456789&’;设置缩小遍历的字符串长度:for password in MyIterator(3, 4)。

来看看脚本运行效果,还足足跑了 78 秒之久:

多线程字典爆破

直接上脚本:

代码运行效果:

总结

个人感觉最后的多线程脚本实际上意义不大,仅供简单学习多线程使用……因为此程序中对每个密码的尝试都单开了一个线程、而尝试密码是否正常的逻辑函数 extractfile() 又十分简单,没有必要单开一个线程来浪费资源,除非说处理的逻辑函数 extractfile() 执行了十分耗时的操作(比如需要下载文件、或者说每次执行 extractfile() 函数都对一个单独的大型字典进行爆破等)。

“zip解压密码是什么(手机上好用的zip破解器使用方法)” 的相关文章

excel折叠行怎么设置(表格折叠展开操作方法)

最近遇到一个小需求,如何将Excel单元格中的内容拆分到多行?下图中左边是原始数据,每位员工需要上班的日期,合并在一个单元格内,日期之间间隔一个空白符;现在需要...

cf补丁怎么用(一文解读cf补丁作用)

众所周知,CF每次版本更新的内容都非常多,除了一些新地图以及新武器外,有的时候还会新增一些新的游戏系统以及游戏玩法。而在不久后的CF新版本中很多玩家发现一个更新...

小程序支付开发流程,怎么开发小程序支付配置

1.小程序之微信支付虽然我们现行的小程序版本中没有支付这块功能,但是作为移动互联网中非常重要的一个功能还是需要了解下(老版本的小程序中有微信支付相关的功能代码在...

值得买的商用电脑(最值入手的3款商用电脑)

随着笔记本的发展,笔记本厂商针对不同的用户需求推出了游戏本、轻薄本、商用本、影音本等几大品类,但就目前产品来看,笔记本产品正在逐渐淡化严格的定位划分,比如游戏本...

c语言快速排序算法(快速排序算法代码c语言)

快速排序是一种不稳定排序,它的时间复杂度为O(n·lgn),最坏情况为O(n2);空间复杂度为O(n·lgn)。这种排序方式是对于冒泡排序的一种改进,它采用分治...

小米儿童电话手表怎么样(分享米兔儿童电话手表使用体验

每天孩子出行,作为家长最担心的就是其安全。由于孩子自控力差,配手机的话容易上网成瘾,被网络上不健康内容荼毒。思来想去,最后从小米商城入手了“米兔儿童电话手表4C...

100元的智能手机能用吗(百元智能手机推荐)

手机市场有一个十分有趣的现象:从厂商到数码爱好者,几乎所有人都在关注、推荐高端手机,但据统计至少30%的手机用户还是一直在买千元档机型,而Redmi在这一价位可...

2023,百度真正王者归来

配图来自Canva可画自从去年收购YY直播以及开启全面移动化战略以来,百度的基本面开始得到全面改善。与此同时,凭借多年积累的AI技术实力,百度宣布造车的举动也为...

dsp广告平台排名,dsp平台广告数量是多少

如果说当前有什么趋势是所有人都无法忽视的,那就是移动化。不需要砖家预测,看看正低着头在手机上阅读这篇文章的你就知道了。根据eMarketer的报告,2014年中...

java基础语法要学多久(java基础代码大全)

流程控制语句的语法吧~什么是流程控制语句?流程控制语句在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接...