pwn 0.5.618 → 0.5.621

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +14 -6
  4. data/bin/pwn_gqrx_scanner +25 -5
  5. data/documentation/Agent-Tool-Registry.md +4 -4
  6. data/documentation/Cron.md +13 -0
  7. data/documentation/Diagrams.md +6 -2
  8. data/documentation/Extrospection.md +96 -11
  9. data/documentation/Home.md +5 -4
  10. data/documentation/How-PWN-Works.md +7 -4
  11. data/documentation/Mistakes.md +97 -0
  12. data/documentation/Persistence.md +4 -1
  13. data/documentation/SDR.md +23 -5
  14. data/documentation/Skills-Memory-Learning.md +16 -5
  15. data/documentation/Transparent-Browser.md +18 -1
  16. data/documentation/diagrams/agent-tool-registry.svg +103 -100
  17. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  18. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  19. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  20. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  21. data/documentation/diagrams/cron-scheduling.svg +23 -23
  22. data/documentation/diagrams/dot/agent-tool-registry.dot +3 -3
  23. data/documentation/diagrams/dot/extrospection-world-awareness.dot +33 -10
  24. data/documentation/diagrams/dot/memory-skills-detailed.dot +16 -5
  25. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
  26. data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
  27. data/documentation/diagrams/dot/persistence-filesystem.dot +4 -2
  28. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +25 -7
  29. data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
  30. data/documentation/diagrams/driver-framework.svg +13 -13
  31. data/documentation/diagrams/extrospection-world-awareness.svg +241 -93
  32. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  33. data/documentation/diagrams/hardware-hacking.svg +18 -18
  34. data/documentation/diagrams/history-to-drivers.svg +18 -18
  35. data/documentation/diagrams/memory-skills-detailed.svg +169 -97
  36. data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
  37. data/documentation/diagrams/network-infra-testing.svg +27 -27
  38. data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
  39. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  40. data/documentation/diagrams/persistence-filesystem.svg +111 -87
  41. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  42. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +263 -149
  43. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  44. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  45. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  46. data/documentation/diagrams/sdr-radio-flow.svg +76 -56
  47. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  48. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  49. data/documentation/diagrams/web-application-testing.svg +26 -26
  50. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  51. data/documentation/pwn-ai-Agent.md +28 -15
  52. data/lib/pwn/ai/agent/extrospection.rb +494 -6
  53. data/lib/pwn/ai/agent/learning.rb +67 -7
  54. data/lib/pwn/ai/agent/loop.rb +72 -6
  55. data/lib/pwn/ai/agent/mistakes.rb +369 -0
  56. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  57. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  58. data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
  59. data/lib/pwn/ai/agent.rb +1 -0
  60. data/lib/pwn/plugins/jira_data_center.rb +2 -2
  61. data/lib/pwn/sdr/decoder/adsb.rb +82 -0
  62. data/lib/pwn/sdr/decoder/apt.rb +136 -0
  63. data/lib/pwn/sdr/decoder/base.rb +258 -171
  64. data/lib/pwn/sdr/decoder/bluetooth.rb +71 -0
  65. data/lib/pwn/sdr/decoder/dect.rb +70 -0
  66. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  67. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  68. data/lib/pwn/sdr/decoder/gps.rb +74 -0
  69. data/lib/pwn/sdr/decoder/gsm.rb +31 -62
  70. data/lib/pwn/sdr/decoder/iridium.rb +66 -0
  71. data/lib/pwn/sdr/decoder/lora.rb +80 -0
  72. data/lib/pwn/sdr/decoder/lte.rb +67 -0
  73. data/lib/pwn/sdr/decoder/morse.rb +138 -0
  74. data/lib/pwn/sdr/decoder/p25.rb +74 -0
  75. data/lib/pwn/sdr/decoder/pager.rb +61 -0
  76. data/lib/pwn/sdr/decoder/pocsag.rb +176 -54
  77. data/lib/pwn/sdr/decoder/rfid.rb +79 -0
  78. data/lib/pwn/sdr/decoder/rtl433.rb +86 -0
  79. data/lib/pwn/sdr/decoder/rtty.rb +139 -0
  80. data/lib/pwn/sdr/decoder/wifi.rb +77 -0
  81. data/lib/pwn/sdr/decoder/zigbee.rb +74 -0
  82. data/lib/pwn/sdr/decoder.rb +75 -7
  83. data/lib/pwn/sdr/frequency_allocation.rb +82 -41
  84. data/lib/pwn/sdr/gqrx.rb +186 -95
  85. data/lib/pwn/version.rb +1 -1
  86. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
  87. data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
  88. data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
  89. data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
  90. data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
  91. data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
  92. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  93. data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
  94. data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
  95. data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
  96. data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
  97. data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
  98. data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
  99. data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
  100. data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
  101. data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
  102. data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
  103. data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
  104. data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
  105. data/third_party/pwn_rdoc.jsonl +115 -5
  106. metadata +46 -6
  107. data/README.md.bak +0 -200
@@ -0,0 +1,266 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN_Mistakes_Negative_Feedback Pages: 1 -->
7
+ <svg width="959pt" height="895pt"
8
+ viewBox="0.00 0.00 959.00 895.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 852.14)">
10
+ <title>PWN_Mistakes_Negative_Feedback</title>
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="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
+ <g id="clust1" class="cluster">
15
+ <title>cluster_in</title>
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="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">Four ingest paths</text>
18
+ </g>
19
+ <g id="clust3" class="cluster">
20
+ <title>cluster_fp</title>
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="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Fingerprint &#160;(stable across sessions)</text>
23
+ </g>
24
+ <g id="clust5" class="cluster">
25
+ <title>cluster_react</title>
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="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Reactions inside Loop.run</text>
28
+ </g>
29
+ <g id="clust7" class="cluster">
30
+ <title>cluster_out</title>
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="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Injected into every future prompt</text>
33
+ </g>
34
+ <!-- ToolFail -->
35
+ <g id="node1" class="node">
36
+ <title>ToolFail</title>
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="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
+ </g>
41
+ <!-- Norm -->
42
+ <g id="node5" class="node">
43
+ <title>Norm</title>
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="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
+ </g>
49
+ <!-- ToolFail&#45;&gt;Norm -->
50
+ <g id="edge1" class="edge">
51
+ <title>ToolFail&#45;&gt;Norm</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">record()</text>
55
+ </g>
56
+ <!-- LoopFail -->
57
+ <g id="node2" class="node">
58
+ <title>LoopFail</title>
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="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
+ </g>
63
+ <!-- LoopFail&#45;&gt;Norm -->
64
+ <g id="edge2" class="edge">
65
+ <title>LoopFail&#45;&gt;Norm</title>
66
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M268.04,-686.17C265.69,-665.16 261.69,-629.48 258.74,-603.13"/>
67
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="261.56,-603.14 257.89,-595.5 256,-603.76 261.56,-603.14"/>
68
+ </g>
69
+ <!-- UserCorr -->
70
+ <g id="node3" class="node">
71
+ <title>UserCorr</title>
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="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
+ </g>
76
+ <!-- Sig -->
77
+ <g id="node6" class="node">
78
+ <title>Sig</title>
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="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
+ </g>
83
+ <!-- UserCorr&#45;&gt;Sig -->
84
+ <g id="edge3" class="edge">
85
+ <title>UserCorr&#45;&gt;Sig</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">+ flip_last_outcome</text>
89
+ </g>
90
+ <!-- ModelRec -->
91
+ <g id="node4" class="node">
92
+ <title>ModelRec</title>
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="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
+ </g>
97
+ <!-- ModelRec&#45;&gt;Sig -->
98
+ <g id="edge4" class="edge">
99
+ <title>ModelRec&#45;&gt;Sig</title>
100
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M646.74,-686.17C619.5,-662.63 570.96,-620.66 540.18,-594.05"/>
101
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="542.13,-592.04 534.25,-588.92 538.47,-596.27 542.13,-592.04"/>
102
+ </g>
103
+ <!-- Norm&#45;&gt;Sig -->
104
+ <g id="edge5" class="edge">
105
+ <title>Norm&#45;&gt;Sig</title>
106
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M344.6,-568.69C369.42,-568.69 394.24,-568.69 419.07,-568.69"/>
107
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="418.99,-571.49 426.99,-568.69 418.99,-565.89 418.99,-571.49"/>
108
+ </g>
109
+ <!-- Store -->
110
+ <g id="node7" class="node">
111
+ <title>Store</title>
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
+ <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="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
+ </g>
118
+ <!-- Sig&#45;&gt;Store -->
119
+ <g id="edge6" class="edge">
120
+ <title>Sig&#45;&gt;Store</title>
121
+ <path fill="none" stroke="#f59e0b" stroke-width="2" d="M512,-549.92C512,-530.73 512,-499.44 512,-473.58"/>
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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">persist</text>
124
+ </g>
125
+ <!-- Guard -->
126
+ <g id="node8" class="node">
127
+ <title>Guard</title>
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="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
+ </g>
134
+ <!-- Store&#45;&gt;Guard -->
135
+ <g id="edge7" class="edge">
136
+ <title>Store&#45;&gt;Guard</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">count</text>
140
+ </g>
141
+ <!-- Hint -->
142
+ <g id="node9" class="node">
143
+ <title>Hint</title>
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="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
+ </g>
150
+ <!-- Store&#45;&gt;Hint -->
151
+ <g id="edge8" class="edge">
152
+ <title>Store&#45;&gt;Hint</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">fix?</text>
156
+ </g>
157
+ <!-- Regr -->
158
+ <g id="node10" class="node">
159
+ <title>Regr</title>
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="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
+ </g>
165
+ <!-- Store&#45;&gt;Regr -->
166
+ <g id="edge9" class="edge">
167
+ <title>Store&#45;&gt;Regr</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">resolved∧recur</text>
171
+ </g>
172
+ <!-- KMist -->
173
+ <g id="node11" class="node">
174
+ <title>KMist</title>
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="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
+ </g>
179
+ <!-- Guard&#45;&gt;KMist -->
180
+ <g id="edge10" class="edge">
181
+ <title>Guard&#45;&gt;KMist</title>
182
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M719.47,-238.31C684.79,-214.6 637.39,-182.2 605.79,-160.6"/>
183
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="607.53,-158.4 599.34,-156.19 604.37,-163.02 607.53,-158.4"/>
184
+ </g>
185
+ <!-- KFix -->
186
+ <g id="node12" class="node">
187
+ <title>KFix</title>
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="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
+ </g>
192
+ <!-- Hint&#45;&gt;KFix -->
193
+ <!-- Regr&#45;&gt;KMist -->
194
+ <g id="edge12" class="edge">
195
+ <title>Regr&#45;&gt;KMist</title>
196
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M574.46,-244.98C573.94,-222.33 573.16,-188.26 572.62,-164.57"/>
197
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="575.42,-164.71 572.44,-156.78 569.82,-164.84 575.42,-164.71"/>
198
+ </g>
199
+ <!-- Prompt -->
200
+ <g id="node14" class="node">
201
+ <title>Prompt</title>
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="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
+ </g>
206
+ <!-- KMist&#45;&gt;Prompt -->
207
+ <g id="edge16" class="edge">
208
+ <title>KMist&#45;&gt;Prompt</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">do NOT repeat</text>
212
+ </g>
213
+ <!-- KMist&#45;&gt;Prompt -->
214
+ <!-- KFix&#45;&gt;Prompt -->
215
+ <g id="edge17" class="edge">
216
+ <title>KFix&#45;&gt;Prompt</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">do THIS instead</text>
220
+ </g>
221
+ <!-- KFix&#45;&gt;Prompt -->
222
+ <!-- Mem -->
223
+ <g id="node13" class="node">
224
+ <title>Mem</title>
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="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
+ </g>
229
+ <!-- Mem&#45;&gt;Prompt -->
230
+ <g id="edge18" class="edge">
231
+ <title>Mem&#45;&gt;Prompt</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">MEMORY block</text>
235
+ </g>
236
+ <!-- Mem&#45;&gt;Prompt -->
237
+ <!-- Resolve -->
238
+ <g id="node15" class="node">
239
+ <title>Resolve</title>
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="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
+ </g>
244
+ <!-- Resolve&#45;&gt;Store -->
245
+ <g id="edge13" class="edge">
246
+ <title>Resolve&#45;&gt;Store</title>
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
+ <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="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
+ </g>
252
+ <!-- Resolve&#45;&gt;KFix -->
253
+ <g id="edge14" class="edge">
254
+ <title>Resolve&#45;&gt;KFix</title>
255
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M226.55,-409.87C228.43,-373.56 236.69,-289.26 273,-230.75 291.16,-201.49 321.67,-176.98 346.27,-160.45"/>
256
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="347.55,-162.95 352.71,-156.23 344.48,-158.27 347.55,-162.95"/>
257
+ </g>
258
+ <!-- Resolve&#45;&gt;Mem -->
259
+ <g id="edge15" class="edge">
260
+ <title>Resolve&#45;&gt;Mem</title>
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
+ <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="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">promote</text>
264
+ </g>
265
+ </g>
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">