Adding a New Attack
An attack spans three files (see "Three-Layer Attack Pattern" in CLAUDE.md).
Do all six steps — skipping step 6 leaves the attack invisible from the root
entry point even though it works via main.py.
- Add the hashcat wrapper function in
main.py(e.g.hcatMyAttack(...)) - Add the handler in
attacks.py(e.g.def my_attack(ctx: Any)) - Add a dispatcher in
main.py:def my_attack(): return _attacks.my_attack(_attack_ctx()) - Add the print line in
main.py's menu display loop (~line 3807+) - Add the menu entry in
main.py'sget_main_menu_options() - Add the menu entry in
hate_crack.py'sget_main_menu_options()(the duplicate)