pwn 0.5.737 → 0.5.738

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +0 -1
  3. data/documentation/Agent-Tool-Registry.md +3 -3
  4. data/documentation/Diagrams.md +1 -1
  5. data/documentation/How-PWN-Works.md +1 -1
  6. data/documentation/Plugin-Degradation.md +74 -0
  7. data/documentation/Swarm.md +2 -3
  8. data/documentation/What-is-PWN.md +1 -1
  9. data/documentation/pwn-REPL.md +0 -1
  10. data/documentation/pwn-ai-Agent.md +1 -1
  11. data/etc/default_skills/browser-exploitation/SKILL.md +10 -0
  12. data/etc/default_skills/firmware-unpack-emulate/SKILL.md +10 -0
  13. data/etc/default_skills/heap-exploitation/SKILL.md +11 -0
  14. data/etc/default_skills/kernel-pwn-triage/SKILL.md +11 -0
  15. data/etc/default_skills/pwn/ai/agent/swarm/SKILL.md +1 -1
  16. data/etc/default_skills/pwn/ai/agent/tools/sbom_scan/SKILL.md +45 -0
  17. data/etc/default_skills/pwn/corpus/SKILL.md +52 -0
  18. data/etc/default_skills/pwn/corpus/references/urls.md +3 -0
  19. data/etc/default_skills/pwn/engagement/SKILL.md +55 -0
  20. data/etc/default_skills/pwn/plugins/debugger/SKILL.md +62 -0
  21. data/etc/default_skills/pwn/plugins/fuzz/SKILL.md +1 -0
  22. data/etc/default_skills/pwn/plugins/handler/SKILL.md +52 -0
  23. data/etc/default_skills/pwn/plugins/jobs/SKILL.md +1 -0
  24. data/etc/default_skills/pwn/plugins/mitm_proxy/SKILL.md +1 -0
  25. data/etc/default_skills/pwn/plugins/nmap_it/SKILL.md +1 -0
  26. data/etc/default_skills/pwn/plugins/packet/SKILL.md +1 -0
  27. data/etc/default_skills/pwn/plugins/process_tube/SKILL.md +2 -0
  28. data/etc/default_skills/pwn/plugins/redb/SKILL.md +52 -0
  29. data/etc/default_skills/pwn/plugins/sbom/SKILL.md +48 -0
  30. data/etc/default_skills/pwn/redaction/SKILL.md +1 -0
  31. data/etc/default_skills/rop-jop-chain-construction/SKILL.md +10 -0
  32. data/etc/default_skills/windows-internals-triage/SKILL.md +10 -0
  33. data/lib/pwn/ai/agent/loop.rb +76 -8
  34. data/lib/pwn/ai/agent/prompt_builder.rb +19 -1
  35. data/lib/pwn/ai/agent/swarm.rb +4 -5
  36. data/lib/pwn/ai/agent/tool_guard.rb +11 -4
  37. data/lib/pwn/ai/agent/tools/fuzz_campaign.rb +2 -1
  38. data/lib/pwn/ai/agent/tools/job_run.rb +9 -3
  39. data/lib/pwn/ai/agent/tools/pty_session.rb +7 -1
  40. data/lib/pwn/ai/agent/tools/sbom_scan.rb +25 -0
  41. data/lib/pwn/ai/agent/tools/shell.rb +3 -2
  42. data/lib/pwn/ai/agent/tools/swarm.rb +3 -6
  43. data/lib/pwn/ai/agent/turn_finalizer.rb +2 -2
  44. data/lib/pwn/corpus.rb +107 -0
  45. data/lib/pwn/engagement.rb +158 -0
  46. data/lib/pwn/plugins/debugger.rb +284 -0
  47. data/lib/pwn/plugins/findings.rb +14 -3
  48. data/lib/pwn/plugins/fuzz.rb +62 -0
  49. data/lib/pwn/plugins/handler.rb +171 -0
  50. data/lib/pwn/plugins/jobs.rb +55 -0
  51. data/lib/pwn/plugins/mitm_proxy.rb +37 -2
  52. data/lib/pwn/plugins/nmap_it.rb +32 -0
  53. data/lib/pwn/plugins/packet.rb +18 -0
  54. data/lib/pwn/plugins/preflight_checker.rb +6 -2
  55. data/lib/pwn/plugins/process_tube.rb +99 -8
  56. data/lib/pwn/plugins/redb.rb +210 -0
  57. data/lib/pwn/plugins/repl.rb +0 -3
  58. data/lib/pwn/plugins/sbom.rb +145 -0
  59. data/lib/pwn/plugins.rb +4 -0
  60. data/lib/pwn/redaction.rb +53 -0
  61. data/lib/pwn/reports/engagement.rb +2 -1
  62. data/lib/pwn/sessions.rb +3 -1
  63. data/lib/pwn/version.rb +1 -1
  64. data/lib/pwn.rb +2 -0
  65. data/packer/provisioners/irc.sh +1 -1
  66. data/spec/lib/pwn/ai/agent/harness_2026_09_15_spec.rb +144 -0
  67. data/spec/lib/pwn/ai/agent/tools/sbom_scan_spec.rb +10 -0
  68. data/spec/lib/pwn/corpus_spec.rb +23 -0
  69. data/spec/lib/pwn/engagement_spec.rb +27 -0
  70. data/spec/lib/pwn/plugins/debugger_spec.rb +27 -0
  71. data/spec/lib/pwn/plugins/handler_spec.rb +25 -0
  72. data/spec/lib/pwn/plugins/redb_spec.rb +33 -0
  73. data/spec/lib/pwn/plugins/repl_spec.rb +7 -1
  74. data/spec/lib/pwn/plugins/sbom_spec.rb +22 -0
  75. data/third_party/pwn_rdoc.jsonl +96 -4
  76. metadata +31 -4
  77. data/etc/default_skills/pwn/plugins/repl/irc/SKILL.md +0 -47
  78. data/lib/pwn/plugins/repl/irc.rb +0 -153
  79. data/spec/lib/pwn/plugins/repl/irc_spec.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af2001b2546112668f86a37ec9ab15c0bea62dd138188fd47b0441e2101a8622
4
- data.tar.gz: 9281f66b1e6563d1abe0cd057b3a8a7e6de5c9712dd58e72e188f24d51acfbfc
3
+ metadata.gz: 1ca56931addf19f59b18ee2776ee84b0af0a75496bcf9bd9d8453b96b9b9eef2
4
+ data.tar.gz: b9310696c7ae7098d37dc3c8e46b1cd2214ab652a49ef75df281b34c472a738c
5
5
  SHA512:
6
- metadata.gz: e8f434c799f8cb9c67fb9d8f2f329e1e172fa1664ccfaea7bcb208febe9e3d8b42372b95210c3afb551cdb5648816f033fccdacb6897e36177a17d3b3be79a5a
7
- data.tar.gz: 893e79ee5521e6c52558ea5cd69ac30c65b5a97e4a0cad3405da69bef72d48424714f971755880b8d7ca89168befe138d8edcc03636e124a09279ec7eb09c272
6
+ metadata.gz: d6ec57ded9a7213562cdaf4b4486d680387f8dea1ec1fbf6bfc47a2b4ed40e7c7782c40e3ab80a5164c308c5dae220442956b83cf2c0ccbddbbc2e398b1e6acf
7
+ data.tar.gz: 7c447c3b9e42779e4ca86038836719dad5b051a872f4bbad2bc704b54596a69644c56a92a6d877681045f3c7000cddb0a51aaa49e79be9ab1afc5de40b7fa8a2
data/.rubocop_todo.yml CHANGED
@@ -20,7 +20,6 @@ Lint/NestedMethodDefinition:
20
20
  - 'lib/pwn/plugins/repl.rb'
21
21
  - 'lib/pwn/plugins/repl/ai.rb'
22
22
  - 'lib/pwn/plugins/repl/asm.rb'
23
- - 'lib/pwn/plugins/repl/irc.rb'
24
23
  - 'lib/pwn/plugins/repl/mesh.rb'
25
24
  - 'lib/pwn/plugins/repl/vault.rb'
26
25
 
@@ -6,13 +6,13 @@ toolsets; the JSON-Schema for each tool is what the model actually sees.
6
6
 
7
7
  ![Tool registry](diagrams/agent-tool-registry.svg)
8
8
 
9
- ## Toolsets to tools (13 toolsets · 87 tools)
9
+ ## Toolsets to tools (13 toolsets · 88 tools)
10
10
 
11
11
  | Toolset | Tools | Backed by |
12
12
  |---|---|---|
13
13
  | `http` | `http_proxy_start` · `http_proxy_stop` · `http_proxy_entries` · `http_proxy_rules` · `http_replay` | `PWN::Plugins::MitmProxy`: native HTTP HAR capture/replay; opaque CONNECT tunnels |
14
14
  | `terminal` | `shell` | `Open3.capture3` on the host, after `PWN::AI::Agent::ToolGuard` |
15
- | `pwn` | `pwn_eval` | `TOPLEVEL_BINDING.eval` in the live REPL process, after `ToolGuard` |
15
+ | `pwn` | `pwn_eval` · `sbom_scan` | `TOPLEVEL_BINDING.eval` in the live REPL process, after `ToolGuard`; SBOM engines via `PWN::Plugins::SBOM` |
16
16
  | `mcp` | `mcp` | `PWN::AI::MCP` session broker → any `PWN::AI::MCP::*` stdio client |
17
17
  | `memory` | `memory_remember` · `memory_recall` · `memory_forget` · `memory_clear` · **`memory_lean`** | `PWN::Memory` → `~/.pwn/memory.json` |
18
18
  | `skills` | `skills_consolidate` · **`skills_recall`** · `skill_list` · `skill_view` · `skill_create` · `skill_add_reference` · `skill_delete` · `skill_migrate_legacy` | `~/.pwn/skills/<name>/SKILL.md` (**[agentskills.io](https://agentskills.io) spec**; legacy flat `*.md` auto-migrated) |
@@ -70,7 +70,7 @@ PWN::AI::Agent::Registry.definitions(relevance: 'nmap sweep 10.0.0.0/8', top_k:
70
70
  PWN::AI::Agent::Registry.rank(query: 'run a shell command') # inspect ranking
71
71
  PWN::AI::Agent::Registry.preference_order # Env / DEFAULT_PREFERENCE
72
72
  PWN::AI::Agent::Registry.toolsets # -> the 13 names above
73
- PWN::AI::Agent::Registry.all.count # -> 87
73
+ PWN::AI::Agent::Registry.all.count # -> 88
74
74
  ```
75
75
 
76
76
  Frontier engines leave `tool_router` off (unless you set it) and receive the
@@ -68,7 +68,7 @@ groups) so lines never criss-cross.
68
68
  [source](diagrams/dot/ai-integration-tool-calling.dot) · doc: [AI Integration](AI-Integration.md)
69
69
  ![ai-integration-tool-calling](diagrams/ai-integration-tool-calling.svg)
70
70
 
71
- ### Agent Tool Registry (13 toolsets · 87 tools)
71
+ ### Agent Tool Registry (13 toolsets · 88 tools)
72
72
  [source](diagrams/dot/agent-tool-registry.dot) · doc: [Agent Tool Registry](Agent-Tool-Registry.md)
73
73
  ![agent-tool-registry](diagrams/agent-tool-registry.svg)
74
74
 
@@ -29,7 +29,7 @@ hardware).
29
29
  |---|---|
30
30
  | `Loop` | plan → **TaskSummarizer** briefs → dispatch tool_calls → observe → repeat until `may_finalize?`. No iteration-budget abort |
31
31
  | **`TaskSummarizer`** | Executive UX: every request gets an English task compass (`emit_plan!` · `about_to` as `task k/n`) - no statement/question/goal type |
32
- | `Registry` | JSON-Schema function definitions grouped into 13 **toolsets** · **87 tools** · `CORE_TOOLS` = `DEFAULT_PREFERENCE` (`memory_recall` · `session_recall` · `skills_recall` · `pwn_eval` · `shell` · `mistakes_record` · `mistakes_resolve` · `learning_note_outcome` · `memory_remember`) |
32
+ | `Registry` | JSON-Schema function definitions grouped into 13 **toolsets** · **88 tools** · `CORE_TOOLS` = `DEFAULT_PREFERENCE` (`memory_recall` · `session_recall` · `skills_recall` · `pwn_eval` · `shell` · `mistakes_record` · `mistakes_resolve` · `learning_note_outcome` · `memory_remember`) |
33
33
  | `Dispatch` / `Result` | execute a tool, capture stdout/value/error/duration |
34
34
  | `PromptBuilder` | inject MEMORY / SKILLS / LEARNING / **KNOWN MISTAKES + FIXES** / METRICS / **POLICY** / EXTROSPECTION / RECENT TURNS |
35
35
  | `Metrics` · `Learning` · `Reflect` · **`Policy`** | **introspection** - how well am I doing? (Policy is live Q / REINFORCE, advisory rank only) |
@@ -0,0 +1,74 @@
1
+ # Plugin degradation and fallbacks
2
+
3
+ Each `PreflightChecker` health line links here. CI asserts every plugin in
4
+ `PLUGIN_DEPS` has an anchor and that documented fallbacks still exist.
5
+
6
+ ## pwn-plugins-radare2
7
+
8
+ Required: `r2`. Fallback: `objdump` / `PWN::Plugins::REDB` binutils path.
9
+
10
+ ## pwn-plugins-gdb
11
+
12
+ Required: `gdb`. Fallback: `PWN::Plugins::Debugger` still exposes `cyclic` helpers.
13
+
14
+ ## pwn-plugins-nuclei
15
+
16
+ Required: `nuclei`. Fallback: `TransparentBrowser` + `pwn_eval`.
17
+
18
+ ## pwn-plugins-sqlmap
19
+
20
+ Required: `sqlmap`. Fallback: `pwn_eval` HTTP clients.
21
+
22
+ ## pwn-plugins-frida
23
+
24
+ Required: `frida`. Fallback: `Debugger` + `REDB`.
25
+
26
+ ## pwn-plugins-aflplusplus
27
+
28
+ Required: `afl-fuzz`. Fallback: `PWN::Plugins::Fuzz.triage` on an existing crash dir.
29
+
30
+ ## pwn-plugins-volatility
31
+
32
+ Required: `vol`. Fallback: `pwn_eval` + strings/REDB.
33
+
34
+ ## pwn-plugins-nmapit
35
+
36
+ Required: `nmap`. Fallback: `Packet.tcp_connect_scan`.
37
+
38
+ ## pwn-plugins-metasploit
39
+
40
+ Required: `msfconsole`. Fallback: `exploitdev`, `pwn_eval`, `PWN::Plugins::Handler`.
41
+
42
+ ## pwn-plugins-burpsuite
43
+
44
+ Required: `burpsuite`. Fallback: `TransparentBrowser`, `nuclei`, `PWN::Plugins::MitmProxy`.
45
+
46
+ ## pwn-plugins-zaproxy
47
+
48
+ Required: `zaproxy`. Fallback: `nuclei`, `TransparentBrowser`, `PWN::Plugins::MitmProxy`.
49
+
50
+ ## pwn-plugins-packet
51
+
52
+ Required: `CAP_NET_RAW` **or** the capability broker helper. Install the helper
53
+ from `documentation/Capability-Broker-Sandbox.md` (setcap the helper binary, not
54
+ the Ruby interpreter). Fallback: `Packet.tcp_connect_scan` / `PWN::Plugins::Sock`.
55
+
56
+ ## pwn-plugins-k8s
57
+
58
+ Required: `trivy` and docker.sock. Fallback: `sbom_scan` / `pwn_eval`.
59
+
60
+ ## pwn-plugins-semgrep
61
+
62
+ Required: `semgrep`. Fallback: `sast` tools / `pwn_eval`.
63
+
64
+ ## pwn-plugins-exploitdb
65
+
66
+ Required: `searchsploit`. Fallback: `intel_lookup`.
67
+
68
+ ## pwn-plugins-recon
69
+
70
+ Required: `subfinder`, `httpx`. Fallback: `NmapIt.scan` + `Corpus.get`.
71
+
72
+ ## pwn-plugins-credentialattack
73
+
74
+ Required: `hydra`, `john`, `hashcat`. Fallback: `pwn_eval` + `Corpus`.
@@ -1,8 +1,7 @@
1
1
  # Swarm - Native Multi-Agent Orchestration
2
2
 
3
- `PWN::AI::Agent::Swarm` replaces the legacy `pwn-irc` (inspircd + weechat +
4
- PRIVMSG) transport with **first-class sub-agents** built directly on
5
- `PWN::AI::Agent::Loop`. Each persona is a *full* tool-calling agent - Memory,
3
+ `PWN::AI::Agent::Swarm` is first-class multi-agent orchestration built
4
+ directly on `PWN::AI::Agent::Loop`. Each persona is a *full* tool-calling agent - Memory,
6
5
  Skills, Learning, Metrics and Extrospection all apply - so the
7
6
  self-improvement loop covers the whole swarm.
8
7
 
@@ -20,7 +20,7 @@ with a **tool-calling AI agent** on top that can run the same methods.
20
20
  | `PWN::FFI::*` | **8** | Native DSP/RF backends: Volk · Liquid · FFTW · RTLSdr · HackRF · AdalmPluto · SoapySDR · Stdio |
21
21
  | `PWN::AI::*` | **6** engines | OpenAI, Anthropic, Grok (OAuth device-flow), Gemini, Ollama, Open WebUI |
22
22
  | `bin/pwn_*` + `pwn` | **54** | Headless CLI executables for CI/CD |
23
- | Agent toolsets | **13** · **87 tools** | terminal · pwn · memory · skills · sessions · learning · metrics · policy · extrospection · cron · swarm · reward · curriculum |
23
+ | Agent toolsets | **13** · **88 tools** | terminal · pwn · memory · skills · sessions · learning · metrics · policy · extrospection · cron · swarm · reward · curriculum |
24
24
 
25
25
  ## Three ways to use it
26
26
 
@@ -26,7 +26,6 @@ commands.
26
26
  | `pwn-ai-sessions` | `PWN::Sessions` | List/view/delete transcripts |
27
27
  | `pwn-ai-cron` | `PWN::Cron` | List/run/toggle scheduled jobs |
28
28
  | `pwn-ai-delegate` | `Agent::Swarm` | Send one request to a persona |
29
- | `pwn-irc` | *(deprecated)* | Prints a pointer to `Agent::Swarm` - the IRC daemon transport is gone |
30
29
  | `toggle-debug` | `Agent::Loop` / `Plugins::Log` | Stage log per operator request to `/tmp/pwn-ai-DEBUG-<SESSION_ID>-RN.log` |
31
30
  | `toggle-trace` | `Agent::Loop` / `Plugins::Log` | Turns `toggle-debug` on with TracePoint; ENTER after each engine/tool step. Pry.config, not Env. Off turns both off. |
32
31
  | `toggle-pwn-ai-speaks` | `Plugins::Voice` | TTS every final answer on/off |
@@ -101,7 +101,7 @@ $ pwn --ai "run bin/pwn_sast against ./src and push findings to DefectDojo"
101
101
 
102
102
  ## What the agent can call
103
103
 
104
- 13 toolsets · **87 tools** - full table at
104
+ 13 toolsets · **88 tools** - full table at
105
105
  [Agent Tool Registry](Agent-Tool-Registry.md).
106
106
 
107
107
  The two that matter most:
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: browser-exploitation
3
+ description: Use when attacking browsers. Proxy plus Debugger.
4
+ ---
5
+
6
+ # Browser exploitation
7
+
8
+ 1. `PWN::Plugins::MitmProxy.start` and TransparentBrowser `proxy:`.
9
+ 2. `replay` mutated requests; diff HAR entries.
10
+ 3. Native crashes go through `PWN::Plugins::Debugger` and `REDB`.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: firmware-unpack-emulate
3
+ description: Use when unpacking firmware. REDB on extracted bins.
4
+ ---
5
+
6
+ # Firmware unpack and emulate
7
+
8
+ 1. Unpack with binwalk/firmware-mod-kit outside the radio path.
9
+ 2. `PWN::Plugins::REDB.open` on extracted userland binaries.
10
+ 3. Emulate with qemu user; debug via `PWN::Plugins::Debugger.launch`.
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: heap-exploitation
3
+ description: Use when exploiting glibc heap. Debugger and REDB steps for tcache.
4
+ ---
5
+
6
+ # Heap exploitation (tcache / fastbin)
7
+
8
+ 1. `PWN::Plugins::REDB.open(bin: path)` then `xrefs_to(sym: 'malloc')` and `xrefs_to(sym: 'free')`.
9
+ 2. `PWN::Plugins::Debugger.launch(bin: path)` then `break(addr_or_sym: 'main')` and `run`.
10
+ 3. Use `cyclic` / `cyclic_find` to locate overflow into tcache metadata (`tcache_perthread_struct`).
11
+ 4. Confirm with `regs` and `read_mem` after `continue`. Write the proof via `Findings.record`.
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: kernel-pwn-triage
3
+ description: Use when triaging kernel bugs. Debugger and REDB first.
4
+ ---
5
+
6
+ # Kernel pwn triage
7
+
8
+ 1. `PWN::Plugins::REDB.open(bin: vmlinux)` then `funcs` / `xrefs_to`.
9
+ 2. `PWN::Plugins::Debugger.attach(host: '127.0.0.1', port: 1234)` to a QEMU gdbstub (`-s`).
10
+ 3. `break(addr_or_sym: 'commit_creds')`, `continue`, `regs`, `backtrace`.
11
+ 4. Record findings with evidence paths; do not guess offsets.
@@ -12,7 +12,7 @@ metadata:
12
12
 
13
13
  # PWN::AI::Agent::Swarm
14
14
 
15
- Native multi-agent orchestration for pwn-ai. Swarm replaces the legacy `pwn-irc` mechanism (inspircd + weechat + PRIVMSG-flattened .chat calls) with first-class sub-agents built on top of PWN::AI::Agent::Loop.run. Each persona is a full tool-calling agent — Memory, Skills, Learning, Metrics and Extrospection all apply — so the self-improvement loop covers the whole swarm. ~/.pwn/agents.yml # persona registry ~/.pwn/swarm/<swarm_id>/bus.jsonl # append-only message bus ~/.pwn/swarm/<swarm_id>/personas.json# persona -> PWN::Sessions id Cross-session / cross-process communication == another pwn-ai (or a PWN::Cron job) calling Swarm.ask/debate with the same swarm_id and reading the same bus.jsonl. No daemon required.
15
+ Native multi-agent orchestration for pwn-ai. First-class sub-agents built on top of PWN::AI::Agent::Loop.run. Each persona is a full tool-calling agent — Memory, Skills, Learning, Metrics and Extrospection all apply — so the self-improvement loop covers the whole swarm. ~/.pwn/agents.yml # persona registry ~/.pwn/swarm/<swarm_id>/bus.jsonl # append-only message bus ~/.pwn/swarm/<swarm_id>/personas.json# persona -> PWN::Sessions id Cross-session / cross-process communication == another pwn-ai (or a PWN::Cron job) calling Swarm.ask/debate with the same swarm_id and reading the same bus.jsonl. No daemon required.
16
16
 
17
17
  ## When to use
18
18
 
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: pwn-ai-agent-tools-sbomscan
3
+ description: Drive PWN::Ai::Agent::Tools::SbomScan from pwn_eval.
4
+ license: MIT
5
+ allowed-tools: [pwn, pwn_eval]
6
+ metadata:
7
+ bundled: true
8
+ generated: true
9
+ module: PWN::Ai::Agent::Tools::SbomScan
10
+ source: pwn/ai/agent/tools/sbom_scan.rb
11
+ ---
12
+
13
+ # PWN::Ai::Agent::Tools::SbomScan
14
+
15
+ Public API for PWN::Ai::Agent::Tools::SbomScan.
16
+
17
+ ## When to use
18
+
19
+ Call `PWN::Ai::Agent::Tools::SbomScan` from `pwn_eval` when the task needs this module.
20
+ Do not reimplement it in shell.
21
+
22
+ ## Methodologies
23
+
24
+ Generated from `pwn/ai/agent/tools/sbom_scan.rb`. Prefer the public class methods below.
25
+ Class methods take `(opts = {})` and read `opts`.
26
+
27
+ ## How to call
28
+
29
+ ```ruby
30
+ PWN::Ai::Agent::Tools::SbomScan.help
31
+ PWN::Ai::Agent::Tools::SbomScan.help(opts)
32
+ ```
33
+
34
+ ## Public methods
35
+
36
+ - _(no public class methods parsed)_
37
+
38
+ ## Source
39
+
40
+ `pwn/ai/agent/tools/sbom_scan.rb`
41
+
42
+ ## Verification
43
+
44
+ `PWN::Ai::Agent::Tools::SbomScan.respond_to?(:help)` after the
45
+ module is loaded. Read the source for parameter names.
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: pwn-corpus
3
+ description: Drive PWN::Corpus from pwn_eval.
4
+ license: MIT
5
+ allowed-tools: [pwn, pwn_eval]
6
+ metadata:
7
+ bundled: true
8
+ generated: true
9
+ module: PWN::Corpus
10
+ source: pwn/corpus.rb
11
+ ---
12
+
13
+ # PWN::Corpus
14
+
15
+ Named wordlist and payload corpora under ~/.pwn/corpora.
16
+
17
+ ## When to use
18
+
19
+ Call `PWN::Corpus` from `pwn_eval` when the task needs this module.
20
+ Do not reimplement it in shell.
21
+
22
+ ## Methodologies
23
+
24
+ Generated from `pwn/corpus.rb`. Prefer the public class methods below.
25
+ Class methods take `(opts = {})` and read `opts`.
26
+
27
+ ## How to call
28
+
29
+ ```ruby
30
+ PWN::Corpus.help
31
+ PWN::Corpus.get(opts)
32
+ ```
33
+
34
+ ## Public methods
35
+
36
+ - `get`
37
+ - `update`
38
+ - `authors`
39
+ - `help`
40
+
41
+ ## References
42
+
43
+ - `references/urls.md` — URLs from source
44
+
45
+ ## Source
46
+
47
+ `pwn/corpus.rb`
48
+
49
+ ## Verification
50
+
51
+ `PWN::Corpus.respond_to?(:get)` after the
52
+ module is loaded. Read the source for parameter names.
@@ -0,0 +1,3 @@
1
+ # PWN::Corpus source links
2
+
3
+ - https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/DNS/subdomains-top1million-5000.txt
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: pwn-engagement
3
+ description: Drive PWN::Engagement from pwn_eval.
4
+ license: MIT
5
+ allowed-tools: [pwn, pwn_eval]
6
+ metadata:
7
+ bundled: true
8
+ generated: true
9
+ module: PWN::Engagement
10
+ source: pwn/engagement.rb
11
+ ---
12
+
13
+ # PWN::Engagement
14
+
15
+ Engagement scope, host state, and vault refs under ~/.pwn/engagements.
16
+
17
+ ## When to use
18
+
19
+ Call `PWN::Engagement` from `pwn_eval` when the task needs this module.
20
+ Do not reimplement it in shell.
21
+
22
+ ## Methodologies
23
+
24
+ Generated from `pwn/engagement.rb`. Prefer the public class methods below.
25
+ Class methods take `(opts = {})` and read `opts`.
26
+
27
+ ## How to call
28
+
29
+ ```ruby
30
+ PWN::Engagement.help
31
+ PWN::Engagement.open(opts)
32
+ ```
33
+
34
+ ## Public methods
35
+
36
+ - `open`
37
+ - `close`
38
+ - `status`
39
+ - `in_scope`
40
+ - `warn_unless_in_scope`
41
+ - `record_host`
42
+ - `hosts`
43
+ - `merge_scan`
44
+ - `authors`
45
+ - `help`
46
+ - `in_scope?`
47
+
48
+ ## Source
49
+
50
+ `pwn/engagement.rb`
51
+
52
+ ## Verification
53
+
54
+ `PWN::Engagement.respond_to?(:open)` after the
55
+ module is loaded. Read the source for parameter names.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: pwn-plugins-debugger
3
+ description: Drive PWN::Plugins::Debugger from pwn_eval.
4
+ license: MIT
5
+ allowed-tools: [pwn, pwn_eval]
6
+ metadata:
7
+ bundled: true
8
+ generated: true
9
+ module: PWN::Plugins::Debugger
10
+ source: pwn/plugins/debugger.rb
11
+ ---
12
+
13
+ # PWN::Plugins::Debugger
14
+
15
+ Structured GDB/MI driver with a handle registry that survives pwn_eval.
16
+
17
+ ## When to use
18
+
19
+ Call `PWN::Plugins::Debugger` from `pwn_eval` when the task needs this module.
20
+ Do not reimplement it in shell.
21
+
22
+ ## Methodologies
23
+
24
+ Generated from `pwn/plugins/debugger.rb`. Prefer the public class methods below.
25
+ Class methods take `(opts = {})` and read `opts`.
26
+
27
+ ## How to call
28
+
29
+ ```ruby
30
+ PWN::Plugins::Debugger.help
31
+ PWN::Plugins::Debugger.required_bins(opts)
32
+ ```
33
+
34
+ ## Public methods
35
+
36
+ - `required_bins`
37
+ - `launch`
38
+ - `attach`
39
+ - `run`
40
+ - `break`
41
+ - `continue`
42
+ - `step`
43
+ - `read_mem`
44
+ - `write_mem`
45
+ - `regs`
46
+ - `backtrace`
47
+ - `checksec`
48
+ - `cyclic`
49
+ - `cyclic_find`
50
+ - `to_pwntools_offsets`
51
+ - `close`
52
+ - `authors`
53
+ - `help`
54
+
55
+ ## Source
56
+
57
+ `pwn/plugins/debugger.rb`
58
+
59
+ ## Verification
60
+
61
+ `PWN::Plugins::Debugger.respond_to?(:required_bins)` after the
62
+ module is loaded. Read the source for parameter names.
@@ -36,6 +36,7 @@ PWN::Plugins::Fuzz.socket(opts)
36
36
  - `socket`
37
37
  - `http`
38
38
  - `file_format`
39
+ - `triage`
39
40
  - `authors`
40
41
  - `help`
41
42
 
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: pwn-plugins-handler
3
+ description: Drive PWN::Plugins::Handler from pwn_eval.
4
+ license: MIT
5
+ allowed-tools: [pwn, pwn_eval]
6
+ metadata:
7
+ bundled: true
8
+ generated: true
9
+ module: PWN::Plugins::Handler
10
+ source: pwn/plugins/handler.rb
11
+ ---
12
+
13
+ # PWN::Plugins::Handler
14
+
15
+ Payload generation and listener sessions without Metasploit.
16
+
17
+ ## When to use
18
+
19
+ Call `PWN::Plugins::Handler` from `pwn_eval` when the task needs this module.
20
+ Do not reimplement it in shell.
21
+
22
+ ## Methodologies
23
+
24
+ Generated from `pwn/plugins/handler.rb`. Prefer the public class methods below.
25
+ Class methods take `(opts = {})` and read `opts`.
26
+
27
+ ## How to call
28
+
29
+ ```ruby
30
+ PWN::Plugins::Handler.help
31
+ PWN::Plugins::Handler.required_bins(opts)
32
+ ```
33
+
34
+ ## Public methods
35
+
36
+ - `required_bins`
37
+ - `generate`
38
+ - `listen`
39
+ - `accept`
40
+ - `interact`
41
+ - `stop`
42
+ - `authors`
43
+ - `help`
44
+
45
+ ## Source
46
+
47
+ `pwn/plugins/handler.rb`
48
+
49
+ ## Verification
50
+
51
+ `PWN::Plugins::Handler.respond_to?(:required_bins)` after the
52
+ module is loaded. Read the source for parameter names.
@@ -47,6 +47,7 @@ PWN::Plugins::Jobs.required_bins(opts)
47
47
  - `harvest`
48
48
  - `list`
49
49
  - `stop`
50
+ - `graph`
50
51
  - `authors`
51
52
  - `help`
52
53
 
@@ -39,6 +39,7 @@ PWN::Plugins::MitmProxy.start(opts)
39
39
  - `rules`
40
40
  - `http_replay`
41
41
  - `exchange`
42
+ - `replay`
42
43
  - `authors`
43
44
  - `help`
44
45
 
@@ -37,6 +37,7 @@ PWN::Plugins::NmapIt.port_scan(opts)
37
37
  - `parse_xml_results`
38
38
  - `diff_xml_results`
39
39
  - `to_findings`
40
+ - `scan`
40
41
  - `authors`
41
42
  - `help`
42
43
 
@@ -47,6 +47,7 @@ PWN::Plugins::Packet.open_pcap_file(opts)
47
47
  - `tcp_connect_scan`
48
48
  - `cap_net_raw`
49
49
  - `capture`
50
+ - `health`
50
51
  - `authors`
51
52
  - `help`
52
53
  - `cap_net_raw?`
@@ -41,6 +41,8 @@ PWN::Plugins::ProcessTube.required_bins(opts)
41
41
  - `recvuntil`
42
42
  - `recvline`
43
43
  - `close`
44
+ - `send_raw`
45
+ - `register`
44
46
  - `expect`
45
47
  - `stream`
46
48
  - `reap_orphans`
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: pwn-plugins-redb
3
+ description: Drive PWN::Plugins::REDB from pwn_eval.
4
+ license: MIT
5
+ allowed-tools: [pwn, pwn_eval]
6
+ metadata:
7
+ bundled: true
8
+ generated: true
9
+ module: PWN::Plugins::REDB
10
+ source: pwn/plugins/redb.rb
11
+ ---
12
+
13
+ # PWN::Plugins::REDB
14
+
15
+ Persistent per-binary analysis DB under ~/.pwn/redb.
16
+
17
+ ## When to use
18
+
19
+ Call `PWN::Plugins::REDB` from `pwn_eval` when the task needs this module.
20
+ Do not reimplement it in shell.
21
+
22
+ ## Methodologies
23
+
24
+ Generated from `pwn/plugins/redb.rb`. Prefer the public class methods below.
25
+ Class methods take `(opts = {})` and read `opts`.
26
+
27
+ ## How to call
28
+
29
+ ```ruby
30
+ PWN::Plugins::REDB.help
31
+ PWN::Plugins::REDB.open(opts)
32
+ ```
33
+
34
+ ## Public methods
35
+
36
+ - `open`
37
+ - `funcs`
38
+ - `xrefs_to`
39
+ - `strings`
40
+ - `decompile`
41
+ - `annotate`
42
+ - `authors`
43
+ - `help`
44
+
45
+ ## Source
46
+
47
+ `pwn/plugins/redb.rb`
48
+
49
+ ## Verification
50
+
51
+ `PWN::Plugins::REDB.respond_to?(:open)` after the
52
+ module is loaded. Read the source for parameter names.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: pwn-plugins-sbom
3
+ description: Drive PWN::Plugins::SBOM from pwn_eval.
4
+ license: MIT
5
+ allowed-tools: [pwn, pwn_eval]
6
+ metadata:
7
+ bundled: true
8
+ generated: true
9
+ module: PWN::Plugins::SBOM
10
+ source: pwn/plugins/sbom.rb
11
+ ---
12
+
13
+ # PWN::Plugins::SBOM
14
+
15
+ Generic lockfile/image CVE scan with engine selection.
16
+
17
+ ## When to use
18
+
19
+ Call `PWN::Plugins::SBOM` from `pwn_eval` when the task needs this module.
20
+ Do not reimplement it in shell.
21
+
22
+ ## Methodologies
23
+
24
+ Generated from `pwn/plugins/sbom.rb`. Prefer the public class methods below.
25
+ Class methods take `(opts = {})` and read `opts`.
26
+
27
+ ## How to call
28
+
29
+ ```ruby
30
+ PWN::Plugins::SBOM.help
31
+ PWN::Plugins::SBOM.required_bins(opts)
32
+ ```
33
+
34
+ ## Public methods
35
+
36
+ - `required_bins`
37
+ - `scan`
38
+ - `authors`
39
+ - `help`
40
+
41
+ ## Source
42
+
43
+ `pwn/plugins/sbom.rb`
44
+
45
+ ## Verification
46
+
47
+ `PWN::Plugins::SBOM.respond_to?(:required_bins)` after the
48
+ module is loaded. Read the source for parameter names.