Skip to content
Security
Command

/breach-check

HIBP k-anonymity check on a password wordlist. Enriches each password with its breach count, ranks DESC. Free API (no key), only first 5 chars of SHA-1 sent. Output -> <input>-ranked.txt. Usage /breach-check <wordlist> [--min-count N] [--max-count N] [--with-counts]

From plugin
agentic-bug-hunter
5.8k42 skills9 agents42 commands3 hooks
$ npx -y skills add awarexone/agentic-bug-hunter --agent claude-code

Command definition

breach-check.md
description: HIBP k-anonymity check on a password wordlist. Enriches each password with its breach count, ranks DESC. Free API (no key), only first 5 chars of SHA-1 sent. Output -> <input>-ranked.txt. Usage /breach-check <wordlist> [--min-count N] [--max-count N] [--with-counts]

/breach-check

Rank a password wordlist by HaveIBeenPwned breach count. Used between `/wordlist-gen` and spray to surface which candidates have **proven human use**.

Usage

/breach-check recon/target.com/wordlists/ranked.txt
/breach-check ranked.txt --with-counts                              # also dump TSV
/breach-check ranked.txt --max-count 1000000                        # drop generic passwords (>1M)
/breach-check ranked.txt --min-count 1                              # only keep proven-real passwords
/breach-check ranked.txt --limit 5000                               # test/preview first 5k (lex-sorted slice)
/breach-check ranked.txt --limit 5000 --shuffle                     # random 5k sample (avoid ASCII-sort bias)

What this does

For each password in the wordlist: 1. Compute SHA-1 hash 2. Send only the **first 5 chars** to `api.pwnedpasswords.com/range/{prefix}` (k-anonymity) 3. HIBP returns ~500 candidate suffix-count pairs 4. Match locally to get exact breach count for your password

**Privacy**: HIBP never sees the full password. Add-Padding header is used to obscure prefix distribution from network observers.

Why rank by breach count

| Range | Meaning | Spray strategy | |---|---|---| | **0** | Never leaked | Could be company-specific OR truly random — context-dependent | | **1–1000** | "Sweet spot" — proven human use but not yet in every spray list | **Prioritize** — high signal/cost ratio | | **1k–1M** | Mainstream password | Usually already tried by previous attackers | | **>1M** | Generic ("password", "123456") | Skip — every WAF expects these, lockout risk |

Example (real HIBP results)

209,972,844    123456                ← generic, drop
 52,256,179    password              ← generic, drop
 30,799,395    qwerty                ← generic, drop
  1,505,362    Password123           ← generic-ish
  1,406,394    letmein               ← generic-ish
        180    flexdemo              ← SWEET SPOT — real but rare
          0    twilio2025            ← company-specific, untested
          0    xpkqwmnvbzabc12345    ← random, untested

`flexdemo` = 180 means real humans have used this exact password 180 times across known breaches. It's a real password pattern, but not generic enough to be in every spray list. Highest value for spray.

Pipeline position

/wordlist-gen target.com           -> ranked.txt (cewler+hashcat, 100k-300k candidates)
/osint-employees target.com        -> usernames.txt + personal-passwords.txt
/breach-check ranked.txt           -> ranked-ranked.txt (HIBP-enriched, sorted by breach count)
                                       └─ filter --max-count 1000000 to drop boring generic
[PR #5] /spray <login> -u users -p ranked-ranked.txt

Output

  • **`<input>-ranked.txt`** — passwords sorted by breach count DESC (most-leaked first; one per line)
  • **`<input>-ranked-counts.tsv`** *(with `--with-counts`)* — `count\tpassword` for analysis

Performance

HIBP allows ~25 req/sec; default 20 concurrent threads ~= 1500 req/min.

  • 1,000 passwords → ~50 seconds
  • 10,000 → ~5 minutes
  • 100,000 → ~50 minutes
  • 300,000+ → consider `--limit` or pre-shrink with `/wordlist-gen --mode minimal`

Grouping by SHA-1 prefix reduces API calls. For a 300k wordlist, expect ~270k unique prefixes (10% collision typical).

Dependencies

Pure Python 3.9+, no external deps (uses urllib + hashlib + ThreadPoolExecutor from stdlib).

Underlying tool

`bughunter/tools/breach_checker.py <wordlist> [flags]` — call directly if you prefer a non-slash interface.

Read more
@awarexone
Ships withagentic-bug-hunter

AI-powered bug bounty hunting toolkit that works with or without subscription.

5.8k19 skills9 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
5.8k
Star history of awarexone/agentic-bug-hunter on GitHub, a chart by star-history.com

Other commands on agentic-bug-hunter.

arsenal

arsenal

Command

Show which external bug-bounty tools are installed on this machine and print install hints for the missing ones. Curated from…

autopilot

autopilot

Command

Run autonomous hunt loop on a target — scope check → recon → rank surface → hunt → validate → report with configurable…

bypass-403

bypass-403

Command

Probe a 403/401 endpoint with the most-paid bypass tricks (header injection, path encoding, method swap, WAF fingerprint,…

chain

chain

Command

Build an exploit chain — given bug A, finds B and C to combine for higher severity and payout. Knows common chain patterns:…

cloud-recon

cloud-recon

Command

Sweep cloud assets for a target — public S3/Azure/GCP buckets via S3Scanner and cloud_enum, plus CloudFlare-bypassed origin IPs…

cors

cors

Command

Scan an endpoint for CORS misconfiguration — arbitrary-origin reflection, null-origin trust, credential exposure, suffix/prefix…

More commands from other plugins.

deslop-reborn

deslop-reborn

Command

One iteration of the IronClaw Reborn de-slop loop — take ONE Reborn crate, fan out parallel review sub-agents (thermo-nuclear…

@nearai@nearaiInstall Command
audit

audit

Command

Audit a file, directory, or whole repo for insecure default configuration: fallback secrets, default credentials, fail-open…

@trailofbits@trailofbitsInstall Command
arsenal

arsenal

Command

Show which external bug-bounty tools are installed on this machine and print install hints for the missing ones. Curated from…

@shuvonsec@shuvonsecInstall Command