diff --git a/TASKS.md b/TASKS.md index ed63f2d..df2cbf5 100644 --- a/TASKS.md +++ b/TASKS.md @@ -11,6 +11,8 @@ | P0 | [x] | Plugin help: !help shows description + commands | | P0 | [x] | Bot uptime command | | P0 | [x] | Documentation update (all docs current) | +| P0 | [x] | Wave 2 plugins: whois, portcheck, httpcheck, tlscheck, blacklist, rand, timer | +| P0 | [x] | CLI --cprofile flag | | P1 | [ ] | SASL PLAIN authentication | | P1 | [ ] | Rate limiting for outgoing messages | | P1 | [ ] | CTCP responses (VERSION, TIME, PING) | @@ -20,6 +22,8 @@ | Date | Task | |------|------| +| 2026-02-15 | Wave 2 plugins (whois, portcheck, httpcheck, tlscheck, blacklist, rand, timer) | +| 2026-02-15 | CLI --cprofile flag | | 2026-02-15 | Wave 1 plugins (dns, encode, hash, defang, revshell, cidr) | | 2026-02-15 | Hot-reload, shorthand, plugin help | | 2026-02-15 | Container deployment (Containerfile, compose, Makefile targets) | diff --git a/TODO.md b/TODO.md index a345bdf..6186fb9 100644 --- a/TODO.md +++ b/TODO.md @@ -1,14 +1,14 @@ # derp - Backlog -## Wave 2 Plugins (stdlib, next up) +## Wave 2 Plugins (stdlib) -- DONE -- [ ] `whois` -- raw socket WHOIS client (port 43) -- [ ] `portcheck` -- async TCP connect scan -- [ ] `httpcheck` -- HTTP status, redirects, response time -- [ ] `tlscheck` -- TLS version, cipher suite, cert chain, expiry -- [ ] `blacklist` -- DNSBL/RBL IP check -- [ ] `rand` -- passwords, hex strings, UUIDs -- [ ] `timer` -- countdown/stopwatch for time-boxed ops +- [x] `whois` -- raw socket WHOIS client (port 43) +- [x] `portcheck` -- async TCP connect scan +- [x] `httpcheck` -- HTTP status, redirects, response time +- [x] `tlscheck` -- TLS version, cipher suite, cert chain, expiry +- [x] `blacklist` -- DNSBL/RBL IP check +- [x] `rand` -- passwords, hex strings, UUIDs +- [x] `timer` -- countdown/stopwatch for time-boxed ops ## Wave 3 Plugins (local databases) diff --git a/docs/CHEATSHEET.md b/docs/CHEATSHEET.md index cd9d5aa..4622a59 100644 --- a/docs/CHEATSHEET.md +++ b/docs/CHEATSHEET.md @@ -10,6 +10,7 @@ make run # Start bot (bare metal) make link # Symlink to ~/.local/bin derp -c config.toml # Run with custom config derp -v # Verbose/debug mode +derp --cprofile # Profile to derp.prof ``` ## Container @@ -50,6 +51,8 @@ make logs # Follow logs !dns 1.2.3.4 # Reverse PTR lookup !dns example.com MX # Specific type (A/AAAA/MX/NS/TXT/CNAME/PTR/SOA) !cert example.com # CT log lookup (max 5 domains) +!whois example.com # WHOIS domain lookup +!whois 8.8.8.8 # WHOIS IP lookup ``` ## Red Team @@ -77,6 +80,35 @@ make logs # Follow logs ``` !cidr 10.0.0.0/24 # Subnet info !cidr contains 10.0.0.0/8 10.1.2.3 # Membership check +!portcheck 10.0.0.1 # Scan common ports +!portcheck 10.0.0.1 22,80,443 # Scan specific ports +!httpcheck https://example.com # HTTP status + timing +!tlscheck example.com # TLS/cert inspection +!tlscheck 10.0.0.1 8443 # Custom port +!blacklist 1.2.3.4 # DNSBL reputation check +``` + +## Random + +``` +!rand password # 16-char random password +!rand password 32 all # 32-char, full charset +!rand hex 64 # Random hex string +!rand uuid # UUID4 +!rand bytes 32 # Random bytes (hex) +!rand int 100 # Random 0..99 +!rand coin # Heads or tails +!rand dice 2d20 # Roll 2x d20 +``` + +## Timer + +``` +!timer 5m # 5-minute countdown +!timer 1h30m deploy # Named timer +!timer 90 # 90 seconds +!timer list # Show active timers +!timer cancel deploy # Cancel a timer ``` ## Plugin Template diff --git a/docs/USAGE.md b/docs/USAGE.md index 38ec924..2b502b3 100644 --- a/docs/USAGE.md +++ b/docs/USAGE.md @@ -16,6 +16,7 @@ derp --config /path/to/derp.toml --verbose |------|-------------| | `-c, --config PATH` | Config file path | | `-v, --verbose` | Debug logging | +| `--cprofile [PATH]` | Enable cProfile, dump to PATH [derp.prof] | | `-V, --version` | Print version | | `-h, --help` | Show help | @@ -68,6 +69,15 @@ level = "info" # Logging level: debug, info, warning, error | `!revshell ` | Generate reverse shell one-liner | | `!cidr ` | Subnet info (range, hosts, mask) | | `!cidr contains ` | Check if IP belongs to network | +| `!whois ` | WHOIS lookup via raw TCP (port 43) | +| `!portcheck [ports]` | Async TCP port scan (max 20 ports) | +| `!httpcheck ` | HTTP status, redirects, response time | +| `!tlscheck [port]` | TLS version, cipher, cert details | +| `!blacklist ` | Check IP against 10 DNSBLs | +| `!rand [args]` | Random: password, hex, uuid, bytes, int, coin, dice | +| `!timer [label]` | Set countdown timer with notification | +| `!timer list` | Show active timers | +| `!timer cancel