CogniPass is a high-speed, targeted password generator and OSINT profiler written in Zig. It does not just blindly brute-force characters; instead, it uses cognitive chunking theory to generate passwords the way humans naturally invent them—by mangling and combining Personal Identifiable Information (PII) like names, birthdates, spouses, kids, and pets.
- Interactive Profiling: Automatically prompts for target PII (names, dates, pets) and handles validation (rejects Cyrillic and special characters).
- CLI Mode: Fully automatable via command-line arguments.
- Cognitive Levels: Generates passwords grouped by how the human brain creates them:
- Level 0: Global Baseline (e.g.,
123456,password) - Level 1: High Availability / Chunking (Raw PII)
- Level 2: Low Cognitive Load (Simple Caps & Dates)
- Level 3: Illusion of Complexity (Special chars & separators)
- Level 4: Security Fatigue (Token Mangling & L33t Speak)
- Level 0: Global Baseline (e.g.,
- Target Combination Count: Will smartly mutate and combine tokens to meet a specific dictionary size if requested.
- File Overwrite Protection: Built-in safety checks for generating dictionaries.
Zig is chosen for its extreme execution speed and lack of hidden control flow. However, maximum speed comes from a combination of compiler flags and code architecture.
(Note: Requires Zig 0.13.0+)
For the absolute fastest execution on your specific CPU architecture (enables AVX2, BMI2, etc. if available):
zig build-exe src/main.zig -O ReleaseFast -mcpu=nativeWarning: The resulting binary might not run on older CPUs due to
-mcpu=native.
If you need to distribute the binary to other machines:
zig build-exe src/main.zig -O ReleaseFastLeaves runtime safety checks enabled (array bounds, unhandled errors). Useful when modifying the rule engine:
zig build-exe src/main.zig -O ReleaseSafe -mcpu=nativeNow that the core engine is fully optimized (Zero-Allocation, Batch I/O, Memcpy concatenations), future updates will focus on improving the prediction logic and functionality:
- Add logic for parent/sibling dates.
- Cross-relational combinations (e.g.,
SpouseName + ChildBirthYear).
- Context-aware L33t Speak (e.g., replace 'i' with '1' only in the middle of a word).
- Transpositions and common typo variations (e.g.,
michael->micheal). - Keyboard walk patterns combined with PII (e.g.,
qwer+dob).
- Date format awareness (DD.MM.YYYY vs MM/DD/YYYY) based on locale.
- Localized keyboard layouts (e.g., QWERTY vs AZERTY transpositions).
- Hashcat/John the Ripper specific formatting or direct integration.
- Entropy scoring for each generated candidate (sorting the dictionary by probability).
Interactive Mode:
./Passgen.exeCLI Mode:
./Passgen.exe --first michael --last garcia --dob 12.07.1984 --spouse-first jessica --spouse-dob 05.09.1986 --min-len 8 -c 1000 --out custom_dict.txtPIN Only Mode:
./Passgen.exe --dob 12.07.1984 --spouse-dob 05.09.1986 --pin --out pins.txt