pwn 0.5.620 → 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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/documentation/Agent-Tool-Registry.md +2 -2
  4. data/documentation/Cron.md +13 -0
  5. data/documentation/Diagrams.md +1 -1
  6. data/documentation/Extrospection.md +71 -5
  7. data/documentation/Home.md +2 -2
  8. data/documentation/How-PWN-Works.md +1 -1
  9. data/documentation/Mistakes.md +2 -1
  10. data/documentation/Persistence.md +2 -1
  11. data/documentation/Skills-Memory-Learning.md +1 -0
  12. data/documentation/Transparent-Browser.md +18 -1
  13. data/documentation/diagrams/agent-tool-registry.svg +55 -54
  14. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  15. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  16. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  17. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  18. data/documentation/diagrams/cron-scheduling.svg +23 -23
  19. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  20. data/documentation/diagrams/dot/extrospection-world-awareness.dot +29 -8
  21. data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -0
  22. data/documentation/diagrams/dot/overall-pwn-architecture.dot +2 -2
  23. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -1
  24. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +10 -4
  25. data/documentation/diagrams/driver-framework.svg +13 -13
  26. data/documentation/diagrams/extrospection-world-awareness.svg +229 -99
  27. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  28. data/documentation/diagrams/hardware-hacking.svg +18 -18
  29. data/documentation/diagrams/history-to-drivers.svg +18 -18
  30. data/documentation/diagrams/memory-skills-detailed.svg +124 -101
  31. data/documentation/diagrams/mistakes-negative-feedback.svg +55 -55
  32. data/documentation/diagrams/network-infra-testing.svg +27 -27
  33. data/documentation/diagrams/overall-pwn-architecture.svg +85 -85
  34. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  35. data/documentation/diagrams/persistence-filesystem.svg +94 -85
  36. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  37. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +226 -180
  38. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  39. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  40. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  41. data/documentation/diagrams/sdr-radio-flow.svg +31 -31
  42. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  43. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  44. data/documentation/diagrams/web-application-testing.svg +26 -26
  45. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  46. data/documentation/pwn-ai-Agent.md +1 -1
  47. data/lib/pwn/ai/agent/extrospection.rb +433 -4
  48. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  49. data/lib/pwn/sdr/decoder/adsb.rb +14 -33
  50. data/lib/pwn/sdr/decoder/apt.rb +97 -36
  51. data/lib/pwn/sdr/decoder/base.rb +258 -171
  52. data/lib/pwn/sdr/decoder/bluetooth.rb +13 -20
  53. data/lib/pwn/sdr/decoder/dect.rb +13 -27
  54. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  55. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  56. data/lib/pwn/sdr/decoder/gps.rb +12 -21
  57. data/lib/pwn/sdr/decoder/gsm.rb +21 -73
  58. data/lib/pwn/sdr/decoder/iridium.rb +11 -26
  59. data/lib/pwn/sdr/decoder/lora.rb +16 -23
  60. data/lib/pwn/sdr/decoder/lte.rb +11 -32
  61. data/lib/pwn/sdr/decoder/morse.rb +95 -21
  62. data/lib/pwn/sdr/decoder/p25.rb +19 -16
  63. data/lib/pwn/sdr/decoder/pager.rb +22 -38
  64. data/lib/pwn/sdr/decoder/pocsag.rb +175 -68
  65. data/lib/pwn/sdr/decoder/rfid.rb +24 -33
  66. data/lib/pwn/sdr/decoder/rtl433.rb +21 -30
  67. data/lib/pwn/sdr/decoder/rtty.rb +100 -27
  68. data/lib/pwn/sdr/decoder/wifi.rb +21 -42
  69. data/lib/pwn/sdr/decoder/zigbee.rb +18 -40
  70. data/lib/pwn/sdr/decoder.rb +8 -0
  71. data/lib/pwn/version.rb +1 -1
  72. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  73. data/third_party/pwn_rdoc.jsonl +24 -3
  74. metadata +3 -1
@@ -9,56 +9,56 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 852.14)">
10
10
  <title>PWN_Mistakes_Negative_Feedback</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-852.14 916.2,-852.14 916.2,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="179.62" y="-786.94" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Mistakes — Negative&#45;Feedback Loop</text>
13
- <text xml:space="preserve" text-anchor="start" x="260.25" y="-775.49" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">learn from mistakes · do NOT repeat them · cross&#45;session · self&#45;correcting</text>
12
+ <text xml:space="preserve" text-anchor="start" x="179.62" y="-786.94" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Mistakes — Negative&#45;Feedback Loop</text>
13
+ <text xml:space="preserve" text-anchor="start" x="260.25" y="-775.49" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">learn from mistakes · do NOT repeat them · cross&#45;session · self&#45;correcting</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_in</title>
16
16
  <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M20,-678.69C20,-678.69 737,-678.69 737,-678.69 743,-678.69 749,-684.69 749,-690.69 749,-690.69 749,-749.94 749,-749.94 749,-755.94 743,-761.94 737,-761.94 737,-761.94 20,-761.94 20,-761.94 14,-761.94 8,-755.94 8,-749.94 8,-749.94 8,-690.69 8,-690.69 8,-684.69 14,-678.69 20,-678.69"/>
17
- <text xml:space="preserve" text-anchor="middle" x="378.5" y="-738.94" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Four ingest paths</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="378.5" y="-738.94" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">Four ingest paths</text>
18
18
  </g>
19
19
  <g id="clust3" class="cluster">
20
20
  <title>cluster_fp</title>
21
21
  <path fill="#022c22" stroke="#047857" stroke-width="2" d="M170,-536.44C170,-536.44 590,-536.44 590,-536.44 596,-536.44 602,-542.44 602,-548.44 602,-548.44 602,-620.19 602,-620.19 602,-626.19 596,-632.19 590,-632.19 590,-632.19 170,-632.19 170,-632.19 164,-632.19 158,-626.19 158,-620.19 158,-620.19 158,-548.44 158,-548.44 158,-542.44 164,-536.44 170,-536.44"/>
22
- <text xml:space="preserve" text-anchor="middle" x="380" y="-609.19" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Fingerprint &#160;(stable across sessions)</text>
22
+ <text xml:space="preserve" text-anchor="middle" x="380" y="-609.19" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Fingerprint &#160;(stable across sessions)</text>
23
23
  </g>
24
24
  <g id="clust5" class="cluster">
25
25
  <title>cluster_react</title>
26
26
  <path fill="#2e1065" stroke="#6d28d9" stroke-width="2" d="M295,-230.75C295,-230.75 853,-230.75 853,-230.75 859,-230.75 865,-236.75 865,-242.75 865,-242.75 865,-328 865,-328 865,-334 859,-340 853,-340 853,-340 295,-340 295,-340 289,-340 283,-334 283,-328 283,-328 283,-242.75 283,-242.75 283,-236.75 289,-230.75 295,-230.75"/>
27
- <text xml:space="preserve" text-anchor="middle" x="574" y="-317" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Reactions inside Loop.run</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="574" y="-317" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Reactions inside Loop.run</text>
28
28
  </g>
29
29
  <g id="clust7" class="cluster">
30
30
  <title>cluster_out</title>
31
31
  <path fill="#422006" stroke="#a16207" stroke-width="2" d="M162,-110.5C162,-110.5 653,-110.5 653,-110.5 659,-110.5 665,-116.5 665,-122.5 665,-122.5 665,-181.75 665,-181.75 665,-187.75 659,-193.75 653,-193.75 653,-193.75 162,-193.75 162,-193.75 156,-193.75 150,-187.75 150,-181.75 150,-181.75 150,-122.5 150,-122.5 150,-116.5 156,-110.5 162,-110.5"/>
32
- <text xml:space="preserve" text-anchor="middle" x="407.5" y="-170.75" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Injected into every future prompt</text>
32
+ <text xml:space="preserve" text-anchor="middle" x="407.5" y="-170.75" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Injected into every future prompt</text>
33
33
  </g>
34
34
  <!-- ToolFail -->
35
35
  <g id="node1" class="node">
36
36
  <title>ToolFail</title>
37
37
  <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M143.5,-722.69C143.5,-722.69 28.5,-722.69 28.5,-722.69 22.5,-722.69 16.5,-716.69 16.5,-710.69 16.5,-710.69 16.5,-698.69 16.5,-698.69 16.5,-692.69 22.5,-686.69 28.5,-686.69 28.5,-686.69 143.5,-686.69 143.5,-686.69 149.5,-686.69 155.5,-692.69 155.5,-698.69 155.5,-698.69 155.5,-710.69 155.5,-710.69 155.5,-716.69 149.5,-722.69 143.5,-722.69"/>
38
- <text xml:space="preserve" text-anchor="middle" x="86" y="-707.74" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:tool</text>
39
- <text xml:space="preserve" text-anchor="middle" x="86" y="-694.24" font-family="sans-Serif" font-size="11.00" fill="#0f172a">Dispatch → success:false</text>
38
+ <text xml:space="preserve" text-anchor="middle" x="86" y="-707.74" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:tool</text>
39
+ <text xml:space="preserve" text-anchor="middle" x="86" y="-694.24" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">Dispatch → success:false</text>
40
40
  </g>
41
41
  <!-- Norm -->
42
42
  <g id="node5" class="node">
43
43
  <title>Norm</title>
44
44
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M332,-592.94C332,-592.94 178,-592.94 178,-592.94 172,-592.94 166,-586.94 166,-580.94 166,-580.94 166,-556.44 166,-556.44 166,-550.44 172,-544.44 178,-544.44 178,-544.44 332,-544.44 332,-544.44 338,-544.44 344,-550.44 344,-556.44 344,-556.44 344,-580.94 344,-580.94 344,-586.94 338,-592.94 332,-592.94"/>
45
- <text xml:space="preserve" text-anchor="middle" x="255" y="-578.49" font-family="sans-Serif" font-size="11.00" fill="#0f172a">normalize_error()</text>
46
- <text xml:space="preserve" text-anchor="middle" x="255" y="-564.99" font-family="sans-Serif" font-size="11.00" fill="#0f172a">strip paths · :LINE · 0xADDR</text>
47
- <text xml:space="preserve" text-anchor="middle" x="255" y="-551.49" font-family="sans-Serif" font-size="11.00" fill="#0f172a">port N · TIMESTAMP · UUID · pid</text>
45
+ <text xml:space="preserve" text-anchor="middle" x="255" y="-578.49" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">normalize_error()</text>
46
+ <text xml:space="preserve" text-anchor="middle" x="255" y="-564.99" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">strip paths · :LINE · 0xADDR</text>
47
+ <text xml:space="preserve" text-anchor="middle" x="255" y="-551.49" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">port N · TIMESTAMP · UUID · pid</text>
48
48
  </g>
49
49
  <!-- ToolFail&#45;&gt;Norm -->
50
50
  <g id="edge1" class="edge">
51
51
  <title>ToolFail&#45;&gt;Norm</title>
52
52
  <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M108.09,-686.17C135.76,-664.23 183.59,-626.31 217.14,-599.71"/>
53
53
  <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="218.84,-601.93 223.37,-594.77 215.36,-597.54 218.84,-601.93"/>
54
- <text xml:space="preserve" text-anchor="middle" x="181.56" y="-642.14" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">record()</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="181.56" y="-642.14" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">record()</text>
55
55
  </g>
56
56
  <!-- LoopFail -->
57
57
  <g id="node2" class="node">
58
58
  <title>LoopFail</title>
59
59
  <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M329.38,-722.69C329.38,-722.69 210.62,-722.69 210.62,-722.69 204.62,-722.69 198.62,-716.69 198.62,-710.69 198.62,-710.69 198.62,-698.69 198.62,-698.69 198.62,-692.69 204.62,-686.69 210.62,-686.69 210.62,-686.69 329.38,-686.69 329.38,-686.69 335.38,-686.69 341.38,-692.69 341.38,-698.69 341.38,-698.69 341.38,-710.69 341.38,-710.69 341.38,-716.69 335.38,-722.69 329.38,-722.69"/>
60
- <text xml:space="preserve" text-anchor="middle" x="270" y="-707.74" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:loop</text>
61
- <text xml:space="preserve" text-anchor="middle" x="270" y="-694.24" font-family="sans-Serif" font-size="11.00" fill="#0f172a">iteration budget exhausted</text>
60
+ <text xml:space="preserve" text-anchor="middle" x="270" y="-707.74" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:loop</text>
61
+ <text xml:space="preserve" text-anchor="middle" x="270" y="-694.24" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">iteration budget exhausted</text>
62
62
  </g>
63
63
  <!-- LoopFail&#45;&gt;Norm -->
64
64
  <g id="edge2" class="edge">
@@ -70,29 +70,29 @@
70
70
  <g id="node3" class="node">
71
71
  <title>UserCorr</title>
72
72
  <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M537.25,-722.69C537.25,-722.69 396.75,-722.69 396.75,-722.69 390.75,-722.69 384.75,-716.69 384.75,-710.69 384.75,-710.69 384.75,-698.69 384.75,-698.69 384.75,-692.69 390.75,-686.69 396.75,-686.69 396.75,-686.69 537.25,-686.69 537.25,-686.69 543.25,-686.69 549.25,-692.69 549.25,-698.69 549.25,-698.69 549.25,-710.69 549.25,-710.69 549.25,-716.69 543.25,-722.69 537.25,-722.69"/>
73
- <text xml:space="preserve" text-anchor="middle" x="467" y="-707.74" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:user_correction</text>
74
- <text xml:space="preserve" text-anchor="middle" x="467" y="-694.24" font-family="sans-Serif" font-size="11.00" fill="#0f172a">&quot;no that&#39;s wrong&quot; / &quot;still broken&quot;</text>
73
+ <text xml:space="preserve" text-anchor="middle" x="467" y="-707.74" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:user_correction</text>
74
+ <text xml:space="preserve" text-anchor="middle" x="467" y="-694.24" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">&quot;no that&#39;s wrong&quot; / &quot;still broken&quot;</text>
75
75
  </g>
76
76
  <!-- Sig -->
77
77
  <g id="node6" class="node">
78
78
  <title>Sig</title>
79
79
  <path fill="#6ee7b7" stroke="#334155" stroke-width="2" d="M582.25,-586.69C582.25,-586.69 441.75,-586.69 441.75,-586.69 435.75,-586.69 429.75,-580.69 429.75,-574.69 429.75,-574.69 429.75,-562.69 429.75,-562.69 429.75,-556.69 435.75,-550.69 441.75,-550.69 441.75,-550.69 582.25,-550.69 582.25,-550.69 588.25,-550.69 594.25,-556.69 594.25,-562.69 594.25,-562.69 594.25,-574.69 594.25,-574.69 594.25,-580.69 588.25,-586.69 582.25,-586.69"/>
80
- <text xml:space="preserve" text-anchor="middle" x="512" y="-571.74" font-family="sans-Serif" font-size="11.00" fill="#0f172a">signature = sha12(tool + norm)</text>
81
- <text xml:space="preserve" text-anchor="middle" x="512" y="-558.24" font-family="sans-Serif" font-size="11.00" fill="#0f172a">count++ &#160;(cross&#45;session)</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="512" y="-571.74" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">signature = sha12(tool + norm)</text>
81
+ <text xml:space="preserve" text-anchor="middle" x="512" y="-558.24" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">count++ &#160;(cross&#45;session)</text>
82
82
  </g>
83
83
  <!-- UserCorr&#45;&gt;Sig -->
84
84
  <g id="edge3" class="edge">
85
85
  <title>UserCorr&#45;&gt;Sig</title>
86
86
  <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M472.88,-686.17C480.52,-663.42 493.93,-623.49 502.89,-596.81"/>
87
87
  <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="505.45,-597.98 505.35,-589.5 500.14,-596.2 505.45,-597.98"/>
88
- <text xml:space="preserve" text-anchor="middle" x="527.9" y="-642.14" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">+ flip_last_outcome</text>
88
+ <text xml:space="preserve" text-anchor="middle" x="527.9" y="-642.14" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">+ flip_last_outcome</text>
89
89
  </g>
90
90
  <!-- ModelRec -->
91
91
  <g id="node4" class="node">
92
92
  <title>ModelRec</title>
93
93
  <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M729.38,-722.69C729.38,-722.69 604.62,-722.69 604.62,-722.69 598.62,-722.69 592.62,-716.69 592.62,-710.69 592.62,-710.69 592.62,-698.69 592.62,-698.69 592.62,-692.69 598.62,-686.69 604.62,-686.69 604.62,-686.69 729.38,-686.69 729.38,-686.69 735.38,-686.69 741.38,-692.69 741.38,-698.69 741.38,-698.69 741.38,-710.69 741.38,-710.69 741.38,-716.69 735.38,-722.69 729.38,-722.69"/>
94
- <text xml:space="preserve" text-anchor="middle" x="667" y="-707.74" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:model</text>
95
- <text xml:space="preserve" text-anchor="middle" x="667" y="-694.24" font-family="sans-Serif" font-size="11.00" fill="#0f172a">mistakes_record(tool, error)</text>
94
+ <text xml:space="preserve" text-anchor="middle" x="667" y="-707.74" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">:model</text>
95
+ <text xml:space="preserve" text-anchor="middle" x="667" y="-694.24" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">mistakes_record(tool, error)</text>
96
96
  </g>
97
97
  <!-- ModelRec&#45;&gt;Sig -->
98
98
  <g id="edge4" class="edge">
@@ -111,70 +111,70 @@
111
111
  <title>Store</title>
112
112
  <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M591.25,-455.88C591.25,-459.22 555.73,-461.94 512,-461.94 468.27,-461.94 432.75,-459.22 432.75,-455.88 432.75,-455.88 432.75,-401.31 432.75,-401.31 432.75,-397.97 468.27,-395.25 512,-395.25 555.73,-395.25 591.25,-397.97 591.25,-401.31 591.25,-401.31 591.25,-455.88 591.25,-455.88"/>
113
113
  <path fill="none" stroke="#334155" stroke-width="2" d="M591.25,-455.88C591.25,-452.53 555.73,-449.81 512,-449.81 468.27,-449.81 432.75,-452.53 432.75,-455.88"/>
114
- <text xml:space="preserve" text-anchor="middle" x="512" y="-438.39" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/mistakes.json</text>
115
- <text xml:space="preserve" text-anchor="middle" x="512" y="-424.89" font-family="sans-Serif" font-size="11.00" fill="#0f172a">{sig → tool·error·count·fix</text>
116
- <text xml:space="preserve" text-anchor="middle" x="512" y="-411.39" font-family="sans-Serif" font-size="11.00" fill="#0f172a"> resolved·regressed·sessions}</text>
114
+ <text xml:space="preserve" text-anchor="middle" x="512" y="-438.39" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/mistakes.json</text>
115
+ <text xml:space="preserve" text-anchor="middle" x="512" y="-424.89" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">{sig → tool·error·count·fix</text>
116
+ <text xml:space="preserve" text-anchor="middle" x="512" y="-411.39" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a"> resolved·regressed·sessions}</text>
117
117
  </g>
118
118
  <!-- Sig&#45;&gt;Store -->
119
119
  <g id="edge6" class="edge">
120
120
  <title>Sig&#45;&gt;Store</title>
121
121
  <path fill="none" stroke="#f59e0b" stroke-width="2" d="M512,-549.92C512,-530.73 512,-499.44 512,-473.58"/>
122
122
  <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="2" points="514.8,-473.91 512,-465.91 509.2,-473.91 514.8,-473.91"/>
123
- <text xml:space="preserve" text-anchor="middle" x="525.5" y="-499.89" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">persist</text>
123
+ <text xml:space="preserve" text-anchor="middle" x="525.5" y="-499.89" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">persist</text>
124
124
  </g>
125
125
  <!-- Guard -->
126
126
  <g id="node8" class="node">
127
127
  <title>Guard</title>
128
128
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M845.12,-300.75C845.12,-300.75 682.88,-300.75 682.88,-300.75 676.88,-300.75 670.88,-294.75 670.88,-288.75 670.88,-288.75 670.88,-250.75 670.88,-250.75 670.88,-244.75 676.88,-238.75 682.88,-238.75 682.88,-238.75 845.12,-238.75 845.12,-238.75 851.12,-238.75 857.12,-244.75 857.12,-250.75 857.12,-250.75 857.12,-288.75 857.12,-288.75 857.12,-294.75 851.12,-300.75 845.12,-300.75"/>
129
- <text xml:space="preserve" text-anchor="middle" x="764" y="-286.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">guard_repeated_failure</text>
130
- <text xml:space="preserve" text-anchor="middle" x="764" y="-272.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">max(turn, PERSISTENT count) ≥ 3</text>
131
- <text xml:space="preserve" text-anchor="middle" x="764" y="-259.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ trips on 1st recurrence</text>
132
- <text xml:space="preserve" text-anchor="middle" x="764" y="-245.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">in a new session</text>
129
+ <text xml:space="preserve" text-anchor="middle" x="764" y="-286.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">guard_repeated_failure</text>
130
+ <text xml:space="preserve" text-anchor="middle" x="764" y="-272.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">max(turn, PERSISTENT count) ≥ 3</text>
131
+ <text xml:space="preserve" text-anchor="middle" x="764" y="-259.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ trips on 1st recurrence</text>
132
+ <text xml:space="preserve" text-anchor="middle" x="764" y="-245.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">in a new session</text>
133
133
  </g>
134
134
  <!-- Store&#45;&gt;Guard -->
135
135
  <g id="edge7" class="edge">
136
136
  <title>Store&#45;&gt;Guard</title>
137
137
  <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M564.21,-395.1C605.71,-369.27 663.68,-333.19 706.5,-306.54"/>
138
138
  <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="707.87,-308.99 713.18,-302.38 704.91,-304.23 707.87,-308.99"/>
139
- <text xml:space="preserve" text-anchor="middle" x="649.25" y="-350.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">count</text>
139
+ <text xml:space="preserve" text-anchor="middle" x="649.25" y="-350.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">count</text>
140
140
  </g>
141
141
  <!-- Hint -->
142
142
  <g id="node9" class="node">
143
143
  <title>Hint</title>
144
144
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M467.25,-300.75C467.25,-300.75 302.75,-300.75 302.75,-300.75 296.75,-300.75 290.75,-294.75 290.75,-288.75 290.75,-288.75 290.75,-250.75 290.75,-250.75 290.75,-244.75 296.75,-238.75 302.75,-238.75 302.75,-238.75 467.25,-238.75 467.25,-238.75 473.25,-238.75 479.25,-244.75 479.25,-250.75 479.25,-250.75 479.25,-288.75 479.25,-288.75 479.25,-294.75 473.25,-300.75 467.25,-300.75"/>
145
- <text xml:space="preserve" text-anchor="middle" x="385" y="-286.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">correction_hint</text>
146
- <text xml:space="preserve" text-anchor="middle" x="385" y="-272.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">append to failed result:</text>
147
- <text xml:space="preserve" text-anchor="middle" x="385" y="-259.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">&quot;seen N×, sig=…, KNOWN FIX: …&quot;</text>
148
- <text xml:space="preserve" text-anchor="middle" x="385" y="-245.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ self&#45;correct NEXT iter</text>
145
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-286.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">correction_hint</text>
146
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-272.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">append to failed result:</text>
147
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-259.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">&quot;seen N×, sig=…, KNOWN FIX: …&quot;</text>
148
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-245.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ self&#45;correct NEXT iter</text>
149
149
  </g>
150
150
  <!-- Store&#45;&gt;Hint -->
151
151
  <g id="edge8" class="edge">
152
152
  <title>Store&#45;&gt;Hint</title>
153
153
  <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M485.07,-394.33C464.79,-369.29 436.96,-334.92 415.8,-308.79"/>
154
154
  <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="418.19,-307.29 410.98,-302.83 413.84,-310.81 418.19,-307.29"/>
155
- <text xml:space="preserve" text-anchor="middle" x="463.23" y="-350.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">fix?</text>
155
+ <text xml:space="preserve" text-anchor="middle" x="463.23" y="-350.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">fix?</text>
156
156
  </g>
157
157
  <!-- Regr -->
158
158
  <g id="node10" class="node">
159
159
  <title>Regr</title>
160
160
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M616,-294C616,-294 534,-294 534,-294 528,-294 522,-288 522,-282 522,-282 522,-257.5 522,-257.5 522,-251.5 528,-245.5 534,-245.5 534,-245.5 616,-245.5 616,-245.5 622,-245.5 628,-251.5 628,-257.5 628,-257.5 628,-282 628,-282 628,-288 622,-294 616,-294"/>
161
- <text xml:space="preserve" text-anchor="middle" x="575" y="-279.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">[REGRESSED]</text>
162
- <text xml:space="preserve" text-anchor="middle" x="575" y="-266.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">resolved sig recurs</text>
163
- <text xml:space="preserve" text-anchor="middle" x="575" y="-252.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ reopen + tag</text>
161
+ <text xml:space="preserve" text-anchor="middle" x="575" y="-279.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">[REGRESSED]</text>
162
+ <text xml:space="preserve" text-anchor="middle" x="575" y="-266.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">resolved sig recurs</text>
163
+ <text xml:space="preserve" text-anchor="middle" x="575" y="-252.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">→ reopen + tag</text>
164
164
  </g>
165
165
  <!-- Store&#45;&gt;Regr -->
166
166
  <g id="edge9" class="edge">
167
167
  <title>Store&#45;&gt;Regr</title>
168
168
  <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M525.36,-394.33C536.15,-367.46 551.25,-329.87 561.96,-303.22"/>
169
169
  <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="564.43,-304.58 564.81,-296.11 559.23,-302.49 564.43,-304.58"/>
170
- <text xml:space="preserve" text-anchor="middle" x="576.12" y="-350.7" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">resolved∧recur</text>
170
+ <text xml:space="preserve" text-anchor="middle" x="576.12" y="-350.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">resolved∧recur</text>
171
171
  </g>
172
172
  <!-- KMist -->
173
173
  <g id="node11" class="node">
174
174
  <title>KMist</title>
175
175
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M644.5,-154.5C644.5,-154.5 499.5,-154.5 499.5,-154.5 493.5,-154.5 487.5,-148.5 487.5,-142.5 487.5,-142.5 487.5,-130.5 487.5,-130.5 487.5,-124.5 493.5,-118.5 499.5,-118.5 499.5,-118.5 644.5,-118.5 644.5,-118.5 650.5,-118.5 656.5,-124.5 656.5,-130.5 656.5,-130.5 656.5,-142.5 656.5,-142.5 656.5,-148.5 650.5,-154.5 644.5,-154.5"/>
176
- <text xml:space="preserve" text-anchor="middle" x="572" y="-139.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">KNOWN MISTAKES</text>
177
- <text xml:space="preserve" text-anchor="middle" x="572" y="-126.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">✗ [sig] tool ×N [REPEATING]…</text>
176
+ <text xml:space="preserve" text-anchor="middle" x="572" y="-139.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">KNOWN MISTAKES</text>
177
+ <text xml:space="preserve" text-anchor="middle" x="572" y="-126.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">✗ [sig] tool ×N [REPEATING]…</text>
178
178
  </g>
179
179
  <!-- Guard&#45;&gt;KMist -->
180
180
  <g id="edge10" class="edge">
@@ -186,8 +186,8 @@
186
186
  <g id="node12" class="node">
187
187
  <title>KFix</title>
188
188
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M432.75,-154.5C432.75,-154.5 337.25,-154.5 337.25,-154.5 331.25,-154.5 325.25,-148.5 325.25,-142.5 325.25,-142.5 325.25,-130.5 325.25,-130.5 325.25,-124.5 331.25,-118.5 337.25,-118.5 337.25,-118.5 432.75,-118.5 432.75,-118.5 438.75,-118.5 444.75,-124.5 444.75,-130.5 444.75,-130.5 444.75,-142.5 444.75,-142.5 444.75,-148.5 438.75,-154.5 432.75,-154.5"/>
189
- <text xml:space="preserve" text-anchor="middle" x="385" y="-139.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">KNOWN FIXES</text>
190
- <text xml:space="preserve" text-anchor="middle" x="385" y="-126.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">✓ [sig] tool — FIX: …</text>
189
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-139.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">KNOWN FIXES</text>
190
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-126.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">✓ [sig] tool — FIX: …</text>
191
191
  </g>
192
192
  <!-- Hint&#45;&gt;KFix -->
193
193
  <!-- Regr&#45;&gt;KMist -->
@@ -200,15 +200,15 @@
200
200
  <g id="node14" class="node">
201
201
  <title>Prompt</title>
202
202
  <path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M416.25,-36C416.25,-36 353.75,-36 353.75,-36 347.75,-36 341.75,-30 341.75,-24 341.75,-24 341.75,-12 341.75,-12 341.75,-6 347.75,0 353.75,0 353.75,0 416.25,0 416.25,0 422.25,0 428.25,-6 428.25,-12 428.25,-12 428.25,-24 428.25,-24 428.25,-30 422.25,-36 416.25,-36"/>
203
- <text xml:space="preserve" text-anchor="middle" x="385" y="-21.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
204
- <text xml:space="preserve" text-anchor="middle" x="385" y="-7.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">system prompt</text>
203
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-21.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">PromptBuilder</text>
204
+ <text xml:space="preserve" text-anchor="middle" x="385" y="-7.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">system prompt</text>
205
205
  </g>
206
206
  <!-- KMist&#45;&gt;Prompt -->
207
207
  <g id="edge16" class="edge">
208
208
  <title>KMist&#45;&gt;Prompt</title>
209
209
  <path fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5,2" d="M503.87,-117.86C491.34,-115.07 478.32,-112.46 466,-110.5 429.11,-104.64 156.29,-109.99 131,-82.5 102.58,-51.61 247.4,-32.24 330.26,-23.84"/>
210
210
  <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="330.33,-26.65 338.02,-23.08 329.78,-21.08 330.33,-26.65"/>
211
- <text xml:space="preserve" text-anchor="middle" x="161" y="-73.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">do NOT repeat</text>
211
+ <text xml:space="preserve" text-anchor="middle" x="161" y="-73.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">do NOT repeat</text>
212
212
  </g>
213
213
  <!-- KMist&#45;&gt;Prompt -->
214
214
  <!-- KFix&#45;&gt;Prompt -->
@@ -216,38 +216,38 @@
216
216
  <title>KFix&#45;&gt;Prompt</title>
217
217
  <path fill="none" stroke="#fbbf24" stroke-width="2" stroke-dasharray="5,2" d="M324.56,-119.66C297.76,-109.32 274.88,-93.67 287.75,-72 297.43,-55.69 314.09,-44.08 330.92,-35.97"/>
218
218
  <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="2" points="331.84,-38.62 338.02,-32.82 329.57,-33.51 331.84,-38.62"/>
219
- <text xml:space="preserve" text-anchor="middle" x="320.38" y="-73.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">do THIS instead</text>
219
+ <text xml:space="preserve" text-anchor="middle" x="320.38" y="-73.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">do THIS instead</text>
220
220
  </g>
221
221
  <!-- KFix&#45;&gt;Prompt -->
222
222
  <!-- Mem -->
223
223
  <g id="node13" class="node">
224
224
  <title>Mem</title>
225
225
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M270,-154.5C270,-154.5 170,-154.5 170,-154.5 164,-154.5 158,-148.5 158,-142.5 158,-142.5 158,-130.5 158,-130.5 158,-124.5 164,-118.5 170,-118.5 170,-118.5 270,-118.5 270,-118.5 276,-118.5 282,-124.5 282,-130.5 282,-130.5 282,-142.5 282,-142.5 282,-148.5 276,-154.5 270,-154.5"/>
226
- <text xml:space="preserve" text-anchor="middle" x="220" y="-139.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PWN::Memory :lesson</text>
227
- <text xml:space="preserve" text-anchor="middle" x="220" y="-126.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">&quot;AVOID X — FIX: Y&quot;</text>
226
+ <text xml:space="preserve" text-anchor="middle" x="220" y="-139.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">PWN::Memory :lesson</text>
227
+ <text xml:space="preserve" text-anchor="middle" x="220" y="-126.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">&quot;AVOID X — FIX: Y&quot;</text>
228
228
  </g>
229
229
  <!-- Mem&#45;&gt;Prompt -->
230
230
  <g id="edge18" class="edge">
231
231
  <title>Mem&#45;&gt;Prompt</title>
232
232
  <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M274.34,-117.85C311.92,-105.23 356.33,-89.31 363,-82.5 372.53,-72.76 377.94,-58.7 381.01,-46.27"/>
233
233
  <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="383.7,-47.11 382.6,-38.71 378.22,-45.96 383.7,-47.11"/>
234
- <text xml:space="preserve" text-anchor="middle" x="402.91" y="-73.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">MEMORY block</text>
234
+ <text xml:space="preserve" text-anchor="middle" x="402.91" y="-73.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">MEMORY block</text>
235
235
  </g>
236
236
  <!-- Mem&#45;&gt;Prompt -->
237
237
  <!-- Resolve -->
238
238
  <g id="node15" class="node">
239
239
  <title>Resolve</title>
240
240
  <path fill="#6ee7b7" stroke="#334155" stroke-width="2" d="M263.25,-446.59C263.25,-446.59 188.75,-446.59 188.75,-446.59 182.75,-446.59 176.75,-440.59 176.75,-434.59 176.75,-434.59 176.75,-422.59 176.75,-422.59 176.75,-416.59 182.75,-410.59 188.75,-410.59 188.75,-410.59 263.25,-410.59 263.25,-410.59 269.25,-410.59 275.25,-416.59 275.25,-422.59 275.25,-422.59 275.25,-434.59 275.25,-434.59 275.25,-440.59 269.25,-446.59 263.25,-446.59"/>
241
- <text xml:space="preserve" text-anchor="middle" x="226" y="-431.64" font-family="sans-Serif" font-size="11.00" fill="#0f172a">mistakes_resolve</text>
242
- <text xml:space="preserve" text-anchor="middle" x="226" y="-418.14" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(signature, fix)</text>
241
+ <text xml:space="preserve" text-anchor="middle" x="226" y="-431.64" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">mistakes_resolve</text>
242
+ <text xml:space="preserve" text-anchor="middle" x="226" y="-418.14" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#0f172a">(signature, fix)</text>
243
243
  </g>
244
244
  <!-- Resolve&#45;&gt;Store -->
245
245
  <g id="edge13" class="edge">
246
246
  <title>Resolve&#45;&gt;Store</title>
247
247
  <path fill="none" stroke="#34d399" stroke-width="2" d="M276.14,-428.59C316.05,-428.59 372.95,-428.59 420.87,-428.59"/>
248
248
  <polygon fill="#34d399" stroke="#34d399" stroke-width="2" points="420.86,-431.39 428.86,-428.59 420.86,-425.79 420.86,-431.39"/>
249
- <text xml:space="preserve" text-anchor="middle" x="354" y="-444.04" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">resolved:true</text>
250
- <text xml:space="preserve" text-anchor="middle" x="354" y="-433.54" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">fix:…</text>
249
+ <text xml:space="preserve" text-anchor="middle" x="354" y="-444.04" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">resolved:true</text>
250
+ <text xml:space="preserve" text-anchor="middle" x="354" y="-433.54" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">fix:…</text>
251
251
  </g>
252
252
  <!-- Resolve&#45;&gt;KFix -->
253
253
  <g id="edge14" class="edge">
@@ -260,7 +260,7 @@
260
260
  <title>Resolve&#45;&gt;Mem</title>
261
261
  <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M207.1,-409.87C191.14,-393.5 169.46,-367.6 160.25,-340 144.89,-293.94 146.6,-277.35 160.25,-230.75 167.7,-205.31 184.46,-180.22 198.34,-162.49"/>
262
262
  <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="200.39,-164.4 203.23,-156.41 196.03,-160.89 200.39,-164.4"/>
263
- <text xml:space="preserve" text-anchor="middle" x="177.12" y="-266.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">promote</text>
263
+ <text xml:space="preserve" text-anchor="middle" x="177.12" y="-266.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">promote</text>
264
264
  </g>
265
265
  </g>
266
266
  </svg>
@@ -9,41 +9,41 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 317.2)">
10
10
  <title>PWN_Network</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-317.2 1127.45,-317.2 1127.45,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="388.75" y="-252" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Network &amp; Infrastructure Testing</text>
13
- <text xml:space="preserve" text-anchor="start" x="410.12" y="-240.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">discovery → service enum → auth attacks → cloud / CI</text>
12
+ <text xml:space="preserve" text-anchor="start" x="388.75" y="-252" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Network &amp; Infrastructure Testing</text>
13
+ <text xml:space="preserve" text-anchor="start" x="410.12" y="-240.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">discovery → service enum → auth attacks → cloud / CI</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_disc</title>
16
16
  <path fill="#022c22" stroke="#047857" d="M160.75,-76C160.75,-76 297.75,-76 297.75,-76 303.75,-76 309.75,-82 309.75,-88 309.75,-88 309.75,-215 309.75,-215 309.75,-221 303.75,-227 297.75,-227 297.75,-227 160.75,-227 160.75,-227 154.75,-227 148.75,-221 148.75,-215 148.75,-215 148.75,-88 148.75,-88 148.75,-82 154.75,-76 160.75,-76"/>
17
- <text xml:space="preserve" text-anchor="middle" x="229.25" y="-204" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Discover</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="229.25" y="-204" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Discover</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_svc</title>
21
21
  <path fill="#422006" stroke="#a16207" d="M391.75,-8C391.75,-8 508.25,-8 508.25,-8 514.25,-8 520.25,-14 520.25,-20 520.25,-20 520.25,-215 520.25,-215 520.25,-221 514.25,-227 508.25,-227 508.25,-227 391.75,-227 391.75,-227 385.75,-227 379.75,-221 379.75,-215 379.75,-215 379.75,-20 379.75,-20 379.75,-14 385.75,-8 391.75,-8"/>
22
- <text xml:space="preserve" text-anchor="middle" x="450" y="-204" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Service Enum</text>
22
+ <text xml:space="preserve" text-anchor="middle" x="450" y="-204" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Service Enum</text>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
25
  <title>cluster_auth</title>
26
26
  <path fill="#450a0a" stroke="#b91c1c" d="M602.25,-8C602.25,-8 711.25,-8 711.25,-8 717.25,-8 723.25,-14 723.25,-20 723.25,-20 723.25,-147 723.25,-147 723.25,-153 717.25,-159 711.25,-159 711.25,-159 602.25,-159 602.25,-159 596.25,-159 590.25,-153 590.25,-147 590.25,-147 590.25,-20 590.25,-20 590.25,-14 596.25,-8 602.25,-8"/>
27
- <text xml:space="preserve" text-anchor="middle" x="656.75" y="-136" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Auth / Exploit</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="656.75" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">Auth / Exploit</text>
28
28
  </g>
29
29
  <g id="clust4" class="cluster">
30
30
  <title>cluster_cloud</title>
31
31
  <path fill="#2e1065" stroke="#6d28d9" d="M805.25,-8C805.25,-8 885.25,-8 885.25,-8 891.25,-8 897.25,-14 897.25,-20 897.25,-20 897.25,-147 897.25,-147 897.25,-153 891.25,-159 885.25,-159 885.25,-159 805.25,-159 805.25,-159 799.25,-159 793.25,-153 793.25,-147 793.25,-147 793.25,-20 793.25,-20 793.25,-14 799.25,-8 805.25,-8"/>
32
- <text xml:space="preserve" text-anchor="middle" x="845.25" y="-136" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Cloud / CI</text>
32
+ <text xml:space="preserve" text-anchor="middle" x="845.25" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Cloud / CI</text>
33
33
  </g>
34
34
  <!-- CIDR -->
35
35
  <g id="node1" class="node">
36
36
  <title>CIDR</title>
37
37
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M58.75,-154C58.75,-154 12,-154 12,-154 6,-154 0,-148 0,-142 0,-142 0,-130 0,-130 0,-124 6,-118 12,-118 12,-118 58.75,-118 58.75,-118 64.75,-118 70.75,-124 70.75,-130 70.75,-130 70.75,-142 70.75,-142 70.75,-148 64.75,-154 58.75,-154"/>
38
- <text xml:space="preserve" text-anchor="middle" x="35.38" y="-138.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CIDR / ASN</text>
39
- <text xml:space="preserve" text-anchor="middle" x="35.38" y="-126.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">scope</text>
38
+ <text xml:space="preserve" text-anchor="middle" x="35.38" y="-138.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">CIDR / ASN</text>
39
+ <text xml:space="preserve" text-anchor="middle" x="35.38" y="-126.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">scope</text>
40
40
  </g>
41
41
  <!-- Nmap -->
42
42
  <g id="node2" class="node">
43
43
  <title>Nmap</title>
44
44
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M289.75,-120C289.75,-120 168.75,-120 168.75,-120 162.75,-120 156.75,-114 156.75,-108 156.75,-108 156.75,-96 156.75,-96 156.75,-90 162.75,-84 168.75,-84 168.75,-84 289.75,-84 289.75,-84 295.75,-84 301.75,-90 301.75,-96 301.75,-96 301.75,-108 301.75,-108 301.75,-114 295.75,-120 289.75,-120"/>
45
- <text xml:space="preserve" text-anchor="middle" x="229.25" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">NmapIt</text>
46
- <text xml:space="preserve" text-anchor="middle" x="229.25" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_nmap_discover_tcp_udp</text>
45
+ <text xml:space="preserve" text-anchor="middle" x="229.25" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">NmapIt</text>
46
+ <text xml:space="preserve" text-anchor="middle" x="229.25" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">pwn_nmap_discover_tcp_udp</text>
47
47
  </g>
48
48
  <!-- CIDR&#45;&gt;Nmap -->
49
49
  <g id="edge1" class="edge">
@@ -55,8 +55,8 @@
55
55
  <g id="node3" class="node">
56
56
  <title>Packet</title>
57
57
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M259.75,-188C259.75,-188 198.75,-188 198.75,-188 192.75,-188 186.75,-182 186.75,-176 186.75,-176 186.75,-164 186.75,-164 186.75,-158 192.75,-152 198.75,-152 198.75,-152 259.75,-152 259.75,-152 265.75,-152 271.75,-158 271.75,-164 271.75,-164 271.75,-176 271.75,-176 271.75,-182 265.75,-188 259.75,-188"/>
58
- <text xml:space="preserve" text-anchor="middle" x="229.25" y="-172.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
59
- <text xml:space="preserve" text-anchor="middle" x="229.25" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">raw craft / sniff</text>
58
+ <text xml:space="preserve" text-anchor="middle" x="229.25" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
59
+ <text xml:space="preserve" text-anchor="middle" x="229.25" y="-160.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">raw craft / sniff</text>
60
60
  </g>
61
61
  <!-- CIDR&#45;&gt;Packet -->
62
62
  <g id="edge2" class="edge">
@@ -68,8 +68,8 @@
68
68
  <g id="node4" class="node">
69
69
  <title>Sock</title>
70
70
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M475.88,-52C475.88,-52 423.12,-52 423.12,-52 417.12,-52 411.12,-46 411.12,-40 411.12,-40 411.12,-28 411.12,-28 411.12,-22 417.12,-16 423.12,-16 423.12,-16 475.88,-16 475.88,-16 481.88,-16 487.88,-22 487.88,-28 487.88,-28 487.88,-40 487.88,-40 487.88,-46 481.88,-52 475.88,-52"/>
71
- <text xml:space="preserve" text-anchor="middle" x="449.5" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
72
- <text xml:space="preserve" text-anchor="middle" x="449.5" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">banner grab</text>
71
+ <text xml:space="preserve" text-anchor="middle" x="449.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
72
+ <text xml:space="preserve" text-anchor="middle" x="449.5" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">banner grab</text>
73
73
  </g>
74
74
  <!-- Nmap&#45;&gt;Sock -->
75
75
  <g id="edge3" class="edge">
@@ -81,8 +81,8 @@
81
81
  <g id="node5" class="node">
82
82
  <title>DAO</title>
83
83
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M491.62,-120C491.62,-120 407.38,-120 407.38,-120 401.38,-120 395.38,-114 395.38,-108 395.38,-108 395.38,-96 395.38,-96 395.38,-90 401.38,-84 407.38,-84 407.38,-84 491.62,-84 491.62,-84 497.62,-84 503.62,-90 503.62,-96 503.62,-96 503.62,-108 503.62,-108 503.62,-114 497.62,-120 491.62,-120"/>
84
- <text xml:space="preserve" text-anchor="middle" x="449.5" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">DAO::LDAP · Mongo</text>
85
- <text xml:space="preserve" text-anchor="middle" x="449.5" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Postgres · SQLite3</text>
84
+ <text xml:space="preserve" text-anchor="middle" x="449.5" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">DAO::LDAP · Mongo</text>
85
+ <text xml:space="preserve" text-anchor="middle" x="449.5" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Postgres · SQLite3</text>
86
86
  </g>
87
87
  <!-- Nmap&#45;&gt;DAO -->
88
88
  <g id="edge4" class="edge">
@@ -94,8 +94,8 @@
94
94
  <g id="node6" class="node">
95
95
  <title>MQ</title>
96
96
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M484.88,-188C484.88,-188 414.12,-188 414.12,-188 408.12,-188 402.12,-182 402.12,-176 402.12,-176 402.12,-164 402.12,-164 402.12,-158 408.12,-152 414.12,-152 414.12,-152 484.88,-152 484.88,-152 490.88,-152 496.88,-158 496.88,-164 496.88,-164 496.88,-176 496.88,-176 496.88,-182 490.88,-188 484.88,-188"/>
97
- <text xml:space="preserve" text-anchor="middle" x="449.5" y="-172.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RabbitMQ</text>
98
- <text xml:space="preserve" text-anchor="middle" x="449.5" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Slack · IRC · Mail</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="449.5" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">RabbitMQ</text>
98
+ <text xml:space="preserve" text-anchor="middle" x="449.5" y="-160.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Slack · IRC · Mail</text>
99
99
  </g>
100
100
  <!-- Packet&#45;&gt;MQ -->
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="M694.62,-52C694.62,-52 617.88,-52 617.88,-52 611.88,-52 605.88,-46 605.88,-40 605.88,-40 605.88,-28 605.88,-28 605.88,-22 611.88,-16 617.88,-16 617.88,-16 694.62,-16 694.62,-16 700.62,-16 706.62,-22 706.62,-28 706.62,-28 706.62,-40 706.62,-40 706.62,-46 700.62,-52 694.62,-52"/>
110
- <text xml:space="preserve" text-anchor="middle" x="656.25" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Metasploit</text>
111
- <text xml:space="preserve" text-anchor="middle" x="656.25" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">msf_postgres_login</text>
110
+ <text xml:space="preserve" text-anchor="middle" x="656.25" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Metasploit</text>
111
+ <text xml:space="preserve" text-anchor="middle" x="656.25" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">msf_postgres_login</text>
112
112
  </g>
113
113
  <!-- Sock&#45;&gt;MSF -->
114
114
  <g id="edge6" class="edge">
@@ -120,8 +120,8 @@
120
120
  <g id="node8" class="node">
121
121
  <title>Auth</title>
122
122
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M697.62,-120C697.62,-120 614.88,-120 614.88,-120 608.88,-120 602.88,-114 602.88,-108 602.88,-108 602.88,-96 602.88,-96 602.88,-90 608.88,-84 614.88,-84 614.88,-84 697.62,-84 697.62,-84 703.62,-84 709.62,-90 709.62,-96 709.62,-96 709.62,-108 709.62,-108 709.62,-114 703.62,-120 697.62,-120"/>
123
- <text xml:space="preserve" text-anchor="middle" x="656.25" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BasicAuth · OAuth2</text>
124
- <text xml:space="preserve" text-anchor="middle" x="656.25" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">AuthenticationHelper</text>
123
+ <text xml:space="preserve" text-anchor="middle" x="656.25" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">BasicAuth · OAuth2</text>
124
+ <text xml:space="preserve" text-anchor="middle" x="656.25" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">AuthenticationHelper</text>
125
125
  </g>
126
126
  <!-- DAO&#45;&gt;Auth -->
127
127
  <g id="edge7" class="edge">
@@ -139,8 +139,8 @@
139
139
  <g id="node9" class="node">
140
140
  <title>AWS</title>
141
141
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M872.38,-52C872.38,-52 818.12,-52 818.12,-52 812.12,-52 806.12,-46 806.12,-40 806.12,-40 806.12,-28 806.12,-28 806.12,-22 812.12,-16 818.12,-16 818.12,-16 872.38,-16 872.38,-16 878.38,-16 884.38,-22 884.38,-28 884.38,-28 884.38,-40 884.38,-40 884.38,-46 878.38,-52 872.38,-52"/>
142
- <text xml:space="preserve" text-anchor="middle" x="845.25" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::AWS::*</text>
143
- <text xml:space="preserve" text-anchor="middle" x="845.25" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">90 services</text>
142
+ <text xml:space="preserve" text-anchor="middle" x="845.25" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">PWN::AWS::*</text>
143
+ <text xml:space="preserve" text-anchor="middle" x="845.25" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">90 services</text>
144
144
  </g>
145
145
  <!-- MSF&#45;&gt;AWS -->
146
146
  <g id="edge9" class="edge">
@@ -152,8 +152,8 @@
152
152
  <g id="node10" class="node">
153
153
  <title>Jenk</title>
154
154
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M877.25,-120C877.25,-120 813.25,-120 813.25,-120 807.25,-120 801.25,-114 801.25,-108 801.25,-108 801.25,-96 801.25,-96 801.25,-90 807.25,-84 813.25,-84 813.25,-84 877.25,-84 877.25,-84 883.25,-84 889.25,-90 889.25,-96 889.25,-96 889.25,-108 889.25,-108 889.25,-114 883.25,-120 877.25,-120"/>
155
- <text xml:space="preserve" text-anchor="middle" x="845.25" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Jenkins</text>
156
- <text xml:space="preserve" text-anchor="middle" x="845.25" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">vSphere · Vault</text>
155
+ <text xml:space="preserve" text-anchor="middle" x="845.25" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Jenkins</text>
156
+ <text xml:space="preserve" text-anchor="middle" x="845.25" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">vSphere · Vault</text>
157
157
  </g>
158
158
  <!-- Auth&#45;&gt;Jenk -->
159
159
  <g id="edge10" class="edge">
@@ -165,7 +165,7 @@
165
165
  <g id="node11" class="node">
166
166
  <title>Report</title>
167
167
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M1072.25,-86C1072.25,-86 987.25,-86 987.25,-86 981.25,-86 975.25,-80 975.25,-74 975.25,-74 975.25,-62 975.25,-62 975.25,-56 981.25,-50 987.25,-50 987.25,-50 1072.25,-50 1072.25,-50 1078.25,-50 1084.25,-56 1084.25,-62 1084.25,-62 1084.25,-74 1084.25,-74 1084.25,-80 1078.25,-86 1072.25,-86"/>
168
- <text xml:space="preserve" text-anchor="middle" x="1029.75" y="-64.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports · DefectDojo</text>
168
+ <text xml:space="preserve" text-anchor="middle" x="1029.75" y="-64.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Reports · DefectDojo</text>
169
169
  </g>
170
170
  <!-- AWS&#45;&gt;Report -->
171
171
  <g id="edge11" class="edge">