宅男美女社
AD01

[工具分享][自写小程序] 密码字典解压缩文件,不依赖扩展名,多层解压

工具 宅男美女社 - 1

骚话一大堆,到嘴边全忘了…


更新 2.5.2

如图,其他功能上完全没变

89fefeadc3799cdc75468863f26fb5ff.png

功能简介(懒得详细解释和截图了):

注意:字典文件 password.txt 的编码格式请保存为 utf-8

简单来说,设定好 7z.exe 路径,所有设定全选 y 的情况下,可以实现:

0. 根据密码字典自动尝试出密码并解压

1. 自动识别目标文件夹下的所有压缩文件,且不依赖扩展名,那些让改扩展名的都不用改了直接可以识别

2. 自动识别压缩包内结构,压缩包第一层只有文件夹是直接提取解压,其他情况会解压到压缩包同名文件夹内

3. 自动多层解压,能够将多重压缩的压缩包一次解压到底

    注意:很多游戏包是不适用多重解压的,因为游戏包内有很多游戏加载资源都是压缩文件形式,解压了反而会导致游戏读取失败

4. 解压完成后自动删除压缩文件 注意:这里不经过回收站,如果不想解压完删除请记得这里选 n,另外分卷压缩只会删除第一卷其他请自己手动删除

5. 解压结果会记录到程序所在文件夹下的 log.txt 内,解压了哪些文件对应密码是什么可以记录下来

6. 有个打赏二维码只是兴致所至弄着玩儿的(字符拼凑二维码挺有意思的方向),不想看见可以在设置的时候选 n,实在洁癖后续发到GitHub上也可以自己删了这段码自己再编译打包一遍。

7. 想更改配置可以删了 config.ini,重新打开程序会再要求配置的。想使用不同的配置的话,可以把程序复制一份放在不同的文件夹内,另作配置。

查毒报告(自己python写的小程序,没毒,爱信不信。后续会传到GitHub上) https://www.virustotal.com/gui/file/849e2c3fc81baae232a1d145c8eb7ef53f0d398bd231572324fb2b41ff37b925/detection 

小声bb一句:现在的杀毒软件真的?,最近想了解一下golang,我从官方渠道下载的 ide 被麦咖啡当毒给删了

其实从上次更新到这个版本早就写好了,最近实在是太忙了,没心情来发布,GitHub更要看啥时候闲下来往上传吧

忙起来了,短时间内应该是不会更新了,其实想实现的功能基本都写了也没什么再更新的欲望了,有bug还是可以发给我,不过短时间应该也不会修

就酱~

e8b1d1c0f4ca796125b957efaa86a63b.png

2.5.2
修改了多层解压的形式。只针对“当前目录·层”找到的压缩文件进行多层解压。而对于运行程序前就在存在俞当前目录下的文件夹内部不进行扫描
2.5.1
修复了智能解压时,如果无扩展名的压缩文件内,第一层只有一个文件夹而且这个文件夹的名字与压缩包本身的名字完全相同,此时无法在压缩包所在目录下创建与压缩包同名的文件夹(用了贼繁琐的方法:创建带时间戳后缀的文件夹,解压到里面后,再将内层的文件和文件夹上移一层并删除移空了的文件夹)
修复了智能解压,利用7zip获取压缩包内部文件结构,并通过PIPE传递结果时,内容超出4k的话,会导致程序锁死的问题
修复了智能解压,利用7zip获取压缩包内部文件结构时,由于不同压缩设置下各种奇葩文件名编码问题(gb2312 gbk gb18030 不说清楚 微软你是狗吧 你是狗吧 你是狗吧!)导致的识别错误
调整了识别压缩文件的精确度,从而兼顾识别速度,i7-9750hf/8g 环境下测试识别速度为 每1000个文件耗时1.2秒
2.4
修复了尝试字典中密码时,密码中含有[空格]时的识别错误的问题
新增了智能解压。也就是压缩包内第一层只有一个文件夹时直接将压缩包解压到当前目录,其他情况则创建压缩包同名文件夹
新增了多层解压。程序会遍历设定目录下,所有层级子目录下的压缩文件来进行解压。并且解压出新的压缩包也会自动获取并继续解压,直至设定目录所有层级子目录下所有压缩包均解压一次
2.3
修复了配置读取错误的问题
调整了选择解压到压缩包同名文件夹下的操作。因为如果压缩文件无扩展名,系统不允许创建与压缩包同名的文件夹。调整为创建带时间戳后缀的文件夹
2.2
新增了选择是否解压到压缩包同名文件夹下
2.1
新增了保存设置到config.ini的功能
新增了解压结果记录至log文件的功能
2.0
新增了压缩文件识别,识别压缩包不依赖扩展名,即压缩包丢失扩展名或伪装扩展名,依然可以正确识别并解压
1.9
修复了尝试字典中密码时,中文密码识别错误的问题
1.7
新增了解压完成后删除压缩文件(不经过回收站)
1.5
修改了实现解压的方法,改而调用外部7zip来实现,此之前用的是python的几个压缩模块。

  1. 修复了之前读取配置的 bug
  2. 增添了可配置的选项:· 是否解压到压缩包同名文件夹  · 是否解压完成自动删除  · 程序循环起来不再需要反复启动

72c1237085bfc8ffcb725878a4c59f68.png

07d8e62713c85aa2ccb02710e4c56467.png

0bad967252d508eb7f8c61c2d49ef1c9.png

virustotal:https://www.virustotal.com/gui/file/b4303f0611ddf7632f3cfbc2e00762fe4de432067681c53cc1e7bdd9913fc0b3/detection 


最开始,是自己记不住众多大佬的密码,刚好在自学 python ,就试着写个程序来用密码字典对冲解压。
但想法比较局限,是用的 python 的压缩包相关的模块来做,极其简陋,勉强能用至少不用背密码了。不过那两个模块对中文密码的支持不好,转码做的我焦头烂额。因为能将就用,也就懒得继续搞了

前些天看到了 ErsVId 大佬用 vb.net 写的工具
https://cangku.moe/archives/177793#comment-366323
啊,这不正是我想要的功能么,立马下下来替掉了我那个

顺畅的使用体验,和调用 7zip 这种不一样的思路让我心痒,于是把自己的重写了一版。空闲时间增增补补就有了现在这个用着也能算上顺手的版本了。

因为改写的动力来自仓库,而且过去一直都是白嫖,所以虽然是跟风写的还不如 ErsVId 大佬的好用,但也发出来给大伙玩儿玩儿~

0. 本程序需要配合 7zip 食用,只有文字交互
1. 本程序将识别 7z zip rar 压缩文件,且丢失扩展名的文件也可识别
2. 请将字典文件命名为 passwords.txt ,并与本程序放在同一目录下。
3. 字典中请勿出现空行,本程序以空行判断字典结束。
4. 每个压缩文件将被分别解压至其所在目录下对应 “压缩文件名” 的文件夹内
若已经存在该名称的文件夹则会创建”压缩文件名”+时间戳后缀的文件夹
暂时不具备·多层级解压·之类的功能,简陋之处见谅啦
5. 首次启动会提示录入 7zip 主程序 7z.exe 完整路径,以及设定是否将对冲密码的结果写入 log.txt
并会将设定保存在程序所在目录下的 config.ini,若选择写入 log.txt 的话也会保存在该目录下
6. 若要更改设定,可以手动编辑 config.ini 内的对应内容
    也可删除 config.ini 文件,程序启动时检测不到配置文件会重新提示录入

1. 首次运行,按照提示,拖入7z.exe,或者手动输入路径 ↓↓

6544fa4558b6237e0ded4cd55e4f50bf.png

2. 选择是否记录字典对冲解压的结果,如果想要记录下哪个压缩包的密码分别是什么可选 y 

27be17ed874c043b5139b1474d74ad55.png

3. 拖入一个压缩包或输入路径,工具会自动检索与这个压缩包同一目录下其他压缩包 ↓ ↓ 

121aaa4025a99a8a08f65a6ceb37f2d2.png

可以看到此时的状态,都有哪些压缩文件在这个目录下,包括没有扩展名的(红圈中的第一个文件)
a4a639d488946d385dd334f0727937fb.png

4. 小程序会依次尝试 passwords.txt 中的密码,若存在密码,便会解压到压缩包所在目录下 与压缩包同名的文件夹内 ↓↓

b1ce6f862f9d1c42129779ffe2429f65.png

注:若在选择是否写入 log.txt 时,输入的是 y,则会在小程序所在的目录下生成 log.txt  ↓↓

52f1e3fe61574ead997ac245f05fb577.png

virustotal  11/72 报毒,好神奇,{扶额}自己写的软件还以为百分百不会报毒呢。我就百度在线查毒第一条就是 virscan.org,然后就用它查的 ,编辑大大告诉我用 virustotal 还以为也不会报毒呢。…总之反正是我自己写的,而且也没有 ErsVId 大佬 的好用,大家自己看情况拿来玩儿吧~

https://www.virustotal.com/gui/file/87e1fc8b6a9af5e1e0d68c7042b8b3581033668896fb91125b691eb9a4c05523/detection

virscan 49 款杀毒软件 0 报毒在线报告:
https://r.virscan.org/language/en/report/dd4c9de31379396bc12e75f54dc8940a
MD5:0b3ef0342ca4e30bfce8a28e37ecf732
SHA1:6cdc5bb089dd877986f8036d2d8095f1b6b1f2fe
SHA256:87e1fc8b6a9af5e1e0d68c7042b8b3581033668896fb91125b691eb9a4c05523

我这边能打开 virscan 这个报告,放个图意思一下

3e5314ca66a11e63707ddeadcc137bca.png

另:
这个小程序是自学 python 无聊写的,这么简陋的功能体积还有 9mb 多,是 python 太臃肿(解释型语言的锅),其实代码也就 200 行(而且是自学练手的过程嘛,把所有实现整合封装成了几个类 ),就这还包含了大片注释和空行。
原谅我唠叨这废话,这是才除爬虫外拿 python 写的第二个小程序,跟在学校里学的 C++ 一对比 python 这封装体积实在不适应。

邮箱是撩骚用的,还请不要爆破我邮箱 QAQ

  • 创建一个调度解压过程的类,为实现多层解压做准备
  • (2.3√) 利用调度的类,实现一次解压结束后再次等待输入新的解压路径,让程序循环起来 (虽然本来只是个while循环的事儿,但我想更优雅地实现)
  • 实现多层解压
  • (2.3√) 把 ‘不创建压缩文件名目录直接解压’ 和 ‘解压完成后删除原文件’ 加入的配置记录 config.ini (这条感觉没啥价值不想做)

AD01