Skip to content

cyclone-github/pcfg-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Readme Card

Go Report Card GitHub issues License GitHub release Go Reference

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

Install

trainer:

go install github.com/cyclone-github/pcfg-go/cmd/trainer@main

pcfg_guesser:

go install github.com/cyclone-github/pcfg-go/cmd/pcfg_guesser@main

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 statically 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

  • 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

Compile from source

Requires Go and Git.

git clone https://github.com/cyclone-github/pcfg-go.git
cd pcfg-go
go mod tidy
mkdir -p bin
go build -ldflags="-s -w" -o bin/trainer ./cmd/trainer
go build -ldflags="-s -w" -o bin/pcfg_guesser ./cmd/pcfg_guesser

Install to $GOPATH/bin:

go install -ldflags="-s -w" ./cmd/trainer
go install -ldflags="-s -w" ./cmd/pcfg_guesser

Compile from source how-to

About

Probabilistic Context Free Grammar (PCFG) password generator in Pure Go

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages