pwn 0.5.615 → 0.5.618

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +109 -85
  3. data/README.md.bak +200 -0
  4. data/bin/pwn +47 -2
  5. data/bin/pwn_gqrx_scanner +75 -18
  6. data/documentation/AI-Integration.md +42 -26
  7. data/documentation/AWS.md +57 -0
  8. data/documentation/Agent-Tool-Registry.md +56 -0
  9. data/documentation/Banner.md +17 -0
  10. data/documentation/Blockchain.md +18 -0
  11. data/documentation/Bounty.md +21 -0
  12. data/documentation/BurpSuite.md +41 -16
  13. data/documentation/CLI-Drivers.md +58 -0
  14. data/documentation/Configuration.md +66 -0
  15. data/documentation/Contributing.md +33 -19
  16. data/documentation/Cron.md +47 -0
  17. data/documentation/Diagrams.md +123 -40
  18. data/documentation/Drivers.md +43 -16
  19. data/documentation/Extrospection.md +54 -0
  20. data/documentation/FFI.md +14 -0
  21. data/documentation/Fuzzing.md +36 -0
  22. data/documentation/General-PWN-Usage.md +50 -30
  23. data/documentation/Hardware.md +40 -0
  24. data/documentation/Home.md +78 -51
  25. data/documentation/How-PWN-Works.md +59 -57
  26. data/documentation/Installation.md +53 -28
  27. data/documentation/Metasploit.md +34 -0
  28. data/documentation/NmapIt.md +18 -12
  29. data/documentation/PWN.png +0 -0
  30. data/documentation/PWN_Contributors_and_Users.png +0 -0
  31. data/documentation/Persistence.md +38 -0
  32. data/documentation/Plugins.md +97 -47
  33. data/documentation/Reporting.md +25 -18
  34. data/documentation/SAST.md +39 -22
  35. data/documentation/SDR.md +40 -0
  36. data/documentation/Sessions.md +39 -0
  37. data/documentation/Skills-Memory-Learning.md +49 -29
  38. data/documentation/Swarm.md +71 -0
  39. data/documentation/Transparent-Browser.md +26 -22
  40. data/documentation/Troubleshooting.md +44 -25
  41. data/documentation/WWW.md +32 -0
  42. data/documentation/What-is-PWN.md +51 -32
  43. data/documentation/Why-PWN.md +41 -11
  44. data/documentation/diagrams/agent-tool-registry.svg +284 -0
  45. data/documentation/diagrams/ai-integration-tool-calling.svg +141 -103
  46. data/documentation/diagrams/aws-cloud-security.svg +166 -0
  47. data/documentation/diagrams/build.sh +20 -0
  48. data/documentation/diagrams/burp-vs-zap-preference.svg +47 -62
  49. data/documentation/diagrams/code-scanning-sast.svg +139 -79
  50. data/documentation/diagrams/cron-scheduling.svg +148 -0
  51. data/documentation/diagrams/dot/_THEME.md +27 -0
  52. data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
  53. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +47 -20
  54. data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
  55. data/documentation/diagrams/dot/burp-vs-zap-preference.dot +23 -12
  56. data/documentation/diagrams/dot/code-scanning-sast.dot +46 -18
  57. data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
  58. data/documentation/diagrams/dot/driver-framework.dot +36 -14
  59. data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
  60. data/documentation/diagrams/dot/fuzzing-workflow.dot +44 -24
  61. data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
  62. data/documentation/diagrams/dot/history-to-drivers.dot +31 -17
  63. data/documentation/diagrams/dot/memory-skills-detailed.dot +57 -25
  64. data/documentation/diagrams/dot/network-infra-testing.dot +51 -19
  65. data/documentation/diagrams/dot/overall-pwn-architecture.dot +110 -44
  66. data/documentation/diagrams/dot/penetration-testing-workflow.dot +56 -25
  67. data/documentation/diagrams/dot/persistence-filesystem.dot +29 -0
  68. data/documentation/diagrams/dot/plugin-ecosystem.dot +41 -27
  69. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +87 -46
  70. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +49 -30
  71. data/documentation/diagrams/dot/reporting-pipeline.dot +43 -14
  72. data/documentation/diagrams/dot/reverse-engineering-flow.dot +40 -18
  73. data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
  74. data/documentation/diagrams/dot/sessions-cron-automation.dot +41 -14
  75. data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
  76. data/documentation/diagrams/dot/web-application-testing.dot +45 -23
  77. data/documentation/diagrams/dot/zero-day-research-flow.dot +46 -24
  78. data/documentation/diagrams/driver-framework.svg +87 -66
  79. data/documentation/diagrams/extrospection-world-awareness.svg +185 -0
  80. data/documentation/diagrams/fuzzing-workflow.svg +128 -115
  81. data/documentation/diagrams/hardware-hacking.svg +163 -0
  82. data/documentation/diagrams/history-to-drivers.svg +84 -82
  83. data/documentation/diagrams/memory-skills-detailed.svg +167 -119
  84. data/documentation/diagrams/network-infra-testing.svg +146 -84
  85. data/documentation/diagrams/overall-pwn-architecture.svg +356 -185
  86. data/documentation/diagrams/penetration-testing-workflow.svg +161 -108
  87. data/documentation/diagrams/persistence-filesystem.svg +174 -0
  88. data/documentation/diagrams/plugin-ecosystem.svg +225 -121
  89. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +257 -185
  90. data/documentation/diagrams/pwn-repl-prototyping.svg +126 -137
  91. data/documentation/diagrams/reporting-pipeline.svg +128 -68
  92. data/documentation/diagrams/reverse-engineering-flow.svg +100 -80
  93. data/documentation/diagrams/sdr-radio-flow.svg +146 -0
  94. data/documentation/diagrams/sessions-cron-automation.svg +112 -68
  95. data/documentation/diagrams/swarm-multi-agent.svg +225 -0
  96. data/documentation/diagrams/web-application-testing.svg +136 -100
  97. data/documentation/diagrams/zero-day-research-flow.svg +116 -112
  98. data/documentation/fax-spectrogram.png +0 -0
  99. data/documentation/fax-waveform.png +0 -0
  100. data/documentation/pwn-REPL.md +40 -24
  101. data/documentation/pwn-ai-Agent.md +59 -30
  102. data/documentation/pwn_android_war_dialer_session.png +0 -0
  103. data/documentation/pwn_install.png +0 -0
  104. data/documentation/pwn_wallpaper.jpg +0 -0
  105. data/documentation/ringing-spectrogram.png +0 -0
  106. data/documentation/ringing-waveform.png +0 -0
  107. data/git_commit.sh +1 -1
  108. data/lib/pwn/ai/agent/assembly.rb +1 -1
  109. data/lib/pwn/ai/agent/btc.rb +1 -1
  110. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  111. data/lib/pwn/ai/agent/extrospection.rb +618 -0
  112. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  113. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  114. data/lib/pwn/ai/agent/introspection.rb +91 -0
  115. data/lib/pwn/ai/agent/learning.rb +6 -4
  116. data/lib/pwn/ai/agent/loop.rb +15 -0
  117. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  118. data/lib/pwn/ai/agent/sast.rb +1 -1
  119. data/lib/pwn/ai/agent/swarm.rb +437 -0
  120. data/lib/pwn/ai/agent/tools/cron.rb +163 -0
  121. data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
  122. data/lib/pwn/ai/agent/tools/learning.rb +108 -0
  123. data/lib/pwn/ai/agent/tools/memory.rb +27 -0
  124. data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
  125. data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
  126. data/lib/pwn/ai/agent/tools/skills.rb +30 -0
  127. data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
  128. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  129. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  130. data/lib/pwn/ai/agent.rb +3 -0
  131. data/lib/pwn/ai/anthropic.rb +19 -4
  132. data/lib/pwn/ai.rb +0 -1
  133. data/lib/pwn/config.rb +10 -23
  134. data/lib/pwn/cron.rb +16 -7
  135. data/lib/pwn/plugins/repl.rb +90 -281
  136. data/lib/pwn/sdr/decoder/base.rb +251 -0
  137. data/lib/pwn/sdr/decoder/gsm.rb +84 -185
  138. data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
  139. data/lib/pwn/sdr/decoder.rb +1 -0
  140. data/lib/pwn/sdr/gqrx.rb +446 -65
  141. data/lib/pwn/version.rb +1 -1
  142. data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
  143. data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
  144. data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
  145. data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
  146. data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
  147. data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
  148. data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
  149. data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
  150. data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
  151. data/third_party/pwn_rdoc.jsonl +199 -37
  152. metadata +65 -3
  153. data/lib/pwn/ai/introspection.rb +0 -76
@@ -0,0 +1,225 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN_Swarm Pages: 1 -->
7
+ <svg width="933pt" height="582pt"
8
+ viewBox="0.00 0.00 933.00 582.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 538.58)">
10
+ <title>PWN_Swarm</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-538.58 889.54,-538.58 889.54,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="138.54" y="-473.38" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Swarm — Native Multi&#45;Agent Orchestration</text>
13
+ <text xml:space="preserve" text-anchor="start" x="275.79" y="-461.93" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">personas · ask · debate · broadcast · shared bus (no daemon)</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_verbs</title>
16
+ <path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M36,-292.12C36,-292.12 574,-292.12 574,-292.12 580,-292.12 586,-298.12 586,-304.12 586,-304.12 586,-363.38 586,-363.38 586,-369.38 580,-375.38 574,-375.38 574,-375.38 36,-375.38 36,-375.38 30,-375.38 24,-369.38 24,-363.38 24,-363.38 24,-304.12 24,-304.12 24,-298.12 30,-292.12 36,-292.12"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="305" y="-352.38" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Swarm Verbs &#160;(toolset: swarm)</text>
18
+ </g>
19
+ <g id="clust3" class="cluster">
20
+ <title>cluster_personas</title>
21
+ <path fill="#022c22" stroke="#047857" stroke-width="2" d="M20,-149.88C20,-149.88 623,-149.88 623,-149.88 629,-149.88 635,-155.88 635,-161.88 635,-161.88 635,-233.62 635,-233.62 635,-239.62 629,-245.62 623,-245.62 623,-245.62 20,-245.62 20,-245.62 14,-245.62 8,-239.62 8,-233.62 8,-233.62 8,-161.88 8,-161.88 8,-155.88 14,-149.88 20,-149.88"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="321.5" y="-222.62" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Personas &#160;(each = full PWN::AI::Agent::Loop)</text>
23
+ </g>
24
+ <g id="clust5" class="cluster">
25
+ <title>cluster_state</title>
26
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M33,-8C33,-8 642,-8 642,-8 648,-8 654,-14 654,-20 654,-20 654,-91.38 654,-91.38 654,-97.38 648,-103.38 642,-103.38 642,-103.38 33,-103.38 33,-103.38 27,-103.38 21,-97.38 21,-91.38 21,-91.38 21,-20 21,-20 21,-14 27,-8 33,-8"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="337.5" y="-80.38" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Shared State &#160;~/.pwn/</text>
28
+ </g>
29
+ <!-- Orchestrator -->
30
+ <g id="node1" class="node">
31
+ <title>Orchestrator</title>
32
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M308.75,-456.38C308.75,-456.38 237.25,-456.38 237.25,-456.38 231.25,-456.38 225.25,-450.38 225.25,-444.38 225.25,-444.38 225.25,-432.38 225.25,-432.38 225.25,-426.38 231.25,-420.38 237.25,-420.38 237.25,-420.38 308.75,-420.38 308.75,-420.38 314.75,-420.38 320.75,-426.38 320.75,-432.38 320.75,-432.38 320.75,-444.38 320.75,-444.38 320.75,-450.38 314.75,-456.38 308.75,-456.38"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="273" y="-441.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">👤 &#160;Orchestrator</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="273" y="-427.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(you, in pwn&#45;ai)</text>
35
+ </g>
36
+ <!-- Spawn -->
37
+ <g id="node2" class="node">
38
+ <title>Spawn</title>
39
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M107.62,-336.12C107.62,-336.12 44.38,-336.12 44.38,-336.12 38.38,-336.12 32.38,-330.12 32.38,-324.12 32.38,-324.12 32.38,-312.12 32.38,-312.12 32.38,-306.12 38.38,-300.12 44.38,-300.12 44.38,-300.12 107.62,-300.12 107.62,-300.12 113.62,-300.12 119.62,-306.12 119.62,-312.12 119.62,-312.12 119.62,-324.12 119.62,-324.12 119.62,-330.12 113.62,-336.12 107.62,-336.12"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_spawn</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">define persona</text>
42
+ </g>
43
+ <!-- Orchestrator&#45;&gt;Spawn -->
44
+ <g id="edge1" class="edge">
45
+ <title>Orchestrator&#45;&gt;Spawn</title>
46
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M229.09,-419.75C203.18,-408.56 170.23,-392.9 143,-375.38 128.4,-365.98 113.49,-353.77 101.45,-343.12"/>
47
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="103.63,-341.32 95.81,-338.05 99.88,-345.48 103.63,-341.32"/>
48
+ </g>
49
+ <!-- Ask -->
50
+ <g id="node3" class="node">
51
+ <title>Ask</title>
52
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M263.5,-336.12C263.5,-336.12 178.5,-336.12 178.5,-336.12 172.5,-336.12 166.5,-330.12 166.5,-324.12 166.5,-324.12 166.5,-312.12 166.5,-312.12 166.5,-306.12 172.5,-300.12 178.5,-300.12 178.5,-300.12 263.5,-300.12 263.5,-300.12 269.5,-300.12 275.5,-306.12 275.5,-312.12 275.5,-312.12 275.5,-324.12 275.5,-324.12 275.5,-330.12 269.5,-336.12 263.5,-336.12"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="221" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_ask</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="221" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">1 turn → 1 persona</text>
55
+ </g>
56
+ <!-- Orchestrator&#45;&gt;Ask -->
57
+ <g id="edge2" class="edge">
58
+ <title>Orchestrator&#45;&gt;Ask</title>
59
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M265.33,-419.93C256.72,-400.36 242.68,-368.42 232.7,-345.74"/>
60
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="235.28,-344.64 229.5,-338.45 230.15,-346.9 235.28,-344.64"/>
61
+ </g>
62
+ <!-- Debate -->
63
+ <g id="node4" class="node">
64
+ <title>Debate</title>
65
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M419.5,-336.12C419.5,-336.12 334.5,-336.12 334.5,-336.12 328.5,-336.12 322.5,-330.12 322.5,-324.12 322.5,-324.12 322.5,-312.12 322.5,-312.12 322.5,-306.12 328.5,-300.12 334.5,-300.12 334.5,-300.12 419.5,-300.12 419.5,-300.12 425.5,-300.12 431.5,-306.12 431.5,-312.12 431.5,-312.12 431.5,-324.12 431.5,-324.12 431.5,-330.12 425.5,-336.12 419.5,-336.12"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="377" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_debate</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="377" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">round&#45;robin critique</text>
68
+ </g>
69
+ <!-- Orchestrator&#45;&gt;Debate -->
70
+ <g id="edge3" class="edge">
71
+ <title>Orchestrator&#45;&gt;Debate</title>
72
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M288.35,-419.93C305.78,-400.1 334.4,-367.56 354.39,-344.83"/>
73
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="356.41,-346.77 359.59,-338.92 352.21,-343.08 356.41,-346.77"/>
74
+ </g>
75
+ <!-- Broadcast -->
76
+ <g id="node5" class="node">
77
+ <title>Broadcast</title>
78
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M565.62,-336.12C565.62,-336.12 490.38,-336.12 490.38,-336.12 484.38,-336.12 478.38,-330.12 478.38,-324.12 478.38,-324.12 478.38,-312.12 478.38,-312.12 478.38,-306.12 484.38,-300.12 490.38,-300.12 490.38,-300.12 565.62,-300.12 565.62,-300.12 571.62,-300.12 577.62,-306.12 577.62,-312.12 577.62,-312.12 577.62,-324.12 577.62,-324.12 577.62,-330.12 571.62,-336.12 565.62,-336.12"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="528" y="-321.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agent_broadcast</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="528" y="-307.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">fan&#45;out ensemble</text>
81
+ </g>
82
+ <!-- Orchestrator&#45;&gt;Broadcast -->
83
+ <g id="edge4" class="edge">
84
+ <title>Orchestrator&#45;&gt;Broadcast</title>
85
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M321.14,-425.63C358.9,-415.34 412.06,-398.42 455,-375.38 471.5,-366.52 488.17,-354.01 501.41,-343.03"/>
86
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="502.98,-345.36 507.27,-338.06 499.36,-341.09 502.98,-345.36"/>
87
+ </g>
88
+ <!-- Red -->
89
+ <g id="node6" class="node">
90
+ <title>Red</title>
91
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M124.12,-206.38C124.12,-206.38 27.88,-206.38 27.88,-206.38 21.88,-206.38 15.88,-200.38 15.88,-194.38 15.88,-194.38 15.88,-169.88 15.88,-169.88 15.88,-163.88 21.88,-157.88 27.88,-157.88 27.88,-157.88 124.12,-157.88 124.12,-157.88 130.12,-157.88 136.12,-163.88 136.12,-169.88 136.12,-169.88 136.12,-194.38 136.12,-194.38 136.12,-200.38 130.12,-206.38 124.12,-206.38"/>
92
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🔴 &#160;red_team</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: grok</text>
94
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: terminal,pwn</text>
95
+ </g>
96
+ <!-- Spawn&#45;&gt;Red -->
97
+ <!-- Agents -->
98
+ <g id="node10" class="node">
99
+ <title>Agents</title>
100
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M122.62,-59.75C122.62,-62.16 101.73,-64.12 76,-64.12 50.27,-64.12 29.38,-62.16 29.38,-59.75 29.38,-59.75 29.38,-20.38 29.38,-20.38 29.38,-17.96 50.27,-16 76,-16 101.73,-16 122.62,-17.96 122.62,-20.38 122.62,-20.38 122.62,-59.75 122.62,-59.75"/>
101
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M122.62,-59.75C122.62,-57.34 101.73,-55.38 76,-55.38 50.27,-55.38 29.38,-57.34 29.38,-59.75"/>
102
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">agents.yml</text>
103
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">persona registry</text>
104
+ </g>
105
+ <!-- Spawn&#45;&gt;Agents -->
106
+ <g id="edge15" class="edge">
107
+ <title>Spawn&#45;&gt;Agents</title>
108
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M118.01,-299.52C126.18,-296.65 134.77,-294.01 143,-292.12 252.43,-267.12 570.37,-328.57 646,-245.62 674.67,-214.18 674.66,-181.33 646,-149.88 627.25,-129.29 172.57,-114.39 147,-103.38 130.38,-96.22 114.9,-83.65 102.66,-71.67"/>
109
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="104.82,-69.88 97.22,-66.14 100.83,-73.81 104.82,-69.88"/>
110
+ <text xml:space="preserve" text-anchor="middle" x="677.25" y="-178.82" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">write</text>
111
+ </g>
112
+ <!-- Ask&#45;&gt;Red -->
113
+ <g id="edge6" class="edge">
114
+ <title>Ask&#45;&gt;Red</title>
115
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M202.04,-299.61C178.41,-277.76 137.62,-240.07 108.85,-213.48"/>
116
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="111.03,-211.69 103.26,-208.32 107.23,-215.8 111.03,-211.69"/>
117
+ </g>
118
+ <!-- Blue -->
119
+ <g id="node7" class="node">
120
+ <title>Blue</title>
121
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M277,-206.38C277,-206.38 195,-206.38 195,-206.38 189,-206.38 183,-200.38 183,-194.38 183,-194.38 183,-169.88 183,-169.88 183,-163.88 189,-157.88 195,-157.88 195,-157.88 277,-157.88 277,-157.88 283,-157.88 289,-163.88 289,-169.88 289,-169.88 289,-194.38 289,-194.38 289,-200.38 283,-206.38 277,-206.38"/>
122
+ <text xml:space="preserve" text-anchor="middle" x="236" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🔵 &#160;blue_team</text>
123
+ <text xml:space="preserve" text-anchor="middle" x="236" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: anthropic</text>
124
+ <text xml:space="preserve" text-anchor="middle" x="236" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: pwn,extro</text>
125
+ </g>
126
+ <!-- Debate&#45;&gt;Blue -->
127
+ <g id="edge7" class="edge">
128
+ <title>Debate&#45;&gt;Blue</title>
129
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M358.57,-299.61C335.68,-277.86 296.25,-240.39 268.3,-213.82"/>
130
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="270.26,-211.82 262.53,-208.34 266.4,-215.88 270.26,-211.82"/>
131
+ </g>
132
+ <!-- Recon -->
133
+ <g id="node8" class="node">
134
+ <title>Recon</title>
135
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M463.5,-206.38C463.5,-206.38 348.5,-206.38 348.5,-206.38 342.5,-206.38 336.5,-200.38 336.5,-194.38 336.5,-194.38 336.5,-169.88 336.5,-169.88 336.5,-163.88 342.5,-157.88 348.5,-157.88 348.5,-157.88 463.5,-157.88 463.5,-157.88 469.5,-157.88 475.5,-163.88 475.5,-169.88 475.5,-169.88 475.5,-194.38 475.5,-194.38 475.5,-200.38 469.5,-206.38 463.5,-206.38"/>
136
+ <text xml:space="preserve" text-anchor="middle" x="406" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">🛰 &#160;recon</text>
137
+ <text xml:space="preserve" text-anchor="middle" x="406" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: ollama</text>
138
+ <text xml:space="preserve" text-anchor="middle" x="406" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: terminal,memory</text>
139
+ </g>
140
+ <!-- Debate&#45;&gt;Recon -->
141
+ <g id="edge8" class="edge">
142
+ <title>Debate&#45;&gt;Recon</title>
143
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M380.79,-299.61C385.34,-278.6 393.06,-242.92 398.76,-216.57"/>
144
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="401.47,-217.31 400.42,-208.9 395.99,-216.13 401.47,-217.31"/>
145
+ </g>
146
+ <!-- Xpl -->
147
+ <g id="node9" class="node">
148
+ <title>Xpl</title>
149
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M615.25,-206.38C615.25,-206.38 534.75,-206.38 534.75,-206.38 528.75,-206.38 522.75,-200.38 522.75,-194.38 522.75,-194.38 522.75,-169.88 522.75,-169.88 522.75,-163.88 528.75,-157.88 534.75,-157.88 534.75,-157.88 615.25,-157.88 615.25,-157.88 621.25,-157.88 627.25,-163.88 627.25,-169.88 627.25,-169.88 627.25,-194.38 627.25,-194.38 627.25,-200.38 621.25,-206.38 615.25,-206.38"/>
150
+ <text xml:space="preserve" text-anchor="middle" x="575" y="-191.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">💥 &#160;exploit_dev</text>
151
+ <text xml:space="preserve" text-anchor="middle" x="575" y="-178.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">engine: openai</text>
152
+ <text xml:space="preserve" text-anchor="middle" x="575" y="-164.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolsets: pwn,skills</text>
153
+ </g>
154
+ <!-- Broadcast&#45;&gt;Xpl -->
155
+ <g id="edge9" class="edge">
156
+ <title>Broadcast&#45;&gt;Xpl</title>
157
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M534.14,-299.61C541.55,-278.5 554.14,-242.6 563.39,-216.22"/>
158
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="565.98,-217.31 565.98,-208.84 560.69,-215.46 565.98,-217.31"/>
159
+ </g>
160
+ <!-- Red&#45;&gt;Agents -->
161
+ <!-- Bus -->
162
+ <g id="node11" class="node">
163
+ <title>Bus</title>
164
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M288,-59.75C288,-62.16 261.56,-64.12 229,-64.12 196.44,-64.12 170,-62.16 170,-59.75 170,-59.75 170,-20.38 170,-20.38 170,-17.96 196.44,-16 229,-16 261.56,-16 288,-17.96 288,-20.38 288,-20.38 288,-59.75 288,-59.75"/>
165
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M288,-59.75C288,-57.34 261.56,-55.38 229,-55.38 196.44,-55.38 170,-57.34 170,-59.75"/>
166
+ <text xml:space="preserve" text-anchor="middle" x="229" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">swarm/&lt;id&gt;/bus.jsonl</text>
167
+ <text xml:space="preserve" text-anchor="middle" x="229" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">append&#45;only chat</text>
168
+ </g>
169
+ <!-- Red&#45;&gt;Bus -->
170
+ <g id="edge11" class="edge">
171
+ <title>Red&#45;&gt;Bus</title>
172
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M101.95,-157.37C127.86,-133.65 167.76,-97.12 195.92,-71.34"/>
173
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="197.71,-73.5 201.72,-66.03 193.93,-69.37 197.71,-73.5"/>
174
+ <text xml:space="preserve" text-anchor="middle" x="174.91" y="-113.33" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">append reply</text>
175
+ </g>
176
+ <!-- Blue&#45;&gt;Bus -->
177
+ <g id="edge12" class="edge">
178
+ <title>Blue&#45;&gt;Bus</title>
179
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M234.81,-157.37C233.67,-134.49 231.93,-99.69 230.65,-74.12"/>
180
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="233.46,-74.29 230.27,-66.44 227.87,-74.57 233.46,-74.29"/>
181
+ </g>
182
+ <!-- Pmap -->
183
+ <g id="node12" class="node">
184
+ <title>Pmap</title>
185
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M477.38,-59.75C477.38,-62.16 445.38,-64.12 406,-64.12 366.62,-64.12 334.62,-62.16 334.62,-59.75 334.62,-59.75 334.62,-20.38 334.62,-20.38 334.62,-17.96 366.62,-16 406,-16 445.38,-16 477.38,-17.96 477.38,-20.38 477.38,-20.38 477.38,-59.75 477.38,-59.75"/>
186
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M477.38,-59.75C477.38,-57.34 445.38,-55.38 406,-55.38 366.62,-55.38 334.62,-57.34 334.62,-59.75"/>
187
+ <text xml:space="preserve" text-anchor="middle" x="406" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">swarm/&lt;id&gt;/personas.json</text>
188
+ <text xml:space="preserve" text-anchor="middle" x="406" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">name → session_id</text>
189
+ </g>
190
+ <!-- Recon&#45;&gt;Pmap -->
191
+ <g id="edge13" class="edge">
192
+ <title>Recon&#45;&gt;Pmap</title>
193
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M406,-157.37C406,-134.49 406,-99.69 406,-74.12"/>
194
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="408.8,-74.44 406,-66.44 403.2,-74.44 408.8,-74.44"/>
195
+ </g>
196
+ <!-- Sess -->
197
+ <g id="node13" class="node">
198
+ <title>Sess</title>
199
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M645.88,-59.75C645.88,-62.16 618.59,-64.12 585,-64.12 551.41,-64.12 524.12,-62.16 524.12,-59.75 524.12,-59.75 524.12,-20.38 524.12,-20.38 524.12,-17.96 551.41,-16 585,-16 618.59,-16 645.88,-17.96 645.88,-20.38 645.88,-20.38 645.88,-59.75 645.88,-59.75"/>
200
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M645.88,-59.75C645.88,-57.34 618.59,-55.38 585,-55.38 551.41,-55.38 524.12,-57.34 524.12,-59.75"/>
201
+ <text xml:space="preserve" text-anchor="middle" x="585" y="-43.11" font-family="sans-Serif" font-size="11.00" fill="#0f172a">sessions/*.jsonl</text>
202
+ <text xml:space="preserve" text-anchor="middle" x="585" y="-29.61" font-family="sans-Serif" font-size="11.00" fill="#0f172a">per&#45;persona transcript</text>
203
+ </g>
204
+ <!-- Xpl&#45;&gt;Sess -->
205
+ <g id="edge14" class="edge">
206
+ <title>Xpl&#45;&gt;Sess</title>
207
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M576.7,-157.37C578.33,-134.49 580.81,-99.69 582.64,-74.12"/>
208
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="585.41,-74.61 583.19,-66.43 579.83,-74.21 585.41,-74.61"/>
209
+ </g>
210
+ <!-- Bus&#45;&gt;Orchestrator -->
211
+ <g id="edge17" class="edge">
212
+ <title>Bus&#45;&gt;Orchestrator</title>
213
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M251.75,-64.53C267.03,-78.61 288.44,-95.3 311,-103.38 333.3,-111.36 500.42,-109.2 524,-111.38 582.38,-116.76 746.69,-105.5 785,-149.88 870.27,-248.64 717.36,-324.97 597,-375.38 508.69,-412.36 397.56,-427.48 331.06,-433.52"/>
214
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="330.87,-430.72 323.15,-434.21 331.36,-436.3 330.87,-430.72"/>
215
+ <text xml:space="preserve" text-anchor="middle" x="819.71" y="-255.57" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">swarm_bus()</text>
216
+ </g>
217
+ <!-- Bus&#45;&gt;Debate -->
218
+ <g id="edge16" class="edge">
219
+ <title>Bus&#45;&gt;Debate</title>
220
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M252.68,-64.52C268.01,-78.23 289.12,-94.52 311,-103.38 391.29,-135.88 640.52,-85.08 698,-149.88 726.24,-181.71 725.12,-212.83 698,-245.62 627.93,-330.37 561.55,-264.96 455,-292.12 449.62,-293.5 444.06,-295.03 438.5,-296.65"/>
221
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="437.94,-293.9 431.08,-298.87 439.55,-299.26 437.94,-293.9"/>
222
+ <text xml:space="preserve" text-anchor="middle" x="746.13" y="-178.82" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">tail → context</text>
223
+ </g>
224
+ </g>
225
+ </svg>
@@ -3,135 +3,171 @@
3
3
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
- <!-- Title: Web Application Testing with PWN Pages: 1 -->
7
- <svg width="239pt" height="669pt"
8
- viewBox="0.00 0.00 239.00 669.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
- <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 664.86)">
10
- <title>Web Application Testing with PWN</title>
11
- <polygon fill="white" stroke="none" points="-4,4 -4,-664.86 235.38,-664.86 235.38,4 -4,4"/>
12
- <!-- App -->
6
+ <!-- Title: PWN_Web Pages: 1 -->
7
+ <svg width="1092pt" height="360pt"
8
+ viewBox="0.00 0.00 1092.00 360.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 317.2)">
10
+ <title>PWN_Web</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-317.2 1048.7,-317.2 1048.7,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="388.38" y="-252" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Web Application Testing</text>
13
+ <text xml:space="preserve" text-anchor="start" x="342.25" y="-240.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">TransparentBrowser → BurpSuite (preferred) → SAST → Reports</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_drive</title>
16
+ <path fill="#022c22" stroke="#047857" d="M164.75,-8C164.75,-8 287.5,-8 287.5,-8 293.5,-8 299.5,-14 299.5,-20 299.5,-20 299.5,-215 299.5,-215 299.5,-221 293.5,-227 287.5,-227 287.5,-227 164.75,-227 164.75,-227 158.75,-227 152.75,-221 152.75,-215 152.75,-215 152.75,-20 152.75,-20 152.75,-14 158.75,-8 164.75,-8"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-204" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Drive Traffic</text>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_proxy</title>
21
+ <path fill="#422006" stroke="#a16207" d="M467.75,-8C467.75,-8 605.25,-8 605.25,-8 611.25,-8 617.25,-14 617.25,-20 617.25,-20 617.25,-147 617.25,-147 617.25,-153 611.25,-159 605.25,-159 605.25,-159 467.75,-159 467.75,-159 461.75,-159 455.75,-153 455.75,-147 455.75,-147 455.75,-20 455.75,-20 455.75,-14 461.75,-8 467.75,-8"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="536.5" y="-136" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Intercept + Scan</text>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_deep</title>
26
+ <path fill="#2e1065" stroke="#6d28d9" d="M700.25,-8C700.25,-8 819,-8 819,-8 825,-8 831,-14 831,-20 831,-20 831,-215 831,-215 831,-221 825,-227 819,-227 819,-227 700.25,-227 700.25,-227 694.25,-227 688.25,-221 688.25,-215 688.25,-215 688.25,-20 688.25,-20 688.25,-14 694.25,-8 700.25,-8"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="759.62" y="-204" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Deep Analysis</text>
28
+ </g>
29
+ <!-- Target -->
13
30
  <g id="node1" class="node">
14
- <title>App</title>
15
- <path fill="none" stroke="black" d="M158.88,-660.86C158.88,-660.86 100.88,-660.86 100.88,-660.86 94.88,-660.86 88.88,-654.86 88.88,-648.86 88.88,-648.86 88.88,-636.86 88.88,-636.86 88.88,-630.86 94.88,-624.86 100.88,-624.86 100.88,-624.86 158.88,-624.86 158.88,-624.86 164.88,-624.86 170.88,-630.86 170.88,-636.86 170.88,-636.86 170.88,-648.86 170.88,-648.86 170.88,-654.86 164.88,-660.86 158.88,-660.86"/>
16
- <text xml:space="preserve" text-anchor="middle" x="129.88" y="-644.81" font-family="Arial" font-size="9.00">Web App</text>
17
- <text xml:space="preserve" text-anchor="middle" x="129.88" y="-634.31" font-family="Arial" font-size="9.00">(URL, API, SPA)</text>
31
+ <title>Target</title>
32
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M61.75,-120C61.75,-120 12,-120 12,-120 6,-120 0,-114 0,-108 0,-108 0,-96 0,-96 0,-90 6,-84 12,-84 12,-84 61.75,-84 61.75,-84 67.75,-84 73.75,-90 73.75,-96 73.75,-96 73.75,-108 73.75,-108 73.75,-114 67.75,-120 61.75,-120"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="36.88" y="-104.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">🌐 &#160;Web App</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="36.88" y="-92.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">URL / API</text>
18
35
  </g>
19
- <!-- Proxy -->
36
+ <!-- TB -->
20
37
  <g id="node2" class="node">
21
- <title>Proxy</title>
22
- <ellipse fill="none" stroke="black" cx="129.88" cy="-559.93" rx="76.01" ry="27.93"/>
23
- <text xml:space="preserve" text-anchor="middle" x="129.88" y="-567.13" font-family="Arial" font-size="9.00">Proxy Interception</text>
24
- <text xml:space="preserve" text-anchor="middle" x="129.88" y="-556.63" font-family="Arial" font-size="9.00">(BurpSuite (preferred),</text>
25
- <text xml:space="preserve" text-anchor="middle" x="129.88" y="-546.13" font-family="Arial" font-size="9.00">Zaproxy)</text>
38
+ <title>TB</title>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M279.5,-188C279.5,-188 172.75,-188 172.75,-188 166.75,-188 160.75,-182 160.75,-176 160.75,-176 160.75,-164 160.75,-164 160.75,-158 166.75,-152 172.75,-152 172.75,-152 279.5,-152 279.5,-152 285.5,-152 291.5,-158 291.5,-164 291.5,-164 291.5,-176 291.5,-176 291.5,-182 285.5,-188 279.5,-188"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-172.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TransparentBrowser</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">headless · watir · devtools</text>
26
42
  </g>
27
- <!-- App&#45;&gt;Proxy -->
43
+ <!-- Target&#45;&gt;TB -->
28
44
  <g id="edge1" class="edge">
29
- <title>App&#45;&gt;Proxy</title>
30
- <path fill="none" stroke="black" d="M129.88,-624.7C129.88,-617.34 129.88,-608.43 129.88,-599.63"/>
31
- <polygon fill="black" stroke="black" points="133.38,-599.77 129.88,-589.77 126.38,-599.77 133.38,-599.77"/>
45
+ <title>Target&#45;&gt;TB</title>
46
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-115.11C99.69,-124.45 134.86,-137.22 164.8,-148.09"/>
47
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="163.59,-150.63 172.06,-150.73 165.5,-145.37 163.59,-150.63"/>
32
48
  </g>
33
49
  <!-- Spider -->
34
50
  <g id="node3" class="node">
35
51
  <title>Spider</title>
36
- <path fill="none" stroke="black" d="M129.12,-495C129.12,-495 48.62,-495 48.62,-495 42.62,-495 36.62,-489 36.62,-483 36.62,-483 36.62,-467.5 36.62,-467.5 36.62,-461.5 42.62,-455.5 48.62,-455.5 48.62,-455.5 129.12,-455.5 129.12,-455.5 135.12,-455.5 141.12,-461.5 141.12,-467.5 141.12,-467.5 141.12,-483 141.12,-483 141.12,-489 135.12,-495 129.12,-495"/>
37
- <text xml:space="preserve" text-anchor="middle" x="88.88" y="-482.45" font-family="Arial" font-size="9.00">Spider / Crawl</text>
38
- <text xml:space="preserve" text-anchor="middle" x="88.88" y="-471.95" font-family="Arial" font-size="9.00">(TransparentBrowser,</text>
39
- <text xml:space="preserve" text-anchor="middle" x="88.88" y="-461.45" font-family="Arial" font-size="9.00">Spider plugin)</text>
52
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M255.12,-120C255.12,-120 197.12,-120 197.12,-120 191.12,-120 185.12,-114 185.12,-108 185.12,-108 185.12,-96 185.12,-96 185.12,-90 191.12,-84 197.12,-84 197.12,-84 255.12,-84 255.12,-84 261.12,-84 267.12,-90 267.12,-96 267.12,-96 267.12,-108 267.12,-108 267.12,-114 261.12,-120 255.12,-120"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Spider</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">URI buster</text>
40
55
  </g>
41
- <!-- Proxy&#45;&gt;Spider -->
56
+ <!-- Target&#45;&gt;Spider -->
42
57
  <g id="edge2" class="edge">
43
- <title>Proxy&#45;&gt;Spider</title>
44
- <path fill="none" stroke="black" d="M116.68,-532.31C112.45,-523.79 107.75,-514.3 103.43,-505.6"/>
45
- <polygon fill="black" stroke="black" points="106.66,-504.24 99.08,-496.83 100.39,-507.35 106.66,-504.24"/>
58
+ <title>Target&#45;&gt;Spider</title>
59
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-102C102.68,-102 143.15,-102 175,-102"/>
60
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="174.61,-104.8 182.61,-102 174.61,-99.2 174.61,-104.8"/>
46
61
  </g>
47
- <!-- Findings -->
48
- <g id="node8" class="node">
49
- <title>Findings</title>
50
- <path fill="none" stroke="black" d="M170.62,-112.5C170.62,-112.5 87.12,-112.5 87.12,-112.5 81.12,-112.5 75.12,-106.5 75.12,-100.5 75.12,-100.5 75.12,-85 75.12,-85 75.12,-79 81.12,-73 87.12,-73 87.12,-73 170.62,-73 170.62,-73 176.62,-73 182.62,-79 182.62,-85 182.62,-85 182.62,-100.5 182.62,-100.5 182.62,-106.5 176.62,-112.5 170.62,-112.5"/>
51
- <text xml:space="preserve" text-anchor="middle" x="128.88" y="-99.95" font-family="Arial" font-size="9.00">Web Vulns</text>
52
- <text xml:space="preserve" text-anchor="middle" x="128.88" y="-89.45" font-family="Arial" font-size="9.00">(XSS, SQLi, IDOR,</text>
53
- <text xml:space="preserve" text-anchor="middle" x="128.88" y="-78.95" font-family="Arial" font-size="9.00">Cache deception, etc.)</text>
54
- </g>
55
- <!-- Proxy&#45;&gt;Findings -->
56
- <g id="edge9" class="edge">
57
- <title>Proxy&#45;&gt;Findings</title>
58
- <path fill="none" stroke="black" d="M150.11,-532.53C160.03,-517.01 169.88,-496.5 169.88,-476.25 169.88,-476.25 169.88,-476.25 169.88,-168.25 169.88,-151.5 161.82,-134.96 152.85,-121.74"/>
59
- <polygon fill="black" stroke="black" points="155.89,-119.96 147.16,-113.96 150.24,-124.1 155.89,-119.96"/>
60
- <text xml:space="preserve" text-anchor="middle" x="200.62" y="-319.52" font-family="Times,serif" font-size="8.00">intercept &amp; modify</text>
61
- </g>
62
- <!-- ActiveScan -->
62
+ <!-- WWW -->
63
63
  <g id="node4" class="node">
64
- <title>ActiveScan</title>
65
- <path fill="none" stroke="black" d="M125.38,-418.5C125.38,-418.5 34.38,-418.5 34.38,-418.5 28.38,-418.5 22.38,-412.5 22.38,-406.5 22.38,-406.5 22.38,-391 22.38,-391 22.38,-385 28.38,-379 34.38,-379 34.38,-379 125.38,-379 125.38,-379 131.38,-379 137.38,-385 137.38,-391 137.38,-391 137.38,-406.5 137.38,-406.5 137.38,-412.5 131.38,-418.5 125.38,-418.5"/>
66
- <text xml:space="preserve" text-anchor="middle" x="79.88" y="-405.95" font-family="Arial" font-size="9.00">Active Scans</text>
67
- <text xml:space="preserve" text-anchor="middle" x="79.88" y="-395.45" font-family="Arial" font-size="9.00">(Burp active, ZAP active,</text>
68
- <text xml:space="preserve" text-anchor="middle" x="79.88" y="-384.95" font-family="Arial" font-size="9.00">pwn_*_active_scan)</text>
64
+ <title>WWW</title>
65
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M256.25,-52C256.25,-52 196,-52 196,-52 190,-52 184,-46 184,-40 184,-40 184,-28 184,-28 184,-22 190,-16 196,-16 196,-16 256.25,-16 256.25,-16 262.25,-16 268.25,-22 268.25,-28 268.25,-28 268.25,-40 268.25,-40 268.25,-46 262.25,-52 256.25,-52"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::WWW::*</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">21 site drivers</text>
69
68
  </g>
70
- <!-- Spider&#45;&gt;ActiveScan -->
69
+ <!-- Target&#45;&gt;WWW -->
71
70
  <g id="edge3" class="edge">
72
- <title>Spider&#45;&gt;ActiveScan</title>
73
- <path fill="none" stroke="black" d="M86.56,-455.06C85.64,-447.5 84.57,-438.63 83.56,-430.24"/>
74
- <polygon fill="black" stroke="black" points="87.04,-429.88 82.37,-420.37 80.09,-430.72 87.04,-429.88"/>
71
+ <title>Target&#45;&gt;WWW</title>
72
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-88.89C102.51,-78.53 142.69,-63.94 174.44,-52.41"/>
73
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="175.17,-55.12 181.73,-49.76 173.26,-49.86 175.17,-55.12"/>
75
74
  </g>
76
- <!-- Manual -->
75
+ <!-- Burp -->
77
76
  <g id="node5" class="node">
78
- <title>Manual</title>
79
- <path fill="none" stroke="black" d="M121.75,-342C121.75,-342 12,-342 12,-342 6,-342 0,-336 0,-330 0,-330 0,-314.5 0,-314.5 0,-308.5 6,-302.5 12,-302.5 12,-302.5 121.75,-302.5 121.75,-302.5 127.75,-302.5 133.75,-308.5 133.75,-314.5 133.75,-314.5 133.75,-330 133.75,-330 133.75,-336 127.75,-342 121.75,-342"/>
80
- <text xml:space="preserve" text-anchor="middle" x="66.88" y="-329.45" font-family="Arial" font-size="9.00">Manual + Assisted</text>
81
- <text xml:space="preserve" text-anchor="middle" x="66.88" y="-318.95" font-family="Arial" font-size="9.00">(URI Buster, XSS vectors,</text>
82
- <text xml:space="preserve" text-anchor="middle" x="66.88" y="-308.45" font-family="Arial" font-size="9.00">char encodings, web_cache)</text>
77
+ <title>Burp</title>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M584.5,-120C584.5,-120 487.5,-120 487.5,-120 481.5,-120 475.5,-114 475.5,-108 475.5,-108 475.5,-96 475.5,-96 475.5,-90 481.5,-84 487.5,-84 487.5,-84 584.5,-84 584.5,-84 590.5,-84 596.5,-90 596.5,-96 596.5,-96 596.5,-108 596.5,-108 596.5,-114 590.5,-120 584.5,-120"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-104.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BurpSuite &#160;⭐</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-92.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">active · passive · REST</text>
83
81
  </g>
84
- <!-- ActiveScan&#45;&gt;Manual -->
82
+ <!-- TB&#45;&gt;Burp -->
85
83
  <g id="edge4" class="edge">
86
- <title>ActiveScan&#45;&gt;Manual</title>
87
- <path fill="none" stroke="black" d="M76.53,-378.56C75.19,-370.92 73.62,-361.93 72.14,-353.45"/>
88
- <polygon fill="black" stroke="black" points="75.64,-353.11 70.47,-343.86 68.74,-354.31 75.64,-353.11"/>
89
- </g>
90
- <!-- API -->
91
- <g id="node6" class="node">
92
- <title>API</title>
93
- <path fill="none" stroke="black" d="M126,-265.5C126,-265.5 35.75,-265.5 35.75,-265.5 29.75,-265.5 23.75,-259.5 23.75,-253.5 23.75,-253.5 23.75,-238 23.75,-238 23.75,-232 29.75,-226 35.75,-226 35.75,-226 126,-226 126,-226 132,-226 138,-232 138,-238 138,-238 138,-253.5 138,-253.5 138,-259.5 132,-265.5 126,-265.5"/>
94
- <text xml:space="preserve" text-anchor="middle" x="80.88" y="-252.95" font-family="Arial" font-size="9.00">API Testing</text>
95
- <text xml:space="preserve" text-anchor="middle" x="80.88" y="-242.45" font-family="Arial" font-size="9.00">(OpenAPI, JSONPathify,</text>
96
- <text xml:space="preserve" text-anchor="middle" x="80.88" y="-231.95" font-family="Arial" font-size="9.00">GraphQL introspection)</text>
84
+ <title>TB&#45;&gt;Burp</title>
85
+ <path fill="none" stroke="#f59e0b" stroke-width="2" d="M292.04,-155.66C342.46,-144.53 412.3,-129.1 464.17,-117.65"/>
86
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="2" points="464.45,-120.45 471.66,-115.99 463.25,-114.98 464.45,-120.45"/>
87
+ <text xml:space="preserve" text-anchor="middle" x="377.62" y="-148.01" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">proxy 127.0.0.1:8080</text>
97
88
  </g>
98
- <!-- Manual&#45;&gt;API -->
89
+ <!-- Spider&#45;&gt;Burp -->
99
90
  <g id="edge5" class="edge">
100
- <title>Manual&#45;&gt;API</title>
101
- <path fill="none" stroke="black" d="M70.48,-302.06C71.92,-294.42 73.61,-285.43 75.2,-276.95"/>
102
- <polygon fill="black" stroke="black" points="78.6,-277.83 77,-267.36 71.72,-276.54 78.6,-277.83"/>
91
+ <title>Spider&#45;&gt;Burp</title>
92
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M267.69,-102C317.81,-102 403.89,-102 464.81,-102"/>
93
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="464.78,-104.8 472.78,-102 464.78,-99.2 464.78,-104.8"/>
103
94
  </g>
104
- <!-- AuthWeb -->
105
- <g id="node7" class="node">
106
- <title>AuthWeb</title>
107
- <path fill="none" stroke="black" d="M125.75,-189C125.75,-189 52,-189 52,-189 46,-189 40,-183 40,-177 40,-177 40,-161.5 40,-161.5 40,-155.5 46,-149.5 52,-149.5 52,-149.5 125.75,-149.5 125.75,-149.5 131.75,-149.5 137.75,-155.5 137.75,-161.5 137.75,-161.5 137.75,-177 137.75,-177 137.75,-183 131.75,-189 125.75,-189"/>
108
- <text xml:space="preserve" text-anchor="middle" x="88.88" y="-176.45" font-family="Arial" font-size="9.00">Auth &amp; Session</text>
109
- <text xml:space="preserve" text-anchor="middle" x="88.88" y="-165.95" font-family="Arial" font-size="9.00">(OAuth2, BasicAuth,</text>
110
- <text xml:space="preserve" text-anchor="middle" x="88.88" y="-155.45" font-family="Arial" font-size="9.00">JWT handling)</text>
95
+ <!-- Zap -->
96
+ <g id="node6" class="node">
97
+ <title>Zap</title>
98
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M551.88,-52C551.88,-52 520.12,-52 520.12,-52 514.12,-52 508.12,-46 508.12,-40 508.12,-40 508.12,-28 508.12,-28 508.12,-22 514.12,-16 520.12,-16 520.12,-16 551.88,-16 551.88,-16 557.88,-16 563.88,-22 563.88,-28 563.88,-28 563.88,-40 563.88,-40 563.88,-46 557.88,-52 551.88,-52"/>
99
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Zaproxy</text>
100
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(fallback)</text>
111
101
  </g>
112
- <!-- API&#45;&gt;AuthWeb -->
102
+ <!-- WWW&#45;&gt;Zap -->
113
103
  <g id="edge6" class="edge">
114
- <title>API&#45;&gt;AuthWeb</title>
115
- <path fill="none" stroke="black" d="M82.94,-225.56C83.75,-218 84.7,-209.13 85.6,-200.74"/>
116
- <polygon fill="black" stroke="black" points="89.07,-201.19 86.66,-190.88 82.11,-200.44 89.07,-201.19"/>
104
+ <title>WWW&#45;&gt;Zap</title>
105
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M268.65,-34C329.03,-34 440.17,-34 497.94,-34"/>
106
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="497.77,-36.8 505.77,-34 497.77,-31.2 497.77,-36.8"/>
117
107
  </g>
118
- <!-- AuthWeb&#45;&gt;Findings -->
108
+ <!-- SAST -->
109
+ <g id="node7" class="node">
110
+ <title>SAST</title>
111
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M795.25,-188C795.25,-188 723,-188 723,-188 717,-188 711,-182 711,-176 711,-176 711,-164 711,-164 711,-158 717,-152 723,-152 723,-152 795.25,-152 795.25,-152 801.25,-152 807.25,-158 807.25,-164 807.25,-164 807.25,-176 807.25,-176 807.25,-182 801.25,-188 795.25,-188"/>
112
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-172.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::SAST</text>
113
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">48 rules on source</text>
114
+ </g>
115
+ <!-- Burp&#45;&gt;SAST -->
119
116
  <g id="edge7" class="edge">
120
- <title>AuthWeb&#45;&gt;Findings</title>
121
- <path fill="none" stroke="black" d="M99.18,-149.06C103.47,-141.07 108.55,-131.61 113.28,-122.8"/>
122
- <polygon fill="black" stroke="black" points="116.25,-124.67 117.89,-114.2 110.08,-121.36 116.25,-124.67"/>
117
+ <title>Burp&#45;&gt;SAST</title>
118
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M597.42,-120.58C629.78,-130.53 669.4,-142.72 701.21,-152.5"/>
119
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="700.03,-155.06 708.5,-154.74 701.68,-149.71 700.03,-155.06"/>
123
120
  </g>
124
- <!-- ReportWeb -->
125
- <g id="node9" class="node">
126
- <title>ReportWeb</title>
127
- <path fill="none" stroke="black" d="M152.62,-36C152.62,-36 105.12,-36 105.12,-36 99.12,-36 93.12,-30 93.12,-24 93.12,-24 93.12,-12 93.12,-12 93.12,-6 99.12,0 105.12,0 105.12,0 152.62,0 152.62,0 158.62,0 164.62,-6 164.62,-12 164.62,-12 164.62,-24 164.62,-24 164.62,-30 158.62,-36 152.62,-36"/>
128
- <text xml:space="preserve" text-anchor="middle" x="128.88" y="-14.7" font-family="Arial" font-size="9.00">PWN Reports</text>
121
+ <!-- XSS -->
122
+ <g id="node8" class="node">
123
+ <title>XSS</title>
124
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M805.38,-120C805.38,-120 712.88,-120 712.88,-120 706.88,-120 700.88,-114 700.88,-108 700.88,-108 700.88,-96 700.88,-96 700.88,-90 706.88,-84 712.88,-84 712.88,-84 805.38,-84 805.38,-84 811.38,-84 817.38,-90 817.38,-96 817.38,-96 817.38,-108 817.38,-108 817.38,-114 811.38,-120 805.38,-120"/>
125
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_xss_dom_vectors</text>
126
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">web_cache_deception</text>
129
127
  </g>
130
- <!-- Findings&#45;&gt;ReportWeb -->
128
+ <!-- Burp&#45;&gt;XSS -->
131
129
  <g id="edge8" class="edge">
132
- <title>Findings&#45;&gt;ReportWeb</title>
133
- <path fill="none" stroke="black" d="M128.88,-72.64C128.88,-64.97 128.88,-55.97 128.88,-47.55"/>
134
- <polygon fill="black" stroke="black" points="132.38,-47.76 128.88,-37.76 125.38,-47.76 132.38,-47.76"/>
130
+ <title>Burp&#45;&gt;XSS</title>
131
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M597.42,-102C626.26,-102 660.87,-102 690.57,-102"/>
132
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="690.47,-104.8 698.47,-102 690.47,-99.2 690.47,-104.8"/>
133
+ </g>
134
+ <!-- API -->
135
+ <g id="node9" class="node">
136
+ <title>API</title>
137
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M803.5,-52C803.5,-52 714.75,-52 714.75,-52 708.75,-52 702.75,-46 702.75,-40 702.75,-40 702.75,-28 702.75,-28 702.75,-22 708.75,-16 714.75,-16 714.75,-16 803.5,-16 803.5,-16 809.5,-16 815.5,-22 815.5,-28 815.5,-28 815.5,-40 815.5,-40 815.5,-46 809.5,-52 803.5,-52"/>
138
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::OpenAPI</text>
139
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">GraphQL introspection</text>
140
+ </g>
141
+ <!-- Zap&#45;&gt;API -->
142
+ <g id="edge9" class="edge">
143
+ <title>Zap&#45;&gt;API</title>
144
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M564.11,-34C595.89,-34 649.65,-34 692.54,-34"/>
145
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="692.38,-36.8 700.38,-34 692.38,-31.2 692.38,-36.8"/>
146
+ </g>
147
+ <!-- Report -->
148
+ <g id="node10" class="node">
149
+ <title>Report</title>
150
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M993.5,-120C993.5,-120 922,-120 922,-120 916,-120 910,-114 910,-108 910,-108 910,-96 910,-96 910,-90 916,-84 922,-84 922,-84 993.5,-84 993.5,-84 999.5,-84 1005.5,-90 1005.5,-96 1005.5,-96 1005.5,-108 1005.5,-108 1005.5,-114 999.5,-120 993.5,-120"/>
151
+ <text xml:space="preserve" text-anchor="middle" x="957.75" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::Reports</text>
152
+ <text xml:space="preserve" text-anchor="middle" x="957.75" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">DefectDojo import</text>
153
+ </g>
154
+ <!-- SAST&#45;&gt;Report -->
155
+ <g id="edge10" class="edge">
156
+ <title>SAST&#45;&gt;Report</title>
157
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M807.72,-153.54C835.62,-143.89 871.01,-131.65 900.31,-121.52"/>
158
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="901.09,-124.21 907.73,-118.95 899.26,-118.92 901.09,-124.21"/>
159
+ </g>
160
+ <!-- XSS&#45;&gt;Report -->
161
+ <g id="edge11" class="edge">
162
+ <title>XSS&#45;&gt;Report</title>
163
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M817.79,-102C843.71,-102 874.21,-102 900.03,-102"/>
164
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="899.7,-104.8 907.7,-102 899.7,-99.2 899.7,-104.8"/>
165
+ </g>
166
+ <!-- API&#45;&gt;Report -->
167
+ <g id="edge12" class="edge">
168
+ <title>API&#45;&gt;Report</title>
169
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M813.85,-52.58C840.6,-61.83 872.94,-73.02 900.08,-82.4"/>
170
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="899.11,-85.03 907.59,-85 900.95,-79.74 899.11,-85.03"/>
135
171
  </g>
136
172
  </g>
137
173
  </svg>