返回更新列表
新发布Jul 26, 2026

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 仍然是主入口点,并协调这些模块。


参考与致谢

本项目依赖并受多个外部项目和服务启发。感谢:


用法

使用 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:``(空字符串 - 无默认调优标志)

分类