Skip to content

Releases: cyclone-github/pcfg-go

v0.5.2

23 Mar 19:22
3d7d41c

Choose a tag to compare

What's Changed

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

17 Mar 19:02
ff2ce4d

Choose a tag to compare

What's Changed

v0.5.1; 2026-03-17

Session Save/Restore

  • Save on SIGINT/SIGTERM
  • Resume with -l now accumulates stats
  • Preserve first_started; update only last_updated on 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

17 Mar 01:17
b6d542b

Choose a tag to compare

What's Changed

Full Changelog: https://github.com/cyclone-github/pcfg-go/commits/v0.5.0

Readme Card
License

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 seconds
    • Go trainer: ~32 seconds
    • Go trainer ~3× faster (~204% gain)

pcfg_guesser

  • 20-second benchmark:
    • Python3 pcfg_guesser ~280 K/s
    • Go pcfg_guesser ~11.4 M/s
    • Go pcfg_guesser ~40× faster (~3970% gain)

Usage

trainer

Train a new ruleset from wordlist:

trainer -r rule_name -t wordlist.txt

pcfg_guesser

Generate guesses from a trained ruleset:

pcfg_guesser -r rule_name

Session 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 resume

Press 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