pwn 0.5.613 → 0.5.617

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -10
  3. data/README.md +117 -17
  4. data/bin/pwn +47 -2
  5. data/bin/pwn_gqrx_scanner +75 -18
  6. data/documentation/AI-Integration.md +36 -0
  7. data/documentation/BurpSuite.md +26 -0
  8. data/documentation/Contributing.md +31 -0
  9. data/documentation/Diagrams.md +140 -0
  10. data/documentation/Drivers.md +25 -0
  11. data/documentation/General-PWN-Usage.md +60 -0
  12. data/documentation/Home.md +78 -0
  13. data/documentation/How-PWN-Works.md +62 -0
  14. data/documentation/Installation.md +75 -0
  15. data/documentation/NmapIt.md +18 -0
  16. data/documentation/Plugins.md +59 -0
  17. data/documentation/Reporting.md +28 -0
  18. data/documentation/SAST.md +32 -0
  19. data/documentation/Skills-Memory-Learning.md +44 -0
  20. data/documentation/Transparent-Browser.md +32 -0
  21. data/documentation/Troubleshooting.md +38 -0
  22. data/documentation/What-is-PWN.md +53 -0
  23. data/documentation/Why-PWN.md +48 -0
  24. data/documentation/diagrams/ai-integration-tool-calling.svg +172 -0
  25. data/documentation/diagrams/build.sh +20 -0
  26. data/documentation/diagrams/burp-vs-zap-preference.svg +69 -0
  27. data/documentation/diagrams/code-scanning-sast.svg +172 -0
  28. data/documentation/diagrams/dot/_THEME.md +27 -0
  29. data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
  30. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +50 -0
  31. data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
  32. data/documentation/diagrams/dot/burp-vs-zap-preference.dot +26 -0
  33. data/documentation/diagrams/dot/code-scanning-sast.dot +49 -0
  34. data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
  35. data/documentation/diagrams/dot/driver-framework.dot +39 -0
  36. data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
  37. data/documentation/diagrams/dot/fuzzing-workflow.dot +47 -0
  38. data/documentation/diagrams/dot/history-to-drivers.dot +34 -0
  39. data/documentation/diagrams/dot/memory-skills-detailed.dot +60 -0
  40. data/documentation/diagrams/dot/network-infra-testing.dot +54 -0
  41. data/documentation/diagrams/dot/overall-pwn-architecture.dot +115 -0
  42. data/documentation/diagrams/dot/penetration-testing-workflow.dot +60 -0
  43. data/documentation/diagrams/dot/plugin-ecosystem.dot +45 -0
  44. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +98 -0
  45. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +56 -0
  46. data/documentation/diagrams/dot/reporting-pipeline.dot +46 -0
  47. data/documentation/diagrams/dot/reverse-engineering-flow.dot +43 -0
  48. data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
  49. data/documentation/diagrams/dot/sessions-cron-automation.dot +44 -0
  50. data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
  51. data/documentation/diagrams/dot/web-application-testing.dot +49 -0
  52. data/documentation/diagrams/dot/zero-day-research-flow.dot +49 -0
  53. data/documentation/diagrams/driver-framework.svg +111 -0
  54. data/documentation/diagrams/fuzzing-workflow.svg +160 -0
  55. data/documentation/diagrams/history-to-drivers.svg +119 -0
  56. data/documentation/diagrams/memory-skills-detailed.svg +202 -0
  57. data/documentation/diagrams/network-infra-testing.svg +183 -0
  58. data/documentation/diagrams/overall-pwn-architecture.svg +405 -0
  59. data/documentation/diagrams/penetration-testing-workflow.svg +201 -0
  60. data/documentation/diagrams/plugin-ecosystem.svg +276 -0
  61. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +306 -0
  62. data/documentation/diagrams/pwn-repl-prototyping.svg +168 -0
  63. data/documentation/diagrams/reporting-pipeline.svg +151 -0
  64. data/documentation/diagrams/reverse-engineering-flow.svg +134 -0
  65. data/documentation/diagrams/sessions-cron-automation.svg +136 -0
  66. data/documentation/diagrams/web-application-testing.svg +173 -0
  67. data/documentation/diagrams/zero-day-research-flow.svg +153 -0
  68. data/documentation/pwn-REPL.md +33 -0
  69. data/documentation/pwn-ai-Agent.md +43 -0
  70. data/git_commit.sh +1 -1
  71. data/lib/pwn/ai/agent/assembly.rb +1 -1
  72. data/lib/pwn/ai/agent/btc.rb +1 -1
  73. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  74. data/lib/pwn/ai/agent/extrospection.rb +618 -0
  75. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  76. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  77. data/lib/pwn/ai/agent/introspection.rb +91 -0
  78. data/lib/pwn/ai/agent/learning.rb +379 -0
  79. data/lib/pwn/ai/agent/loop.rb +33 -3
  80. data/lib/pwn/ai/agent/metrics.rb +155 -0
  81. data/lib/pwn/ai/agent/prompt_builder.rb +32 -3
  82. data/lib/pwn/ai/agent/sast.rb +1 -1
  83. data/lib/pwn/ai/agent/swarm.rb +437 -0
  84. data/lib/pwn/ai/agent/tools/cron.rb +163 -0
  85. data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
  86. data/lib/pwn/ai/agent/tools/learning.rb +221 -0
  87. data/lib/pwn/ai/agent/tools/memory.rb +27 -0
  88. data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
  89. data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
  90. data/lib/pwn/ai/agent/tools/skills.rb +124 -8
  91. data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
  92. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  93. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  94. data/lib/pwn/ai/agent.rb +5 -0
  95. data/lib/pwn/ai/anthropic.rb +19 -4
  96. data/lib/pwn/ai/grok.rb +249 -106
  97. data/lib/pwn/ai.rb +0 -1
  98. data/lib/pwn/config.rb +96 -36
  99. data/lib/pwn/cron.rb +16 -7
  100. data/lib/pwn/plugins/monkey_patch.rb +2 -2
  101. data/lib/pwn/plugins/repl.rb +158 -284
  102. data/lib/pwn/sdr/decoder/base.rb +251 -0
  103. data/lib/pwn/sdr/decoder/gsm.rb +84 -185
  104. data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
  105. data/lib/pwn/sdr/decoder.rb +1 -0
  106. data/lib/pwn/sdr/gqrx.rb +446 -65
  107. data/lib/pwn/version.rb +1 -1
  108. data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
  109. data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
  110. data/spec/lib/pwn/ai/agent/learning_spec.rb +68 -0
  111. data/spec/lib/pwn/ai/agent/metrics_spec.rb +27 -0
  112. data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
  113. data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
  114. data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
  115. data/spec/lib/pwn/ai/agent/tools/learning_spec.rb +30 -0
  116. data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
  117. data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
  118. data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
  119. data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
  120. data/third_party/pwn_rdoc.jsonl +178 -33
  121. metadata +110 -36
  122. data/documentation/PWN.png +0 -0
  123. data/documentation/PWN_Contributors_and_Users.png +0 -0
  124. data/documentation/fax-spectrogram.png +0 -0
  125. data/documentation/fax-waveform.png +0 -0
  126. data/documentation/frozen_string_literal_files_changed_from_false_to_true.txt +0 -54
  127. data/documentation/lifecycle_authz_replay.example.yaml +0 -27
  128. data/documentation/pwn_android_war_dialer_session.png +0 -0
  129. data/documentation/pwn_install.png +0 -0
  130. data/documentation/pwn_wallpaper.jpg +0 -0
  131. data/documentation/ringing-spectrogram.png +0 -0
  132. data/documentation/ringing-waveform.png +0 -0
  133. data/documentation/vulnerability_report_template.md +0 -37
  134. data/lib/pwn/ai/introspection.rb +0 -76
@@ -0,0 +1,202 @@
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_MemorySkills Pages: 1 -->
7
+ <svg width="665pt" height="568pt"
8
+ viewBox="0.00 0.00 665.00 568.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 524.45)">
10
+ <title>PWN_MemorySkills</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-524.45 622.2,-524.45 622.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="46.5" y="-459.25" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Persistent Knowledge — Memory · Skills · Sessions</text>
13
+ <text xml:space="preserve" text-anchor="start" x="164.25" y="-447.8" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">everything under ~/.pwn/ that shapes future prompts</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_write</title>
16
+ <path fill="#022c22" stroke="#047857" d="M20,-351C20,-351 559,-351 559,-351 565,-351 571,-357 571,-363 571,-363 571,-422.25 571,-422.25 571,-428.25 565,-434.25 559,-434.25 559,-434.25 20,-434.25 20,-434.25 14,-434.25 8,-428.25 8,-422.25 8,-422.25 8,-363 8,-363 8,-357 14,-351 20,-351"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="289.5" y="-411.25" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Write&#45;Side Tools</text>
18
+ </g>
19
+ <g id="clust3" class="cluster">
20
+ <title>cluster_files</title>
21
+ <path fill="#422006" stroke="#a16207" d="M47,-215.25C47,-215.25 551,-215.25 551,-215.25 557,-215.25 563,-221.25 563,-227.25 563,-227.25 563,-294.5 563,-294.5 563,-300.5 557,-306.5 551,-306.5 551,-306.5 47,-306.5 47,-306.5 41,-306.5 35,-300.5 35,-294.5 35,-294.5 35,-227.25 35,-227.25 35,-221.25 41,-215.25 47,-215.25"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="299" y="-283.5" font-family="sans-Serif" font-size="20.00" fill="#fde68a">~/.pwn/</text>
23
+ </g>
24
+ <g id="clust5" class="cluster">
25
+ <title>cluster_read</title>
26
+ <path fill="#2e1065" stroke="#6d28d9" d="M77,-97C77,-97 537,-97 537,-97 543,-97 549,-103 549,-109 549,-109 549,-168.25 549,-168.25 549,-174.25 543,-180.25 537,-180.25 537,-180.25 77,-180.25 77,-180.25 71,-180.25 65,-174.25 65,-168.25 65,-168.25 65,-109 65,-109 65,-103 71,-97 77,-97"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="307" y="-157.25" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Read&#45;Side / Injection</text>
28
+ </g>
29
+ <!-- Rem -->
30
+ <g id="node1" class="node">
31
+ <title>Rem</title>
32
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M114.25,-395C114.25,-395 27.75,-395 27.75,-395 21.75,-395 15.75,-389 15.75,-383 15.75,-383 15.75,-371 15.75,-371 15.75,-365 21.75,-359 27.75,-359 27.75,-359 114.25,-359 114.25,-359 120.25,-359 126.25,-365 126.25,-371 126.25,-371 126.25,-383 126.25,-383 126.25,-389 120.25,-395 114.25,-395"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="71" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory_remember</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="71" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">key · value · category</text>
35
+ </g>
36
+ <!-- Fmem -->
37
+ <g id="node5" class="node">
38
+ <title>Fmem</title>
39
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M163.12,-263.25C163.12,-265.46 136.18,-267.25 103,-267.25 69.82,-267.25 42.88,-265.46 42.88,-263.25 42.88,-263.25 42.88,-227.25 42.88,-227.25 42.88,-225.04 69.82,-223.25 103,-223.25 136.18,-223.25 163.12,-225.04 163.12,-227.25 163.12,-227.25 163.12,-263.25 163.12,-263.25"/>
40
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M163.12,-263.25C163.12,-261.04 136.18,-259.25 103,-259.25 69.82,-259.25 42.88,-261.04 42.88,-263.25"/>
41
+ <text xml:space="preserve" text-anchor="middle" x="103" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory.json</text>
42
+ <text xml:space="preserve" text-anchor="middle" x="103" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">fact · pref · lesson · env</text>
43
+ </g>
44
+ <!-- Rem&#45;&gt;Fmem -->
45
+ <g id="edge1" class="edge">
46
+ <title>Rem&#45;&gt;Fmem</title>
47
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M75.32,-358.5C80.44,-337.74 89.07,-302.74 95.33,-277.34"/>
48
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="98.02,-278.13 97.22,-269.69 92.58,-276.79 98.02,-278.13"/>
49
+ </g>
50
+ <!-- Skc -->
51
+ <g id="node2" class="node">
52
+ <title>Skc</title>
53
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M411,-395C411,-395 335,-395 335,-395 329,-395 323,-389 323,-383 323,-383 323,-371 323,-371 323,-365 329,-359 335,-359 335,-359 411,-359 411,-359 417,-359 423,-365 423,-371 423,-371 423,-383 423,-383 423,-389 417,-395 411,-395"/>
54
+ <text xml:space="preserve" text-anchor="middle" x="373" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skill_create</text>
55
+ <text xml:space="preserve" text-anchor="middle" x="373" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skill_add_reference</text>
56
+ </g>
57
+ <!-- Fskl -->
58
+ <g id="node6" class="node">
59
+ <title>Fskl</title>
60
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M429.75,-263.25C429.75,-265.46 404.31,-267.25 373,-267.25 341.69,-267.25 316.25,-265.46 316.25,-263.25 316.25,-263.25 316.25,-227.25 316.25,-227.25 316.25,-225.04 341.69,-223.25 373,-223.25 404.31,-223.25 429.75,-225.04 429.75,-227.25 429.75,-227.25 429.75,-263.25 429.75,-263.25"/>
61
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M429.75,-263.25C429.75,-261.04 404.31,-259.25 373,-259.25 341.69,-259.25 316.25,-261.04 316.25,-263.25"/>
62
+ <text xml:space="preserve" text-anchor="middle" x="373" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills/*.md</text>
63
+ <text xml:space="preserve" text-anchor="middle" x="373" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">YAML front&#45;matter refs</text>
64
+ </g>
65
+ <!-- Skc&#45;&gt;Fskl -->
66
+ <g id="edge2" class="edge">
67
+ <title>Skc&#45;&gt;Fskl</title>
68
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M373,-358.5C373,-337.83 373,-303.05 373,-277.67"/>
69
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="375.8,-277.75 373,-269.75 370.2,-277.75 375.8,-277.75"/>
70
+ </g>
71
+ <!-- Note -->
72
+ <g id="node3" class="node">
73
+ <title>Note</title>
74
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M271.25,-395C271.25,-395 178.75,-395 178.75,-395 172.75,-395 166.75,-389 166.75,-383 166.75,-383 166.75,-371 166.75,-371 166.75,-365 172.75,-359 178.75,-359 178.75,-359 271.25,-359 271.25,-359 277.25,-359 283.25,-365 283.25,-371 283.25,-371 283.25,-383 283.25,-383 283.25,-389 277.25,-395 271.25,-395"/>
75
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_note_outcome</text>
76
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_reflect</text>
77
+ </g>
78
+ <!-- Flrn -->
79
+ <g id="node7" class="node">
80
+ <title>Flrn</title>
81
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M276.5,-263.25C276.5,-265.46 260.14,-267.25 240,-267.25 219.86,-267.25 203.5,-265.46 203.5,-263.25 203.5,-263.25 203.5,-227.25 203.5,-227.25 203.5,-225.04 219.86,-223.25 240,-223.25 260.14,-223.25 276.5,-225.04 276.5,-227.25 276.5,-227.25 276.5,-263.25 276.5,-263.25"/>
82
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M276.5,-263.25C276.5,-261.04 260.14,-259.25 240,-259.25 219.86,-259.25 203.5,-261.04 203.5,-263.25"/>
83
+ <text xml:space="preserve" text-anchor="middle" x="240" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning.jsonl</text>
84
+ <text xml:space="preserve" text-anchor="middle" x="240" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">outcome log</text>
85
+ </g>
86
+ <!-- Note&#45;&gt;Flrn -->
87
+ <g id="edge3" class="edge">
88
+ <title>Note&#45;&gt;Flrn</title>
89
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M227.02,-358.5C229.41,-337.83 233.43,-303.05 236.37,-277.67"/>
90
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="239.15,-278 237.28,-269.73 233.58,-277.36 239.15,-278"/>
91
+ </g>
92
+ <!-- Dist -->
93
+ <g id="node4" class="node">
94
+ <title>Dist</title>
95
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M551,-395C551,-395 475,-395 475,-395 469,-395 463,-389 463,-383 463,-383 463,-371 463,-371 463,-365 469,-359 475,-359 475,-359 551,-359 551,-359 557,-359 563,-365 563,-371 563,-371 563,-383 563,-383 563,-389 557,-395 551,-395"/>
96
+ <text xml:space="preserve" text-anchor="middle" x="513" y="-379.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_distill_skill</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="513" y="-367.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(session → skill)</text>
98
+ </g>
99
+ <!-- Dist&#45;&gt;Fskl -->
100
+ <g id="edge4" class="edge">
101
+ <title>Dist&#45;&gt;Fskl</title>
102
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M494.12,-358.5C470.82,-336.91 430.92,-299.93 403.32,-274.35"/>
103
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="405.45,-272.5 397.67,-269.12 401.64,-276.61 405.45,-272.5"/>
104
+ </g>
105
+ <!-- Fses -->
106
+ <g id="node8" class="node">
107
+ <title>Fses</title>
108
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M554.5,-263.25C554.5,-265.46 535.45,-267.25 512,-267.25 488.55,-267.25 469.5,-265.46 469.5,-263.25 469.5,-263.25 469.5,-227.25 469.5,-227.25 469.5,-225.04 488.55,-223.25 512,-223.25 535.45,-223.25 554.5,-225.04 554.5,-227.25 554.5,-227.25 554.5,-263.25 554.5,-263.25"/>
109
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M554.5,-263.25C554.5,-261.04 535.45,-259.25 512,-259.25 488.55,-259.25 469.5,-261.04 469.5,-263.25"/>
110
+ <text xml:space="preserve" text-anchor="middle" x="512" y="-247.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions/*.jsonl</text>
111
+ <text xml:space="preserve" text-anchor="middle" x="512" y="-235.75" font-family="sans-Serif" font-size="10.00" fill="#0f172a">transcripts</text>
112
+ </g>
113
+ <!-- Dist&#45;&gt;Fses -->
114
+ <g id="edge5" class="edge">
115
+ <title>Dist&#45;&gt;Fses</title>
116
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M512.79,-348.57C512.6,-324.48 512.34,-289.92 512.17,-267.78"/>
117
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="509.99,-348.56 512.85,-356.53 515.59,-348.51 509.99,-348.56"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="522.71" y="-316.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">mine</text>
119
+ </g>
120
+ <!-- Rec -->
121
+ <g id="node9" class="node">
122
+ <title>Rec</title>
123
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M140.88,-141C140.88,-141 85.12,-141 85.12,-141 79.12,-141 73.12,-135 73.12,-129 73.12,-129 73.12,-117 73.12,-117 73.12,-111 79.12,-105 85.12,-105 85.12,-105 140.88,-105 140.88,-105 146.88,-105 152.88,-111 152.88,-117 152.88,-117 152.88,-129 152.88,-129 152.88,-135 146.88,-141 140.88,-141"/>
124
+ <text xml:space="preserve" text-anchor="middle" x="113" y="-119.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory_recall</text>
125
+ </g>
126
+ <!-- Fmem&#45;&gt;Rec -->
127
+ <g id="edge6" class="edge">
128
+ <title>Fmem&#45;&gt;Rec</title>
129
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M104.79,-222.75C106.45,-202.78 108.93,-172.95 110.73,-151.3"/>
130
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="113.52,-151.58 111.39,-143.37 107.94,-151.11 113.52,-151.58"/>
131
+ </g>
132
+ <!-- Skv -->
133
+ <g id="node10" class="node">
134
+ <title>Skv</title>
135
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M399.25,-141C399.25,-141 342.75,-141 342.75,-141 336.75,-141 330.75,-135 330.75,-129 330.75,-129 330.75,-117 330.75,-117 330.75,-111 336.75,-105 342.75,-105 342.75,-105 399.25,-105 399.25,-105 405.25,-105 411.25,-111 411.25,-117 411.25,-117 411.25,-129 411.25,-129 411.25,-135 405.25,-141 399.25,-141"/>
136
+ <text xml:space="preserve" text-anchor="middle" x="371" y="-119.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skill_list · view</text>
137
+ </g>
138
+ <!-- Fskl&#45;&gt;Skv -->
139
+ <g id="edge7" class="edge">
140
+ <title>Fskl&#45;&gt;Skv</title>
141
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M372.64,-222.75C372.31,-202.78 371.81,-172.95 371.45,-151.3"/>
142
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="374.26,-151.33 371.32,-143.38 368.66,-151.43 374.26,-151.33"/>
143
+ </g>
144
+ <!-- Out -->
145
+ <g id="node11" class="node">
146
+ <title>Out</title>
147
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M278.88,-141C278.88,-141 205.12,-141 205.12,-141 199.12,-141 193.12,-135 193.12,-129 193.12,-129 193.12,-117 193.12,-117 193.12,-111 199.12,-105 205.12,-105 205.12,-105 278.88,-105 278.88,-105 284.88,-105 290.88,-111 290.88,-117 290.88,-117 290.88,-129 290.88,-129 290.88,-135 284.88,-141 278.88,-141"/>
148
+ <text xml:space="preserve" text-anchor="middle" x="242" y="-125.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_outcomes</text>
149
+ <text xml:space="preserve" text-anchor="middle" x="242" y="-113.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_stats</text>
150
+ </g>
151
+ <!-- Flrn&#45;&gt;Out -->
152
+ <g id="edge8" class="edge">
153
+ <title>Flrn&#45;&gt;Out</title>
154
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M240.36,-222.75C240.69,-202.78 241.19,-172.95 241.55,-151.3"/>
155
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="244.34,-151.43 241.68,-143.38 238.74,-151.33 244.34,-151.43"/>
156
+ </g>
157
+ <!-- Sesv -->
158
+ <g id="node12" class="node">
159
+ <title>Sesv</title>
160
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M529.12,-141C529.12,-141 462.88,-141 462.88,-141 456.88,-141 450.88,-135 450.88,-129 450.88,-129 450.88,-117 450.88,-117 450.88,-111 456.88,-105 462.88,-105 462.88,-105 529.12,-105 529.12,-105 535.12,-105 541.12,-111 541.12,-117 541.12,-117 541.12,-129 541.12,-129 541.12,-135 535.12,-141 529.12,-141"/>
161
+ <text xml:space="preserve" text-anchor="middle" x="496" y="-125.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions_view</text>
162
+ <text xml:space="preserve" text-anchor="middle" x="496" y="-113.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions_current</text>
163
+ </g>
164
+ <!-- Fses&#45;&gt;Sesv -->
165
+ <g id="edge9" class="edge">
166
+ <title>Fses&#45;&gt;Sesv</title>
167
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M509.14,-222.75C506.47,-202.69 502.48,-172.68 499.59,-151.01"/>
168
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="502.41,-150.92 498.58,-143.36 496.86,-151.66 502.41,-150.92"/>
169
+ </g>
170
+ <!-- Prompt -->
171
+ <g id="node13" class="node">
172
+ <title>Prompt</title>
173
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M395,-36C395,-36 217,-36 217,-36 211,-36 205,-30 205,-24 205,-24 205,-12 205,-12 205,-6 211,0 217,0 217,0 395,0 395,0 401,0 407,-6 407,-12 407,-12 407,-24 407,-24 407,-30 401,-36 395,-36"/>
174
+ <text xml:space="preserve" text-anchor="middle" x="306" y="-20.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PromptBuilder</text>
175
+ <text xml:space="preserve" text-anchor="middle" x="306" y="-8.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">MEMORY + SKILLS + LEARNING blocks</text>
176
+ </g>
177
+ <!-- Rec&#45;&gt;Prompt -->
178
+ <g id="edge10" class="edge">
179
+ <title>Rec&#45;&gt;Prompt</title>
180
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M145.74,-104.53C178.26,-87.17 228.26,-60.49 263.76,-41.54"/>
181
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="264.98,-44.07 270.72,-37.83 262.34,-39.13 264.98,-44.07"/>
182
+ </g>
183
+ <!-- Skv&#45;&gt;Prompt -->
184
+ <g id="edge11" class="edge">
185
+ <title>Skv&#45;&gt;Prompt</title>
186
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M359.97,-104.53C349.72,-88.28 334.3,-63.84 322.56,-45.24"/>
187
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="324.99,-43.84 318.35,-38.57 320.25,-46.83 324.99,-43.84"/>
188
+ </g>
189
+ <!-- Out&#45;&gt;Prompt -->
190
+ <g id="edge12" class="edge">
191
+ <title>Out&#45;&gt;Prompt</title>
192
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M252.86,-104.53C262.95,-88.28 278.14,-63.84 289.69,-45.24"/>
193
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="291.99,-46.85 293.84,-38.58 287.24,-43.89 291.99,-46.85"/>
194
+ </g>
195
+ <!-- Sesv&#45;&gt;Prompt -->
196
+ <g id="edge13" class="edge">
197
+ <title>Sesv&#45;&gt;Prompt</title>
198
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M463.77,-104.53C431.76,-87.17 382.53,-60.49 347.58,-41.54"/>
199
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="349.12,-39.19 340.76,-37.84 346.46,-44.12 349.12,-39.19"/>
200
+ </g>
201
+ </g>
202
+ </svg>
@@ -0,0 +1,183 @@
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_Network Pages: 1 -->
7
+ <svg width="1171pt" height="360pt"
8
+ viewBox="0.00 0.00 1171.00 360.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 317.2)">
10
+ <title>PWN_Network</title>
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>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_disc</title>
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>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_svc</title>
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>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_auth</title>
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>
28
+ </g>
29
+ <g id="clust4" class="cluster">
30
+ <title>cluster_cloud</title>
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>
33
+ </g>
34
+ <!-- CIDR -->
35
+ <g id="node1" class="node">
36
+ <title>CIDR</title>
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>
40
+ </g>
41
+ <!-- Nmap -->
42
+ <g id="node2" class="node">
43
+ <title>Nmap</title>
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>
47
+ </g>
48
+ <!-- CIDR&#45;&gt;Nmap -->
49
+ <g id="edge1" class="edge">
50
+ <title>CIDR&#45;&gt;Nmap</title>
51
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M71.12,-129.84C92.28,-126.09 120.26,-121.14 146.74,-116.44"/>
52
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="147.08,-119.23 154.47,-115.07 146.1,-113.71 147.08,-119.23"/>
53
+ </g>
54
+ <!-- Packet -->
55
+ <g id="node3" class="node">
56
+ <title>Packet</title>
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>
60
+ </g>
61
+ <!-- CIDR&#45;&gt;Packet -->
62
+ <g id="edge2" class="edge">
63
+ <title>CIDR&#45;&gt;Packet</title>
64
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M71.12,-142.16C100.61,-147.38 143.33,-154.95 176.79,-160.88"/>
65
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="176.1,-163.6 184.47,-162.24 177.08,-158.09 176.1,-163.6"/>
66
+ </g>
67
+ <!-- Sock -->
68
+ <g id="node4" class="node">
69
+ <title>Sock</title>
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>
73
+ </g>
74
+ <!-- Nmap&#45;&gt;Sock -->
75
+ <g id="edge3" class="edge">
76
+ <title>Nmap&#45;&gt;Sock</title>
77
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M289.89,-83.42C324.92,-72.5 368.59,-58.9 401.24,-48.73"/>
78
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="401.88,-51.46 408.68,-46.41 400.21,-46.11 401.88,-51.46"/>
79
+ </g>
80
+ <!-- DAO -->
81
+ <g id="node5" class="node">
82
+ <title>DAO</title>
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>
86
+ </g>
87
+ <!-- Nmap&#45;&gt;DAO -->
88
+ <g id="edge4" class="edge">
89
+ <title>Nmap&#45;&gt;DAO</title>
90
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M302.32,-102C329.07,-102 359.2,-102 385.12,-102"/>
91
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="384.86,-104.8 392.86,-102 384.86,-99.2 384.86,-104.8"/>
92
+ </g>
93
+ <!-- MQ -->
94
+ <g id="node6" class="node">
95
+ <title>MQ</title>
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>
99
+ </g>
100
+ <!-- Packet&#45;&gt;MQ -->
101
+ <g id="edge5" class="edge">
102
+ <title>Packet&#45;&gt;MQ</title>
103
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M272.33,-170C306.33,-170 354.5,-170 391.88,-170"/>
104
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="391.66,-172.8 399.66,-170 391.66,-167.2 391.66,-172.8"/>
105
+ </g>
106
+ <!-- MSF -->
107
+ <g id="node7" class="node">
108
+ <title>MSF</title>
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>
112
+ </g>
113
+ <!-- Sock&#45;&gt;MSF -->
114
+ <g id="edge6" class="edge">
115
+ <title>Sock&#45;&gt;MSF</title>
116
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M488.05,-34C518.24,-34 561.18,-34 595.99,-34"/>
117
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="595.61,-36.8 603.61,-34 595.61,-31.2 595.61,-36.8"/>
118
+ </g>
119
+ <!-- Auth -->
120
+ <g id="node8" class="node">
121
+ <title>Auth</title>
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>
125
+ </g>
126
+ <!-- DAO&#45;&gt;Auth -->
127
+ <g id="edge7" class="edge">
128
+ <title>DAO&#45;&gt;Auth</title>
129
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M504.03,-102C531.16,-102 564.27,-102 592.59,-102"/>
130
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="592.42,-104.8 600.42,-102 592.42,-99.2 592.42,-104.8"/>
131
+ </g>
132
+ <!-- MQ&#45;&gt;Auth -->
133
+ <g id="edge8" class="edge">
134
+ <title>MQ&#45;&gt;Auth</title>
135
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M497.47,-154.4C525.83,-144.98 562.3,-132.87 593.03,-122.67"/>
136
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="593.79,-125.36 600.5,-120.18 592.02,-120.05 593.79,-125.36"/>
137
+ </g>
138
+ <!-- AWS -->
139
+ <g id="node9" class="node">
140
+ <title>AWS</title>
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>
144
+ </g>
145
+ <!-- MSF&#45;&gt;AWS -->
146
+ <g id="edge9" class="edge">
147
+ <title>MSF&#45;&gt;AWS</title>
148
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M706.87,-34C734.43,-34 768.57,-34 795.92,-34"/>
149
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="795.7,-36.8 803.7,-34 795.7,-31.2 795.7,-36.8"/>
150
+ </g>
151
+ <!-- Jenk -->
152
+ <g id="node10" class="node">
153
+ <title>Jenk</title>
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>
157
+ </g>
158
+ <!-- Auth&#45;&gt;Jenk -->
159
+ <g id="edge10" class="edge">
160
+ <title>Auth&#45;&gt;Jenk</title>
161
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M709.84,-102C735.21,-102 765.58,-102 791.03,-102"/>
162
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="790.91,-104.8 798.91,-102 790.91,-99.2 790.91,-104.8"/>
163
+ </g>
164
+ <!-- Report -->
165
+ <g id="node11" class="node">
166
+ <title>Report</title>
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>
169
+ </g>
170
+ <!-- AWS&#45;&gt;Report -->
171
+ <g id="edge11" class="edge">
172
+ <title>AWS&#45;&gt;Report</title>
173
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M884.95,-41.21C908.25,-45.55 938.48,-51.18 965.2,-56.16"/>
174
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="964.56,-58.89 972.94,-57.6 965.59,-53.38 964.56,-58.89"/>
175
+ </g>
176
+ <!-- Jenk&#45;&gt;Report -->
177
+ <g id="edge12" class="edge">
178
+ <title>Jenk&#45;&gt;Report</title>
179
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M889.5,-93.94C912.02,-89.75 939.99,-84.54 964.94,-79.89"/>
180
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="965.41,-82.65 972.77,-78.43 964.39,-77.14 965.41,-82.65"/>
181
+ </g>
182
+ </g>
183
+ </svg>