Files
hate_crack/pyproject.toml
T
Justin BollingerandClaude Opus 4.6 39970b41c4 feat: add PassGPT attack (#17) - GPT-2 based ML password generator
Add PassGPT as attack mode 17, using a GPT-2 model trained on leaked
password datasets to generate candidate passwords. The generator pipes
candidates to hashcat via stdin, matching the existing OMEN pipe pattern.

- Add standalone generator module (python -m hate_crack.passgpt_generate)
- Add [ml] optional dependency group (torch, transformers)
- Add config keys: passgptModel, passgptMaxCandidates, passgptBatchSize
- Wire up menu entries in main.py, attacks.py, and hate_crack.py
- Auto-detect GPU (CUDA/MPS) with CPU fallback
- Add unit tests for pipe construction, handler, and ML deps check

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:41:22 -05:00

84 lines
1.5 KiB
TOML

[build-system]
requires = ["setuptools>=69", "setuptools-scm>=8"]
build-backend = "setuptools.build_meta"
[project]
name = "hate_crack"
dynamic = ["version"]
description = "Menu driven Python wrapper for hashcat"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"requests>=2.31.0",
"beautifulsoup4>=4.12.0",
"openpyxl>=3.0.0",
"packaging>=21.0",
]
[project.scripts]
hate_crack = "hate_crack.__main__:main"
[project.optional-dependencies]
ml = [
"torch>=2.0.0",
"transformers>=4.30.0",
]
dev = [
"mypy>=1.8.0",
"ruff>=0.3.0",
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"types-requests>=2.31.0",
"types-beautifulsoup4>=4.12.0",
"types-openpyxl>=3.0.0",
]
[tool.setuptools.packages.find]
include = ["hate_crack*"]
[tool.setuptools.package-data]
hate_crack = [
"config.json.example",
"hashcat-utils/**",
"princeprocessor/**",
"omen/**",
]
[tool.setuptools_scm]
version_file = "hate_crack/_version.py"
version_scheme = "no-guess-dev"
[tool.ruff]
exclude = [
"build",
"dist",
"PACK",
"hashcat-utils",
"princeprocessor",
"wordlists",
"rules",
]
[tool.mypy]
exclude = [
"^build/",
"^dist/",
"^PACK/",
"^wordlists/",
"^HashcatRosetta/",
"^hashcat-utils/",
"^hate_crack/hashcat-utils/",
"^hate_crack/princeprocessor/",
]
ignore_missing_imports = true
[tool.pytest.ini_options]
testpaths = [
"tests",
]
[dependency-groups]
dev = [
"types-requests>=2.32.4.20260107",
]