pwn 0.5.618 → 0.5.621

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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +14 -6
  4. data/bin/pwn_gqrx_scanner +25 -5
  5. data/documentation/Agent-Tool-Registry.md +4 -4
  6. data/documentation/Cron.md +13 -0
  7. data/documentation/Diagrams.md +6 -2
  8. data/documentation/Extrospection.md +96 -11
  9. data/documentation/Home.md +5 -4
  10. data/documentation/How-PWN-Works.md +7 -4
  11. data/documentation/Mistakes.md +97 -0
  12. data/documentation/Persistence.md +4 -1
  13. data/documentation/SDR.md +23 -5
  14. data/documentation/Skills-Memory-Learning.md +16 -5
  15. data/documentation/Transparent-Browser.md +18 -1
  16. data/documentation/diagrams/agent-tool-registry.svg +103 -100
  17. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  18. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  19. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  20. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  21. data/documentation/diagrams/cron-scheduling.svg +23 -23
  22. data/documentation/diagrams/dot/agent-tool-registry.dot +3 -3
  23. data/documentation/diagrams/dot/extrospection-world-awareness.dot +33 -10
  24. data/documentation/diagrams/dot/memory-skills-detailed.dot +16 -5
  25. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
  26. data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
  27. data/documentation/diagrams/dot/persistence-filesystem.dot +4 -2
  28. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +25 -7
  29. data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
  30. data/documentation/diagrams/driver-framework.svg +13 -13
  31. data/documentation/diagrams/extrospection-world-awareness.svg +241 -93
  32. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  33. data/documentation/diagrams/hardware-hacking.svg +18 -18
  34. data/documentation/diagrams/history-to-drivers.svg +18 -18
  35. data/documentation/diagrams/memory-skills-detailed.svg +169 -97
  36. data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
  37. data/documentation/diagrams/network-infra-testing.svg +27 -27
  38. data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
  39. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  40. data/documentation/diagrams/persistence-filesystem.svg +111 -87
  41. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  42. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +263 -149
  43. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  44. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  45. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  46. data/documentation/diagrams/sdr-radio-flow.svg +76 -56
  47. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  48. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  49. data/documentation/diagrams/web-application-testing.svg +26 -26
  50. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  51. data/documentation/pwn-ai-Agent.md +28 -15
  52. data/lib/pwn/ai/agent/extrospection.rb +494 -6
  53. data/lib/pwn/ai/agent/learning.rb +67 -7
  54. data/lib/pwn/ai/agent/loop.rb +72 -6
  55. data/lib/pwn/ai/agent/mistakes.rb +369 -0
  56. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  57. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  58. data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
  59. data/lib/pwn/ai/agent.rb +1 -0
  60. data/lib/pwn/plugins/jira_data_center.rb +2 -2
  61. data/lib/pwn/sdr/decoder/adsb.rb +82 -0
  62. data/lib/pwn/sdr/decoder/apt.rb +136 -0
  63. data/lib/pwn/sdr/decoder/base.rb +258 -171
  64. data/lib/pwn/sdr/decoder/bluetooth.rb +71 -0
  65. data/lib/pwn/sdr/decoder/dect.rb +70 -0
  66. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  67. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  68. data/lib/pwn/sdr/decoder/gps.rb +74 -0
  69. data/lib/pwn/sdr/decoder/gsm.rb +31 -62
  70. data/lib/pwn/sdr/decoder/iridium.rb +66 -0
  71. data/lib/pwn/sdr/decoder/lora.rb +80 -0
  72. data/lib/pwn/sdr/decoder/lte.rb +67 -0
  73. data/lib/pwn/sdr/decoder/morse.rb +138 -0
  74. data/lib/pwn/sdr/decoder/p25.rb +74 -0
  75. data/lib/pwn/sdr/decoder/pager.rb +61 -0
  76. data/lib/pwn/sdr/decoder/pocsag.rb +176 -54
  77. data/lib/pwn/sdr/decoder/rfid.rb +79 -0
  78. data/lib/pwn/sdr/decoder/rtl433.rb +86 -0
  79. data/lib/pwn/sdr/decoder/rtty.rb +139 -0
  80. data/lib/pwn/sdr/decoder/wifi.rb +77 -0
  81. data/lib/pwn/sdr/decoder/zigbee.rb +74 -0
  82. data/lib/pwn/sdr/decoder.rb +75 -7
  83. data/lib/pwn/sdr/frequency_allocation.rb +82 -41
  84. data/lib/pwn/sdr/gqrx.rb +186 -95
  85. data/lib/pwn/version.rb +1 -1
  86. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
  87. data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
  88. data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
  89. data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
  90. data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
  91. data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
  92. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  93. data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
  94. data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
  95. data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
  96. data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
  97. data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
  98. data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
  99. data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
  100. data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
  101. data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
  102. data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
  103. data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
  104. data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
  105. data/third_party/pwn_rdoc.jsonl +115 -5
  106. metadata +46 -6
  107. data/README.md.bak +0 -200
@@ -9,36 +9,36 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 538.58)">
10
10
  <title>PWN_Swarm</title>
11
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>
12
+ <text xml:space="preserve" text-anchor="start" x="138.54" y="-473.38" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">personas · ask · debate · broadcast · shared bus (no daemon)</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_verbs</title>
16
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>
17
+ <text xml:space="preserve" text-anchor="middle" x="305" y="-352.38" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Swarm Verbs &#160;(toolset: swarm)</text>
18
18
  </g>
19
19
  <g id="clust3" class="cluster">
20
20
  <title>cluster_personas</title>
21
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>
22
+ <text xml:space="preserve" text-anchor="middle" x="321.5" y="-222.62" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Personas &#160;(each = full PWN::AI::Agent::Loop)</text>
23
23
  </g>
24
24
  <g id="clust5" class="cluster">
25
25
  <title>cluster_state</title>
26
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>
27
+ <text xml:space="preserve" text-anchor="middle" x="337.5" y="-80.38" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Shared State &#160;~/.pwn/</text>
28
28
  </g>
29
29
  <!-- Orchestrator -->
30
30
  <g id="node1" class="node">
31
31
  <title>Orchestrator</title>
32
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>
33
+ <text xml:space="preserve" text-anchor="middle" x="273" y="-441.43" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">(you, in pwn&#45;ai)</text>
35
35
  </g>
36
36
  <!-- Spawn -->
37
37
  <g id="node2" class="node">
38
38
  <title>Spawn</title>
39
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>
40
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-321.18" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">define persona</text>
42
42
  </g>
43
43
  <!-- Orchestrator&#45;&gt;Spawn -->
44
44
  <g id="edge1" class="edge">
@@ -50,8 +50,8 @@
50
50
  <g id="node3" class="node">
51
51
  <title>Ask</title>
52
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>
53
+ <text xml:space="preserve" text-anchor="middle" x="221" y="-321.18" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">1 turn → 1 persona</text>
55
55
  </g>
56
56
  <!-- Orchestrator&#45;&gt;Ask -->
57
57
  <g id="edge2" class="edge">
@@ -63,8 +63,8 @@
63
63
  <g id="node4" class="node">
64
64
  <title>Debate</title>
65
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>
66
+ <text xml:space="preserve" text-anchor="middle" x="377" y="-321.18" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">round&#45;robin critique</text>
68
68
  </g>
69
69
  <!-- Orchestrator&#45;&gt;Debate -->
70
70
  <g id="edge3" class="edge">
@@ -76,8 +76,8 @@
76
76
  <g id="node5" class="node">
77
77
  <title>Broadcast</title>
78
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>
79
+ <text xml:space="preserve" text-anchor="middle" x="528" y="-321.18" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">fan&#45;out ensemble</text>
81
81
  </g>
82
82
  <!-- Orchestrator&#45;&gt;Broadcast -->
83
83
  <g id="edge4" class="edge">
@@ -89,9 +89,9 @@
89
89
  <g id="node6" class="node">
90
90
  <title>Red</title>
91
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>
92
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-191.93" font-family="Helvetica,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="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">toolsets: terminal,pwn</text>
95
95
  </g>
96
96
  <!-- Spawn&#45;&gt;Red -->
97
97
  <!-- Agents -->
@@ -99,15 +99,15 @@
99
99
  <title>Agents</title>
100
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
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>
102
+ <text xml:space="preserve" text-anchor="middle" x="76" y="-43.11" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">persona registry</text>
104
104
  </g>
105
105
  <!-- Spawn&#45;&gt;Agents -->
106
106
  <g id="edge15" class="edge">
107
107
  <title>Spawn&#45;&gt;Agents</title>
108
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
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>
110
+ <text xml:space="preserve" text-anchor="middle" x="677.25" y="-178.82" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">write</text>
111
111
  </g>
112
112
  <!-- Ask&#45;&gt;Red -->
113
113
  <g id="edge6" class="edge">
@@ -119,9 +119,9 @@
119
119
  <g id="node7" class="node">
120
120
  <title>Blue</title>
121
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>
122
+ <text xml:space="preserve" text-anchor="middle" x="236" y="-191.93" font-family="Helvetica,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="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">toolsets: pwn,extro</text>
125
125
  </g>
126
126
  <!-- Debate&#45;&gt;Blue -->
127
127
  <g id="edge7" class="edge">
@@ -133,9 +133,9 @@
133
133
  <g id="node8" class="node">
134
134
  <title>Recon</title>
135
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>
136
+ <text xml:space="preserve" text-anchor="middle" x="406" y="-191.93" font-family="Helvetica,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="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">toolsets: terminal,memory</text>
139
139
  </g>
140
140
  <!-- Debate&#45;&gt;Recon -->
141
141
  <g id="edge8" class="edge">
@@ -147,9 +147,9 @@
147
147
  <g id="node9" class="node">
148
148
  <title>Xpl</title>
149
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>
150
+ <text xml:space="preserve" text-anchor="middle" x="575" y="-191.93" font-family="Helvetica,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="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">toolsets: pwn,skills</text>
153
153
  </g>
154
154
  <!-- Broadcast&#45;&gt;Xpl -->
155
155
  <g id="edge9" class="edge">
@@ -163,15 +163,15 @@
163
163
  <title>Bus</title>
164
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
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>
166
+ <text xml:space="preserve" text-anchor="middle" x="229" y="-43.11" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">append&#45;only chat</text>
168
168
  </g>
169
169
  <!-- Red&#45;&gt;Bus -->
170
170
  <g id="edge11" class="edge">
171
171
  <title>Red&#45;&gt;Bus</title>
172
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
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>
174
+ <text xml:space="preserve" text-anchor="middle" x="174.91" y="-113.33" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">append reply</text>
175
175
  </g>
176
176
  <!-- Blue&#45;&gt;Bus -->
177
177
  <g id="edge12" class="edge">
@@ -184,8 +184,8 @@
184
184
  <title>Pmap</title>
185
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
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>
187
+ <text xml:space="preserve" text-anchor="middle" x="406" y="-43.11" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">name → session_id</text>
189
189
  </g>
190
190
  <!-- Recon&#45;&gt;Pmap -->
191
191
  <g id="edge13" class="edge">
@@ -198,8 +198,8 @@
198
198
  <title>Sess</title>
199
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
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>
201
+ <text xml:space="preserve" text-anchor="middle" x="585" y="-43.11" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">per&#45;persona transcript</text>
203
203
  </g>
204
204
  <!-- Xpl&#45;&gt;Sess -->
205
205
  <g id="edge14" class="edge">
@@ -212,14 +212,14 @@
212
212
  <title>Bus&#45;&gt;Orchestrator</title>
213
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
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>
215
+ <text xml:space="preserve" text-anchor="middle" x="819.71" y="-255.57" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">swarm_bus()</text>
216
216
  </g>
217
217
  <!-- Bus&#45;&gt;Debate -->
218
218
  <g id="edge16" class="edge">
219
219
  <title>Bus&#45;&gt;Debate</title>
220
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
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>
222
+ <text xml:space="preserve" text-anchor="middle" x="746.13" y="-178.82" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">tail → context</text>
223
223
  </g>
224
224
  </g>
225
225
  </svg>
@@ -9,36 +9,36 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 317.2)">
10
10
  <title>PWN_Web</title>
11
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>
12
+ <text xml:space="preserve" text-anchor="start" x="388.38" y="-252" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">TransparentBrowser → BurpSuite (preferred) → SAST → Reports</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_drive</title>
16
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>
17
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-204" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Drive Traffic</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_proxy</title>
21
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>
22
+ <text xml:space="preserve" text-anchor="middle" x="536.5" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Intercept + Scan</text>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
25
  <title>cluster_deep</title>
26
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>
27
+ <text xml:space="preserve" text-anchor="middle" x="759.62" y="-204" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Deep Analysis</text>
28
28
  </g>
29
29
  <!-- Target -->
30
30
  <g id="node1" class="node">
31
31
  <title>Target</title>
32
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>
33
+ <text xml:space="preserve" text-anchor="middle" x="36.88" y="-104.88" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">URL / API</text>
35
35
  </g>
36
36
  <!-- TB -->
37
37
  <g id="node2" class="node">
38
38
  <title>TB</title>
39
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>
40
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-172.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">headless · watir · devtools</text>
42
42
  </g>
43
43
  <!-- Target&#45;&gt;TB -->
44
44
  <g id="edge1" class="edge">
@@ -50,8 +50,8 @@
50
50
  <g id="node3" class="node">
51
51
  <title>Spider</title>
52
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>
53
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-104.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">URI buster</text>
55
55
  </g>
56
56
  <!-- Target&#45;&gt;Spider -->
57
57
  <g id="edge2" class="edge">
@@ -63,8 +63,8 @@
63
63
  <g id="node4" class="node">
64
64
  <title>WWW</title>
65
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>
66
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-36.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">21 site drivers</text>
68
68
  </g>
69
69
  <!-- Target&#45;&gt;WWW -->
70
70
  <g id="edge3" class="edge">
@@ -76,15 +76,15 @@
76
76
  <g id="node5" class="node">
77
77
  <title>Burp</title>
78
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>
79
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-104.88" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">active · passive · REST</text>
81
81
  </g>
82
82
  <!-- TB&#45;&gt;Burp -->
83
83
  <g id="edge4" class="edge">
84
84
  <title>TB&#45;&gt;Burp</title>
85
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
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>
87
+ <text xml:space="preserve" text-anchor="middle" x="377.62" y="-148.01" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">proxy 127.0.0.1:8080</text>
88
88
  </g>
89
89
  <!-- Spider&#45;&gt;Burp -->
90
90
  <g id="edge5" class="edge">
@@ -96,8 +96,8 @@
96
96
  <g id="node6" class="node">
97
97
  <title>Zap</title>
98
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>
99
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-36.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">(fallback)</text>
101
101
  </g>
102
102
  <!-- WWW&#45;&gt;Zap -->
103
103
  <g id="edge6" class="edge">
@@ -109,8 +109,8 @@
109
109
  <g id="node7" class="node">
110
110
  <title>SAST</title>
111
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>
112
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-172.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">48 rules on source</text>
114
114
  </g>
115
115
  <!-- Burp&#45;&gt;SAST -->
116
116
  <g id="edge7" class="edge">
@@ -122,8 +122,8 @@
122
122
  <g id="node8" class="node">
123
123
  <title>XSS</title>
124
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>
125
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-104.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">web_cache_deception</text>
127
127
  </g>
128
128
  <!-- Burp&#45;&gt;XSS -->
129
129
  <g id="edge8" class="edge">
@@ -135,8 +135,8 @@
135
135
  <g id="node9" class="node">
136
136
  <title>API</title>
137
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>
138
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-36.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">GraphQL introspection</text>
140
140
  </g>
141
141
  <!-- Zap&#45;&gt;API -->
142
142
  <g id="edge9" class="edge">
@@ -148,8 +148,8 @@
148
148
  <g id="node10" class="node">
149
149
  <title>Report</title>
150
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>
151
+ <text xml:space="preserve" text-anchor="middle" x="957.75" y="-104.5" font-family="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">DefectDojo import</text>
153
153
  </g>
154
154
  <!-- SAST&#45;&gt;Report -->
155
155
  <g id="edge10" class="edge">
@@ -9,41 +9,41 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 265.39)">
10
10
  <title>PWN_ZeroDay</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-265.39 1021.2,-265.39 1021.2,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="304.5" y="-200.19" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Zero&#45;Day Research Lifecycle with PWN</text>
13
- <text xml:space="preserve" text-anchor="start" x="337.12" y="-188.74" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">attack surface → hypothesis → prove → weaponise → disclose</text>
12
+ <text xml:space="preserve" text-anchor="start" x="304.5" y="-200.19" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Zero&#45;Day Research Lifecycle with PWN</text>
13
+ <text xml:space="preserve" text-anchor="start" x="337.12" y="-188.74" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">attack surface → hypothesis → prove → weaponise → disclose</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_hyp</title>
16
16
  <path fill="#022c22" stroke="#047857" d="M210.5,-24.19C210.5,-24.19 312,-24.19 312,-24.19 318,-24.19 324,-30.19 324,-36.19 324,-36.19 324,-163.19 324,-163.19 324,-169.19 318,-175.19 312,-175.19 312,-175.19 210.5,-175.19 210.5,-175.19 204.5,-175.19 198.5,-169.19 198.5,-163.19 198.5,-163.19 198.5,-36.19 198.5,-36.19 198.5,-30.19 204.5,-24.19 210.5,-24.19"/>
17
- <text xml:space="preserve" text-anchor="middle" x="261.25" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Hypothesise</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="261.25" y="-152.19" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Hypothesise</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_prove</title>
21
21
  <path fill="#422006" stroke="#a16207" d="M407,-24.19C407,-24.19 502.75,-24.19 502.75,-24.19 508.75,-24.19 514.75,-30.19 514.75,-36.19 514.75,-36.19 514.75,-163.19 514.75,-163.19 514.75,-169.19 508.75,-175.19 502.75,-175.19 502.75,-175.19 407,-175.19 407,-175.19 401,-175.19 395,-169.19 395,-163.19 395,-163.19 395,-36.19 395,-36.19 395,-30.19 401,-24.19 407,-24.19"/>
22
- <text xml:space="preserve" text-anchor="middle" x="454.88" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Prove</text>
22
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-152.19" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Prove</text>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
25
  <title>cluster_weapon</title>
26
26
  <path fill="#450a0a" stroke="#b91c1c" d="M674.75,-24.19C674.75,-24.19 767.25,-24.19 767.25,-24.19 773.25,-24.19 779.25,-30.19 779.25,-36.19 779.25,-36.19 779.25,-163.19 779.25,-163.19 779.25,-169.19 773.25,-175.19 767.25,-175.19 767.25,-175.19 674.75,-175.19 674.75,-175.19 668.75,-175.19 662.75,-169.19 662.75,-163.19 662.75,-163.19 662.75,-36.19 662.75,-36.19 662.75,-30.19 668.75,-24.19 674.75,-24.19"/>
27
- <text xml:space="preserve" text-anchor="middle" x="721" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Weaponise</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="721" y="-152.19" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">Weaponise</text>
28
28
  </g>
29
29
  <g id="clust4" class="cluster">
30
30
  <title>cluster_disc</title>
31
31
  <path fill="#2e1065" stroke="#6d28d9" d="M862.25,-24.19C862.25,-24.19 958,-24.19 958,-24.19 964,-24.19 970,-30.19 970,-36.19 970,-36.19 970,-163.19 970,-163.19 970,-169.19 964,-175.19 958,-175.19 958,-175.19 862.25,-175.19 862.25,-175.19 856.25,-175.19 850.25,-169.19 850.25,-163.19 850.25,-163.19 850.25,-36.19 850.25,-36.19 850.25,-30.19 856.25,-24.19 862.25,-24.19"/>
32
- <text xml:space="preserve" text-anchor="middle" x="910.12" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Disclose</text>
32
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-152.19" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Disclose</text>
33
33
  </g>
34
34
  <!-- Surface -->
35
35
  <g id="node1" class="node">
36
36
  <title>Surface</title>
37
37
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M107.5,-101.19C107.5,-101.19 12,-101.19 12,-101.19 6,-101.19 0,-95.19 0,-89.19 0,-89.19 0,-77.19 0,-77.19 0,-71.19 6,-65.19 12,-65.19 12,-65.19 107.5,-65.19 107.5,-65.19 113.5,-65.19 119.5,-71.19 119.5,-77.19 119.5,-77.19 119.5,-89.19 119.5,-89.19 119.5,-95.19 113.5,-101.19 107.5,-101.19"/>
38
- <text xml:space="preserve" text-anchor="middle" x="59.75" y="-85.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Attack Surface</text>
39
- <text xml:space="preserve" text-anchor="middle" x="59.75" y="-73.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">OpenAPI · Shodan · Git</text>
38
+ <text xml:space="preserve" text-anchor="middle" x="59.75" y="-85.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Attack Surface</text>
39
+ <text xml:space="preserve" text-anchor="middle" x="59.75" y="-73.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">OpenAPI · Shodan · Git</text>
40
40
  </g>
41
41
  <!-- SAST -->
42
42
  <g id="node2" class="node">
43
43
  <title>SAST</title>
44
44
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M285.25,-136.19C285.25,-136.19 236.25,-136.19 236.25,-136.19 230.25,-136.19 224.25,-130.19 224.25,-124.19 224.25,-124.19 224.25,-112.19 224.25,-112.19 224.25,-106.19 230.25,-100.19 236.25,-100.19 236.25,-100.19 285.25,-100.19 285.25,-100.19 291.25,-100.19 297.25,-106.19 297.25,-112.19 297.25,-112.19 297.25,-124.19 297.25,-124.19 297.25,-130.19 291.25,-136.19 285.25,-136.19"/>
45
- <text xml:space="preserve" text-anchor="middle" x="260.75" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::SAST</text>
46
- <text xml:space="preserve" text-anchor="middle" x="260.75" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">taint patterns</text>
45
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-120.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">PWN::SAST</text>
46
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-108.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">taint patterns</text>
47
47
  </g>
48
48
  <!-- Surface&#45;&gt;SAST -->
49
49
  <g id="edge1" class="edge">
@@ -55,8 +55,8 @@
55
55
  <g id="node3" class="node">
56
56
  <title>AI</title>
57
57
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M291.25,-68.19C291.25,-68.19 230.25,-68.19 230.25,-68.19 224.25,-68.19 218.25,-62.19 218.25,-56.19 218.25,-56.19 218.25,-44.19 218.25,-44.19 218.25,-38.19 224.25,-32.19 230.25,-32.19 230.25,-32.19 291.25,-32.19 291.25,-32.19 297.25,-32.19 303.25,-38.19 303.25,-44.19 303.25,-44.19 303.25,-56.19 303.25,-56.19 303.25,-62.19 297.25,-68.19 291.25,-68.19"/>
58
- <text xml:space="preserve" text-anchor="middle" x="260.75" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn&#45;ai</text>
59
- <text xml:space="preserve" text-anchor="middle" x="260.75" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Agent::VulnGen</text>
58
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-52.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">pwn&#45;ai</text>
59
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-40.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Agent::VulnGen</text>
60
60
  </g>
61
61
  <!-- Surface&#45;&gt;AI -->
62
62
  <g id="edge2" class="edge">
@@ -68,8 +68,8 @@
68
68
  <g id="node4" class="node">
69
69
  <title>Fuzz</title>
70
70
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M477.5,-136.19C477.5,-136.19 432.25,-136.19 432.25,-136.19 426.25,-136.19 420.25,-130.19 420.25,-124.19 420.25,-124.19 420.25,-112.19 420.25,-112.19 420.25,-106.19 426.25,-100.19 432.25,-100.19 432.25,-100.19 477.5,-100.19 477.5,-100.19 483.5,-100.19 489.5,-106.19 489.5,-112.19 489.5,-112.19 489.5,-124.19 489.5,-124.19 489.5,-130.19 483.5,-136.19 477.5,-136.19"/>
71
- <text xml:space="preserve" text-anchor="middle" x="454.88" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Fuzz · Sock</text>
72
- <text xml:space="preserve" text-anchor="middle" x="454.88" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Packet</text>
71
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-120.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Fuzz · Sock</text>
72
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-108.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Packet</text>
73
73
  </g>
74
74
  <!-- SAST&#45;&gt;Fuzz -->
75
75
  <g id="edge3" class="edge">
@@ -81,8 +81,8 @@
81
81
  <g id="node5" class="node">
82
82
  <title>TB</title>
83
83
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M494.75,-68.19C494.75,-68.19 415,-68.19 415,-68.19 409,-68.19 403,-62.19 403,-56.19 403,-56.19 403,-44.19 403,-44.19 403,-38.19 409,-32.19 415,-32.19 415,-32.19 494.75,-32.19 494.75,-32.19 500.75,-32.19 506.75,-38.19 506.75,-44.19 506.75,-44.19 506.75,-56.19 506.75,-56.19 506.75,-62.19 500.75,-68.19 494.75,-68.19"/>
84
- <text xml:space="preserve" text-anchor="middle" x="454.88" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TransparentBrowser</text>
85
- <text xml:space="preserve" text-anchor="middle" x="454.88" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Burp replay</text>
84
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-52.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">TransparentBrowser</text>
85
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-40.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Burp replay</text>
86
86
  </g>
87
87
  <!-- AI&#45;&gt;TB -->
88
88
  <g id="edge4" class="edge">
@@ -94,8 +94,8 @@
94
94
  <g id="node6" class="node">
95
95
  <title>Asm</title>
96
96
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M758.5,-136.19C758.5,-136.19 682.5,-136.19 682.5,-136.19 676.5,-136.19 670.5,-130.19 670.5,-124.19 670.5,-124.19 670.5,-112.19 670.5,-112.19 670.5,-106.19 676.5,-100.19 682.5,-100.19 682.5,-100.19 758.5,-100.19 758.5,-100.19 764.5,-100.19 770.5,-106.19 770.5,-112.19 770.5,-112.19 770.5,-124.19 770.5,-124.19 770.5,-130.19 764.5,-136.19 758.5,-136.19"/>
97
- <text xml:space="preserve" text-anchor="middle" x="720.5" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Assembly</text>
98
- <text xml:space="preserve" text-anchor="middle" x="720.5" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn&#45;asm shellcode</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-120.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Assembly</text>
98
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-108.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">pwn&#45;asm shellcode</text>
99
99
  </g>
100
100
  <!-- Fuzz&#45;&gt;Asm -->
101
101
  <g id="edge5" class="edge">
@@ -107,8 +107,8 @@
107
107
  <g id="node7" class="node">
108
108
  <title>MSF</title>
109
109
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M739,-68.19C739,-68.19 702,-68.19 702,-68.19 696,-68.19 690,-62.19 690,-56.19 690,-56.19 690,-44.19 690,-44.19 690,-38.19 696,-32.19 702,-32.19 702,-32.19 739,-32.19 739,-32.19 745,-32.19 751,-38.19 751,-44.19 751,-44.19 751,-56.19 751,-56.19 751,-62.19 745,-68.19 739,-68.19"/>
110
- <text xml:space="preserve" text-anchor="middle" x="720.5" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Metasploit</text>
111
- <text xml:space="preserve" text-anchor="middle" x="720.5" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">module</text>
110
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-52.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Metasploit</text>
111
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-40.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">module</text>
112
112
  </g>
113
113
  <!-- TB&#45;&gt;MSF -->
114
114
  <g id="edge6" class="edge">
@@ -120,8 +120,8 @@
120
120
  <g id="node8" class="node">
121
121
  <title>H1</title>
122
122
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M950,-136.19C950,-136.19 870.25,-136.19 870.25,-136.19 864.25,-136.19 858.25,-130.19 858.25,-124.19 858.25,-124.19 858.25,-112.19 858.25,-112.19 858.25,-106.19 864.25,-100.19 870.25,-100.19 870.25,-100.19 950,-100.19 950,-100.19 956,-100.19 962,-106.19 962,-112.19 962,-112.19 962,-124.19 962,-124.19 962,-130.19 956,-136.19 950,-136.19"/>
123
- <text xml:space="preserve" text-anchor="middle" x="910.12" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">HackerOne</text>
124
- <text xml:space="preserve" text-anchor="middle" x="910.12" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BugCrowd · Synack</text>
123
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-120.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">HackerOne</text>
124
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-108.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">BugCrowd · Synack</text>
125
125
  </g>
126
126
  <!-- Asm&#45;&gt;H1 -->
127
127
  <g id="edge7" class="edge">
@@ -133,8 +133,8 @@
133
133
  <g id="node9" class="node">
134
134
  <title>Rep</title>
135
135
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M939.88,-68.19C939.88,-68.19 880.38,-68.19 880.38,-68.19 874.38,-68.19 868.38,-62.19 868.38,-56.19 868.38,-56.19 868.38,-44.19 868.38,-44.19 868.38,-38.19 874.38,-32.19 880.38,-32.19 880.38,-32.19 939.88,-32.19 939.88,-32.19 945.88,-32.19 951.88,-38.19 951.88,-44.19 951.88,-44.19 951.88,-56.19 951.88,-56.19 951.88,-62.19 945.88,-68.19 939.88,-68.19"/>
136
- <text xml:space="preserve" text-anchor="middle" x="910.12" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports · Skills</text>
137
- <text xml:space="preserve" text-anchor="middle" x="910.12" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">distill_skill</text>
136
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-52.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Reports · Skills</text>
137
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-40.69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">distill_skill</text>
138
138
  </g>
139
139
  <!-- MSF&#45;&gt;Rep -->
140
140
  <g id="edge8" class="edge">
@@ -147,7 +147,7 @@
147
147
  <title>Rep&#45;&gt;AI</title>
148
148
  <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M867.84,-36.49C842.58,-28.83 809.42,-20.07 779.25,-16.19 609.87,5.62 564.45,5.09 395,-16.19 367.6,-19.63 337.77,-26.9 313.29,-33.84"/>
149
149
  <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="312.63,-31.11 305.73,-36.03 314.19,-36.49 312.63,-31.11"/>
150
- <text xml:space="preserve" text-anchor="middle" x="588.75" y="-2.92" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">lesson → next hunt</text>
150
+ <text xml:space="preserve" text-anchor="middle" x="588.75" y="-2.92" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">lesson → next hunt</text>
151
151
  </g>
152
152
  </g>
153
153
  </svg>