
TrustedSec 팀의 Hashcat을 통한 크래킹 방법론 자동화 도구.
___ ___ __ _________ __
/ | \_____ _/ |_ ____ \_ ___ \____________ ____ | | __
/ ~ \__ \\ __\/ __ \ / \ \/\_ __ \__ \ _/ ___\| |/ /
\ Y // __ \| | \ ___/ \ \____| | \// __ \\ \___| <
\___|_ /(____ /__| \___ >____\______ /|__| (____ /\___ >__|_ \
\/ \/ \/_____/ \/ \/ \/ \/
소스에서 설치하는 것이 유일하게 지원되는 방법입니다. hate_crack은 PyPI에 배포되지 않습니다: pip install hate-crack은 의도적으로 실패하며 이곳을 다시 가리키는 0.0.0 플레이스홀더로 해석됩니다. 이 이름은 다른 누군가가 그 이름으로 유사 패키지를 게시하지 못하도록 하기 위해서만 유지됩니다 — packaging/pypi-placeholder/를 참조하세요.
Hashcat이 설치되어 있고 PATH에서 사용 가능해야 합니다:
Ubuntu/Kali:
sudo apt-get install -y hashcat
macOS (Homebrew):
brew install hashcat
또는 https://hashcat.net/hashcat/ 에서 미리 빌드된 바이너리를 다운로드하고 config.json의 hcatPath를 해당 위치로 설정하세요.
서브모듈과 함께 클론하세요 (hashcat-utils, princeprocessor, pcfg_cracker, Corporate_Masks, 그리고 선택적으로 omen에 필요):
git clone --recurse-submodules https://github.com/trustedsec/hate_crack.git
cd hate_crack
If you cloned without submodules, initialize them:
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를 수동으로 설정하려면 추적되는 템플릿을 복사하십시오:
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로 재생성하십시오.
가장 쉬운 방법은 make(또는 make install)를 실행하는 것으로, OS를 자동 감지하여 다음을 설치합니다:
~/.local/bin/hate_crack의 CLI 심make
이 작업은 멱등적입니다. 이미 설치된 도구는 건너뜁니다. 강제로 깨끗하게 재설치하려면:
make reinstall
또는 의존성을 수동으로 설치:
다음은 특정 다운로드/추출 흐름에 필요합니다:
7z/7za (p7zip) — .7z 아카이브를 추출하는 데 사용됩니다.transmission-daemon / transmission-remote — Weakpass 토렌트를 다운로드하는 데 사용됩니다.수동 설치 명령:
Ubuntu/Kali:
sudo apt-get update
sudo apt-get install -y p7zip-full transmission-daemon
macOS (Homebrew):
brew install p7zip transmission-cli # provides transmission-daemon and transmission-remote
그런 다음 Python 종속성과 CLI shim을 설치하세요:
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을 실행하세요:
hate_crack
# or with arguments:
hate_crack <hash_file> <hash_type> [options]
또는 uv를 통해 실행합니다:
uv run hate_crack.py <hash_file> <hash_type>
저장소 루트에서 make를 사용하여 설치하세요 - 이 명령은 서브모듈을 빌드하고 에셋을 번들링합니다:
cd /path/to/hate_crack
make
hate_crack
make install 명령은 저장소 디렉터리에서 실행되는 bash shim을 ~/.local/bin/hate_crack에 생성하므로, 현재 작업 디렉터리와 관계없이 구성과 자산을 항상 찾을 수 있습니다.
구성은 다음 위치에서도 검색됩니다:
~/.hate_crack참고: config.json의 hcatPath는 hashcat 바이너리 위치 전용입니다(hashcat이 PATH에 있는 경우 선택 사항). Hate_crack 자산(hashcat-utils, princeprocessor, pcfg_cracker, Corporate_Masks, omen)은 저장소 디렉터리에서 로드되며 make install에 의해 자동으로 번들됩니다.
스크립트는 uv shebang을 사용합니다. 실행 가능하게 만든 후 실행하세요:
chmod +x hate_crack.py
./hate_crack.py
Python을 직접 사용할 수도 있습니다:
python hate_crack.py
자동화를 위해 메뉴를 거치지 않고 단일 공격을 직접 실행할 수 있습니다. 공격 이름이 첫 번째 인수이며, 그 뒤에 해시 파일과 hashcat 해시 유형이 옵니다. 전처리 프롬프트(컴퓨터 계정 필터링, LM 우선 브루트 포스, 중복 계정 중복 제거)는 이 모드에서 기본값을 자동으로 수락합니다. 프로세스는 성공 시 0, 오류(해시 파일 누락, 숫자가 아닌 해시 유형, 워드리스트 누락, 또는 알 수 없는 규칙 파일명) 시 0이 아닌 값을 반환하며 종료됩니다.
# 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
메뉴의 대부분의 공격은 같은 방식으로 사용할 수 있습니다. 이들은 해시 파일과 해시 유형 외에는 아무것도 필요로 하지 않습니다:
hate_crack fingerprint hashes.txt 1000
hate_crack pathwell hashes.txt 1000
hate_crack prince hashes.txt 1000
hate_crack pcfg hashes.txt 1000
hate_crack pcfg hashes.txt 1000 --ruleset default-passwords --costmax 48
hate_crack pcfg hashes.txt 1000 --mask '?u?l?l?l?l?d?d?d'
hate_crack pcfg hashes.txt 1000 --contains alpha --contains beta --pwmin 8 --pwmax 14
hate_crack pcfghints hashes.txt 1000 --hintwords alpha,beta
hate_crack princeling hashes.txt 1000
hate_crack smartmask hashes.txt 1000
hate_crack corporate hashes.txt 1000
hate_crack combinator hashes.txt 1000 # configured wordlists
hate_crack hybrid hashes.txt 1000 # configured wordlists
각 항목은 메뉴 항목에서 요청하는 설정도 함께 받습니다: