pwn 0.5.779 → 0.5.781

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -3
  3. data/documentation/AI-Integration.md +4 -4
  4. data/documentation/AWS.md +10 -9
  5. data/documentation/Agent-Tool-Registry.md +20 -17
  6. data/documentation/Blockchain.md +3 -2
  7. data/documentation/Bounty.md +8 -6
  8. data/documentation/BurpSuite.md +6 -10
  9. data/documentation/CLI-Drivers.md +7 -4
  10. data/documentation/Capability-Broker-Sandbox.md +1 -1
  11. data/documentation/Configuration.md +23 -15
  12. data/documentation/Contributing.md +3 -3
  13. data/documentation/Cron.md +3 -2
  14. data/documentation/Diagrams.md +9 -3
  15. data/documentation/Drivers.md +12 -6
  16. data/documentation/Extrospection.md +25 -5
  17. data/documentation/FFI.md +15 -25
  18. data/documentation/Fuzzing.md +13 -13
  19. data/documentation/General-PWN-Usage.md +7 -4
  20. data/documentation/Harness-Evaluation.md +90 -3
  21. data/documentation/Home.md +6 -5
  22. data/documentation/How-PWN-Works.md +9 -10
  23. data/documentation/Installation.md +12 -11
  24. data/documentation/Metasploit.md +13 -19
  25. data/documentation/Mistakes.md +2 -2
  26. data/documentation/NmapIt.md +6 -3
  27. data/documentation/Operability.md +99 -0
  28. data/documentation/Persistence.md +3 -2
  29. data/documentation/Plugin-Degradation.md +4 -2
  30. data/documentation/Plugins.md +4 -11
  31. data/documentation/Policy-Benchmark.md +4 -0
  32. data/documentation/Reinforcement-Learning.md +19 -3
  33. data/documentation/Reporting.md +6 -5
  34. data/documentation/SAST.md +15 -10
  35. data/documentation/SDR-Decoder-Coverage.md +10 -4
  36. data/documentation/SDR.md +28 -40
  37. data/documentation/Session-Workflow.md +25 -12
  38. data/documentation/Sessions.md +7 -0
  39. data/documentation/Skills-Memory-Learning.md +11 -4
  40. data/documentation/Swarm.md +6 -0
  41. data/documentation/Transparent-Browser.md +1 -1
  42. data/documentation/Troubleshooting.md +6 -3
  43. data/documentation/What-is-PWN.md +4 -4
  44. data/documentation/Why-PWN.md +1 -1
  45. data/documentation/diagrams/agent-tool-registry.svg +219 -180
  46. data/documentation/diagrams/ai-integration-tool-calling.svg +35 -34
  47. data/documentation/diagrams/code-scanning-sast.svg +78 -78
  48. data/documentation/diagrams/cron-scheduling.svg +165 -145
  49. data/documentation/diagrams/dot/_THEME.md +6 -4
  50. data/documentation/diagrams/dot/agent-tool-registry.dot +6 -2
  51. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +1 -1
  52. data/documentation/diagrams/dot/code-scanning-sast.dot +8 -8
  53. data/documentation/diagrams/dot/cron-scheduling.dot +2 -0
  54. data/documentation/diagrams/dot/driver-framework.dot +1 -1
  55. data/documentation/diagrams/dot/extrospection-world-awareness.dot +2 -2
  56. data/documentation/diagrams/dot/fuzzing-workflow.dot +3 -3
  57. data/documentation/diagrams/dot/history-to-drivers.dot +1 -1
  58. data/documentation/diagrams/dot/memory-skills-detailed.dot +3 -3
  59. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +2 -2
  60. data/documentation/diagrams/dot/overall-pwn-architecture.dot +33 -121
  61. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -2
  62. data/documentation/diagrams/dot/plugin-ecosystem.dot +2 -2
  63. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +31 -167
  64. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +1 -1
  65. data/documentation/diagrams/dot/reinforcement-learning.dot +15 -7
  66. data/documentation/diagrams/dot/reporting-pipeline.dot +5 -3
  67. data/documentation/diagrams/dot/reverse-engineering-flow.dot +3 -3
  68. data/documentation/diagrams/dot/sdr-radio-flow.dot +5 -5
  69. data/documentation/diagrams/dot/sessions-cron-automation.dot +1 -1
  70. data/documentation/diagrams/dot/swarm-multi-agent.dot +3 -3
  71. data/documentation/diagrams/dot/task-summarizer.dot +2 -2
  72. data/documentation/diagrams/dot/web-application-testing.dot +4 -3
  73. data/documentation/diagrams/dot/zero-day-research-flow.dot +4 -3
  74. data/documentation/diagrams/driver-framework.svg +1 -1
  75. data/documentation/diagrams/extrospection-world-awareness.svg +178 -178
  76. data/documentation/diagrams/fuzzing-workflow.svg +58 -58
  77. data/documentation/diagrams/history-to-drivers.svg +42 -42
  78. data/documentation/diagrams/memory-skills-detailed.svg +210 -210
  79. data/documentation/diagrams/mistakes-negative-feedback.svg +116 -116
  80. data/documentation/diagrams/overall-pwn-architecture.svg +248 -404
  81. data/documentation/diagrams/persistence-filesystem.svg +143 -143
  82. data/documentation/diagrams/plugin-ecosystem.svg +100 -100
  83. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +233 -752
  84. data/documentation/diagrams/pwn-repl-prototyping.svg +27 -27
  85. data/documentation/diagrams/reinforcement-learning.svg +295 -221
  86. data/documentation/diagrams/reporting-pipeline.svg +94 -80
  87. data/documentation/diagrams/reverse-engineering-flow.svg +31 -31
  88. data/documentation/diagrams/sdr-radio-flow.svg +157 -155
  89. data/documentation/diagrams/sessions-cron-automation.svg +13 -13
  90. data/documentation/diagrams/swarm-multi-agent.svg +86 -86
  91. data/documentation/diagrams/task-summarizer.svg +57 -57
  92. data/documentation/diagrams/web-application-testing.svg +81 -75
  93. data/documentation/diagrams/zero-day-research-flow.svg +101 -92
  94. data/documentation/pwn-REPL.md +5 -3
  95. data/documentation/pwn-ai-Agent.md +18 -14
  96. data/documentation/pwn_silent_help_learn_demo.gif +0 -0
  97. data/etc/default_skills/pwn/ai/agent/learning/SKILL.md +1 -0
  98. data/lib/pwn/ai/agent/learning.rb +46 -1
  99. data/lib/pwn/ai/agent/loop.rb +6 -3
  100. data/lib/pwn/ai/agent/policy_evaluation.rb +5 -1
  101. data/lib/pwn/ai/agent/reward.rb +9 -0
  102. data/lib/pwn/version.rb +1 -1
  103. data/spec/fixtures/harness/completion_regressions.json +10 -0
  104. data/spec/fixtures/harness/completion_regressions.json.sha256 +1 -0
  105. data/spec/integration/harness_evaluation_spec.rb +13 -0
  106. data/spec/lib/pwn/ai/agent/learning_spec.rb +22 -0
  107. data/spec/lib/pwn/ai/agent/loop_spec.rb +39 -0
  108. data/spec/lib/pwn/ai/agent/policy_evaluation_spec.rb +6 -1
  109. data/spec/lib/pwn/ai/agent/reward_spec.rb +21 -0
  110. data/spec/support/harness/evaluate.rb +1 -1
  111. data/third_party/pwn_rdoc.jsonl +2 -1
  112. metadata +10 -7
@@ -4,13 +4,13 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_TaskSummarizer Pages: 1 -->
7
- <svg width="1807pt" height="754pt"
8
- viewBox="0.00 0.00 1807.00 754.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7
+ <svg width="1836pt" height="754pt"
8
+ viewBox="0.00 0.00 1836.00 754.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 710.7)">
10
10
  <title>PWN_TaskSummarizer</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-710.7 1764.2,-710.7 1764.2,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="616" y="-645.5" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::TaskSummarizer &#45; executive briefs</text>
13
- <text xml:space="preserve" text-anchor="start" x="677.12" y="-634.05" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">every request is a goal: emit_plan! then about_to then tools (no request type)</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-710.7 1793.2,-710.7 1793.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="630.5" y="-645.5" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::TaskSummarizer &#45; executive briefs</text>
13
+ <text xml:space="preserve" text-anchor="start" x="720.5" y="-634.05" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Task compass and UI only; request evidence governs completion</text>
14
14
  <g id="clust2" class="cluster">
15
15
  <title>cluster_short</title>
16
16
  <path fill="#4c0519" stroke="#be123c" stroke-width="2" d="M932,-397.25C932,-397.25 1323,-397.25 1323,-397.25 1329,-397.25 1335,-403.25 1335,-409.25 1335,-409.25 1335,-499.75 1335,-499.75 1335,-505.75 1329,-511.75 1323,-511.75 1323,-511.75 932,-511.75 932,-511.75 926,-511.75 920,-505.75 920,-499.75 920,-499.75 920,-409.25 920,-409.25 920,-403.25 926,-397.25 932,-397.25"/>
@@ -18,8 +18,8 @@
18
18
  </g>
19
19
  <g id="clust4" class="cluster">
20
20
  <title>cluster_plan</title>
21
- <path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M1351,-242.5C1351,-242.5 1701,-242.5 1701,-242.5 1707,-242.5 1713,-248.5 1713,-254.5 1713,-254.5 1713,-371 1713,-371 1713,-377 1707,-383 1701,-383 1701,-383 1351,-383 1351,-383 1345,-383 1339,-377 1339,-371 1339,-371 1339,-254.5 1339,-254.5 1339,-248.5 1345,-242.5 1351,-242.5"/>
22
- <text xml:space="preserve" text-anchor="middle" x="1526" y="-360" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Goal plan (once per turn)</text>
21
+ <path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M1380,-242.5C1380,-242.5 1730,-242.5 1730,-242.5 1736,-242.5 1742,-248.5 1742,-254.5 1742,-254.5 1742,-371 1742,-371 1742,-377 1736,-383 1730,-383 1730,-383 1380,-383 1380,-383 1374,-383 1368,-377 1368,-371 1368,-371 1368,-254.5 1368,-254.5 1368,-248.5 1374,-242.5 1380,-242.5"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="1555" y="-360" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Goal plan (once per turn)</text>
23
23
  </g>
24
24
  <g id="clust6" class="cluster">
25
25
  <title>cluster_batch</title>
@@ -28,8 +28,8 @@
28
28
  </g>
29
29
  <g id="clust8" class="cluster">
30
30
  <title>cluster_exec</title>
31
- <path fill="#422006" stroke="#a16207" stroke-width="2" d="M590,-107.5C590,-107.5 1158,-107.5 1158,-107.5 1164,-107.5 1170,-113.5 1170,-119.5 1170,-119.5 1170,-222.5 1170,-222.5 1170,-228.5 1164,-234.5 1158,-234.5 1158,-234.5 590,-234.5 590,-234.5 584,-234.5 578,-228.5 578,-222.5 578,-222.5 578,-119.5 578,-119.5 578,-113.5 584,-107.5 590,-107.5"/>
32
- <text xml:space="preserve" text-anchor="middle" x="874" y="-211.5" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Execution (not on task row)</text>
31
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M572,-107.5C572,-107.5 1187,-107.5 1187,-107.5 1193,-107.5 1199,-113.5 1199,-119.5 1199,-119.5 1199,-222.5 1199,-222.5 1199,-228.5 1193,-234.5 1187,-234.5 1187,-234.5 572,-234.5 572,-234.5 566,-234.5 560,-228.5 560,-222.5 560,-222.5 560,-119.5 560,-119.5 560,-113.5 566,-107.5 572,-107.5"/>
32
+ <text xml:space="preserve" text-anchor="middle" x="879.5" y="-211.5" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Execution (not on task row)</text>
33
33
  </g>
34
34
  <!-- User -->
35
35
  <g id="node1" class="node">
@@ -125,47 +125,47 @@
125
125
  <!-- Plan -->
126
126
  <g id="node7" class="node">
127
127
  <title>Plan</title>
128
- <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1483.38,-305.75C1483.38,-305.75 1358.62,-305.75 1358.62,-305.75 1352.62,-305.75 1346.62,-299.75 1346.62,-293.75 1346.62,-293.75 1346.62,-269.25 1346.62,-269.25 1346.62,-263.25 1352.62,-257.25 1358.62,-257.25 1358.62,-257.25 1483.38,-257.25 1483.38,-257.25 1489.38,-257.25 1495.38,-263.25 1495.38,-269.25 1495.38,-269.25 1495.38,-293.75 1495.38,-293.75 1495.38,-299.75 1489.38,-305.75 1483.38,-305.75"/>
129
- <text xml:space="preserve" text-anchor="middle" x="1421" y="-291.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">plan(request)</text>
130
- <text xml:space="preserve" text-anchor="middle" x="1421" y="-277.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">enumerated · LLM · fallback</text>
131
- <text xml:space="preserve" text-anchor="middle" x="1421" y="-264.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">ordered work units</text>
128
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M1512.38,-305.75C1512.38,-305.75 1387.62,-305.75 1387.62,-305.75 1381.62,-305.75 1375.62,-299.75 1375.62,-293.75 1375.62,-293.75 1375.62,-269.25 1375.62,-269.25 1375.62,-263.25 1381.62,-257.25 1387.62,-257.25 1387.62,-257.25 1512.38,-257.25 1512.38,-257.25 1518.38,-257.25 1524.38,-263.25 1524.38,-269.25 1524.38,-269.25 1524.38,-293.75 1524.38,-293.75 1524.38,-299.75 1518.38,-305.75 1512.38,-305.75"/>
129
+ <text xml:space="preserve" text-anchor="middle" x="1450" y="-291.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">plan(request)</text>
130
+ <text xml:space="preserve" text-anchor="middle" x="1450" y="-277.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">enumerated · LLM · fallback</text>
131
+ <text xml:space="preserve" text-anchor="middle" x="1450" y="-264.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">ordered work units</text>
132
132
  </g>
133
133
  <!-- Kind&#45;&gt;Plan -->
134
134
  <g id="edge6" class="edge">
135
135
  <title>Kind&#45;&gt;Plan</title>
136
- <path fill="none" stroke="#a78bfa" stroke-width="2" d="M1219.79,-588.32C1261.18,-575.95 1312.26,-554.33 1345,-518 1396.77,-460.56 1413.31,-367.49 1418.57,-317.27"/>
137
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="1421.35,-317.6 1419.32,-309.37 1415.78,-317.07 1421.35,-317.6"/>
138
- <text xml:space="preserve" text-anchor="middle" x="1345.57" y="-533.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">goal</text>
136
+ <path fill="none" stroke="#a78bfa" stroke-width="2" d="M1219.87,-586.65C1260.51,-573.73 1310.75,-552.13 1345,-518 1402.34,-460.86 1431.06,-366.95 1442.99,-316.72"/>
137
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="1445.69,-317.48 1444.74,-309.05 1440.23,-316.23 1445.69,-317.48"/>
138
+ <text xml:space="preserve" text-anchor="middle" x="1345.14" y="-533.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">goal</text>
139
139
  </g>
140
140
  <!-- EmitP -->
141
141
  <g id="node8" class="node">
142
142
  <title>EmitP</title>
143
- <path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M1693,-312.5C1693,-312.5 1587,-312.5 1587,-312.5 1581,-312.5 1575,-306.5 1575,-300.5 1575,-300.5 1575,-262.5 1575,-262.5 1575,-256.5 1581,-250.5 1587,-250.5 1587,-250.5 1693,-250.5 1693,-250.5 1699,-250.5 1705,-256.5 1705,-262.5 1705,-262.5 1705,-300.5 1705,-300.5 1705,-306.5 1699,-312.5 1693,-312.5"/>
144
- <text xml:space="preserve" text-anchor="middle" x="1640" y="-298.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">emit_plan!</text>
145
- <text xml:space="preserve" text-anchor="middle" x="1640" y="-284.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Goal: (original request)</text>
146
- <text xml:space="preserve" text-anchor="middle" x="1640" y="-271.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Tangible tasks (N):</text>
147
- <text xml:space="preserve" text-anchor="middle" x="1640" y="-257.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a"> &#160;each may use 1+ tools</text>
143
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M1722,-312.5C1722,-312.5 1616,-312.5 1616,-312.5 1610,-312.5 1604,-306.5 1604,-300.5 1604,-300.5 1604,-262.5 1604,-262.5 1604,-256.5 1610,-250.5 1616,-250.5 1616,-250.5 1722,-250.5 1722,-250.5 1728,-250.5 1734,-256.5 1734,-262.5 1734,-262.5 1734,-300.5 1734,-300.5 1734,-306.5 1728,-312.5 1722,-312.5"/>
144
+ <text xml:space="preserve" text-anchor="middle" x="1669" y="-298.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">emit_plan!</text>
145
+ <text xml:space="preserve" text-anchor="middle" x="1669" y="-284.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Goal: (original request)</text>
146
+ <text xml:space="preserve" text-anchor="middle" x="1669" y="-271.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Tangible tasks (N):</text>
147
+ <text xml:space="preserve" text-anchor="middle" x="1669" y="-257.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a"> &#160;each may use 1+ tools</text>
148
148
  </g>
149
149
  <!-- Plan&#45;&gt;EmitP -->
150
150
  <g id="edge7" class="edge">
151
151
  <title>Plan&#45;&gt;EmitP</title>
152
- <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1495.85,-281.5C1518.68,-281.5 1541.51,-281.5 1564.34,-281.5"/>
153
- <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1564.15,-284.3 1572.15,-281.5 1564.15,-278.7 1564.15,-284.3"/>
152
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1524.85,-281.5C1547.68,-281.5 1570.51,-281.5 1593.34,-281.5"/>
153
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1593.15,-284.3 1601.15,-281.5 1593.15,-278.7 1593.15,-284.3"/>
154
154
  </g>
155
155
  <!-- UI -->
156
156
  <g id="node17" class="node">
157
157
  <title>UI</title>
158
- <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M1289.5,-48.5C1289.5,-48.5 1156.5,-48.5 1156.5,-48.5 1150.5,-48.5 1144.5,-42.5 1144.5,-36.5 1144.5,-36.5 1144.5,-12 1144.5,-12 1144.5,-6 1150.5,0 1156.5,0 1156.5,0 1289.5,0 1289.5,0 1295.5,0 1301.5,-6 1301.5,-12 1301.5,-12 1301.5,-36.5 1301.5,-36.5 1301.5,-42.5 1295.5,-48.5 1289.5,-48.5"/>
159
- <text xml:space="preserve" text-anchor="middle" x="1223" y="-34.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">REPL on_tool</text>
160
- <text xml:space="preserve" text-anchor="middle" x="1223" y="-20.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">name=&#39;task&#39;, full text, result=&#39;&#39;</text>
161
- <text xml:space="preserve" text-anchor="middle" x="1223" y="-7.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(no truncation)</text>
158
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M1318.5,-48.5C1318.5,-48.5 1185.5,-48.5 1185.5,-48.5 1179.5,-48.5 1173.5,-42.5 1173.5,-36.5 1173.5,-36.5 1173.5,-12 1173.5,-12 1173.5,-6 1179.5,0 1185.5,0 1185.5,0 1318.5,0 1318.5,0 1324.5,0 1330.5,-6 1330.5,-12 1330.5,-12 1330.5,-36.5 1330.5,-36.5 1330.5,-42.5 1324.5,-48.5 1318.5,-48.5"/>
159
+ <text xml:space="preserve" text-anchor="middle" x="1252" y="-34.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">REPL on_tool</text>
160
+ <text xml:space="preserve" text-anchor="middle" x="1252" y="-20.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">name=&#39;task&#39;, full text, result=&#39;&#39;</text>
161
+ <text xml:space="preserve" text-anchor="middle" x="1252" y="-7.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(no truncation)</text>
162
162
  </g>
163
163
  <!-- EmitP&#45;&gt;UI -->
164
164
  <g id="edge8" class="edge">
165
165
  <title>EmitP&#45;&gt;UI</title>
166
- <path fill="none" stroke="#38bdf8" stroke-width="2" d="M1589.7,-249.71C1508.83,-200.21 1350.93,-103.56 1271.33,-54.84"/>
167
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="1272.89,-52.51 1264.61,-50.72 1269.97,-57.28 1272.89,-52.51"/>
168
- <text xml:space="preserve" text-anchor="middle" x="1591.89" y="-136.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">full goal once</text>
166
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M1618.7,-249.71C1537.83,-200.21 1379.93,-103.56 1300.33,-54.84"/>
167
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="1301.89,-52.51 1293.61,-50.72 1298.97,-57.28 1301.89,-52.51"/>
168
+ <text xml:space="preserve" text-anchor="middle" x="1620.89" y="-136.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">full goal once</text>
169
169
  </g>
170
170
  <!-- FP -->
171
171
  <g id="node10" class="node">
@@ -224,69 +224,69 @@
224
224
  <!-- Tools -->
225
225
  <g id="node14" class="node">
226
226
  <title>Tools</title>
227
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M750.25,-164C750.25,-164 597.75,-164 597.75,-164 591.75,-164 585.75,-158 585.75,-152 585.75,-152 585.75,-127.5 585.75,-127.5 585.75,-121.5 591.75,-115.5 597.75,-115.5 597.75,-115.5 750.25,-115.5 750.25,-115.5 756.25,-115.5 762.25,-121.5 762.25,-127.5 762.25,-127.5 762.25,-152 762.25,-152 762.25,-158 756.25,-164 750.25,-164"/>
228
- <text xml:space="preserve" text-anchor="middle" x="674" y="-149.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Dispatch tools</text>
229
- <text xml:space="preserve" text-anchor="middle" x="674" y="-136.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">shell · pwn_eval · CORE_TOOLS</text>
230
- <text xml:space="preserve" text-anchor="middle" x="674" y="-122.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">own REPL lines</text>
227
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M732.25,-164C732.25,-164 579.75,-164 579.75,-164 573.75,-164 567.75,-158 567.75,-152 567.75,-152 567.75,-127.5 567.75,-127.5 567.75,-121.5 573.75,-115.5 579.75,-115.5 579.75,-115.5 732.25,-115.5 732.25,-115.5 738.25,-115.5 744.25,-121.5 744.25,-127.5 744.25,-127.5 744.25,-152 744.25,-152 744.25,-158 738.25,-164 732.25,-164"/>
228
+ <text xml:space="preserve" text-anchor="middle" x="656" y="-149.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Dispatch tools</text>
229
+ <text xml:space="preserve" text-anchor="middle" x="656" y="-136.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">shell · pwn_eval · CORE_TOOLS</text>
230
+ <text xml:space="preserve" text-anchor="middle" x="656" y="-122.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">own REPL lines</text>
231
231
  </g>
232
232
  <!-- EmitB&#45;&gt;Tools -->
233
233
  <g id="edge15" class="edge">
234
234
  <title>EmitB&#45;&gt;Tools</title>
235
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M824.93,-398.25C795.28,-347.66 726.35,-230.07 692.89,-172.98"/>
236
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="695.49,-171.87 689.03,-166.39 690.66,-174.7 695.49,-171.87"/>
235
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M823.4,-398.25C790.51,-347.66 714.06,-230.07 676.96,-172.98"/>
236
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="679.34,-171.52 672.64,-166.34 674.65,-174.57 679.34,-171.52"/>
237
237
  </g>
238
238
  <!-- EmitB&#45;&gt;UI -->
239
239
  <g id="edge14" class="edge">
240
240
  <title>EmitB&#45;&gt;UI</title>
241
- <path fill="none" stroke="#38bdf8" stroke-width="2" d="M887.97,-398.16C977.62,-353.65 1160.71,-260.68 1180,-234.5 1218.25,-182.59 1224.38,-104.67 1224.37,-60.02"/>
242
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="1227.18,-60.15 1224.29,-52.18 1221.58,-60.21 1227.18,-60.15"/>
241
+ <path fill="none" stroke="#38bdf8" stroke-width="2" d="M888.38,-400.1C984.17,-356.74 1187.69,-262.41 1209,-234.5 1248.23,-183.11 1253.97,-104.68 1253.64,-59.86"/>
242
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="1256.44,-59.94 1253.49,-51.99 1250.84,-60.04 1256.44,-59.94"/>
243
243
  </g>
244
244
  <!-- Skip&#45;&gt;Tools -->
245
245
  <g id="edge16" class="edge">
246
246
  <title>Skip&#45;&gt;Tools</title>
247
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="M692.75,-404.64C689.48,-358.67 680.66,-234.46 676.38,-174.3"/>
248
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="679.19,-174.27 675.83,-166.49 673.6,-174.67 679.19,-174.27"/>
247
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="M691.62,-404.64C685.42,-358.67 668.65,-234.46 660.53,-174.3"/>
248
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="663.32,-174.03 659.47,-166.48 657.77,-174.78 663.32,-174.03"/>
249
249
  </g>
250
250
  <!-- Rec -->
251
251
  <g id="node15" class="node">
252
252
  <title>Rec</title>
253
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M952.62,-164C952.62,-164 853.38,-164 853.38,-164 847.38,-164 841.38,-158 841.38,-152 841.38,-152 841.38,-127.5 841.38,-127.5 841.38,-121.5 847.38,-115.5 853.38,-115.5 853.38,-115.5 952.62,-115.5 952.62,-115.5 958.62,-115.5 964.62,-121.5 964.62,-127.5 964.62,-127.5 964.62,-152 964.62,-152 964.62,-158 958.62,-164 952.62,-164"/>
254
- <text xml:space="preserve" text-anchor="middle" x="903" y="-149.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">record!</text>
255
- <text xml:space="preserve" text-anchor="middle" x="903" y="-136.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">advance plan_idx</text>
256
- <text xml:space="preserve" text-anchor="middle" x="903" y="-122.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(silent unless verbose)</text>
253
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M981.88,-164C981.88,-164 836.12,-164 836.12,-164 830.12,-164 824.12,-158 824.12,-152 824.12,-152 824.12,-127.5 824.12,-127.5 824.12,-121.5 830.12,-115.5 836.12,-115.5 836.12,-115.5 981.88,-115.5 981.88,-115.5 987.88,-115.5 993.88,-121.5 993.88,-127.5 993.88,-127.5 993.88,-152 993.88,-152 993.88,-158 987.88,-164 981.88,-164"/>
254
+ <text xml:space="preserve" text-anchor="middle" x="909" y="-149.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">record!</text>
255
+ <text xml:space="preserve" text-anchor="middle" x="909" y="-136.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">evidence/phase&#45;guided plan_idx</text>
256
+ <text xml:space="preserve" text-anchor="middle" x="909" y="-122.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(silent unless verbose)</text>
257
257
  </g>
258
258
  <!-- Tools&#45;&gt;Rec -->
259
259
  <g id="edge17" class="edge">
260
260
  <title>Tools&#45;&gt;Rec</title>
261
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M762.56,-139.75C785.36,-139.75 808.16,-139.75 830.96,-139.75"/>
262
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="830.77,-142.55 838.77,-139.75 830.77,-136.95 830.77,-142.55"/>
261
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M744.95,-139.75C767.84,-139.75 790.74,-139.75 813.64,-139.75"/>
262
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="813.48,-142.55 821.48,-139.75 813.48,-136.95 813.48,-142.55"/>
263
263
  </g>
264
264
  <!-- Rec&#45;&gt;About -->
265
265
  <g id="edge18" class="edge">
266
266
  <title>Rec&#45;&gt;About</title>
267
- <path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="M878.59,-164.47C855.47,-185.69 818.9,-216.2 782,-234.5 753.41,-248.68 330.83,-358.06 155.93,-403.03"/>
268
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="155.49,-400.25 148.44,-404.96 156.88,-405.68 155.49,-400.25"/>
269
- <text xml:space="preserve" text-anchor="middle" x="774.6" y="-278.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">next batch</text>
267
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" stroke-dasharray="5,2" d="M878.35,-164.55C850.05,-185.54 806.13,-215.63 764,-234.5 707.81,-259.67 321.57,-360.35 156.05,-403"/>
268
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="155.38,-400.28 148.33,-404.99 156.77,-405.71 155.38,-400.28"/>
269
+ <text xml:space="preserve" text-anchor="middle" x="757.99" y="-278.2" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">next batch</text>
270
270
  </g>
271
271
  <!-- Flush -->
272
272
  <g id="node16" class="node">
273
273
  <title>Flush</title>
274
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1149.75,-157.75C1149.75,-157.75 1060.25,-157.75 1060.25,-157.75 1054.25,-157.75 1048.25,-151.75 1048.25,-145.75 1048.25,-145.75 1048.25,-133.75 1048.25,-133.75 1048.25,-127.75 1054.25,-121.75 1060.25,-121.75 1060.25,-121.75 1149.75,-121.75 1149.75,-121.75 1155.75,-121.75 1161.75,-127.75 1161.75,-133.75 1161.75,-133.75 1161.75,-145.75 1161.75,-145.75 1161.75,-151.75 1155.75,-157.75 1149.75,-157.75"/>
275
- <text xml:space="preserve" text-anchor="middle" x="1105" y="-142.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">flush! / emit!</text>
276
- <text xml:space="preserve" text-anchor="middle" x="1105" y="-129.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">optional closing brief</text>
274
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1178.75,-157.75C1178.75,-157.75 1089.25,-157.75 1089.25,-157.75 1083.25,-157.75 1077.25,-151.75 1077.25,-145.75 1077.25,-145.75 1077.25,-133.75 1077.25,-133.75 1077.25,-127.75 1083.25,-121.75 1089.25,-121.75 1089.25,-121.75 1178.75,-121.75 1178.75,-121.75 1184.75,-121.75 1190.75,-127.75 1190.75,-133.75 1190.75,-133.75 1190.75,-145.75 1190.75,-145.75 1190.75,-151.75 1184.75,-157.75 1178.75,-157.75"/>
275
+ <text xml:space="preserve" text-anchor="middle" x="1134" y="-142.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">flush! / emit!</text>
276
+ <text xml:space="preserve" text-anchor="middle" x="1134" y="-129.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">optional closing brief</text>
277
277
  </g>
278
278
  <!-- Rec&#45;&gt;Flush -->
279
279
  <g id="edge19" class="edge">
280
280
  <title>Rec&#45;&gt;Flush</title>
281
- <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M965.25,-139.75C988.28,-139.75 1014.47,-139.75 1037.91,-139.75"/>
282
- <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1037.8,-142.55 1045.8,-139.75 1037.8,-136.95 1037.8,-142.55"/>
283
- <text xml:space="preserve" text-anchor="middle" x="1006.44" y="-144.7" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">end of turn</text>
281
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M994.38,-139.75C1018.32,-139.75 1043.99,-139.75 1066.71,-139.75"/>
282
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1066.62,-142.55 1074.62,-139.75 1066.62,-136.95 1066.62,-142.55"/>
283
+ <text xml:space="preserve" text-anchor="middle" x="1035.56" y="-144.7" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">end of turn</text>
284
284
  </g>
285
285
  <!-- Flush&#45;&gt;UI -->
286
286
  <g id="edge20" class="edge">
287
287
  <title>Flush&#45;&gt;UI</title>
288
- <path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M1123.18,-121.26C1141.3,-103.83 1169.5,-76.71 1191.31,-55.73"/>
289
- <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="1193.2,-57.8 1197.02,-50.24 1189.31,-53.77 1193.2,-57.8"/>
288
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M1152.18,-121.26C1170.3,-103.83 1198.5,-76.71 1220.31,-55.73"/>
289
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="1222.2,-57.8 1226.02,-50.24 1218.31,-53.77 1222.2,-57.8"/>
290
290
  </g>
291
291
  </g>
292
292
  </svg>
@@ -4,170 +4,176 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
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)">
7
+ <svg width="1126pt" height="428pt"
8
+ viewBox="0.00 0.00 1126.00 428.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 385.2)">
10
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>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-385.2 1082.95,-385.2 1082.95,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="405.5" y="-320" 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="345.12" y="-308.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Operator workflow: proxy evidence and separate source scans → reports</text>
14
14
  <g id="clust1" class="cluster">
15
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>
16
+ <path fill="#022c22" stroke="#047857" d="M164.75,-76C164.75,-76 287.5,-76 287.5,-76 293.5,-76 299.5,-82 299.5,-88 299.5,-88 299.5,-283 299.5,-283 299.5,-289 293.5,-295 287.5,-295 287.5,-295 164.75,-295 164.75,-295 158.75,-295 152.75,-289 152.75,-283 152.75,-283 152.75,-88 152.75,-88 152.75,-82 158.75,-76 164.75,-76"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-272" font-family="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
- <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>
21
+ <path fill="#422006" stroke="#a16207" d="M475.75,-76C475.75,-76 613.25,-76 613.25,-76 619.25,-76 625.25,-82 625.25,-88 625.25,-88 625.25,-215 625.25,-215 625.25,-221 619.25,-227 613.25,-227 613.25,-227 475.75,-227 475.75,-227 469.75,-227 463.75,-221 463.75,-215 463.75,-215 463.75,-88 463.75,-88 463.75,-82 469.75,-76 475.75,-76"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="544.5" y="-204" font-family="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
- <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>
26
+ <path fill="#2e1065" stroke="#6d28d9" d="M716.25,-8C716.25,-8 853.25,-8 853.25,-8 859.25,-8 865.25,-14 865.25,-20 865.25,-20 865.25,-215 865.25,-215 865.25,-221 859.25,-227 853.25,-227 853.25,-227 716.25,-227 716.25,-227 710.25,-227 704.25,-221 704.25,-215 704.25,-215 704.25,-20 704.25,-20 704.25,-14 710.25,-8 716.25,-8"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="784.75" y="-204" font-family="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
- <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>
32
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M61.75,-188C61.75,-188 12,-188 12,-188 6,-188 0,-182 0,-176 0,-176 0,-164 0,-164 0,-158 6,-152 12,-152 12,-152 61.75,-152 61.75,-152 67.75,-152 73.75,-158 73.75,-164 73.75,-164 73.75,-176 73.75,-176 73.75,-182 67.75,-188 61.75,-188"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="36.88" y="-172.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="-160.12" font-family="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
- <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>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M279.5,-256C279.5,-256 172.75,-256 172.75,-256 166.75,-256 160.75,-250 160.75,-244 160.75,-244 160.75,-232 160.75,-232 160.75,-226 166.75,-220 172.75,-220 172.75,-220 279.5,-220 279.5,-220 285.5,-220 291.5,-226 291.5,-232 291.5,-232 291.5,-244 291.5,-244 291.5,-250 285.5,-256 279.5,-256"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-240.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="-228.5" font-family="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">
45
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"/>
46
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-183.11C99.69,-192.45 134.86,-205.22 164.8,-216.09"/>
47
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="163.59,-218.63 172.06,-218.73 165.5,-213.37 163.59,-218.63"/>
48
48
  </g>
49
49
  <!-- Spider -->
50
50
  <g id="node3" class="node">
51
51
  <title>Spider</title>
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>
52
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M255.12,-188C255.12,-188 197.12,-188 197.12,-188 191.12,-188 185.12,-182 185.12,-176 185.12,-176 185.12,-164 185.12,-164 185.12,-158 191.12,-152 197.12,-152 197.12,-152 255.12,-152 255.12,-152 261.12,-152 267.12,-158 267.12,-164 267.12,-164 267.12,-176 267.12,-176 267.12,-182 261.12,-188 255.12,-188"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-172.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="-160.5" font-family="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">
58
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"/>
59
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-170C102.68,-170 143.15,-170 175,-170"/>
60
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="174.61,-172.8 182.61,-170 174.61,-167.2 174.61,-172.8"/>
61
61
  </g>
62
62
  <!-- WWW -->
63
63
  <g id="node4" class="node">
64
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">22 site drivers</text>
65
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M256.25,-120C256.25,-120 196,-120 196,-120 190,-120 184,-114 184,-108 184,-108 184,-96 184,-96 184,-90 190,-84 196,-84 196,-84 256.25,-84 256.25,-84 262.25,-84 268.25,-90 268.25,-96 268.25,-96 268.25,-108 268.25,-108 268.25,-114 262.25,-120 256.25,-120"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-104.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="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">22 site drivers</text>
68
68
  </g>
69
69
  <!-- Target&#45;&gt;WWW -->
70
70
  <g id="edge3" class="edge">
71
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"/>
72
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-156.89C102.51,-146.53 142.69,-131.94 174.44,-120.41"/>
73
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="175.17,-123.12 181.73,-117.76 173.26,-117.86 175.17,-123.12"/>
74
74
  </g>
75
75
  <!-- Burp -->
76
76
  <g id="node5" class="node">
77
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>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M592.5,-188C592.5,-188 495.5,-188 495.5,-188 489.5,-188 483.5,-182 483.5,-176 483.5,-176 483.5,-164 483.5,-164 483.5,-158 489.5,-152 495.5,-152 495.5,-152 592.5,-152 592.5,-152 598.5,-152 604.5,-158 604.5,-164 604.5,-164 604.5,-176 604.5,-176 604.5,-182 598.5,-188 592.5,-188"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="544" y="-172.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BurpSuite &#160;⭐</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="544" y="-160.12" font-family="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
- <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>
85
+ <path fill="none" stroke="#f59e0b" stroke-width="2" d="M291.81,-224.08C344.27,-212.78 418.1,-196.89 472.15,-185.25"/>
86
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="2" points="472.49,-188.04 479.72,-183.62 471.31,-182.57 472.49,-188.04"/>
87
+ <text xml:space="preserve" text-anchor="middle" x="377.62" y="-216.01" font-family="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">
91
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"/>
92
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M267.77,-170C319.49,-170 409.66,-170 472.64,-170"/>
93
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="472.54,-172.8 480.54,-170 472.54,-167.2 472.54,-172.8"/>
94
94
  </g>
95
95
  <!-- Zap -->
96
96
  <g id="node6" class="node">
97
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>
98
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M559.88,-120C559.88,-120 528.12,-120 528.12,-120 522.12,-120 516.12,-114 516.12,-108 516.12,-108 516.12,-96 516.12,-96 516.12,-90 522.12,-84 528.12,-84 528.12,-84 559.88,-84 559.88,-84 565.88,-84 571.88,-90 571.88,-96 571.88,-96 571.88,-108 571.88,-108 571.88,-114 565.88,-120 559.88,-120"/>
99
+ <text xml:space="preserve" text-anchor="middle" x="544" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Zaproxy</text>
100
+ <text xml:space="preserve" text-anchor="middle" x="544" y="-92.5" font-family="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">
104
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"/>
107
- </g>
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 -->
116
- <g id="edge7" class="edge">
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"/>
105
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M268.74,-102C330.82,-102 446.7,-102 505.99,-102"/>
106
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="505.72,-104.8 513.72,-102 505.72,-99.2 505.72,-104.8"/>
120
107
  </g>
121
108
  <!-- XSS -->
122
109
  <g id="node8" class="node">
123
110
  <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>
111
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M831,-188C831,-188 738.5,-188 738.5,-188 732.5,-188 726.5,-182 726.5,-176 726.5,-176 726.5,-164 726.5,-164 726.5,-158 732.5,-152 738.5,-152 738.5,-152 831,-152 831,-152 837,-152 843,-158 843,-164 843,-164 843,-176 843,-176 843,-182 837,-188 831,-188"/>
112
+ <text xml:space="preserve" text-anchor="middle" x="784.75" y="-172.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_xss_dom_vectors</text>
113
+ <text xml:space="preserve" text-anchor="middle" x="784.75" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">web_cache_deception</text>
127
114
  </g>
128
115
  <!-- Burp&#45;&gt;XSS -->
129
116
  <g id="edge8" class="edge">
130
117
  <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"/>
118
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M605.25,-170C639.09,-170 681.41,-170 716.35,-170"/>
119
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="716.03,-172.8 724.03,-170 716.03,-167.2 716.03,-172.8"/>
133
120
  </g>
134
121
  <!-- API -->
135
122
  <g id="node9" class="node">
136
123
  <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>
124
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M829.12,-120C829.12,-120 740.38,-120 740.38,-120 734.38,-120 728.38,-114 728.38,-108 728.38,-108 728.38,-96 728.38,-96 728.38,-90 734.38,-84 740.38,-84 740.38,-84 829.12,-84 829.12,-84 835.12,-84 841.12,-90 841.12,-96 841.12,-96 841.12,-108 841.12,-108 841.12,-114 835.12,-120 829.12,-120"/>
125
+ <text xml:space="preserve" text-anchor="middle" x="784.75" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::OpenAPI</text>
126
+ <text xml:space="preserve" text-anchor="middle" x="784.75" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">GraphQL introspection</text>
140
127
  </g>
141
128
  <!-- Zap&#45;&gt;API -->
142
129
  <g id="edge9" class="edge">
143
130
  <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"/>
131
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M572.39,-102C607.68,-102 670.19,-102 718.11,-102"/>
132
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="717.83,-104.8 725.82,-102 717.82,-99.2 717.83,-104.8"/>
133
+ </g>
134
+ <!-- SAST -->
135
+ <g id="node7" class="node">
136
+ <title>SAST</title>
137
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M845.25,-52C845.25,-52 724.25,-52 724.25,-52 718.25,-52 712.25,-46 712.25,-40 712.25,-40 712.25,-28 712.25,-28 712.25,-22 718.25,-16 724.25,-16 724.25,-16 845.25,-16 845.25,-16 851.25,-16 857.25,-22 857.25,-28 857.25,-28 857.25,-40 857.25,-40 857.25,-46 851.25,-52 845.25,-52"/>
138
+ <text xml:space="preserve" text-anchor="middle" x="784.75" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::SAST</text>
139
+ <text xml:space="preserve" text-anchor="middle" x="784.75" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">48 modules; source tree input</text>
146
140
  </g>
147
141
  <!-- Report -->
148
142
  <g id="node10" class="node">
149
143
  <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>
144
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M1027.75,-120C1027.75,-120 956.25,-120 956.25,-120 950.25,-120 944.25,-114 944.25,-108 944.25,-108 944.25,-96 944.25,-96 944.25,-90 950.25,-84 956.25,-84 956.25,-84 1027.75,-84 1027.75,-84 1033.75,-84 1039.75,-90 1039.75,-96 1039.75,-96 1039.75,-108 1039.75,-108 1039.75,-114 1033.75,-120 1027.75,-120"/>
145
+ <text xml:space="preserve" text-anchor="middle" x="992" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::Reports</text>
146
+ <text xml:space="preserve" text-anchor="middle" x="992" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">DefectDojo import</text>
153
147
  </g>
154
148
  <!-- SAST&#45;&gt;Report -->
155
149
  <g id="edge10" class="edge">
156
150
  <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"/>
151
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M841.84,-52.58C870.65,-62.13 905.66,-73.73 934.53,-83.29"/>
152
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="933.33,-85.84 941.8,-85.7 935.09,-80.53 933.33,-85.84"/>
159
153
  </g>
160
154
  <!-- XSS&#45;&gt;Report -->
161
155
  <g id="edge11" class="edge">
162
156
  <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"/>
157
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M841.84,-151.42C870.65,-141.87 905.66,-130.27 934.53,-120.71"/>
158
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="935.09,-123.47 941.8,-118.3 933.33,-118.16 935.09,-123.47"/>
165
159
  </g>
166
160
  <!-- API&#45;&gt;Report -->
167
161
  <g id="edge12" class="edge">
168
162
  <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"/>
163
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M841.56,-102C870.24,-102 905.11,-102 933.95,-102"/>
164
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="933.92,-104.8 941.92,-102 933.92,-99.2 933.92,-104.8"/>
165
+ </g>
166
+ <!-- Source -->
167
+ <g id="node11" class="node">
168
+ <title>Source</title>
169
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M608.62,-52C608.62,-52 479.38,-52 479.38,-52 473.38,-52 467.38,-46 467.38,-40 467.38,-40 467.38,-28 467.38,-28 467.38,-22 473.38,-16 479.38,-16 479.38,-16 608.62,-16 608.62,-16 614.62,-16 620.62,-22 620.62,-28 620.62,-28 620.62,-40 620.62,-40 620.62,-46 614.62,-52 608.62,-52"/>
170
+ <text xml:space="preserve" text-anchor="middle" x="544" y="-30.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Separately supplied source tree</text>
171
+ </g>
172
+ <!-- Source&#45;&gt;SAST -->
173
+ <g id="edge7" class="edge">
174
+ <title>Source&#45;&gt;SAST</title>
175
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M621.2,-34C646.97,-34 675.85,-34 702.04,-34"/>
176
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="701.96,-36.8 709.96,-34 701.96,-31.2 701.96,-36.8"/>
171
177
  </g>
172
178
  </g>
173
179
  </svg>