https://github.com/hxz393/brutalityextractor
适用于高性能系统的多进程解压缩软件(A multiprocess decompression software for high-performance system)
https://github.com/hxz393/brutalityextractor
brute-force brute-force-attack brute-force-decompression brute-force-techniques computational-efficiency data-processing decompression efficient-compression-tool extractor high-performance high-speed-decompression optimization parallel-computing parallel-decompression parallel-optimization parallel-processing performance-enhancement performance-optimization performance-testing scalable
Last synced: about 2 months ago
JSON representation
适用于高性能系统的多进程解压缩软件(A multiprocess decompression software for high-performance system)
- Host: GitHub
- URL: https://github.com/hxz393/brutalityextractor
- Owner: hxz393
- License: gpl-3.0
- Created: 2023-06-09T17:21:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-19T07:06:22.000Z (almost 2 years ago)
- Last Synced: 2024-11-22T17:51:24.995Z (11 months ago)
- Topics: brute-force, brute-force-attack, brute-force-decompression, brute-force-techniques, computational-efficiency, data-processing, decompression, efficient-compression-tool, extractor, high-performance, high-speed-decompression, optimization, parallel-computing, parallel-decompression, parallel-optimization, parallel-processing, performance-enhancement, performance-optimization, performance-testing, scalable
- Language: Python
- Homepage:
- Size: 4.91 MB
- Stars: 177
- Watchers: 3
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# [English](https://github.com/hxz393/BrutalityExtractor/blob/main/README_EN.md) | [中文](https://github.com/hxz393/BrutalityExtractor/blob/main/README.md)
# 软件介绍
BrutalityExtractor 是一款专为高性能系统打造的多进程解压软件。针对现代多核处理器和高速固态硬盘优化,批量解压速度比常见解压软件提升 5 倍以上,彻底利用计算机硬件性能。
主要特性:
- 批量解压缩:自动扫描解压目录下所有压缩文件,即使文件后缀名不正确也能正确识别。
- 支持多格式:支持常见压缩文件格式 `7z`、`zip`、`rar`、`tar`、`gz`、`xz`、`bz2` ,并且能正确处理分卷压缩包。
- 支持多进程:根据处理器线程数,自定义解压进程数量,将解压速度翻倍。
- 支持密码列表:可以设置常用密码列表,自动匹配加密压缩包。
- 附加功能:消除目录冗余、删除空目录、删除垃圾文件等常用功能。软件截图:

命令行截图:

## 系统要求
使用前请仔细阅读下面软件的使用限制。
### 操作系统
软件开发编译环境为 `Win10 x64` 专业工作站版,版本号 `22H2`。只要是 `Win10 x64` 以上操作系统的用户可以直接打开使用。
更低版本的 `Win 7` 和 `Win XP` 因为使用 `Python 3.10` 版本的原因,不支持运行。
其他操作系统理论上可以手动编译成可执行文件,编译流程参见下面自行打包小节。
### 处理器
当处理器配置低于 2 核 4 线程时,软件将运行在单进程模式,不会有任何速度加成。
处理器配置高于 2 核 4 线程时,出于稳定性考虑,软件能设置进程数最高不超过处理器线程数的一半。
当然你可以选择多开软件运行,来实际上无视这一限制。因此可能造成系统死机、崩溃、丢失数据等副作用,请自行评估影响。
### 内存
内存限制比较宽松,这是因为无法评估运行时实际所需内存。解压所需内存由文件压缩格式、压缩算法、是否固实压缩等因素决定。当内存被占满时,可能会发生解压失败、程序运行报错、系统异常报错等情况。
建议对单个或分卷大于 4GB 的压缩文件手动解压。因为这类文件解压可能会占用大量内存,并且本软件目前对大体积压缩包没有加速效果。
采用多线程加速解压大体积压缩包的方案,正在评估效果。如果效果好,将会加入到后续更新中。
### 硬盘
如果使用传统机械硬盘,则无论处理器或内存配置有多高,使用本软件或其他软件,都不能让解压速度超过硬盘读写速度。
现在使用 `PCI-E 3.0 x4` 以上接口的固态硬盘,还被其他解压软件限制在机械硬盘的速度,这是一种极大性能浪费。本软件没有发明新解压算法来提高速度,但通过多进程运行的方式,让性能瓶颈转移到处理器上。
一个通用硬盘规格和进程数对应关系表如下:
| 硬盘规格 | 进程数 | 说明 |
|-------------------|------|---------------------------------------------------|
| HDD SATA 3.0 18TB | 2 | 高性能 HDD,读写速度超 200MB/s,勉强可开 2 个进程 |
| SSD SATA 3.0 4TB | 4 | 高性能 SATA 接口 SSD,读写速度最高 500MB/s,可开 4 个进程 |
| SSD PCI-E 1TB | 8~64 | 常见 m.2 接口 SSD,通常有 1GB/s 以上读写速度,性能差异极大。进程数根据实际情况调整 |## 下载地址
软件下载方式:
- 方式一:到 [release](https://github.com/hxz393/BrutalityExtractor/releases) 页面下载最新版的可执行文件,文件名为 `BrutalityExtractor.exe` 或 `BrutalityExtractorCli.exe` ,下载完毕可直接打开使用。
- 方式二:[百度网盘](https://pan.baidu.com/s/1RK7uBqaqgqJHLJbadXI48g?pwd=6666)分流下载。
- 方式三:[直连](https://www.x2b.net/download/BrutalityExtractor.7z)下载。下载的压缩包,需要解压缩后运行可执行文件,否则配置将不会保存。
## 自行打包
手动编译需要事先安装好 `Python 3.10` 以上版本,和 `pyinstaller` 软件包。其他依赖报缺啥装啥,统一装最新版。
编译步骤如下:
1. 在安装有 `Git` 的主机上克隆项目。命令如下:
```sh
git clone https://github.com/hxz393/BrutalityExtractor.git
```或者在 [项目主页](https://github.com/hxz393/BrutalityExtractor) 点击绿色`<> Code` 按钮选择 `Download ZIP` 选项,[下载](https://github.com/hxz393/BrutalityExtractor/archive/refs/heads/main.zip) 源码压缩包。下载完毕后用压缩软件或命令工具解压缩。
2. 使用命令切换到项目路径下面。
例如在 Windows 系统下面,打开 `CMD` 命令提示符,输入:
```sh
cd B:\git\BrutalityExtractor
B:
```在 Linux 系统下面,通用使用 `cd` 命令切换到项目路径下面:
```sh
cd /root/BrutalityExtractor
```如果使用 `PyCharm` 作为 IDE,可以直接在自带的终端栏目输入下面打包命令。
3. 使用 `pyinstaller` 命令编译打包成可执行文件:
```sh
pyinstaller -F -w -i BrutalityExtractor.ico --add-binary 'bin/7z.exe;bin' --add-binary 'bin/7z.dll;bin' --collect-all="tksvg" BrutalityExtractor.py
```打包命令行模式脚本:
```sh
pyinstaller -F -w -i BrutalityExtractor.ico --add-binary 'bin/7z.exe;bin' --add-binary 'bin/7z.dll;bin' --console BrutalityExtractorCli.py
```如果过程没有报错,可执行文件会生成到 `dist` 目录下面。
## 开源许可
本软件采用 [GPL-3.0 license](https://github.com/hxz393/BrutalityExtractor/blob/main/LICENSE) 源授权许可协议,若违背开源社区的基本准则,将开源项目据为私有用于商业用途,属于侵权行为,本人将追究法律责任。
用到的第三方开源库:
- 解压核心:[7z](https://www.7-zip.org/)
- 文件识别:[magic](https://github.com/ahupp/python-magic)
- 主题美化:[ttkbootstrap](https://github.com/israel-dryer/ttkbootstrap)
- 图标生成:[tkfontawesome](https://github.com/israel-dryer/TkFontAwesome)# 软件使用
第一次运行时,由于缺少配置文件软件界面为英文。可以展开 Appearance Settings,在 Language 后面选择简体中文来切换语言。选择以后需要重启软件来生效。
## 基本配置
其中解压目录或目标目录为必填项。
- **解压目录**
输入或选择压缩包存放的目录,例如`B:\Archive` 或 `B:/Archive/` 均可正常识别。
目录内最好别放无关的文件,否则可能会有意外解压行为,例如将游戏资源打包文件 `resources.pak` 给解压,造成游戏无法运行。
- **目标目录**
输入解压后文件存放目录,解压后的目录结构会和解压目录中的保持一致。例如 `B:/Archive/` 下面的 `xd1/test.zip` 文件内容会被解压到 `B:/New/` 下面 `xd1/test/` 内。
将目标目录设定到不同磁盘,可以稍微提升解压速度。
- **解压密码**
输入单个密码或者密码列表文本文件位置。如果压缩包没有密码,随便输入什么密码都可以解压。如果有密码,会挨个尝试密码列表中的密码,直到密码正确或全部失败。
软件本身没有对密码尝试做多进程处理。如果需要暴力破解压缩包密码,可将密码列表分为多份,运行多个软件实例来跑。将日志等级设为 Debug,可在日志中看到尝试结果。此功能请勿用于非法用途。
为了能正确读取特殊密码,密码文本文件请使用 `UTF-8` 编码格式储存。
## 高级配置
高级配置中的设置需要根据实际情况来调整。
- **进程数量**
设置同时运行解压的进程数。解压进程数不会超过要解压文件的总数量。
- **忽略警告**
关闭解压运行前的系统资源检测。
- **释放空间**
在压缩包解压完成后,删除压缩包。无论开启与否,如果解压失败都不会删除原始压缩包。
- **强制模式**
跳过文件类型识别,尝试对目录下所有文件进行解压。
- **日志相关**
控制写入本地日志文件的配置,修改设置后需要重启软件来生效。
## 外观配置
一些外观主题设置。
- **关闭提示**
关闭鼠标悬停在文字上时显示的提示信息。
- **迷你模式**
使用小图标模式,让布局更紧凑。需要重启生效。
- **修改主题**
选择自己喜好的软件主题配色风格。
- **修改语言**
修改软件显示语言。目前仅有中英两种,欢迎提交其他语种的靠谱翻译。语言字典位于 `modules/configs/lang_dict.py`。
- **窗口透明**
配置窗口透明度。
## 附加功能
附加功能独立于解压功能存在,提供一些常用文件操作功能。
- **功能开关**
开启功能开关后,将在目标目录下执行下面所配置的功能,解压操作暂时关闭。
- **消除冗余**
消除冗余目录结构。只有在目录下有且仅有一个同名目录情况下会工作,一次只消除一层冗余结构。例如:将 `D:/test/test/` 下面的文件提取到 `D:/test/`,之后删除空的 `D:/test/test` 目录。
- **清理目录**
删除指定目录下所有扫描到空目录。有时空目录有其特殊用途,请谨慎清理。
- **删除垃圾**
指定的文件或目录名,直接删除目标目录下找到的匹配目标。和解压密码一样,支持导入名称列表来批量删除。
## 命令行模式
在命令行中运行时,需要下载命令行版本可执行文件 `BrutalityExtractorCli.exe` 。
命令行模式仅支持有限的功能,但速度更快。命令格式如下:
```sh
BrutalityExtractorCli.exe [-h] -d D [-p P] [-c C] [-v]
```其中中括号 `[]` 内的参数为可选。可以使用 `BrutalityExtractorCli.exe -h` 命令来查看自带帮助。
参数说明如下:
- `-d`:指定压缩文件存放目录,解压操作也在同一目录进行,并且解压成功后会删除源压缩文件。
- `-c`:设置同时解压的进程数量。没有最高限制,请小心输入。
- `-p`:指定解压密码或密码列表。如果密码带空格,需要用双引号 `""` 将密码括起来。下面是一个使用示例,指定解压目录为 `B:\Archive`,密码列表为 `B:/pass.txt`,运行进程数 16:
```sh
BrutalityExtractorCli.exe -c 16 -d B:\Archive -p B:/pass.txt
```# 常见问题
软件运行遇见错误时,先查看下面总结的一些常见问题和解决方案。再查看所有 [Issue](https://github.com/hxz393/BrutalityExtractor/issues) 中是否有同样问题。如果都没有帮助,可以提交新 [Issue](https://github.com/hxz393/BrutalityExtractor/issues) ,并附上相关日志。
## 窗口最大化后不正常
全屏模式下折叠展开不会自动适应窗口高度。
**原因**:由于使用的框架原因,不支持全屏模式。
**解决**:欢迎提供解决方案。
## 增加批量压缩功能
不加入。常见压缩软件在压缩时资源利用率非常好,请尝试 `7z`、`PeaZip` 等开源免费软件。
## 增加自动改名功能
不加入。请尝试专业的软件,例如:`everything`、`PowerToys` 等优秀免费软件。
# 更新日志
为避免更新日志过长,只保留最近更新日志。
## 版本 1.2.1(2023.07.21)
改进内容:
1. 消除冗余目录功能,可作用于所有子目录;
2. 改进解压结果判断逻辑。修复内容:
1. 调低程序运行优先级;
2. 修改更新检测方法;
3. 修复其他小问题。## 版本 1.2.0(2023.06.28)
改进内容:
1. 添加强制模式开关,解除文件类型限制;
2. 更新 7z 核心程序到 23.1 版本。修复内容:
1. 修复窗口退出时,子进程在系统残留。
## 版本 1.1.0(2023.06.20)
改进内容:
1. 优化代码结构,提升运行速度;
2. 合并删除垃圾文件和文件夹为一个功能;
3. 优化日志记录功能;
4. 添加默认配置项目。修复内容:
1. 修复 `pathlib` 库造成的性能问题,替换为 `os` 库;
2. 修复一个特定情形下误删文件的 BUG。## 版本 1.0.2(2023.06.15)
改进内容:
1. 修改日志写入格式为 UTF-8;
2. 当解压文件总数小于进程数时,设置进程数为文件数。修复内容:
1. 修复删除文件计数错误;
2. 修复文件大小显示的小数位被忽略;
3. 修复部分遗漏文字。## 版本 1.0.1(2023.06.12)
修复内容:
1. 添加读取文本时,指定使用 UTF-8 编码。
## 版本 1.0.0(2023.06.11)
发布第一个版本。