
hate_crack v2.14.3
一个来自TrustedSec团队的通过Hashcat自动化破解方法的工具。
___ ___ __ _________ __
/ | \_____ _/ |_ ____ \_ ___ \____________ ____ | | __
/ ~ \__ \\ __\/ __ \ / \ \/\_ __ \__ \ _/ ___\| |/ /
\ Y // __ \| | \ ___/ \ \____| | \// __ \\ \___| <
\___|_ /(____ /__| \___ >____\______ /|__| (____ /\___ >__|_ \
\/ \/ \/_____/ \/ \/ \/ \/
安装
从源码安装是唯一受支持的途径。hate_crack 不在 PyPI 上分发:pip install hate-crack 会解析到一个 0.0.0 占位包,该包会故意安装失败并指向此处。保留该名称只是为了防止其他人在其下发布仿冒包——参见
packaging/pypi-placeholder/。
1. 安装 hashcat
Hashcat 必须已安装并可在你的 PATH 中使用:
Ubuntu/Kali:```bash sudo apt-get install -y hashcat
macOS(Homebrew):```bash
brew install hashcat
或者从 https://hashcat.net/hashcat/ 下载预编译的二进制文件,并在 config.json 中将 hcatPath 设置为其所在位置。
2. 下载 hate_crack
使用子模块进行克隆(hashcat-utils、princeprocessor、pcfg_cracker、Corporate_Masks 以及可选的 omen 所必需):```bash git clone --recurse-submodules https://github.com/trustedsec/hate_crack.git cd hate_crack
如果您克隆时未包含子模块,请初始化它们:```bash
git submodule update --init --recursive
然后根据需要自定义配置。hate_crack 使用两个配置文件,各自负责一组不同的设置:
config.json— 字典路径、掩码、规则、调优、potfile、hashcat 路径、候选数量限制、通知开关、CLI 偏好默认值(35 项设置)。.env— 仅包含第三方集成设置:Hashview 和 Hashmob 凭据、Pushover 凭据、Ollama 和 pipal(14 项设置)。不被 git 跟踪,创建时权限为0600。
这条分界线存在的原因只有一个:.env 是可以存放机密信息的文件。第三方服务的凭据及其配置放在未被跟踪、权限为 0600 的文件中;hate_crack 在本地所做的一切都保留在 config.json 中,该文件可以安全地共享、进行 diff 对比,并记录到你自己的笔记中。这也是为什么 Pushover 的凭据放在 .env 中,而 Pushover 的开关切换项放在 config.json 中——这些开关是本地偏好设置,不是机密信息。
每个键只有一个归属位置。放在另一个文件中的键会被忽略,hate_crack 会打印一条警告,指明它应归属的文件。任何键仍然可以通过导出其环境变量在单次运行中被覆盖。大多数用户可以跳过此步骤,因为默认路径开箱即用。
config.json 是永久且一等公民——它并未被弃用,也没有移除时间表。只有集成设置被迁移了。
从单个 config.json 升级? hate_crack 会在首次运行时为你迁移:集成设置会被复制到新的 0600 .env 中,然后从 config.json 中移除,以免两个文件都声称拥有它们。它会打印出哪些键被迁移了(绝不打印其值),并在改动之前将你的原始文件保存为 config.json.pre-split.bak。config.json 中的其他所有内容都保持原样,包括键的顺序。
首次运行: hate_crack 会为你创建这两个文件,因此无需任何操作。若要改为手动设置 .env,请复制被跟踪的模板:```bash
cp .env.example .env
chmod 600 .env
`.env.example` 已提交,且每个凭据键均为空。`.env` 本身**绝不能**被提交——它已被 gitignore,连同其常见的备份拼写形式,并且 hate_crack 始终以 `0600` 模式(仅所有者可读写)创建它。`.env.example` 由 schema 生成;在修改 `hate_crack/config_schema.py` 后,使用 `uv run python -m hate_crack.config_writer` 重新生成它。
### 3. 安装依赖和 hate_crack
最简单的方式是运行 `make`(或 `make install`),它会自动检测你的操作系统并安装:
- 外部依赖(p7zip、transmission-daemon / transmission-remote)
- 构建子模块(hashcat-utils、princeprocessor、pcfg_cracker,以及可选的 omen)并检出仅含数据的 Corporate_Masks 掩码集
- 通过 uv 安装 Python 依赖,并在 `~/.local/bin/hate_crack` 处创建 CLI 垫片```bash
make
这是幂等的——它会跳过已安装的工具。要强制进行全新安装:```bash make reinstall
**或手动安装依赖:**
### 外部依赖
这些是某些下载/解压流程所必需的:
- `7z`/`7za` (p7zip) — 用于解压 `.7z` 归档文件。
- `transmission-daemon` / `transmission-remote` — 用于下载 Weakpass 种子文件。
手动安装命令:
Ubuntu/Kali:```bash
sudo apt-get update
sudo apt-get install -y p7zip-full transmission-daemon
macOS(Homebrew):```bash brew install p7zip transmission-cli # provides transmission-daemon and transmission-remote
然后安装 Python 依赖项和 CLI 垫片:```bash
uv sync
mkdir -p ~/.local/bin
printf '#!/usr/bin/env bash\nset -euo pipefail\nexec uv run --directory %s python -m hate_crack "$@"\n' "$(pwd)" > ~/.local/bin/hate_crack
chmod +x ~/.local/bin/hate_crack
项目结构
核心逻辑现已拆分为 hate_crack/ 下的多个模块:
hate_crack/cli.py:argparse 辅助函数和配置覆盖。hate_crack/api.py:Hashview、Weakpass 和 Hashmob 集成(下载/菜单/辅助函数)。hate_crack/attacks.py:菜单攻击处理器。hate_crack/corpus_stats.py:用于向 LLM 描述语料库的全语料库密码统计。hate_crack/plaintext.py:从语料库行中恢复密码(哈希前缀剥离、$HEX[...]解码);由 LLM 模式、corpus_stats 和 rulegen 共享。hate_crack/llm.py:通过 Atomic Agents 进行结构化(JSON)LLM 候选生成。hate_crack/menu.py:共享菜单渲染器,包括可选的箭头键导航。hate_crack/noninteractive.py:脚本化攻击子命令的分发器。hate_crack/notify/:通知包(Pushover 后端、每次破解的 tailer)。hate_crack/username_detect.py:检测username:hash输入文件,以决定 hashcat 的--username。hate_crack/formatting.py、hate_crack/progress.py:输出格式化和进度显示辅助函数。hate_crack/main.py:主 CLI 实现。
顶层的 hate_crack.py 仍然是主入口点,并协调这些模块。
参考与致谢
本项目依赖并受多个外部项目和服务启发。感谢:
- Hashview (http://github.com/hashview/)
- Weakpass (https://weakpass.com)
- Hashmob (https://hashmob.net)
用法
使用 make 安装后,可从任意位置运行 hate_crack:```bash
hate_crack
or with arguments:
hate_crack <hash_file> <hash_type> [options]
或者,通过 `uv` 运行:```bash
uv run hate_crack.py <hash_file> <hash_type>
作为工具运行(推荐)
在仓库根目录使用 make 进行安装——这会构建子模块并打包资源:```bash
cd /path/to/hate_crack
make
hate_crack
`make install` 命令会在 `~/.local/bin/hate_crack` 创建一个 bash shim,该 shim 从仓库目录运行,因此无论当前工作目录是什么,配置和资源始终能被找到。
配置还会在以下位置搜索:
- 仓库根目录和包目录
- `~/.hate_crack`
**注意:** `config.json` 中的 `hcatPath` 仅用于指定 hashcat 二进制文件的位置(如果 hashcat 已在 PATH 中,则此项可选)。Hate_crack 资源(hashcat-utils、princeprocessor、pcfg_cracker、Corporate_Masks、omen)从仓库目录加载,并由 `make install` 自动打包。
### 作为脚本运行
该脚本使用 `uv` shebang。使其可执行并运行:```bash
chmod +x hate_crack.py
./hate_crack.py
你也可以直接使用 Python:```bash python hate_crack.py
### 非交互式 / 脚本化使用
对于自动化场景,你可以直接启动单次攻击,绕过菜单。攻击名称是第一个参数,后面跟着哈希文件和 hashcat 哈希类型。预处理提示(计算机账户过滤、LM 优先暴力破解、重复账户去重)在此模式下自动接受其默认值。进程在成功时退出码为 `0`,出错时(哈希文件缺失、哈希类型非数字、词表缺失或规则文件名未知)退出码为非零。```bash
# Quick crack: one wordlist + optional rule(s) from the rules directory
hate_crack quick hashes.txt 1000 --wordlist rockyou.txt --rules best64.rule
# Chain two rules in a single run
hate_crack quick hashes.txt 1000 --wordlist rockyou.txt --rules best64.rule+d3ad0ne.rule
# Run two rules as two separate passes
hate_crack quick hashes.txt 1000 --wordlist rockyou.txt --rules best64.rule d3ad0ne.rule
# Canned dictionary methodology (uses your configured wordlists)
hate_crack dict hashes.txt 1000
# Brute force lengths 1-8
hate_crack brute hashes.txt 1000 --min 1 --max 8
# Top-mask attack targeting ~4 hours
hate_crack topmask hashes.txt 1000 --target-time 4
故障排除
错误:更新时出现“would clobber existing tag”
较旧的克隆可能拒绝更新,并打印出一长串类似以下内容的行:``` ! [rejected] v2.5.0 -> v2.5.0 (would clobber existing tag)
这会影响在 2026 年 7 月之前创建的克隆。当时已发布的历史被重写,以移除一些本不应被提交的文件,这导致每个提交都获得了新的 ID;因此,较旧克隆中的标签指向了本仓库不再包含的对象,而 git 拒绝移动它已经拥有的标签。你的检出没有任何问题,也没有任何破解数据面临风险。
通过一次性重置来恢复。这会丢弃检出中的本地提交和编辑,因此如果你对任何受 git 跟踪的内容(与 `config.json` 不同,后者不受跟踪)进行了自定义,请先将其提交到一个分支:```bash
cd /path/to/hate_crack
git fetch --tags --force origin
git checkout -B main origin/main
make install
--force 在这里只会更新标签;它无法触及你的提交。之后内置更新器即可正常工作。2.18 之前的版本无法自行执行此恢复操作,因此必须手动执行一次。
错误:构建目录不存在
如果你看到类似这样的错误:``` Error: Build directory /opt/hashcat/hashcat-utils does not exist. Expected to find expander at /opt/hashcat/hashcat-utils/bin/expander.
这意味着 hate_crack 资源并未打包到已安装的软件包中。
**理解路径:**
- config.json 中的 `hcatPath` → 指向 **hashcat 二进制文件位置**(可选,可以位于 PATH 中)
- `hashcat-utils/` 和 `princeprocessor/` → 由 `make install` 打包到软件包中
**解决方案:**
使用 Makefile 重新安装,它会构建子模块并安装该工具:```bash
cd /path/to/hate_crack # the repository checkout
make install
默认配置(config.json.example):
大多数用户可以使用默认配置,无需自定义:
hcatWordlists:./wordlists(相对于仓库根目录或 HOME/.hate_crack)hcatOptimizedWordlists:./optimized_wordlists(Quick Crack 使用的目录;如果未找到则回退到hcatWordlists)rules_directory:./hashcat/rules(包含子模块规则)hcatTuning:``(空字符串 - 无默认调优标志)