
TrustedSec 팀의 Hashcat을 통한 크래킹 방법론 자동화 도구.
___ ___ __ _________ __
/ | \_____ _/ |_ ____ \_ ___ \____________ ____ | | __
/ ~ \__ \\ __\/ __ \ / \ \/\_ __ \__ \ _/ ___\| |/ /
\ Y // __ \| | \ ___/ \ \____| | \// __ \\ \___| <
\___|_ /(____ /__| \___ >____\______ /|__| (____ /\___ >__|_ \
\/ \/ \/_____/ \/ \/ \/ \/
소스에서 설치하는 것이 유일하게 지원되는 경로입니다. hate_crack은 PyPI에 배포되지 않습니다: pip install hate-crack은 의도적으로 실패하며 여기를 다시 가리키는 0.0.0 플레이스홀더로 해석됩니다. 이 이름은 다른 누군가가 유사한 이름으로 게시하는 것을 막기 위해서만 유지됩니다 — packaging/pypi-placeholder/를 참조하세요.
Hashcat이 설치되어 있고 PATH에서 사용 가능해야 합니다:
Ubuntu/Kali:```bash sudo apt-get install -y hashcat
macOS (Homebrew):```bash
brew install hashcat
또는 https://hashcat.net/hashcat/ 에서 미리 빌드된 바이너리를 다운로드하고 config.json의 hcatPath를 해당 위치로 설정하세요.
서브모듈과 함께 클론하세요 (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 — wordlist 경로, 마스크, 규칙, 튜닝, potfile, hashcat 경로, 후보 제한, 알림 토글, CLI 기본 설정 (35개 설정)..env — 서드파티 통합 설정 전용: Hashview 및 Hashmob 자격 증명, Pushover 자격 증명, Ollama, 그리고 pipal (14개 설정). git에 추적되지 않으며, 모드 0600으로 생성됩니다.이 경계가 여기에 그어지는 데에는 한 가지 이유가 있습니다: .env는 비밀을 담을 수 있는 파일이기 때문입니다. 서드파티 서비스의 자격 증명과 설정은 추적되지 않는 0600 파일에 들어가고, hate_crack이 로컬에서 수행하는 모든 것은 공유하고, diff하고, 자신의 노트에 체크인해도 안전한 config.json에 남습니다. 이것이 또한 Pushover 자격 증명은 .env에 있는 반면 Pushover on/off 토글은 config.json에 있는 이유입니다 — 토글은 로컬 기본 설정이지 비밀이 아닙니다.
각 키는 정확히 하나의 집에만 속합니다. 다른 파일에 배치된 키는 무시되며, hate_crack은 해당 키가 속한 파일 이름을 명시한 경고를 출력합니다. 어떤 키든 해당 환경 변수를 export하여 단일 실행에 한해 재정의할 수 있습니다. 대부분의 사용자는 기본 경로가 즉시 작동하므로 이 단계를 건너뛸 수 있습니다.
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`은 스키마에서 생성됩니다. `hate_crack/config_schema.py`를 변경한 후 `uv run python -m hate_crack.config_writer`로 재생성하세요.
### 3. 의존성 및 hate_crack 설치
가장 쉬운 방법은 `make`(또는 `make install`)를 실행하는 것으로, 이는 OS를 자동 감지하고 다음을 설치합니다:
- 외부 의존성 (p7zip, transmission-daemon / transmission-remote)
- 서브모듈 빌드 (hashcat-utils, princeprocessor, pcfg_cracker, 선택적으로 omen) 및 데이터 전용 Corporate_Masks 마스크 세트 체크아웃
- uv를 통한 Python 의존성 및 `~/.local/bin/hate_crack`에 CLI 심(shim) 생성```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 shim을 설치하세요:```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 백엔드, 크랙별 테일러).hate_crack/username_detect.py: hashcat의 --username 사용 여부를 결정하기 위해 username:hash 입력 파일을 감지합니다.hate_crack/formatting.py, hate_crack/progress.py: 출력 형식 및 진행 표시 헬퍼.hate_crack/main.py: 메인 CLI 구현.최상위 hate_crack.py는 여전히 메인 진입점이며 이러한 모듈을 조정합니다.
이 프로젝트는 여러 외부 프로젝트와 서비스에 의존하며 이들로부터 영감을 받았습니다. 감사합니다:
make로 설치한 후, 어디서든 hate_crack을 실행하세요:```bash
hate_crack
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을 생성하며, 이는 저장소 디렉터리에서 실행되므로 현재 작업 디렉터리와 관계없이 config와 assets를 항상 찾을 수 있습니다.
Config는 다음 위치에서도 검색됩니다:
- 저장소 루트 및 패키지 디렉터리
- `~/.hate_crack`
**참고:** `config.json`의 `hcatPath`는 hashcat 바이너리 위치 전용입니다(hashcat이 PATH에 있으면 선택 사항). Hate_crack assets(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`, 오류(해시 파일 누락, 숫자가 아닌 해시 유형, 워드리스트 누락 또는 알 수 없는 규칙 파일 이름) 시 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
오래된 클론은 업데이트를 거부하며 다음과 같은 긴 줄 목록을 출력할 수 있습니다:``` ! [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 이전 버전은 이 복구를 스스로
수행할 수 없었기 때문에 한 번은 수동으로 해야 합니다.