pwn 0.5.617 → 0.5.620

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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +101 -83
  4. data/bin/pwn_gqrx_scanner +25 -5
  5. data/documentation/AI-Integration.md +42 -26
  6. data/documentation/AWS.md +57 -0
  7. data/documentation/Agent-Tool-Registry.md +56 -0
  8. data/documentation/Banner.md +17 -0
  9. data/documentation/Blockchain.md +18 -0
  10. data/documentation/Bounty.md +21 -0
  11. data/documentation/BurpSuite.md +41 -16
  12. data/documentation/CLI-Drivers.md +58 -0
  13. data/documentation/Configuration.md +66 -0
  14. data/documentation/Contributing.md +33 -19
  15. data/documentation/Cron.md +47 -0
  16. data/documentation/Diagrams.md +6 -2
  17. data/documentation/Drivers.md +43 -16
  18. data/documentation/Extrospection.md +73 -0
  19. data/documentation/FFI.md +14 -0
  20. data/documentation/Fuzzing.md +36 -0
  21. data/documentation/Hardware.md +40 -0
  22. data/documentation/Home.md +5 -4
  23. data/documentation/How-PWN-Works.md +7 -4
  24. data/documentation/Metasploit.md +34 -0
  25. data/documentation/Mistakes.md +96 -0
  26. data/documentation/NmapIt.md +18 -12
  27. data/documentation/PWN.png +0 -0
  28. data/documentation/PWN_Contributors_and_Users.png +0 -0
  29. data/documentation/Persistence.md +40 -0
  30. data/documentation/Plugins.md +97 -47
  31. data/documentation/Reporting.md +25 -18
  32. data/documentation/SAST.md +39 -22
  33. data/documentation/SDR.md +58 -0
  34. data/documentation/Sessions.md +39 -0
  35. data/documentation/Skills-Memory-Learning.md +59 -29
  36. data/documentation/Swarm.md +71 -0
  37. data/documentation/Transparent-Browser.md +26 -22
  38. data/documentation/Troubleshooting.md +44 -25
  39. data/documentation/WWW.md +32 -0
  40. data/documentation/diagrams/agent-tool-registry.svg +286 -0
  41. data/documentation/diagrams/aws-cloud-security.svg +166 -0
  42. data/documentation/diagrams/cron-scheduling.svg +148 -0
  43. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  44. data/documentation/diagrams/dot/extrospection-world-awareness.dot +9 -7
  45. data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
  46. data/documentation/diagrams/dot/memory-skills-detailed.dot +12 -5
  47. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
  48. data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
  49. data/documentation/diagrams/dot/persistence-filesystem.dot +30 -0
  50. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +19 -7
  51. data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
  52. data/documentation/diagrams/extrospection-world-awareness.svg +203 -0
  53. data/documentation/diagrams/hardware-hacking.svg +163 -0
  54. data/documentation/diagrams/memory-skills-detailed.svg +146 -97
  55. data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
  56. data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
  57. data/documentation/diagrams/persistence-filesystem.svg +189 -0
  58. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +217 -149
  59. data/documentation/diagrams/sdr-radio-flow.svg +166 -0
  60. data/documentation/diagrams/swarm-multi-agent.svg +225 -0
  61. data/documentation/fax-spectrogram.png +0 -0
  62. data/documentation/fax-waveform.png +0 -0
  63. data/documentation/pwn-REPL.md +40 -24
  64. data/documentation/pwn-ai-Agent.md +72 -30
  65. data/documentation/pwn_android_war_dialer_session.png +0 -0
  66. data/documentation/pwn_install.png +0 -0
  67. data/documentation/pwn_wallpaper.jpg +0 -0
  68. data/documentation/ringing-spectrogram.png +0 -0
  69. data/documentation/ringing-waveform.png +0 -0
  70. data/lib/pwn/ai/agent/extrospection.rb +65 -6
  71. data/lib/pwn/ai/agent/learning.rb +67 -7
  72. data/lib/pwn/ai/agent/loop.rb +72 -6
  73. data/lib/pwn/ai/agent/mistakes.rb +369 -0
  74. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  75. data/lib/pwn/ai/agent/tools/extrospection.rb +2 -2
  76. data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
  77. data/lib/pwn/ai/agent.rb +1 -0
  78. data/lib/pwn/plugins/jira_data_center.rb +2 -2
  79. data/lib/pwn/sdr/decoder/adsb.rb +101 -0
  80. data/lib/pwn/sdr/decoder/apt.rb +75 -0
  81. data/lib/pwn/sdr/decoder/bluetooth.rb +78 -0
  82. data/lib/pwn/sdr/decoder/dect.rb +84 -0
  83. data/lib/pwn/sdr/decoder/gps.rb +83 -0
  84. data/lib/pwn/sdr/decoder/gsm.rb +50 -29
  85. data/lib/pwn/sdr/decoder/iridium.rb +81 -0
  86. data/lib/pwn/sdr/decoder/lora.rb +87 -0
  87. data/lib/pwn/sdr/decoder/lte.rb +88 -0
  88. data/lib/pwn/sdr/decoder/morse.rb +64 -0
  89. data/lib/pwn/sdr/decoder/p25.rb +71 -0
  90. data/lib/pwn/sdr/decoder/pager.rb +77 -0
  91. data/lib/pwn/sdr/decoder/pocsag.rb +26 -11
  92. data/lib/pwn/sdr/decoder/rfid.rb +88 -0
  93. data/lib/pwn/sdr/decoder/rtl433.rb +95 -0
  94. data/lib/pwn/sdr/decoder/rtty.rb +66 -0
  95. data/lib/pwn/sdr/decoder/wifi.rb +98 -0
  96. data/lib/pwn/sdr/decoder/zigbee.rb +96 -0
  97. data/lib/pwn/sdr/decoder.rb +67 -7
  98. data/lib/pwn/sdr/frequency_allocation.rb +82 -41
  99. data/lib/pwn/sdr/gqrx.rb +186 -95
  100. data/lib/pwn/version.rb +1 -1
  101. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
  102. data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
  103. data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
  104. data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
  105. data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
  106. data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
  107. data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
  108. data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
  109. data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
  110. data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
  111. data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
  112. data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
  113. data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
  114. data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
  115. data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
  116. data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
  117. data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
  118. data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
  119. data/third_party/pwn_rdoc.jsonl +114 -8
  120. metadata +81 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb16e051629252943b2df67c661ca49455cd5dfd4acfbde1620e75135f858c42
4
- data.tar.gz: 036cb463b3cd848926f88c60be3f885e5e9b4f738534ac036918d118d18ec893
3
+ metadata.gz: d7b52a560de426b6b9c99fa2716b8e93a948e66088e0e1ae78d28f8633417cea
4
+ data.tar.gz: f94969b76a9ad4b856a9b5db25647f41d57f600f0c331ebde29c24b35ab59cd1
5
5
  SHA512:
6
- metadata.gz: d76d992d344b3a2016819f772e7e304fc437d42df677b85b67f33418c988f6436385eefbb6509cbe1d1436c9df585a30f2f44189b00134792160f420af77e81c
7
- data.tar.gz: 34cdfc754bd3801071a8967b672924764c5d8b894fb13a6bd74dc43f10d930aee94cb781e5c9812b6b00b14b83fbfa34cbcbbcf45d4c6c2332c800b8fe322fe5
6
+ metadata.gz: dcd6287345b8f7230aeeeddc8a5d8de97d4000ae6bddecd77b4b2957f8ddf480de5c9ba8ba6a96a9fcf77f64a30f0b3d9a41219ad15512deab556c5b7e60c360
7
+ data.tar.gz: 92b3f2b90679984a47ed9cff3e1440100803e4220fc6f78eac386bd5cd125f24acbdd7b44504c20f783ba653895726495a69b7ce5d9cd5fd883a98cb67a11ef9
data/Gemfile CHANGED
@@ -50,7 +50,7 @@ gem 'libusb', '0.7.2'
50
50
  gem 'luhn', '3.0.0'
51
51
  gem 'mail', '2.9.1'
52
52
  gem 'mcp', '0.23.0'
53
- gem 'meshtastic', '0.0.167'
53
+ gem 'meshtastic', '0.0.169'
54
54
  gem 'metasm', '1.0.6'
55
55
  gem 'mongo', '2.24.1'
56
56
  gem 'msfrpc-client', '1.1.2'
@@ -81,7 +81,7 @@ gem 'rmagick', '7.0.5'
81
81
  gem 'rqrcode', '3.2.0'
82
82
  gem 'rspec', '3.13.2'
83
83
  gem 'rtesseract', '3.1.4'
84
- gem 'rubocop', '1.88.1'
84
+ gem 'rubocop', '1.88.2'
85
85
  gem 'rubocop-rake', '0.7.1'
86
86
  gem 'rubocop-rspec', '3.10.2'
87
87
  gem 'ruby-audio', '1.6.1'
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  * [What is PWN](#what-is-pwn)
7
7
  * [Why PWN](#why-pwn)
8
8
  * [How PWN Works](#how-pwn-works)
9
- - [[Local PWN Wiki](documentation/Home.md)
9
+ - [Documentation](#documentation)
10
10
  - [Installation](#installation)
11
11
  - [General Usage](#general-usage)
12
12
  - [Call to Arms](#call-to-arms)
@@ -14,79 +14,92 @@
14
14
  - [Keep Us Caffeinated](#keep-us-caffeinated)
15
15
  - [0x004D65726368](#0x004d65726368)
16
16
 
17
+ ---
18
+
17
19
  ### **Intro** ###
18
20
 
19
21
  #### **What is PWN** ####
20
22
 
21
- PWN (Pronounced /pōn/ or pone), is a powerful open-source offensive cybersecurity automation framework and continuous security integration platform. It enables security researchers, red teamers, penetration testers, and vulnerability researchers to rapidly discover zero-days, automate exploitation, perform advanced web application testing, conduct source code analysis (SAST), orchestrate infrastructure reconnaissance, and execute AI-augmented autonomous security operations.
23
+ PWN (pronounced /pōn/ *pone*) is an open-source **offensive-security
24
+ automation framework** and **continuous-security-integration** platform.
25
+ It gives security researchers, red teamers, penetration testers and
26
+ vulnerability researchers a single, scriptable Ruby surface over the entire
27
+ offensive toolchain — from OSINT and network discovery, through web / cloud /
28
+ hardware / radio exploitation, to reporting and disclosure — and puts a
29
+ **self-improving, tool-calling, multi-agent AI** on top of it.
22
30
 
23
- PWN stands on the shoulders of security giants, providing over **66** production-grade plugins, full LLM integration with tool-calling agents, persistent memory, reusable skills, session/cron management, and a highly interactive REPL for prototyping and driving complex security workflows. All core automation primitives are open to promote trust, peer review, and collaborative innovation in adversarial security.
31
+ **In numbers:** 66 `PWN::Plugins` · 48 `PWN::SAST` rules · 90 `PWN::AWS`
32
+ service wrappers · 21 `PWN::WWW` site drivers · 52 `bin/pwn_*` CLI drivers ·
33
+ 5 LLM engines · 10 agent toolsets · 45+ LLM-callable tools.
24
34
 
25
- **See the full [PWN Wiki](documentation/Home.md) for detailed guides.**
35
+ Full page: [What is PWN](documentation/What-is-PWN.md)
26
36
 
27
37
  #### **Why PWN** ####
28
38
 
29
- In cybersecurity, where proprietary black-box tools dominate and threats evolve daily, an open framework for core security primitives, vulnerability research, exploitation techniques, and intelligent automation is essential. PWN ensures foundational modules remain transparent and auditable while providing seamless bridges to commercial and open security tools (e.g. Burp Suite Professional, Metasploit, Nmap, Nessus, and multiple LLMs).
30
-
31
- Broad collaboration accelerates zero-day discovery, reliable exploit development, continuous vulnerability management in CI/CD pipelines, and the creation of reusable AI-driven security skills. PWN makes advanced red team and vuln research capabilities accessible and extensible to all.
39
+ Offensive security is a *toolchain problem*. PWN's bet is that the right
40
+ abstraction is **plain Ruby methods with a uniform `opts = {}` signature**,
41
+ exposed simultaneously to a human in a REPL, an LLM in a tool-calling loop, a
42
+ shell script in CI, and a cron job at 3 am — all open-source and auditable,
43
+ which matters when the caller is autonomous.
32
44
 
33
- See [Why PWN](documentation/Why-PWN.md) in the wiki.
45
+ Full page: [Why PWN](documentation/Why-PWN.md)
34
46
 
35
47
  #### **How PWN Works** ####
36
48
 
37
- #### **PWN AI Feedback Learning Loop (Self-Improving Agent)**
38
-
39
- The core of pwn-ai is a closed feedback loop for autonomous improvement:
49
+ Five layers, edges only ever go down:
40
50
 
41
- ![PWN AI Feedback Learning Loop](documentation/diagrams/pwn-ai-feedback-learning-loop.svg)
51
+ ![PWN Overall Architecture](documentation/diagrams/overall-pwn-architecture.svg)
42
52
 
43
- See full details in [Skills, Memory & Learning](documentation/Skills-Memory-Learning.md) and the [Diagrams](documentation/Diagrams.md) wiki page.
53
+ The AI layer closes a **self-improvement loop** on every turn Metrics +
54
+ Learning + **Mistakes** (introspection / negative feedback) joined with
55
+ Snapshot + Drift + Intel + RF (extrospection) via `extro_correlate`, so the
56
+ agent knows whether a failure was *its* fault or *the world* changed —
57
+ **and does not repeat the same mistake twice**:
44
58
 
59
+ ![pwn-ai Feedback Learning Loop](documentation/diagrams/pwn-ai-feedback-learning-loop.svg)
45
60
 
46
- PWN is structured as a Ruby gem with a rich namespace:
61
+ Failures are fingerprinted cross-session (`~/.pwn/mistakes.json`), tagged
62
+ `[REPEATING]` / `[REGRESSED]`, and their **fix** is handed straight back inline
63
+ on the next recurrence:
47
64
 
48
- - `PWN::Plugins::*` — **66+** specialized modules ([BurpSuite](documentation/BurpSuite.md) [preferred for web proxying/scanning], [Zaproxy](documentation/Plugins.md) [fallback], [Metasploit](documentation/Plugins.md), [NmapIt](documentation/NmapIt.md), [TransparentBrowser](documentation/Transparent-Browser.md), Shodan, NessusCloud, NexposeVulnScan, Fuzz, SAST engines, Android analysis, SDR/GQRX, Blockchain, Bounty platforms like HackerOne, hardware interfaces, OCR, packet crafting, etc.).
49
- - `PWN::AI::*` — Multi-provider LLM clients (OpenAI, Anthropic, Gemini, [Grok OAuth device flow](documentation/AI-Integration.md), Ollama) and autonomous `PWN::AI::Agent` with tool-calling harness (`pwn_eval` for full PWN namespace, shell execution, skills, memory recall/remember, learning loops).
50
- - `PWN::SAST` — Static application security testing and test case generation. See [SAST Wiki](documentation/SAST.md).
51
- - `PWN::Reports` — Automated reporting from scans, agents, and findings. See [Reporting](documentation/Reporting.md).
52
- - `PWN::Memory / Sessions / Cron / Skills / Config` — Persistent facts, conversation sessions, scheduled autonomous tasks, reusable markdown skills (distillable from successful workflows), and environment management. See [Skills, Memory & Learning](documentation/Skills-Memory-Learning.md).
53
- - `PWN::Driver` — Framework for building custom security automation packages ("drivers"). See [Drivers](documentation/Drivers.md).
65
+ ![Mistakes Negative-Feedback Loop](documentation/diagrams/mistakes-negative-feedback.svg)
54
66
 
55
- The **pwn REPL** (launched via the `pwn` command) is the primary interface: a Pry-powered interactive shell with the entire `PWN` namespace pre-loaded. It supports rapid prototyping, direct execution of any plugin method, and custom commands.
67
+ And **Swarm** runs multiple personas each a full tool-calling agent,
68
+ optionally on a *different* LLM engine — over a shared append-only bus:
56
69
 
57
- **Particularly powerful is the `pwn-ai` command** inside the REPL:
58
- - Activates an autonomous AI agent TUI with multi-line input support (use SHIFT+ENTER to insert newlines; ENTER submits the full prompt).
59
- - Full awareness of PWN plugins, skills (`~/.pwn/skills`), memory, sessions, and cron.
60
- - Leverages LLM tool-calling to execute PWN methods (e.g., `PWN::Plugins::BurpSuite`, `PWN::Plugins::NmapIt`, `PWN::Plugins::TransparentBrowser`, `PWN::SAST`, `PWN::Reports`), shell commands, and orchestrate end-to-end tasks.
61
- - Supports self-improvement via `PWN::AI::Agent::Learning` / Metrics (records per-tool success/duration, distills skills from outcomes).
62
- - Example instruction: "Use NmapIt to scan target.example.com for open ports, then TransparentBrowser to spider the web app, run SAST analysis if source is available, proxy via BurpSuite, and generate a vulnerability report with PWN::Reports."
63
- - Additional REPL commands: `pwn-asm` (assembly prototyping with multiline), `pwn-ai-memory`, `pwn-ai-sessions`, `pwn-ai-cron`, `pwn-ai-delegate`, `welcome-banner`, etc.
64
- - Easily prototype and roll out custom "drivers" (see `/opt/pwn/bin/` examples).
70
+ ![Swarm Multi-Agent](documentation/diagrams/swarm-multi-agent.svg)
65
71
 
66
- Mix and match plugins, invoke via the REPL or `pwn-ai` agent, record/replay sessions, schedule autonomous jobs, and generate reports. PWN is designed for both interactive red teaming and headless/CI automation.
72
+ Full pages: [How PWN Works](documentation/How-PWN-Works.md) ·
73
+ [All 27 Data-Flow Diagrams](documentation/Diagrams.md)
67
74
 
68
- Here are some [example drivers](https://github.com/0dayInc/pwn/tree/master/bin) distributed with PWN.
75
+ ---
69
76
 
70
- #### **Local PWN Wiki** ####
77
+ ### **Documentation** ###
71
78
 
72
- A full local wiki has been generated in this checkout:
79
+ The complete wiki lives in this repo at **[`documentation/Home.md`](documentation/Home.md)**.
73
80
 
74
- **`/opt/pwn/documentation/Home.md`**
81
+ | Start Here | Entry Points | AI Subsystem | Capabilities |
82
+ |---|---|---|---|
83
+ | [What is PWN](documentation/What-is-PWN.md) | [`pwn` REPL](documentation/pwn-REPL.md) | [AI / LLM Integration](documentation/AI-Integration.md) | [Plugins (66)](documentation/Plugins.md) |
84
+ | [Why PWN](documentation/Why-PWN.md) | [`pwn-ai` Agent](documentation/pwn-ai-Agent.md) | [Agent Tool Registry](documentation/Agent-Tool-Registry.md) | [SAST (48)](documentation/SAST.md) |
85
+ | [How PWN Works](documentation/How-PWN-Works.md) | [CLI Drivers (52)](documentation/CLI-Drivers.md) | [Memory · Skills · Learning](documentation/Skills-Memory-Learning.md) | [AWS (90)](documentation/AWS.md) |
86
+ | [Installation](documentation/Installation.md) | [Build a Driver](documentation/Drivers.md) | [Mistakes (neg-feedback)](documentation/Mistakes.md) | [WWW (21)](documentation/WWW.md) |
87
+ | [General Usage](documentation/General-PWN-Usage.md) | | [Extrospection](documentation/Extrospection.md) | [SDR / Radio](documentation/SDR.md) |
88
+ | [Configuration](documentation/Configuration.md) | | [Swarm (multi-agent)](documentation/Swarm.md) | [Hardware](documentation/Hardware.md) |
89
+ | [Configuration](documentation/Configuration.md) | | [Sessions](documentation/Sessions.md) · [Cron](documentation/Cron.md) | [Reports](documentation/Reporting.md) |
90
+ | [`~/.pwn/` Persistence](documentation/Persistence.md) | | | [BurpSuite](documentation/BurpSuite.md) · [NmapIt](documentation/NmapIt.md) |
91
+ | **[All Diagrams](documentation/Diagrams.md)** | | | [Metasploit](documentation/Metasploit.md) · [Fuzzing](documentation/Fuzzing.md) |
92
+ | [Troubleshooting](documentation/Troubleshooting.md) | | | [Hardware](documentation/Hardware.md) · [Blockchain](documentation/Blockchain.md) |
93
+ | [Contributing](documentation/Contributing.md) | | | [Bounty](documentation/Bounty.md) · [FFI](documentation/FFI.md) · [Banner](documentation/Banner.md) |
75
94
 
76
- - [Home](documentation/Home.md)
77
- - [What is PWN](documentation/What-is-PWN.md)
78
- - [Installation](documentation/Installation.md)
79
- - [pwn-ai Agent](documentation/pwn-ai-Agent.md)
80
- - [Plugins](documentation/Plugins.md)
81
- - [AI Integration](documentation/AI-Integration.md)
82
- - [Troubleshooting](documentation/Troubleshooting.md)
83
- - ...and many more
95
+ Rebuild every SVG from its Graphviz source:
96
+ `cd documentation/diagrams && ./build.sh`
84
97
 
85
- Run `cat /opt/pwn/documentation/Home.md` or open in your editor for the complete local documentation.
98
+ ---
86
99
 
87
100
  ### **Installation** ###
88
101
 
89
- Tested on Debian-Based Linux Distros & OSX leveraging Ruby via RVM.
102
+ Tested on Debian-based Linux & macOS, Ruby via RVM.
90
103
 
91
104
  ```
92
105
  $ cd /opt
@@ -95,20 +108,23 @@ $ cd /opt/pwn
95
108
  $ ./install.sh
96
109
  $ ./install.sh ruby-gem
97
110
  $ pwn
98
- pwn[v0.5.617]:001 >>> PWN.help
111
+ pwn[v0.5.616]:001 >>> PWN.help
99
112
  ```
100
113
 
101
114
  [![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](https://youtu.be/G7iLUY4FzsI)
102
115
 
103
- See the dedicated [Installation Wiki](documentation/Installation.md) for more options.
116
+ Full page: [Installation](documentation/Installation.md) ·
117
+ [Configuration](documentation/Configuration.md)
104
118
 
105
- ### **General Usage** ###
119
+ ---
106
120
 
107
- [General Usage Quick-Start](https://github.com/0dayinc/pwn/wiki/General-PWN-Usage)
121
+ ### **General Usage** ###
108
122
 
109
- Detailed local guide: [General PWN Usage](documentation/General-PWN-Usage.md)
123
+ [General Usage Quick-Start](https://github.com/0dayinc/pwn/wiki/General-PWN-Usage) ·
124
+ local: [General PWN Usage](documentation/General-PWN-Usage.md)
110
125
 
111
- It is strongly recommended to update PWN frequently as new capabilities (plugins, AI agents, skills, zero-day tooling) are released regularly:
126
+ Update PWN frequently new plugins, agent tools, skills and zero-day tooling
127
+ land regularly:
112
128
 
113
129
  ```
114
130
  $ rvm list gemsets
@@ -116,70 +132,72 @@ $ rvm use ruby-4.0.5@pwn
116
132
  $ gem uninstall --all --executables pwn
117
133
  $ gem install --verbose pwn
118
134
  $ pwn
119
- pwn[v0.5.617]:001 >>> PWN.help
135
+ pwn[v0.5.616]:001 >>> PWN.help
120
136
  ```
121
137
 
122
- If using a multi-user install of RVM:
138
+ If using a multi-user RVM install:
123
139
 
124
140
  ```
125
- $ rvm list gemsets
126
141
  $ rvm use ruby-4.0.5@pwn
127
142
  $ rvmsudo gem uninstall --all --executables pwn
128
143
  $ rvmsudo gem install --verbose pwn
129
- $ pwn
130
- pwn[v0.5.617]:001 >>> PWN.help
131
144
  ```
132
145
 
133
- **Inside the pwn REPL (the heart of PWN):**
134
- - Full access to every PWN class and plugin.
135
- - `PWN.help` — list all top-level modules.
136
- - `pwn-ai` launch the autonomous AI agent (highly recommended for complex tasks). Once active you can issue natural language instructions that leverage PWN's full power.
137
- - Example flow:
138
- ```
139
- pwn[v0.5.617]:001 >>> pwn-ai
140
- [*] pwn-ai agent TUI activated...
141
- > Perform active scan of https://target.example.com using preferred tooling, then analyze findings with PWN modules and produce a report.
142
- ```
143
- - Other REPL helpers: `pwn-asm`, memory/session/cron management commands, etc.
144
- - Exit AI mode with `back`; use full Ruby/PWN expressions at any time.
145
-
146
- **Headless / CI-CD one-shot (`pwn --ai`):**
147
- Skip the TUI entirely and submit a single pwn-ai request from the shell — ideal for quick lookups, scripting, or CI/CD pipelines. The final answer is written to STDOUT (pipeable); live tool-call activity streams to STDERR.
146
+ **Inside the `pwn` REPL:**
147
+ - Full access to every `PWN::` module.
148
+ - `pwn-ai` — launch the autonomous agent TUI (SHIFT+ENTER newline, ENTER submit).
149
+ - `pwn-asm`, `pwn-ai-memory`, `pwn-ai-sessions`, `pwn-ai-cron`, `pwn-ai-delegate`.
150
+
151
+ **Headless / CI one-shot (`pwn --ai`):**
152
+
148
153
  ```
149
154
  $ pwn --ai 'What ports are listening on this host?'
150
155
  $ echo "$LONG_PROMPT" | pwn --ai -
151
156
  $ pwn -Y ./ci/pwn.yaml --ai 'Run pwn_sast against ./src and summarise HIGH findings' > findings.txt
152
157
  ```
153
158
 
154
- PWN periodically upgrades to the latest version of Ruby (reflected in `/opt/pwn/.ruby-version`). The easiest way to upgrade Ruby + pwn from a previous installation:
159
+ PWN periodically upgrades to the latest Ruby (`/opt/pwn/.ruby-version`).
160
+ Easiest upgrade of Ruby + pwn from a previous install:
155
161
 
156
162
  ```
157
163
  $ /opt/pwn/vagrant/provisioners/pwn.sh
158
164
  ```
159
165
 
160
- This updates Ruby, recreates the pwn gemset, etc. Note that older Ruby versions can only use pwn gems compatible with that Ruby.
166
+ ---
161
167
 
162
168
  ### **Call to Arms** ###
163
169
 
164
- Contributions that expand PWN's offensive capabilities are welcome. If you can provide access to additional commercial LLMs, security scanners, or bounty platforms (or wish to contribute plugins, AI skills, or exploit modules), please [email us](mailto:support@0dayinc.com). This accelerates interoperability and zero-day research tooling. See our [How to Contribute](https://github.com/0dayInc/pwn/blob/master/CONTRIBUTING.md) and the growing skills system for ways to extend the AI agent.
170
+ Contributions that expand PWN's offensive capabilities are welcome. If you can
171
+ provide access to additional commercial LLMs, security scanners, or bounty
172
+ platforms — or wish to contribute plugins, AI skills, or exploit modules —
173
+ please [email us](mailto:support@0dayinc.com). See
174
+ [CONTRIBUTING.md](https://github.com/0dayInc/pwn/blob/master/CONTRIBUTING.md)
175
+ and the local [Contributing](documentation/Contributing.md) page.
165
176
 
166
- See also the wiki page on [Contributing](documentation/Contributing.md).
177
+ ---
167
178
 
168
179
  ### **Module Documentation** ###
169
180
 
170
- **Primary Documentation:** Browse the embedded local wiki — start at [/opt/pwn/documentation/Home.md](documentation/Home.md).
181
+ **Primary:** [`documentation/Home.md`](documentation/Home.md) — the full local
182
+ wiki with 30+ pages and 26 SVG data-flow diagrams.
171
183
 
172
- Additional documentation on using PWN can be found on [RubyGems.org](https://www.rubydoc.info/gems/pwn). Explore the source under `lib/pwn/plugins/`, `lib/pwn/ai/`, and `PWN::` constants directly in the REPL.
184
+ **API reference:** [rubydoc.info/gems/pwn](https://www.rubydoc.info/gems/pwn),
185
+ or in-REPL: `PWN::Plugins::BurpSuite.help`, `show-source`, `ls`.
173
186
 
174
- Key wiki pages:
175
- - [Plugins](documentation/Plugins.md)
176
- - [Burp Suite](documentation/BurpSuite.md)
177
- - [pwn-ai Agent](documentation/pwn-ai-Agent.md)
178
- - [SAST](documentation/SAST.md)
179
- - [AI Integration](documentation/AI-Integration.md)
187
+ Highlights:
188
+ [Plugins](documentation/Plugins.md) ·
189
+ [BurpSuite](documentation/BurpSuite.md) ·
190
+ [Transparent-Browser](documentation/Transparent-Browser.md) ·
191
+ [pwn-ai Agent](documentation/pwn-ai-Agent.md) ·
192
+ [Swarm](documentation/Swarm.md) ·
193
+ [Extrospection](documentation/Extrospection.md) ·
194
+ [SAST](documentation/SAST.md) ·
195
+ [AI Integration](documentation/AI-Integration.md)
180
196
 
181
- I hope you enjoy PWN and remember... ensure you always have permission prior to carrying out any sort of security testing or hacktivities. Now — go pwn all the things (responsibly)!
197
+ I hope you enjoy PWN and remember: **always have permission** before any
198
+ security testing. Now go pwn all the things (responsibly)!
182
199
 
200
+ ---
183
201
 
184
202
  ### **Keep Us Caffeinated** ###
185
203
  If you've found this project useful and you're interested in supporting our efforts, we invite you to take a brief moment to keep us caffeinated:
data/bin/pwn_gqrx_scanner CHANGED
@@ -76,7 +76,7 @@ PWN::Driver::Parser.new do |options|
76
76
  opts[:fft_scan] = f
77
77
  end
78
78
 
79
- options.on('-SRATE', '--sample-rate=RATE', '<Optional --fft-scan - Visible span/sample_rate in Hz (default 1_000_000)>') do |s|
79
+ options.on('--sample-rate=RATE', '<Optional --fft-scan - Visible span/sample_rate in Hz (default 1_000_000). NOTE: no short flag; -S is --strength-lock>') do |s|
80
80
  opts[:sample_rate] = s
81
81
  end
82
82
 
@@ -84,11 +84,11 @@ PWN::Driver::Parser.new do |options|
84
84
  opts[:nfft] = n
85
85
  end
86
86
 
87
- options.on('-AINT', '--avg=INT', '<Optional --fft-scan - FFT averages (default 2)>') do |a|
87
+ options.on('--avg=INT', '<Optional --fft-scan - FFT averages (default 8). NOTE: no short flag; -A is --audio-gain>') do |a|
88
88
  opts[:avg] = a
89
89
  end
90
90
 
91
- options.on('-CSEC', '--capture-secs=SEC', '<Optional --fft-scan - Capture seconds per chunk (default 0.03)>') do |c|
91
+ options.on('-CSEC', '--capture-secs=SEC', '<Optional --fft-scan - Capture seconds per chunk (default 0.10)>') do |c|
92
92
  opts[:capture_secs] = c
93
93
  end
94
94
 
@@ -99,6 +99,14 @@ PWN::Driver::Parser.new do |options|
99
99
  options.on('-ODB', '--strength-offset-db=FLOAT', '<Optional - Power offset in dB (default 0.0)>') do |o|
100
100
  opts[:strength_offset_db] = o
101
101
  end
102
+
103
+ options.on('--min-snr-db=FLOAT', '<Optional --fft-scan - Minimum SNR (dB above per-chunk noise floor) to report a signal (default 12.0)>') do |m|
104
+ opts[:min_snr_db] = m
105
+ end
106
+
107
+ options.on('--min-bw-ratio=FLOAT', '<Optional --fft-scan - Reject FFT peaks narrower than RATIO * band-plan bandwidth as spurs (default 0.30)>') do |r|
108
+ opts[:min_bw_ratio] = r
109
+ end
102
110
  end.parse!
103
111
 
104
112
  begin
@@ -178,13 +186,17 @@ begin
178
186
  sample_rate = sample_rate.to_i
179
187
  nfft = opts[:nfft] || 2048
180
188
  nfft = nfft.to_i
181
- avgv = opts[:avg] || 2
189
+ avgv = opts[:avg] || 8
182
190
  avgv = avgv.to_i
183
- capture_secs = opts[:capture_secs] || 0.03
191
+ capture_secs = opts[:capture_secs] || 0.10
184
192
  capture_secs = capture_secs.to_f
185
193
  keep_spectrum = opts[:keep_spectrum] ? true : false
186
194
  strength_offset_db = opts[:strength_offset_db]
187
195
  strength_offset_db = strength_offset_db.to_f unless strength_offset_db.nil?
196
+ min_snr_db = opts[:min_snr_db]
197
+ min_snr_db = min_snr_db.to_f unless min_snr_db.nil?
198
+ min_bw_ratio = opts[:min_bw_ratio]
199
+ min_bw_ratio = min_bw_ratio.to_f unless min_bw_ratio.nil?
188
200
 
189
201
  if fft_scan
190
202
  puts '[*] --fft-scan requested: using fast FFT panoramic mode (#fast_scan_range)'
@@ -198,6 +210,14 @@ begin
198
210
  strength_lock: strength_lock,
199
211
  keep_spectrum: keep_spectrum,
200
212
  strength_offset_db: strength_offset_db,
213
+ min_snr_db: min_snr_db,
214
+ precision: precision,
215
+ min_bw_ratio: min_bw_ratio,
216
+ demodulator_mode: demodulator_mode,
217
+ bandwidth: bandwidth,
218
+ squelch: squelch,
219
+ decoder: decoder,
220
+ location: location,
201
221
  scan_log: scan_log
202
222
  )
203
223
  puts "FFT Scan complete: #{fast_resp[:total]} signals found."
@@ -1,36 +1,52 @@
1
- # AI & LLM Integration
1
+ # AI / LLM Integration — `PWN::AI`
2
2
 
3
- PWN integrates deeply with multiple LLMs for both interactive and autonomous operation.
3
+ One agent loop, five interchangeable engines. Swap providers by changing one
4
+ line in `~/.pwn/config.yml`; the tool-calling contract is normalised so the
5
+ agent code never cares which model is behind it.
4
6
 
5
- ## Supported Providers
7
+ ![Multi-provider integration](diagrams/ai-integration-tool-calling.svg)
6
8
 
7
- - OpenAI
8
- - Anthropic
9
- - Google Gemini
10
- - xAI Grok (full OAuth device flow support, public client)
11
- - Ollama (local)
12
- - Others via extensible client design
9
+ ## Supported engines
13
10
 
14
- ## Primary Entry Points
11
+ | Engine | Client | Auth | Notes |
12
+ |---|---|---|---|
13
+ | `openai` | `PWN::AI::OpenAI` | `key:` | function-calling native |
14
+ | `anthropic` | `PWN::AI::Anthropic` | `key:` | tool-use native |
15
+ | `grok` | `PWN::AI::Grok` | `key:` **or** `oauth: true` | OAuth = RFC-8628 device-code flow using xAI's public Grok-CLI client id (no secret) — see skill `xai_grok_oauth_device_flow` |
16
+ | `gemini` | `PWN::AI::Gemini` | `key:` | function-calling native |
17
+ | `ollama` | `PWN::AI::Ollama` | none | local, `base_url:` + `model:` |
15
18
 
16
- - `PWN::AI::*` (OpenAI, Anthropic, Grok, etc.)
17
- - `PWN::AI::Agent` — the autonomous tool-calling harness
18
- - `pwn-ai` command inside REPL launches the TUI
19
+ ## Selecting an engine
19
20
 
20
- ## Tool Calling
21
+ ```yaml
22
+ # ~/.pwn/config.yml
23
+ ai:
24
+ engine: grok
25
+ grok:
26
+ oauth: true # first run opens https://accounts.x.ai/… device page
27
+ ```
21
28
 
22
- The agent can call:
23
- - `pwn_eval` (full PWN namespace + Ruby)
24
- - `shell`
25
- - skills
26
- - memory (recall/remember)
27
- - learning & metrics
29
+ ```ruby
30
+ # at runtime
31
+ PWN::Env[:ai][:engine] = :ollama
32
+ ```
28
33
 
29
- OAuth for Grok is configured via `PWN::Config` and follows modern device-code flows (no client secrets).
34
+ ## Direct client use (no agent)
30
35
 
31
- See:
32
- - [pwn-ai Agent](pwn-ai-Agent.md)
33
- - [Skills, Memory & Learning](Skills-Memory-Learning.md)
34
- - `lib/pwn/ai/` in source
36
+ ```ruby
37
+ resp = PWN::AI::Anthropic.chat(
38
+ messages: [{ role: 'user', content: 'Explain CVE-2024-1234 in one line' }]
39
+ )
40
+ puts resp[:content]
41
+ ```
35
42
 
36
- [[Diagrams]]
43
+ ## Model diversity in Swarm
44
+
45
+ Because each persona in [`agents.yml`](Swarm.md) can override `engine:`, an
46
+ `agent_debate` can literally pit Claude against Grok against a local Llama —
47
+ real antagonism, not one model role-playing three voices.
48
+
49
+ **See also:** [pwn-ai Agent](pwn-ai-Agent.md) ·
50
+ [Agent Tool Registry](Agent-Tool-Registry.md) · [Swarm](Swarm.md)
51
+
52
+ [← Home](Home.md)
@@ -0,0 +1,57 @@
1
+ # `PWN::AWS` — Cloud Security (90 service wrappers)
2
+
3
+ One thin module per AWS service, each wrapping the official `aws-sdk-*` gem
4
+ with the PWN `opts = {}` convention so they compose in the REPL and in
5
+ `pwn_eval`.
6
+
7
+ ![AWS cloud security](diagrams/aws-cloud-security.svg)
8
+
9
+ ## Credentials
10
+
11
+ Standard AWS SDK chain: `~/.aws/credentials` profile, env vars
12
+ (`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` / `AWS_SESSION_TOKEN`), or
13
+ instance profile. Optionally pin in `~/.pwn/config.yml` under `aws:`.
14
+
15
+ ## Quick enumeration
16
+
17
+ ```ruby
18
+ PWN::AWS::STS.get_caller_identity
19
+ PWN::AWS::IAM.list_users
20
+ PWN::AWS::EC2.describe_instances(region: 'us-east-1')
21
+ PWN::AWS::S3.list_buckets
22
+ PWN::AWS::Lambda.list_functions
23
+ ```
24
+
25
+ CLI: `pwn_aws_describe_resources -r us-east-1 -o out/`
26
+
27
+ ## Service groups
28
+
29
+ | Group | Modules |
30
+ |---|---|
31
+ | Identity | `IAM` `STS` `CognitoIdentity` `CognitoIdentityProvider` `CognitoSync` `DirectoryService` |
32
+ | Compute | `EC2` `ECS` `ECR` `Lambda` `LambdaPreview` `Batch` `Lightsail` `ElasticBeanstalk` `AutoScaling` `ApplicationAutoScaling` `AppStream` |
33
+ | Storage | `S3` `Glacier` `EFS` `StorageGateway` `Snowball` |
34
+ | Data | `DynamoDB` `DynamoDBStreams` `RDS` `Redshift` `ElastiCache` `SimpleDB` `ElasticsearchService` |
35
+ | Network | `Route53` `Route53Domains` `ElasticLoadBalancing` `ElasticLoadBalancingV2` `APIGateway` `CloudFront` `DirectConnect` `WAF` `WAFRegional` `Shield` |
36
+ | Crypto | `KMS` `CloudHSM` `ACM` |
37
+ | Ops / Logs | `CloudTrail` `CloudWatch` `CloudWatchLogs` `CloudWatchEvents` `ConfigService` `SSM` `Health` `Inspector` `XRay` |
38
+ | Dev | `CodeBuild` `CodeCommit` `CodeDeploy` `CodePipeline` |
39
+ | Messaging | `SNS` `SQS` `SES` `Pinpoint` `Kinesis` `KinesisAnalytics` `Firehose` |
40
+ | ML / Media | `Rekognition` `Polly` `MachineLearning` `Lex` `ElasticTranscoder` |
41
+ | Infra | `CloudFormation` `CloudSearch` `CloudSearchDomain` `OpsWorks` `OpsWorksCM` `ServiceCatalog` `DataPipleline` `EMR` `SWF` `States` |
42
+ | IoT / Other | `IoT` `IoTDataPlane` `DeviceFarm` `GameLift` `Workspaces` `Support` `Budgets` `ImportExport` `SMS` `DatabaseMigrationService` `ApplicationDiscoveryService` `MarketplaceCommerceAnalytics` `MarketplaceMetering` |
43
+
44
+ ## Offensive patterns
45
+
46
+ - **Enumerate** → `IAM` policies, `EC2` userdata, `Lambda` env vars, `S3`
47
+ bucket ACLs, `SSM` parameters.
48
+ - **Misconfig** → public `S3`, wildcard `IAM` actions, unencrypted `RDS`,
49
+ missing `CloudTrail`.
50
+ - **Escalate** → `iam:PassRole` + `lambda:Invoke`, `ssm:SendCommand`,
51
+ `ec2:RunInstances` with instance profile.
52
+ - **Persist** → new access key, Lambda backdoor, EC2 userdata.
53
+
54
+ Record everything with `extro_observe(source: 'aws', …)` so
55
+ [Extrospection](Extrospection.md) can correlate later.
56
+
57
+ [← Home](Home.md)
@@ -0,0 +1,56 @@
1
+ # Agent Tool Registry
2
+
3
+ `PWN::AI::Agent::Registry` (`lib/pwn/ai/agent/registry.rb`) collects every
4
+ LLM-callable function into named **toolsets**. A persona is granted a subset of
5
+ toolsets; the JSON-Schema for each tool is what the model actually sees.
6
+
7
+ ![Tool registry](diagrams/agent-tool-registry.svg)
8
+
9
+ ## Toolsets → Tools (10 toolsets · 52 tools)
10
+
11
+ | Toolset | Tools | Backed by |
12
+ |---|---|---|
13
+ | `terminal` | `shell` | `Open3.capture3` on the host |
14
+ | `pwn` | `pwn_eval` | `TOPLEVEL_BINDING.eval` in the live REPL process |
15
+ | `memory` | `memory_remember` · `memory_recall` · `memory_forget` · `memory_clear` | `PWN::Memory` → `~/.pwn/memory.json` |
16
+ | `skills` | `skill_list` · `skill_view` · `skill_create` · `skill_add_reference` · `skill_delete` | `~/.pwn/skills/*.md` |
17
+ | `sessions` | `sessions_list` · `sessions_view` · `sessions_current` · `sessions_delete` · `sessions_stats` | `PWN::Sessions` → `~/.pwn/sessions/` |
18
+ | `learning` | `learning_note_outcome` · `learning_reflect` · `learning_distill_skill` · `learning_stats` · `learning_outcomes` · `learning_consolidate` · `learning_reset` · `learning_auto_reflect_toggle` · **`mistakes_list`** · **`mistakes_record`** · **`mistakes_resolve`** · **`mistakes_reset`** | `PWN::AI::Agent::Learning` + `PWN::AI::Agent::Mistakes` → `~/.pwn/learning.jsonl` + `~/.pwn/mistakes.json` |
19
+ | `metrics` | `metrics_summary` · `metrics_reset` | `PWN::AI::Agent::Metrics` → `~/.pwn/metrics.json` |
20
+ | `extrospection` | `extro_snapshot` · `extro_drift` · `extro_observe` · `extro_observations` · `extro_intel` · `extro_correlate` · `extro_stats` · `extro_reset` · `extro_auto_toggle` | `PWN::AI::Agent::Extrospection` → `~/.pwn/extrospection.json` |
21
+ | `cron` | `cron_list` · `cron_create` · `cron_run` · `cron_enable` · `cron_disable` · `cron_remove` | `PWN::Cron` → `~/.pwn/cron/jobs.yml` |
22
+ | `swarm` | `agent_list` · `agent_spawn` · `agent_ask` · `agent_debate` · `agent_broadcast` · `swarm_bus` · `swarm_list` | `PWN::AI::Agent::Swarm` → `~/.pwn/agents.yml` + `~/.pwn/swarm/` |
23
+
24
+ ## Adding a tool
25
+
26
+ ```ruby
27
+ # lib/pwn/ai/agent/tools/my_thing.rb
28
+ PWN::AI::Agent::Registry.register(
29
+ name: 'my_thing_do',
30
+ toolset: 'my_thing',
31
+ description: 'One-line summary the LLM will read.',
32
+ parameters: {
33
+ type: 'object',
34
+ properties: { target: { type: 'string' } },
35
+ required: ['target']
36
+ }
37
+ ) do |args|
38
+ PWN::Plugins::MyThing.do(target: args['target'])
39
+ end
40
+ ```
41
+
42
+ Drop the file in `lib/pwn/ai/agent/tools/`, it's auto-loaded on next launch.
43
+
44
+ ## Restricting a persona
45
+
46
+ ```yaml
47
+ # ~/.pwn/agents.yml
48
+ recon:
49
+ role: "Passive OSINT only. Never touch the target directly."
50
+ toolsets: [terminal, pwn, memory, extrospection] # no swarm, no cron
51
+ engine: ollama
52
+ ```
53
+
54
+ **See also:** [pwn-ai Agent](pwn-ai-Agent.md) · [Mistakes](Mistakes.md) · [Swarm](Swarm.md)
55
+
56
+ [← Home](Home.md)
@@ -0,0 +1,17 @@
1
+ # `PWN::Banner` — Startup Art
2
+
3
+ 15 ANSI banners; one is picked at random every time the REPL starts. Purely
4
+ cosmetic, entirely necessary.
5
+
6
+ `Anon · Bubble · Cheshire · CodeCave · DontPanic · ForkBomb · FSociety ·
7
+ JmpEsp · Matrix · Ninja · OffTheAir · Pirate · Radare2 · Radare2AI ·
8
+ WhiteRabbit`
9
+
10
+ ```ruby
11
+ puts PWN::Banner::Matrix.get
12
+ welcome-banner # REPL command: redraw a random one
13
+ ```
14
+
15
+ Add your own: drop a module in `lib/pwn/banner/` implementing `self.get`.
16
+
17
+ [← Home](Home.md)
@@ -0,0 +1,18 @@
1
+ # `PWN::Blockchain` — BTC · ETH
2
+
3
+ Lightweight helpers for on-chain recon and wallet interaction.
4
+ Source: `lib/pwn/blockchain/*.rb`.
5
+
6
+ | Module | Purpose |
7
+ |---|---|
8
+ | `PWN::Blockchain::BTC` | Address balance/UTXO lookup, tx broadcast, key helpers |
9
+ | `PWN::Blockchain::ETH` | Address balance, contract call, event log query |
10
+
11
+ Also exposed to the agent via `PWN::AI::Agent::BTC` for wallet-aware prompts.
12
+
13
+ ```ruby
14
+ PWN::Blockchain::BTC.balance(address: 'bc1q…')
15
+ PWN::Blockchain::ETH.call(contract: '0x…', method: 'owner()')
16
+ ```
17
+
18
+ [← Home](Home.md)
@@ -0,0 +1,21 @@
1
+ # `PWN::Bounty` — Bug-Bounty Lifecycle Tooling
2
+
3
+ | Module | Purpose |
4
+ |---|---|
5
+ | `PWN::Bounty::LifecycleAuthzReplay` | Record an authenticated browser session, then replay every request under a *different* principal to surface horizontal/vertical authz bugs |
6
+
7
+ Pairs naturally with:
8
+
9
+ - [`PWN::WWW::HackerOne`](WWW.md) / `BugCrowd` / `Synack` — programme navigation
10
+ - `PWN::Plugins::HackerOne` — submissions API
11
+ - [`PWN::Plugins::BurpSuite`](BurpSuite.md) — capture the session to replay
12
+
13
+ ```ruby
14
+ PWN::Bounty::LifecycleAuthzReplay.start(
15
+ har_path: 'admin_session.har',
16
+ replay_as: { cookie: 'session=LOW_PRIV_TOKEN' },
17
+ proxy: 'http://127.0.0.1:8080'
18
+ )
19
+ ```
20
+
21
+ [← Home](Home.md) · [WWW](WWW.md)