Commit Graph

169 Commits

Author SHA1 Message Date
Justin Bollinger
4a7f0724d9 feat: add startup version check, fix PassGPT MPS/output issues, hide menu without ML deps
- Add optional startup version check against GitHub releases (check_for_updates config option)
- Add packaging dependency for version comparison
- Fix PassGPT OOM on MPS by capping batch size to 64 and setting memory watermark limits
- Fix PassGPT output having spaces between every character
- Hide PassGPT menu item (17) unless torch/transformers are installed
- Fix mypy errors in passgpt_generate.py with type: ignore comments
- Update README with version check docs, optional ML deps section, and PassGPT CLI options
- Add test_version_check.py with 8 tests covering update check behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 09:32:40 -05:00
Justin Bollinger
87535b9828 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
Justin Bollinger
0991701024 feat: add OMEN attack as menu option 16
Add OMEN (Ordered Markov ENumerator) as a probability-ordered password
candidate generator. Trains n-gram models on leaked passwords via
createNG, then pipes candidates from enumNG into hashcat.

Also fix a pre-existing bug where ensure_binary() used quit(1) instead
of sys.exit(1) - quit() closes stdin before raising SystemExit, which
caused "ValueError: I/O operation on closed file" when any optional
binary check failed and the program continued to use input().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 14:01:58 -05:00
Justin Bollinger
88d786d9aa refactor: rename Markov LLM attack to Ollama attack and simplify interface
Rename markov_attack → ollama_attack and hcatMarkov → hcatOllama across
menu, attacks, and tests. Remove candidate count prompts and cracked-output
default wordlist logic. Rename config keys (markov* → ollama*) and drop
ollamaUrl. Fix Dockerfile.test to use granular build steps.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 19:17:50 -05:00
Justin Bollinger
371fca1228 feat: add LLM Markov Attack (menu option 15)
Add a new attack mode that uses a local LLM via Ollama to generate
password candidates, converts them into hashcat .hcstat2 Markov
statistics via hcstat2gen, and runs a Markov-enhanced mask attack.

Two generation sub-modes:
- Wordlist-based: feeds sample from an existing wordlist to the LLM
  as pattern context (config-selectable default with Y/N override)
- Target-based: prompts for company name, industry, and location
  for contextual password generation

Pipeline: Ollama API -> candidate file -> hcstat2gen -> LZMA compress
-> hashcat -a 3 --markov-hcstat2

Config additions: ollamaUrl, ollamaModel, markovCandidateCount,
markovWordlist. No new pip dependencies (uses stdlib urllib/lzma).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:13:39 -05:00
Justin Bollinger
210a4006f5 removed extended expander 2026-02-06 19:37:39 -05:00
Justin Bollinger
4f51ce7379 updated loopback logic and added testing 2026-02-06 14:36:15 -05:00
Justin Bollinger
0c0690e2ef lots of refactoring around the menues and building out test cases 2026-02-05 13:52:06 -05:00
Justin Bollinger
e3b05c96dd fixed menu pytest options that failed after updating them 2026-02-02 13:16:20 -05:00
Justin Bollinger
14d02eb689 Restore hate_crack package and add E2E install tests 2026-01-31 22:50:51 -05:00
Justin Bollinger
4899da197e updated tests 2026-01-28 10:56:00 -05:00
Justin Bollinger
c45b30e9bb updated tests 2026-01-27 20:04:45 -05:00
Justin Bollinger
74d81da503 updated hashview apis and tests. 2026-01-27 16:00:09 -05:00
Justin Bollinger
daba1bec3f Merge remote-tracking branch 'refs/remotes/origin/main' 2026-01-26 23:28:09 -05:00
Justin Bollinger
40fae1d2b5 code cleanup 2026-01-26 23:27:55 -05:00
Justin Bollinger
cb38444178 automatic rules 2026-01-26 22:57:46 -05:00
Justin Bollinger
f23375c8a5 pipal print 2026-01-26 22:10:11 -05:00
Justin Bollinger
5782fd93af moved comments back to top 2026-01-26 21:54:39 -05:00
Justin Bollinger
5d0de7339e updated wordlist downloading functions 2026-01-26 21:06:12 -05:00
Justin Bollinger
b4785c3429 weakpass tests and migration to api.py 2026-01-26 16:10:58 -05:00
Justin Bollinger
5c9ed38f75 cleanup of modules 2026-01-26 14:29:39 -05:00
Justin Bollinger
2668c9646a Version2 initial commits 2026-01-26 13:44:02 -05:00
Justin Bollinger
01f4e55e85 major refactor and version change to 2.0 2026-01-26 13:32:37 -05:00
Justin Bollinger
34d1532b9f hashcat-util overhaul to automatically compile using make 2026-01-25 19:51:06 -05:00
Justin Bollinger
a78e291328 hashcat-util overhaul to automatically compile using make 2026-01-25 19:48:25 -05:00
Justin Bollinger
873be13df6 updated hashcat path 2026-01-25 19:23:37 -05:00
Justin Bollinger
37bc5a9b15 temporary removed create option from menu 2026-01-25 19:16:58 -05:00
Justin Bollinger
9b1b4a3aac disabled create job feature until api is fixed 2026-01-25 15:13:00 -05:00
Justin Bollinger
0b71536a26 hashlist download fix 2026-01-21 20:42:49 -05:00
Justin Bollinger
04d578cdbe autocomplete for quickcrack/hybrid attack modes 2026-01-21 20:05:36 -05:00
Justin Bollinger
ad0013386b hashview additions 2026-01-21 15:08:42 -05:00
Justin Bollinger
1f67125b91 updated hashview pytest runners and updated config example 2026-01-21 13:25:45 -05:00
larry.spohn
821ff606b9 Fixes for LM hash cracking routine. Also, hashcat-utils defaults to {util}.bin 2025-10-08 05:56:41 -04:00
Justin Bollinger
5b0dec347c added logic for checking for format of username:hash 2025-01-30 12:42:43 -05:00
Justin Bollinger
0da5b70d0b fixed NTLM issues when not using pwdump format 2025-01-30 11:14:55 -05:00
Justin Bollinger
b000477f4c added variable for rules back in 2024-09-28 15:39:28 -04:00
Justin Bollinger
7307bdddd6 removed the rule section of the config parser 2024-09-28 15:29:48 -04:00
larry.spohn
469f42fbd8 Added rule choice to quick_crack(). 2024-09-28 06:19:56 -04:00
larry.spohn
c6c85a1c03 Added wordlist choice to quick_crack(). 2024-09-08 08:42:59 -04:00
Spoonman1091
1e5b5caba0 Update hate_crack.py
Fixed Dictionary Attack where best64.rule was renamed to best66.rule
2024-08-23 14:30:32 -04:00
Justin Bollinger
4a270ed53e removed an accidental extra character in the mask 2021-10-13 16:42:03 -04:00
Justin Bollinger
4d55048dfe Additional check for potfile entries 2020-09-01 11:15:04 -04:00
Justin Bollinger
839624888f removed space between colons and password to remain consistent with previous versions.
Fixed bug that added all hashes to the output instead of just cracked hashes
2020-09-01 10:56:14 -04:00
Justin Bollinger
a80acb98ee updates to pipal to output customizable top basewords for bandrel methodology 2020-08-06 15:35:46 -04:00
Justin Bollinger
00b068450f Merge branch 'bandrel_methodology' into speedup
# Conflicts:
#	hate_crack.py
2020-08-05 17:16:57 -04:00
Justin Bollinger
2d55d11459 redesigned for increased performance in large datasets 2020-08-05 11:41:47 -04:00
Justin Bollinger
cb1a36105c Added a common baseword component 2020-07-31 12:58:07 -04:00
Justin Bollinger
d091b34df8 Changed company name to bandrel methodology. Added a max runtime component 2020-07-31 12:30:58 -04:00
Justin Bollinger
c081caa1e0 added ability to put multiple company names 2020-07-30 20:28:30 -04:00
Justin Bollinger
b0f07bbb82 Added new attack that takes a company name from input and appends six random characters and toggles the first letter. 2020-07-30 18:24:46 -04:00