{"id":19961566,"url":"https://github.com/hxz393/brutalityextractor","last_synced_at":"2025-08-20T16:31:09.896Z","repository":{"id":174404462,"uuid":"651632683","full_name":"hxz393/BrutalityExtractor","owner":"hxz393","description":"适用于高性能系统的多进程解压缩软件(A multiprocess decompression software for high-performance system)","archived":false,"fork":false,"pushed_at":"2023-11-19T07:06:22.000Z","size":5153,"stargazers_count":177,"open_issues_count":0,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-22T17:51:24.995Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hxz393.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":null,"patreon":"assassing","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2023-06-09T17:21:01.000Z","updated_at":"2024-11-16T02:13:07.000Z","dependencies_parsed_at":"2023-12-24T20:37:24.952Z","dependency_job_id":null,"html_url":"https://github.com/hxz393/BrutalityExtractor","commit_stats":{"total_commits":38,"total_committers":1,"mean_commits":38.0,"dds":0.0,"last_synced_commit":"737969fb63cbf0dc40466af5aacabb47cdd33244"},"previous_names":["hxz393/brutalityextractor"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hxz393%2FBrutalityExtractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hxz393%2FBrutalityExtractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hxz393%2FBrutalityExtractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hxz393%2FBrutalityExtractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hxz393","download_url":"https://codeload.github.com/hxz393/BrutalityExtractor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230438185,"owners_count":18225870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-11-13T02:07:48.507Z","updated_at":"2024-12-19T13:07:03.411Z","avatar_url":"https://github.com/hxz393.png","language":"Python","funding_links":["https://patreon.com/assassing"],"categories":[],"sub_categories":[],"readme":"# [English](https://github.com/hxz393/BrutalityExtractor/blob/main/README_EN.md) | [中文](https://github.com/hxz393/BrutalityExtractor/blob/main/README.md)\n\n# 软件介绍\n\nBrutalityExtractor 是一款专为高性能系统打造的多进程解压软件。针对现代多核处理器和高速固态硬盘优化，批量解压速度比常见解压软件提升 5 倍以上，彻底利用计算机硬件性能。\n\n主要特性：\n\n- 批量解压缩：自动扫描解压目录下所有压缩文件，即使文件后缀名不正确也能正确识别。\n- 支持多格式：支持常见压缩文件格式 `7z`、`zip`、`rar`、`tar`、`gz`、`xz`、`bz2` ，并且能正确处理分卷压缩包。\n- 支持多进程：根据处理器线程数，自定义解压进程数量，将解压速度翻倍。\n- 支持密码列表：可以设置常用密码列表，自动匹配加密压缩包。\n- 附加功能：消除目录冗余、删除空目录、删除垃圾文件等常用功能。\n\n软件截图：\n\n![最新版本截图](https://raw.githubusercontent.com/hxz393/BrutalityExtractor/main/capture/ui-cn.jpg)\n\n命令行截图：\n\n![命令行截图](https://raw.githubusercontent.com/hxz393/BrutalityExtractor/main/capture/cli-cn.jpg)\n\n## 系统要求\n\n使用前请仔细阅读下面软件的使用限制。\n\n### 操作系统\n\n软件开发编译环境为 `Win10 x64` 专业工作站版，版本号 `22H2`。只要是 `Win10 x64` 以上操作系统的用户可以直接打开使用。\n\n更低版本的 `Win 7` 和 `Win XP` 因为使用 `Python 3.10` 版本的原因，不支持运行。\n\n其他操作系统理论上可以手动编译成可执行文件，编译流程参见下面自行打包小节。\n\n### 处理器\n\n当处理器配置低于 2 核 4 线程时，软件将运行在单进程模式，不会有任何速度加成。\n\n处理器配置高于 2 核 4 线程时，出于稳定性考虑，软件能设置进程数最高不超过处理器线程数的一半。\n\n当然你可以选择多开软件运行，来实际上无视这一限制。因此可能造成系统死机、崩溃、丢失数据等副作用，请自行评估影响。\n\n### 内存\n\n内存限制比较宽松，这是因为无法评估运行时实际所需内存。解压所需内存由文件压缩格式、压缩算法、是否固实压缩等因素决定。当内存被占满时，可能会发生解压失败、程序运行报错、系统异常报错等情况。\n\n建议对单个或分卷大于 4GB 的压缩文件手动解压。因为这类文件解压可能会占用大量内存，并且本软件目前对大体积压缩包没有加速效果。\n\n采用多线程加速解压大体积压缩包的方案，正在评估效果。如果效果好，将会加入到后续更新中。\n\n### 硬盘\n\n如果使用传统机械硬盘，则无论处理器或内存配置有多高，使用本软件或其他软件，都不能让解压速度超过硬盘读写速度。\n\n现在使用 `PCI-E 3.0 x4` 以上接口的固态硬盘，还被其他解压软件限制在机械硬盘的速度，这是一种极大性能浪费。本软件没有发明新解压算法来提高速度，但通过多进程运行的方式，让性能瓶颈转移到处理器上。\n\n一个通用硬盘规格和进程数对应关系表如下：\n\n| 硬盘规格              | 进程数  | 说明                                                |\n|-------------------|------|---------------------------------------------------|\n| HDD SATA 3.0 18TB | 2    | 高性能 HDD，读写速度超 200MB/s，勉强可开 2 个进程                  |\n| SSD SATA 3.0 4TB  | 4    | 高性能 SATA 接口 SSD，读写速度最高 500MB/s，可开 4 个进程           |\n| SSD PCI-E 1TB     | 8~64 | 常见 m.2 接口 SSD，通常有 1GB/s 以上读写速度，性能差异极大。进程数根据实际情况调整 |\n\n## 下载地址\n\n软件下载方式：\n\n- 方式一：到 [release](https://github.com/hxz393/BrutalityExtractor/releases) 页面下载最新版的可执行文件，文件名为 `BrutalityExtractor.exe` 或 `BrutalityExtractorCli.exe` ，下载完毕可直接打开使用。\n- 方式二：[百度网盘](https://pan.baidu.com/s/1RK7uBqaqgqJHLJbadXI48g?pwd=6666)分流下载。\n- 方式三：[直连](https://www.x2b.net/download/BrutalityExtractor.7z)下载。\n\n下载的压缩包，需要解压缩后运行可执行文件，否则配置将不会保存。\n\n## 自行打包\n\n手动编译需要事先安装好 `Python 3.10` 以上版本，和 `pyinstaller` 软件包。其他依赖报缺啥装啥，统一装最新版。\n\n编译步骤如下：\n\n1. 在安装有 `Git` 的主机上克隆项目。命令如下：\n\n   ```sh\n   git clone https://github.com/hxz393/BrutalityExtractor.git\n   ```\n\n   或者在 [项目主页](https://github.com/hxz393/BrutalityExtractor) 点击绿色`\u003c\u003e Code` 按钮选择 `Download ZIP` 选项，[下载](https://github.com/hxz393/BrutalityExtractor/archive/refs/heads/main.zip) 源码压缩包。下载完毕后用压缩软件或命令工具解压缩。\n\n2. 使用命令切换到项目路径下面。\n\n   例如在 Windows 系统下面，打开 `CMD` 命令提示符，输入：\n\n   ```sh\n   cd B:\\git\\BrutalityExtractor\n   B:\n   ```\n\n   在 Linux 系统下面，通用使用 `cd` 命令切换到项目路径下面：\n\n   ```sh\n   cd /root/BrutalityExtractor\n   ```\n\n   如果使用 `PyCharm` 作为 IDE，可以直接在自带的终端栏目输入下面打包命令。\n\n3. 使用 `pyinstaller` 命令编译打包成可执行文件：\n\n   ```sh\n   pyinstaller -F -w -i BrutalityExtractor.ico --add-binary 'bin/7z.exe;bin' --add-binary 'bin/7z.dll;bin' --collect-all=\"tksvg\" BrutalityExtractor.py\n   ```\n\n   打包命令行模式脚本：\n\n   ```sh\n   pyinstaller -F -w -i BrutalityExtractor.ico --add-binary 'bin/7z.exe;bin' --add-binary 'bin/7z.dll;bin' --console BrutalityExtractorCli.py\n   ```\n\n   如果过程没有报错，可执行文件会生成到 `dist` 目录下面。\n\n## 开源许可\n\n本软件采用 [GPL-3.0 license](https://github.com/hxz393/BrutalityExtractor/blob/main/LICENSE) 源授权许可协议，若违背开源社区的基本准则，将开源项目据为私有用于商业用途，属于侵权行为，本人将追究法律责任。\n\n用到的第三方开源库：\n\n- 解压核心：[7z](https://www.7-zip.org/)\n- 文件识别：[magic](https://github.com/ahupp/python-magic)\n- 主题美化：[ttkbootstrap](https://github.com/israel-dryer/ttkbootstrap)\n- 图标生成：[tkfontawesome](https://github.com/israel-dryer/TkFontAwesome)\n\n# 软件使用\n\n第一次运行时，由于缺少配置文件软件界面为英文。可以展开 Appearance Settings，在 Language 后面选择简体中文来切换语言。选择以后需要重启软件来生效。\n\n## 基本配置\n\n其中解压目录或目标目录为必填项。\n\n- **解压目录**\n\n  输入或选择压缩包存放的目录，例如`B:\\Archive` 或 `B:/Archive/` 均可正常识别。\n\n  目录内最好别放无关的文件，否则可能会有意外解压行为，例如将游戏资源打包文件 `resources.pak` 给解压，造成游戏无法运行。\n\n- **目标目录**\n\n  输入解压后文件存放目录，解压后的目录结构会和解压目录中的保持一致。例如 `B:/Archive/` 下面的 `xd1/test.zip` 文件内容会被解压到 `B:/New/` 下面 `xd1/test/` 内。\n\n  将目标目录设定到不同磁盘，可以稍微提升解压速度。\n\n- **解压密码**\n\n  输入单个密码或者密码列表文本文件位置。如果压缩包没有密码，随便输入什么密码都可以解压。如果有密码，会挨个尝试密码列表中的密码，直到密码正确或全部失败。\n\n  软件本身没有对密码尝试做多进程处理。如果需要暴力破解压缩包密码，可将密码列表分为多份，运行多个软件实例来跑。将日志等级设为 Debug，可在日志中看到尝试结果。此功能请勿用于非法用途。\n\n  为了能正确读取特殊密码，密码文本文件请使用 `UTF-8` 编码格式储存。\n\n## 高级配置\n\n高级配置中的设置需要根据实际情况来调整。\n\n- **进程数量**\n\n  设置同时运行解压的进程数。解压进程数不会超过要解压文件的总数量。\n\n- **忽略警告**\n\n  关闭解压运行前的系统资源检测。\n\n- **释放空间**\n\n  在压缩包解压完成后，删除压缩包。无论开启与否，如果解压失败都不会删除原始压缩包。\n\n- **强制模式**\n\n  跳过文件类型识别，尝试对目录下所有文件进行解压。\n\n- **日志相关**\n\n  控制写入本地日志文件的配置，修改设置后需要重启软件来生效。\n\n## 外观配置\n\n一些外观主题设置。\n\n- **关闭提示**\n\n  关闭鼠标悬停在文字上时显示的提示信息。\n\n- **迷你模式**\n\n  使用小图标模式，让布局更紧凑。需要重启生效。\n\n- **修改主题**\n\n  选择自己喜好的软件主题配色风格。\n\n- **修改语言**\n\n  修改软件显示语言。目前仅有中英两种，欢迎提交其他语种的靠谱翻译。语言字典位于 `modules/configs/lang_dict.py`。\n\n- **窗口透明**\n\n  配置窗口透明度。\n\n## 附加功能\n\n附加功能独立于解压功能存在，提供一些常用文件操作功能。\n\n- **功能开关**\n\n  开启功能开关后，将在目标目录下执行下面所配置的功能，解压操作暂时关闭。\n\n- **消除冗余**\n\n  消除冗余目录结构。只有在目录下有且仅有一个同名目录情况下会工作，一次只消除一层冗余结构。例如：将 `D:/test/test/` 下面的文件提取到 `D:/test/`，之后删除空的 `D:/test/test` 目录。\n\n- **清理目录**\n\n  删除指定目录下所有扫描到空目录。有时空目录有其特殊用途，请谨慎清理。\n\n- **删除垃圾**\n\n  指定的文件或目录名，直接删除目标目录下找到的匹配目标。和解压密码一样，支持导入名称列表来批量删除。\n\n## 命令行模式\n\n在命令行中运行时，需要下载命令行版本可执行文件 `BrutalityExtractorCli.exe` 。\n\n命令行模式仅支持有限的功能，但速度更快。命令格式如下：\n\n```sh\nBrutalityExtractorCli.exe [-h] -d D [-p P] [-c C] [-v]\n```\n\n其中中括号 `[]` 内的参数为可选。可以使用 `BrutalityExtractorCli.exe -h` 命令来查看自带帮助。\n\n参数说明如下：\n\n- `-d`：指定压缩文件存放目录，解压操作也在同一目录进行，并且解压成功后会删除源压缩文件。\n- `-c`：设置同时解压的进程数量。没有最高限制，请小心输入。\n- `-p`：指定解压密码或密码列表。如果密码带空格，需要用双引号 `\"\"` 将密码括起来。\n\n下面是一个使用示例，指定解压目录为 `B:\\Archive`，密码列表为 `B:/pass.txt`，运行进程数 16：\n\n```sh\nBrutalityExtractorCli.exe -c 16 -d B:\\Archive -p B:/pass.txt\n```\n\n# 常见问题\n\n软件运行遇见错误时，先查看下面总结的一些常见问题和解决方案。再查看所有 [Issue](https://github.com/hxz393/BrutalityExtractor/issues) 中是否有同样问题。如果都没有帮助，可以提交新 [Issue](https://github.com/hxz393/BrutalityExtractor/issues) ，并附上相关日志。\n\n## 窗口最大化后不正常\n\n全屏模式下折叠展开不会自动适应窗口高度。\n\n**原因**：由于使用的框架原因，不支持全屏模式。\n\n**解决**：欢迎提供解决方案。\n\n## 增加批量压缩功能\n\n不加入。常见压缩软件在压缩时资源利用率非常好，请尝试 `7z`、`PeaZip` 等开源免费软件。\n\n## 增加自动改名功能\n\n不加入。请尝试专业的软件，例如：`everything`、`PowerToys` 等优秀免费软件。\n\n# 更新日志\n\n为避免更新日志过长，只保留最近更新日志。\n\n## 版本 1.2.1（2023.07.21）\n\n改进内容：\n\n1. 消除冗余目录功能，可作用于所有子目录；\n2. 改进解压结果判断逻辑。\n\n修复内容：\n\n1. 调低程序运行优先级；\n2. 修改更新检测方法；\n3. 修复其他小问题。\n\n## 版本 1.2.0（2023.06.28）\n\n改进内容：\n\n1. 添加强制模式开关，解除文件类型限制；\n2. 更新 7z 核心程序到 23.1 版本。\n\n修复内容：\n\n1. 修复窗口退出时，子进程在系统残留。\n\n## 版本 1.1.0（2023.06.20）\n\n改进内容：\n\n1. 优化代码结构，提升运行速度；\n2. 合并删除垃圾文件和文件夹为一个功能；\n3. 优化日志记录功能；\n4. 添加默认配置项目。\n\n修复内容：\n\n1. 修复 `pathlib` 库造成的性能问题，替换为 `os` 库；\n2. 修复一个特定情形下误删文件的 BUG。\n\n## 版本 1.0.2（2023.06.15）\n\n改进内容：\n\n1. 修改日志写入格式为 UTF-8；\n2. 当解压文件总数小于进程数时，设置进程数为文件数。\n\n修复内容：\n\n1. 修复删除文件计数错误；\n2. 修复文件大小显示的小数位被忽略；\n3. 修复部分遗漏文字。\n\n## 版本 1.0.1（2023.06.12）\n\n修复内容：\n\n1. 添加读取文本时，指定使用 UTF-8 编码。\n\n## 版本 1.0.0（2023.06.11）\n\n发布第一个版本。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhxz393%2Fbrutalityextractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhxz393%2Fbrutalityextractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhxz393%2Fbrutalityextractor/lists"}