Releases: cyclone-github/pcfg-go
Releases · cyclone-github/pcfg-go
v0.5.2
What's Changed
- fix issue #5 -n by @cyclone-github in PR #6
Full Changelog: v0.5.1...v0.5.2
c5b5d6aebbb0fa03e3c0d6879c0b060db3557ad30c79ac2bcfaa76e33633e550 pcfg_guesser.bin
8c5d92deb142a3cb4af64662c87667068b5921e8094daa38ad2b720ea0b346c1 trainer.bin
https://virusscan.jotti.org/en-US/filescanjob/ljyas4ez0w,r9weq3b8ig
v0.5.1
What's Changed
- fix: unicode handling, tweak: session save/restore by @cyclone-github in #4
Full Changelog: v0.5.0...v0.5.1
v0.5.1; 2026-03-17
Session Save/Restore
- Save on SIGINT/SIGTERM
- Resume with
-lnow accumulates stats - Preserve
first_started; update onlylast_updatedon resume - Fix session file deletion issue during writability checks
- Faster restore via parallel loading
- Improved session path handling and save path visibility
- Add warning for long-running session restores
Bug Fixes
- Fix session save failures when downstream pipe exits early (#2)
- Address Unicode handling issues in OMEN and parser logic (#3)
- Replace byte slicing with rune-safe handling
- Fix context parsing edge case (e.g.,
pass#123) - Correct UTF-8 handling in website/TLD parsing
be0ffe676f26f93ab0625f200b146251095691d9d969d63a794aa1b52a31e1c9 pcfg_guesser.bin
14d1a6aecbd07413a9522d085cc23e8e4a16ce20f5a64368ee8a42374a6d384a trainer.bin
https://virusscan.jotti.org/en-US/filescanjob/waz6uzl7hu,bsgjqrrbxe
v0.5.0
What's Changed
- initial github release by @cyclone-github in #1
Full Changelog: https://github.com/cyclone-github/pcfg-go/commits/v0.5.0
pcfg-go
- Probabilistic Context-Free Grammar (PCFG) password generator - Pure Go Edition
- pcfg-go is a Pure Go rewrite of the Python3 pcfg_cracker
- The goal of this Go implementation is to provide a substantial performance improvement over the original Python3 version, while also adding features such as supporting
$HEX[]input/output and multi-byte character support — which is not implemented in the Pure C pcfg_guesser - While the general functionality of pcfg-go is tested and working, this tool is still beta, so please report any issues you run across
- Credits for the original python3 pcfg_cracker belong to the author, lakiw
Additions & improvements
- Performance — ~3× faster trainer, ~40× faster pcfg_guesser (see Benchmarks)
- $HEX[] input — Trainer accepts
$HEX[...]encoded passwords in the training wordlist (multi-byte support) - Ctrl+C handling — Pressing Ctrl+C auto saves session on pcfg_guesser
- Multi-keyboard layouts — QWERTY, AZERTY, QWERTZ, Dvorak, JCUKEN (Russian Cyrillic)
- Expanded TLD list — Legacy, ccTLDs, gTLDs (
.info,.xyz,.app,.dev, etc.), and short TLDs (.co,.io,.ai,.me,.gg); improves both website and email detection - Improved website detection — Broader URL/prefix detection (
http://,https://,www., etc.) and host extraction - Multi-threaded architecture — pcfg_guesser is multi-threaded for increased performance
- Compiled binary — No runtime, so fuss; pcfg-go uses staticly compiled binaries for speed and easy deployment
Benchmarks
trainer
- 1 million password training set
Python3 trainer: 97.2 secondsGo trainer: ~32 secondsGo trainer ~3× faster (~204% gain)
pcfg_guesser
- 20-second benchmark:
Python3 pcfg_guesser ~280 K/sGo pcfg_guesser ~11.4 M/sGo pcfg_guesser ~40× faster (~3970% gain)
Usage
trainer
Train a new ruleset from wordlist:
trainer -r rule_name -t wordlist.txtpcfg_guesser
Generate guesses from a trained ruleset:
pcfg_guesser -r rule_nameSession save/restore:
pcfg_guesser -r rule_name -s my_session # save to my_session.sav on exit
pcfg_guesser -r rule_name -s my_session -l # load and resumePress Ctrl+C to save session and exit.
Piping into hashcat
pcfg_guesser -r rule_name -s my_session | hashcat -m 0 hashes.txt...Flags
trainer
pcfg-go vs pcfg-python3 flags
| Go | Python3 | Description |
|---|---|---|
| -r | --rule | Ruleset name |
| -t | --training | Training wordlist (required) |
| -e | --encoding | File encoding |
| -C | --comments | Config comments |
| -S | --save_sensitive | Save emails, URLs |
| -p | --prefixcount | Lines prefixed with count |
| -n | --ngram | OMEN ngram size (2-5) |
| -a | --alphabet | Alphabet size for Markov |
| -c | --coverage | PCFG vs OMEN coverage |
| -m | --multiword | Pre-train multiword file |
| -h | --help | Help |
| -version | --version | Version info |
pcfg_guesser
pcfg-go vs pcfg-python3 flags
| Go | Python3 | Description |
|---|---|---|
| -r | --rule | Ruleset name |
| -s | --session | Session name |
| -l | --load | Load previous session |
| -n | --limit | Max guesses |
| -b | --skip_brute | Skip OMEN/Markov |
| -a | --all_lower | No case mangling |
| -d | --debug | Debug output |
| -h | --help | Help |
| -version | --version | Version info |
https://virusscan.jotti.org/en-US/filescanjob/n91d28op28,os9ndzj80o
40ce59745496f82862fb013191173708e17ffda1 trainer.bin
aa7823e383651c0aae29eac78ded1852e9daf1c6 pcfg_guesser.bin