pwn 0.5.615 → 0.5.618

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +109 -85
  3. data/README.md.bak +200 -0
  4. data/bin/pwn +47 -2
  5. data/bin/pwn_gqrx_scanner +75 -18
  6. data/documentation/AI-Integration.md +42 -26
  7. data/documentation/AWS.md +57 -0
  8. data/documentation/Agent-Tool-Registry.md +56 -0
  9. data/documentation/Banner.md +17 -0
  10. data/documentation/Blockchain.md +18 -0
  11. data/documentation/Bounty.md +21 -0
  12. data/documentation/BurpSuite.md +41 -16
  13. data/documentation/CLI-Drivers.md +58 -0
  14. data/documentation/Configuration.md +66 -0
  15. data/documentation/Contributing.md +33 -19
  16. data/documentation/Cron.md +47 -0
  17. data/documentation/Diagrams.md +123 -40
  18. data/documentation/Drivers.md +43 -16
  19. data/documentation/Extrospection.md +54 -0
  20. data/documentation/FFI.md +14 -0
  21. data/documentation/Fuzzing.md +36 -0
  22. data/documentation/General-PWN-Usage.md +50 -30
  23. data/documentation/Hardware.md +40 -0
  24. data/documentation/Home.md +78 -51
  25. data/documentation/How-PWN-Works.md +59 -57
  26. data/documentation/Installation.md +53 -28
  27. data/documentation/Metasploit.md +34 -0
  28. data/documentation/NmapIt.md +18 -12
  29. data/documentation/PWN.png +0 -0
  30. data/documentation/PWN_Contributors_and_Users.png +0 -0
  31. data/documentation/Persistence.md +38 -0
  32. data/documentation/Plugins.md +97 -47
  33. data/documentation/Reporting.md +25 -18
  34. data/documentation/SAST.md +39 -22
  35. data/documentation/SDR.md +40 -0
  36. data/documentation/Sessions.md +39 -0
  37. data/documentation/Skills-Memory-Learning.md +49 -29
  38. data/documentation/Swarm.md +71 -0
  39. data/documentation/Transparent-Browser.md +26 -22
  40. data/documentation/Troubleshooting.md +44 -25
  41. data/documentation/WWW.md +32 -0
  42. data/documentation/What-is-PWN.md +51 -32
  43. data/documentation/Why-PWN.md +41 -11
  44. data/documentation/diagrams/agent-tool-registry.svg +284 -0
  45. data/documentation/diagrams/ai-integration-tool-calling.svg +141 -103
  46. data/documentation/diagrams/aws-cloud-security.svg +166 -0
  47. data/documentation/diagrams/build.sh +20 -0
  48. data/documentation/diagrams/burp-vs-zap-preference.svg +47 -62
  49. data/documentation/diagrams/code-scanning-sast.svg +139 -79
  50. data/documentation/diagrams/cron-scheduling.svg +148 -0
  51. data/documentation/diagrams/dot/_THEME.md +27 -0
  52. data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
  53. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +47 -20
  54. data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
  55. data/documentation/diagrams/dot/burp-vs-zap-preference.dot +23 -12
  56. data/documentation/diagrams/dot/code-scanning-sast.dot +46 -18
  57. data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
  58. data/documentation/diagrams/dot/driver-framework.dot +36 -14
  59. data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
  60. data/documentation/diagrams/dot/fuzzing-workflow.dot +44 -24
  61. data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
  62. data/documentation/diagrams/dot/history-to-drivers.dot +31 -17
  63. data/documentation/diagrams/dot/memory-skills-detailed.dot +57 -25
  64. data/documentation/diagrams/dot/network-infra-testing.dot +51 -19
  65. data/documentation/diagrams/dot/overall-pwn-architecture.dot +110 -44
  66. data/documentation/diagrams/dot/penetration-testing-workflow.dot +56 -25
  67. data/documentation/diagrams/dot/persistence-filesystem.dot +29 -0
  68. data/documentation/diagrams/dot/plugin-ecosystem.dot +41 -27
  69. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +87 -46
  70. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +49 -30
  71. data/documentation/diagrams/dot/reporting-pipeline.dot +43 -14
  72. data/documentation/diagrams/dot/reverse-engineering-flow.dot +40 -18
  73. data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
  74. data/documentation/diagrams/dot/sessions-cron-automation.dot +41 -14
  75. data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
  76. data/documentation/diagrams/dot/web-application-testing.dot +45 -23
  77. data/documentation/diagrams/dot/zero-day-research-flow.dot +46 -24
  78. data/documentation/diagrams/driver-framework.svg +87 -66
  79. data/documentation/diagrams/extrospection-world-awareness.svg +185 -0
  80. data/documentation/diagrams/fuzzing-workflow.svg +128 -115
  81. data/documentation/diagrams/hardware-hacking.svg +163 -0
  82. data/documentation/diagrams/history-to-drivers.svg +84 -82
  83. data/documentation/diagrams/memory-skills-detailed.svg +167 -119
  84. data/documentation/diagrams/network-infra-testing.svg +146 -84
  85. data/documentation/diagrams/overall-pwn-architecture.svg +356 -185
  86. data/documentation/diagrams/penetration-testing-workflow.svg +161 -108
  87. data/documentation/diagrams/persistence-filesystem.svg +174 -0
  88. data/documentation/diagrams/plugin-ecosystem.svg +225 -121
  89. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +257 -185
  90. data/documentation/diagrams/pwn-repl-prototyping.svg +126 -137
  91. data/documentation/diagrams/reporting-pipeline.svg +128 -68
  92. data/documentation/diagrams/reverse-engineering-flow.svg +100 -80
  93. data/documentation/diagrams/sdr-radio-flow.svg +146 -0
  94. data/documentation/diagrams/sessions-cron-automation.svg +112 -68
  95. data/documentation/diagrams/swarm-multi-agent.svg +225 -0
  96. data/documentation/diagrams/web-application-testing.svg +136 -100
  97. data/documentation/diagrams/zero-day-research-flow.svg +116 -112
  98. data/documentation/fax-spectrogram.png +0 -0
  99. data/documentation/fax-waveform.png +0 -0
  100. data/documentation/pwn-REPL.md +40 -24
  101. data/documentation/pwn-ai-Agent.md +59 -30
  102. data/documentation/pwn_android_war_dialer_session.png +0 -0
  103. data/documentation/pwn_install.png +0 -0
  104. data/documentation/pwn_wallpaper.jpg +0 -0
  105. data/documentation/ringing-spectrogram.png +0 -0
  106. data/documentation/ringing-waveform.png +0 -0
  107. data/git_commit.sh +1 -1
  108. data/lib/pwn/ai/agent/assembly.rb +1 -1
  109. data/lib/pwn/ai/agent/btc.rb +1 -1
  110. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  111. data/lib/pwn/ai/agent/extrospection.rb +618 -0
  112. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  113. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  114. data/lib/pwn/ai/agent/introspection.rb +91 -0
  115. data/lib/pwn/ai/agent/learning.rb +6 -4
  116. data/lib/pwn/ai/agent/loop.rb +15 -0
  117. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  118. data/lib/pwn/ai/agent/sast.rb +1 -1
  119. data/lib/pwn/ai/agent/swarm.rb +437 -0
  120. data/lib/pwn/ai/agent/tools/cron.rb +163 -0
  121. data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
  122. data/lib/pwn/ai/agent/tools/learning.rb +108 -0
  123. data/lib/pwn/ai/agent/tools/memory.rb +27 -0
  124. data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
  125. data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
  126. data/lib/pwn/ai/agent/tools/skills.rb +30 -0
  127. data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
  128. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  129. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  130. data/lib/pwn/ai/agent.rb +3 -0
  131. data/lib/pwn/ai/anthropic.rb +19 -4
  132. data/lib/pwn/ai.rb +0 -1
  133. data/lib/pwn/config.rb +10 -23
  134. data/lib/pwn/cron.rb +16 -7
  135. data/lib/pwn/plugins/repl.rb +90 -281
  136. data/lib/pwn/sdr/decoder/base.rb +251 -0
  137. data/lib/pwn/sdr/decoder/gsm.rb +84 -185
  138. data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
  139. data/lib/pwn/sdr/decoder.rb +1 -0
  140. data/lib/pwn/sdr/gqrx.rb +446 -65
  141. data/lib/pwn/version.rb +1 -1
  142. data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
  143. data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
  144. data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
  145. data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
  146. data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
  147. data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
  148. data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
  149. data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
  150. data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
  151. data/third_party/pwn_rdoc.jsonl +199 -37
  152. metadata +65 -3
  153. data/lib/pwn/ai/introspection.rb +0 -76
@@ -3,170 +3,274 @@
3
3
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
- <!-- Title: PWN Plugin Ecosystem Pages: 1 -->
7
- <svg width="888pt" height="220pt"
8
- viewBox="0.00 0.00 888.00 220.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(4 215.75)">
10
- <title>PWN Plugin Ecosystem</title>
11
- <polygon fill="white" stroke="none" points="-4,4 -4,-215.75 883.88,-215.75 883.88,4 -4,4"/>
12
- <!-- Hub -->
6
+ <!-- Title: PWN_Plugins Pages: 1 -->
7
+ <svg width="623pt" height="672pt"
8
+ viewBox="0.00 0.00 623.00 672.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 628.45)">
10
+ <title>PWN_Plugins</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-628.45 580.2,-628.45 580.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="73.5" y="-563.25" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::Plugins — 66 Modules by Category</text>
13
+ <g id="clust1" class="cluster">
14
+ <title>cluster_cat</title>
15
+ </g>
16
+ <!-- Root -->
13
17
  <g id="node1" class="node">
14
- <title>Hub</title>
15
- <ellipse fill="none" stroke="black" cx="423.62" cy="-193.75" rx="37.21" ry="18"/>
16
- <text xml:space="preserve" text-anchor="middle" x="423.62" y="-191.03" font-family="Arial" font-size="8.00">PWN::Plugins</text>
18
+ <title>Root</title>
19
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M88,-295C88,-295 12,-295 12,-295 6,-295 0,-289 0,-283 0,-283 0,-271 0,-271 0,-265 6,-259 12,-259 12,-259 88,-259 88,-259 94,-259 100,-265 100,-271 100,-271 100,-283 100,-283 100,-289 94,-295 88,-295"/>
20
+ <text xml:space="preserve" text-anchor="middle" x="50" y="-271.57" font-family="sans-Serif" font-size="14.00" fill="#0f172a">PWN::Plugins</text>
17
21
  </g>
18
- <!-- Recon -->
22
+ <!-- Web -->
19
23
  <g id="node2" class="node">
20
- <title>Recon</title>
21
- <path fill="none" stroke="black" d="M93.25,-130C93.25,-130 12,-130 12,-130 6,-130 0,-124 0,-118 0,-118 0,-104.75 0,-104.75 0,-98.75 6,-92.75 12,-92.75 12,-92.75 93.25,-92.75 93.25,-92.75 99.25,-92.75 105.25,-98.75 105.25,-104.75 105.25,-104.75 105.25,-118 105.25,-118 105.25,-124 99.25,-130 93.25,-130"/>
22
- <text xml:space="preserve" text-anchor="middle" x="52.62" y="-118.4" font-family="Arial" font-size="8.00">Recon &amp; Discovery</text>
23
- <text xml:space="preserve" text-anchor="middle" x="52.62" y="-108.65" font-family="Arial" font-size="8.00">(NmapIt, Shodan, IPInfo,</text>
24
- <text xml:space="preserve" text-anchor="middle" x="52.62" y="-98.9" font-family="Arial" font-size="8.00">Hunter, crt.sh, Git)</text>
24
+ <title>Web</title>
25
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M260.75,-538C260.75,-538 220,-538 220,-538 214,-538 208,-532 208,-526 208,-526 208,-514 208,-514 208,-508 214,-502 220,-502 220,-502 260.75,-502 260.75,-502 266.75,-502 272.75,-508 272.75,-514 272.75,-514 272.75,-526 272.75,-526 272.75,-532 266.75,-538 260.75,-538"/>
26
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-516.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Web / Proxy</text>
25
27
  </g>
26
- <!-- Hub&#45;&gt;Recon -->
28
+ <!-- Root&#45;&gt;Web -->
27
29
  <g id="edge1" class="edge">
28
- <title>Hub&#45;&gt;Recon</title>
29
- <path fill="none" stroke="black" d="M387.14,-189.52C328.47,-183.67 209.99,-169.09 113.62,-139.75 108.87,-138.3 104.01,-136.58 99.2,-134.7"/>
30
- <polygon fill="black" stroke="black" points="100.8,-131.58 90.22,-130.99 98.13,-138.05 100.8,-131.58"/>
30
+ <title>Root&#45;&gt;Web</title>
31
+ <path fill="none" stroke="#94a3b8" d="M60.81,-295.73C82.2,-335.4 136.29,-429.47 200,-493 201.43,-494.43 202.95,-495.83 204.52,-497.19"/>
32
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="202.88,-498.57 208.86,-500.73 205.53,-495.31 202.88,-498.57"/>
31
33
  </g>
32
- <!-- Web -->
34
+ <!-- Net -->
33
35
  <g id="node3" class="node">
34
- <title>Web</title>
35
- <path fill="none" stroke="black" d="M204.25,-134.88C204.25,-134.88 135,-134.88 135,-134.88 129,-134.88 123,-128.88 123,-122.88 123,-122.88 123,-99.88 123,-99.88 123,-93.88 129,-87.88 135,-87.88 135,-87.88 204.25,-87.88 204.25,-87.88 210.25,-87.88 216.25,-93.88 216.25,-99.88 216.25,-99.88 216.25,-122.88 216.25,-122.88 216.25,-128.88 210.25,-134.88 204.25,-134.88"/>
36
- <text xml:space="preserve" text-anchor="middle" x="169.62" y="-123.28" font-family="Arial" font-size="8.00">Web &amp; Proxy</text>
37
- <text xml:space="preserve" text-anchor="middle" x="169.62" y="-113.53" font-family="Arial" font-size="8.00">(TransparentBrowser,</text>
38
- <text xml:space="preserve" text-anchor="middle" x="169.62" y="-103.78" font-family="Arial" font-size="8.00">BurpSuite, Zaproxy,</text>
39
- <text xml:space="preserve" text-anchor="middle" x="169.62" y="-94.03" font-family="Arial" font-size="8.00">Spider, URI Buster)</text>
36
+ <title>Net</title>
37
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M255.38,-484C255.38,-484 225.38,-484 225.38,-484 219.38,-484 213.38,-478 213.38,-472 213.38,-472 213.38,-460 213.38,-460 213.38,-454 219.38,-448 225.38,-448 225.38,-448 255.38,-448 255.38,-448 261.38,-448 267.38,-454 267.38,-460 267.38,-460 267.38,-472 267.38,-472 267.38,-478 261.38,-484 255.38,-484"/>
38
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-462.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Network</text>
40
39
  </g>
41
- <!-- Hub&#45;&gt;Web -->
40
+ <!-- Root&#45;&gt;Net -->
42
41
  <g id="edge2" class="edge">
43
- <title>Hub&#45;&gt;Web</title>
44
- <path fill="none" stroke="black" d="M390.36,-185.26C351.51,-176.15 285.56,-159.49 230.62,-139.75 229.48,-139.34 228.32,-138.91 227.16,-138.48"/>
45
- <polygon fill="black" stroke="black" points="228.61,-135.29 218.03,-134.88 226.05,-141.8 228.61,-135.29"/>
42
+ <title>Root&#45;&gt;Net</title>
43
+ <path fill="none" stroke="#94a3b8" d="M65.87,-295.76C91.39,-327.33 146,-392.2 200,-439 202.25,-440.95 204.65,-442.89 207.11,-444.78"/>
44
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="205.63,-446.3 211.7,-448.18 208.13,-442.92 205.63,-446.3"/>
46
45
  </g>
47
- <!-- Vuln -->
46
+ <!-- Xpl -->
48
47
  <g id="node4" class="node">
49
- <title>Vuln</title>
50
- <path fill="none" stroke="black" d="M280,-47C280,-47 209.25,-47 209.25,-47 203.25,-47 197.25,-41 197.25,-35 197.25,-35 197.25,-12 197.25,-12 197.25,-6 203.25,0 209.25,0 209.25,0 280,0 280,0 286,0 292,-6 292,-12 292,-12 292,-35 292,-35 292,-41 286,-47 280,-47"/>
51
- <text xml:space="preserve" text-anchor="middle" x="244.62" y="-35.4" font-family="Arial" font-size="8.00">Vulnerability</text>
52
- <text xml:space="preserve" text-anchor="middle" x="244.62" y="-25.65" font-family="Arial" font-size="8.00">(Fuzz, Metasploit,</text>
53
- <text xml:space="preserve" text-anchor="middle" x="244.62" y="-15.9" font-family="Arial" font-size="8.00">Nessus, OpenVAS,</text>
54
- <text xml:space="preserve" text-anchor="middle" x="244.62" y="-6.15" font-family="Arial" font-size="8.00">Nexpose, DefectDojo)</text>
55
- </g>
56
- <!-- Hub&#45;&gt;Vuln -->
48
+ <title>Xpl</title>
49
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M260.38,-430C260.38,-430 220.38,-430 220.38,-430 214.38,-430 208.38,-424 208.38,-418 208.38,-418 208.38,-406 208.38,-406 208.38,-400 214.38,-394 220.38,-394 220.38,-394 260.38,-394 260.38,-394 266.38,-394 272.38,-400 272.38,-406 272.38,-406 272.38,-418 272.38,-418 272.38,-424 266.38,-430 260.38,-430"/>
50
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-408.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Exploitation</text>
51
+ </g>
52
+ <!-- Root&#45;&gt;Xpl -->
57
53
  <g id="edge3" class="edge">
58
- <title>Hub&#45;&gt;Vuln</title>
59
- <path fill="none" stroke="black" d="M386.52,-191.07C349.63,-187.29 294.23,-175.57 263.62,-139.75 244.63,-117.52 241,-83.78 241.46,-58.54"/>
60
- <polygon fill="black" stroke="black" points="244.95,-58.92 241.88,-48.78 237.95,-58.62 244.95,-58.92"/>
54
+ <title>Root&#45;&gt;Xpl</title>
55
+ <path fill="none" stroke="#94a3b8" d="M76.69,-295.94C106.27,-317.66 156.4,-354.25 200,-385 201.96,-386.39 203.99,-387.8 206.04,-389.23"/>
56
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="204.83,-390.95 210.95,-392.64 207.22,-387.49 204.83,-390.95"/>
61
57
  </g>
62
- <!-- Auth -->
58
+ <!-- Osint -->
63
59
  <g id="node5" class="node">
64
- <title>Auth</title>
65
- <path fill="none" stroke="black" d="M348.62,-130C348.62,-130 284.62,-130 284.62,-130 278.62,-130 272.62,-124 272.62,-118 272.62,-118 272.62,-104.75 272.62,-104.75 272.62,-98.75 278.62,-92.75 284.62,-92.75 284.62,-92.75 348.62,-92.75 348.62,-92.75 354.62,-92.75 360.62,-98.75 360.62,-104.75 360.62,-104.75 360.62,-118 360.62,-118 360.62,-124 354.62,-130 348.62,-130"/>
66
- <text xml:space="preserve" text-anchor="middle" x="316.62" y="-118.4" font-family="Arial" font-size="8.00">Auth &amp; Access</text>
67
- <text xml:space="preserve" text-anchor="middle" x="316.62" y="-108.65" font-family="Arial" font-size="8.00">(OAuth2, BasicAuth,</text>
68
- <text xml:space="preserve" text-anchor="middle" x="316.62" y="-98.9" font-family="Arial" font-size="8.00">DAOs, Vault)</text>
60
+ <title>Osint</title>
61
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M255.38,-376C255.38,-376 225.38,-376 225.38,-376 219.38,-376 213.38,-370 213.38,-364 213.38,-364 213.38,-352 213.38,-352 213.38,-346 219.38,-340 225.38,-340 225.38,-340 255.38,-340 255.38,-340 261.38,-340 267.38,-346 267.38,-352 267.38,-352 267.38,-364 267.38,-364 267.38,-370 261.38,-376 255.38,-376"/>
62
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-354.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">OSINT</text>
69
63
  </g>
70
- <!-- Hub&#45;&gt;Auth -->
64
+ <!-- Root&#45;&gt;Osint -->
71
65
  <g id="edge4" class="edge">
72
- <title>Hub&#45;&gt;Auth</title>
73
- <path fill="none" stroke="black" d="M404,-178.01C388.79,-166.58 367.38,-150.5 349.56,-137.12"/>
74
- <polygon fill="black" stroke="black" points="351.93,-134.52 341.83,-131.31 347.72,-140.11 351.93,-134.52"/>
66
+ <title>Root&#45;&gt;Osint</title>
67
+ <path fill="none" stroke="#94a3b8" d="M95.17,-295.99C129.14,-310.6 175.33,-330.46 206.19,-343.73"/>
68
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="205.19,-345.59 211.53,-346.03 206.85,-341.73 205.19,-345.59"/>
75
69
  </g>
76
- <!-- Infra -->
70
+ <!-- Data -->
77
71
  <g id="node6" class="node">
78
- <title>Infra</title>
79
- <path fill="none" stroke="black" d="M456.38,-130C456.38,-130 390.88,-130 390.88,-130 384.88,-130 378.88,-124 378.88,-118 378.88,-118 378.88,-104.75 378.88,-104.75 378.88,-98.75 384.88,-92.75 390.88,-92.75 390.88,-92.75 456.38,-92.75 456.38,-92.75 462.38,-92.75 468.38,-98.75 468.38,-104.75 468.38,-104.75 468.38,-118 468.38,-118 468.38,-124 462.38,-130 456.38,-130"/>
80
- <text xml:space="preserve" text-anchor="middle" x="423.62" y="-118.4" font-family="Arial" font-size="8.00">Infrastructure</text>
81
- <text xml:space="preserve" text-anchor="middle" x="423.62" y="-108.65" font-family="Arial" font-size="8.00">(Jenkins, AWS, Jira,</text>
82
- <text xml:space="preserve" text-anchor="middle" x="423.62" y="-98.9" font-family="Arial" font-size="8.00">RabbitMQ, Vsphere)</text>
72
+ <title>Data</title>
73
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M259.25,-322C259.25,-322 221.5,-322 221.5,-322 215.5,-322 209.5,-316 209.5,-310 209.5,-310 209.5,-298 209.5,-298 209.5,-292 215.5,-286 221.5,-286 221.5,-286 259.25,-286 259.25,-286 265.25,-286 271.25,-292 271.25,-298 271.25,-298 271.25,-310 271.25,-310 271.25,-316 265.25,-322 259.25,-322"/>
74
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-300.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Data / DAO</text>
83
75
  </g>
84
- <!-- Hub&#45;&gt;Infra -->
76
+ <!-- Root&#45;&gt;Data -->
85
77
  <g id="edge5" class="edge">
86
- <title>Hub&#45;&gt;Infra</title>
87
- <path fill="none" stroke="black" d="M423.62,-175.31C423.62,-165.44 423.62,-152.84 423.62,-141.52"/>
88
- <polygon fill="black" stroke="black" points="427.13,-141.85 423.63,-131.85 420.13,-141.85 427.13,-141.85"/>
78
+ <title>Root&#45;&gt;Data</title>
79
+ <path fill="none" stroke="#94a3b8" d="M100.99,-284.16C132.64,-288.7 172.9,-294.47 201.83,-298.62"/>
80
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="201.19,-300.65 207.43,-299.42 201.79,-296.49 201.19,-300.65"/>
89
81
  </g>
90
- <!-- LowLevel -->
82
+ <!-- Auth -->
91
83
  <g id="node7" class="node">
92
- <title>LowLevel</title>
93
- <path fill="none" stroke="black" d="M559.12,-139.75C559.12,-139.75 498.12,-139.75 498.12,-139.75 492.12,-139.75 486.12,-133.75 486.12,-127.75 486.12,-127.75 486.12,-95 486.12,-95 486.12,-89 492.12,-83 498.12,-83 498.12,-83 559.12,-83 559.12,-83 565.12,-83 571.12,-89 571.12,-95 571.12,-95 571.12,-127.75 571.12,-127.75 571.12,-133.75 565.12,-139.75 559.12,-139.75"/>
94
- <text xml:space="preserve" text-anchor="middle" x="528.62" y="-128.15" font-family="Arial" font-size="8.00">Low Level &amp;</text>
95
- <text xml:space="preserve" text-anchor="middle" x="528.62" y="-118.4" font-family="Arial" font-size="8.00">Hardware</text>
96
- <text xml:space="preserve" text-anchor="middle" x="528.62" y="-108.65" font-family="Arial" font-size="8.00">(Serial, BusPirate,</text>
97
- <text xml:space="preserve" text-anchor="middle" x="528.62" y="-98.9" font-family="Arial" font-size="8.00">Packet, Sock, Tor,</text>
98
- <text xml:space="preserve" text-anchor="middle" x="528.62" y="-89.15" font-family="Arial" font-size="8.00">Android, Assembly)</text>
99
- </g>
100
- <!-- Hub&#45;&gt;LowLevel -->
84
+ <title>Auth</title>
85
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M255.38,-268C255.38,-268 225.38,-268 225.38,-268 219.38,-268 213.38,-262 213.38,-256 213.38,-256 213.38,-244 213.38,-244 213.38,-238 219.38,-232 225.38,-232 225.38,-232 255.38,-232 255.38,-232 261.38,-232 267.38,-238 267.38,-244 267.38,-244 267.38,-256 267.38,-256 267.38,-262 261.38,-268 255.38,-268"/>
86
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-246.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Auth</text>
87
+ </g>
88
+ <!-- Root&#45;&gt;Auth -->
101
89
  <g id="edge6" class="edge">
102
- <title>Hub&#45;&gt;LowLevel</title>
103
- <path fill="none" stroke="black" d="M442.88,-178.01C454.36,-169.23 469.43,-157.69 483.73,-146.74"/>
104
- <polygon fill="black" stroke="black" points="485.48,-149.81 491.29,-140.95 481.22,-144.25 485.48,-149.81"/>
90
+ <title>Root&#45;&gt;Auth</title>
91
+ <path fill="none" stroke="#94a3b8" d="M100.99,-269.84C134.15,-265.08 176.76,-258.98 205.88,-254.8"/>
92
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="205.84,-256.93 211.48,-254 205.25,-252.77 205.84,-256.93"/>
105
93
  </g>
106
- <!-- Util -->
94
+ <!-- HW -->
107
95
  <g id="node8" class="node">
108
- <title>Util</title>
109
- <path fill="none" stroke="black" d="M668.12,-130C668.12,-130 601.12,-130 601.12,-130 595.12,-130 589.12,-124 589.12,-118 589.12,-118 589.12,-104.75 589.12,-104.75 589.12,-98.75 595.12,-92.75 601.12,-92.75 601.12,-92.75 668.12,-92.75 668.12,-92.75 674.12,-92.75 680.12,-98.75 680.12,-104.75 680.12,-104.75 680.12,-118 680.12,-118 680.12,-124 674.12,-130 668.12,-130"/>
110
- <text xml:space="preserve" text-anchor="middle" x="634.62" y="-118.4" font-family="Arial" font-size="8.00">Utilities</text>
111
- <text xml:space="preserve" text-anchor="middle" x="634.62" y="-108.65" font-family="Arial" font-size="8.00">(FileFu, Char, XXD,</text>
112
- <text xml:space="preserve" text-anchor="middle" x="634.62" y="-98.9" font-family="Arial" font-size="8.00">PS, Reports helpers)</text>
96
+ <title>HW</title>
97
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M256.62,-214C256.62,-214 224.12,-214 224.12,-214 218.12,-214 212.12,-208 212.12,-202 212.12,-202 212.12,-190 212.12,-190 212.12,-184 218.12,-178 224.12,-178 224.12,-178 256.62,-178 256.62,-178 262.62,-178 268.62,-184 268.62,-190 268.62,-190 268.62,-202 268.62,-202 268.62,-208 262.62,-214 256.62,-214"/>
98
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-192.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Hardware</text>
113
99
  </g>
114
- <!-- Hub&#45;&gt;Util -->
100
+ <!-- Root&#45;&gt;HW -->
115
101
  <g id="edge7" class="edge">
116
- <title>Hub&#45;&gt;Util</title>
117
- <path fill="none" stroke="black" d="M455.1,-183.59C487.15,-173.91 538.05,-157.62 580.62,-139.75 583.97,-138.35 587.39,-136.82 590.81,-135.24"/>
118
- <polygon fill="black" stroke="black" points="592.12,-138.5 599.62,-131.02 589.09,-132.19 592.12,-138.5"/>
102
+ <title>Root&#45;&gt;HW</title>
103
+ <path fill="none" stroke="#94a3b8" d="M95.17,-258.01C128.63,-243.62 173.96,-224.13 204.81,-210.86"/>
104
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="205.47,-212.86 210.16,-208.56 203.81,-209.01 205.47,-212.86"/>
119
105
  </g>
120
- <!-- SDR -->
106
+ <!-- CI -->
121
107
  <g id="node9" class="node">
122
- <title>SDR</title>
123
- <path fill="none" stroke="black" d="M745.38,-129.38C745.38,-129.38 709.88,-129.38 709.88,-129.38 703.88,-129.38 697.88,-123.38 697.88,-117.38 697.88,-117.38 697.88,-105.38 697.88,-105.38 697.88,-99.38 703.88,-93.38 709.88,-93.38 709.88,-93.38 745.38,-93.38 745.38,-93.38 751.38,-93.38 757.38,-99.38 757.38,-105.38 757.38,-105.38 757.38,-117.38 757.38,-117.38 757.38,-123.38 751.38,-129.38 745.38,-129.38"/>
124
- <text xml:space="preserve" text-anchor="middle" x="727.62" y="-113.53" font-family="Arial" font-size="8.00">SDR &amp; RF</text>
125
- <text xml:space="preserve" text-anchor="middle" x="727.62" y="-103.78" font-family="Arial" font-size="8.00">(SDR, gqrx)</text>
108
+ <title>CI</title>
109
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M260.75,-160C260.75,-160 220,-160 220,-160 214,-160 208,-154 208,-148 208,-148 208,-136 208,-136 208,-130 214,-124 220,-124 220,-124 260.75,-124 260.75,-124 266.75,-124 272.75,-130 272.75,-136 272.75,-136 272.75,-148 272.75,-148 272.75,-154 266.75,-160 260.75,-160"/>
110
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-138.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">CI / DevOps</text>
126
111
  </g>
127
- <!-- Hub&#45;&gt;SDR -->
112
+ <!-- Root&#45;&gt;CI -->
128
113
  <g id="edge8" class="edge">
129
- <title>Hub&#45;&gt;SDR</title>
130
- <path fill="none" stroke="black" d="M460.37,-190.38C513.08,-185.9 612.34,-173.38 689.62,-139.75 692.23,-138.61 694.84,-137.28 697.4,-135.82"/>
131
- <polygon fill="black" stroke="black" points="699.1,-138.88 705.62,-130.54 695.32,-132.99 699.1,-138.88"/>
114
+ <title>Root&#45;&gt;CI</title>
115
+ <path fill="none" stroke="#94a3b8" d="M76.69,-258.06C106.27,-236.34 156.4,-199.75 200,-169 201.96,-167.61 203.99,-166.2 206.04,-164.77"/>
116
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="207.22,-166.51 210.95,-161.36 204.83,-163.05 207.22,-166.51"/>
132
117
  </g>
133
- <!-- Other -->
118
+ <!-- Comm -->
134
119
  <g id="node10" class="node">
135
- <title>Other</title>
136
- <path fill="none" stroke="black" d="M867.88,-130C867.88,-130 787.38,-130 787.38,-130 781.38,-130 775.38,-124 775.38,-118 775.38,-118 775.38,-104.75 775.38,-104.75 775.38,-98.75 781.38,-92.75 787.38,-92.75 787.38,-92.75 867.88,-92.75 867.88,-92.75 873.88,-92.75 879.88,-98.75 879.88,-104.75 879.88,-104.75 879.88,-118 879.88,-118 879.88,-124 873.88,-130 867.88,-130"/>
137
- <text xml:space="preserve" text-anchor="middle" x="827.62" y="-118.4" font-family="Arial" font-size="8.00">Misc</text>
138
- <text xml:space="preserve" text-anchor="middle" x="827.62" y="-108.65" font-family="Arial" font-size="8.00">(BeEF, OCR, PDFParse,</text>
139
- <text xml:space="preserve" text-anchor="middle" x="827.62" y="-98.9" font-family="Arial" font-size="8.00">ScannableCodes, etc.)</text>
120
+ <title>Comm</title>
121
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M255.38,-106C255.38,-106 225.38,-106 225.38,-106 219.38,-106 213.38,-100 213.38,-94 213.38,-94 213.38,-82 213.38,-82 213.38,-76 219.38,-70 225.38,-70 225.38,-70 255.38,-70 255.38,-70 261.38,-70 267.38,-76 267.38,-82 267.38,-82 267.38,-94 267.38,-94 267.38,-100 261.38,-106 255.38,-106"/>
122
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-84.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Comms</text>
140
123
  </g>
141
- <!-- Hub&#45;&gt;Other -->
124
+ <!-- Root&#45;&gt;Comm -->
142
125
  <g id="edge9" class="edge">
143
- <title>Hub&#45;&gt;Other</title>
144
- <path fill="none" stroke="black" d="M460.63,-190.3C524.29,-185.37 658.14,-171.84 766.62,-139.75 771.45,-138.32 776.39,-136.59 781.27,-134.71"/>
145
- <polygon fill="black" stroke="black" points="782.47,-138 790.38,-130.95 779.81,-131.52 782.47,-138"/>
126
+ <title>Root&#45;&gt;Comm</title>
127
+ <path fill="none" stroke="#94a3b8" d="M65.87,-258.24C91.39,-226.67 146,-161.8 200,-115 202.25,-113.05 204.65,-111.11 207.11,-109.22"/>
128
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="208.13,-111.08 211.7,-105.82 205.63,-107.7 208.13,-111.08"/>
146
129
  </g>
147
- <!-- Recon&#45;&gt;Vuln -->
130
+ <!-- Util -->
131
+ <g id="node11" class="node">
132
+ <title>Util</title>
133
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.2" d="M255.38,-52C255.38,-52 225.38,-52 225.38,-52 219.38,-52 213.38,-46 213.38,-40 213.38,-40 213.38,-28 213.38,-28 213.38,-22 219.38,-16 225.38,-16 225.38,-16 255.38,-16 255.38,-16 261.38,-16 267.38,-22 267.38,-28 267.38,-28 267.38,-40 267.38,-40 267.38,-46 261.38,-52 255.38,-52"/>
134
+ <text xml:space="preserve" text-anchor="middle" x="240.38" y="-30.7" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Utility</text>
135
+ </g>
136
+ <!-- Root&#45;&gt;Util -->
148
137
  <g id="edge10" class="edge">
149
- <title>Recon&#45;&gt;Vuln</title>
150
- <path fill="none" stroke="black" d="M92.98,-92.25C99.87,-89.16 106.95,-85.99 113.62,-83 137.47,-72.33 163.77,-60.58 186.5,-50.43"/>
151
- <polygon fill="black" stroke="black" points="187.93,-53.63 195.63,-46.35 185.07,-47.23 187.93,-53.63"/>
138
+ <title>Root&#45;&gt;Util</title>
139
+ <path fill="none" stroke="#94a3b8" d="M60.81,-258.27C82.2,-218.6 136.29,-124.53 200,-61 202.18,-58.83 204.55,-56.72 207.02,-54.7"/>
140
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="208.24,-56.41 211.71,-51.08 205.67,-53.09 208.24,-56.41"/>
141
+ </g>
142
+ <!-- w -->
143
+ <g id="node12" class="node">
144
+ <title>w</title>
145
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M513.38,-542.12C513.38,-542.12 404.38,-542.12 404.38,-542.12 398.38,-542.12 392.38,-536.12 392.38,-530.12 392.38,-530.12 392.38,-513.88 392.38,-513.88 392.38,-507.88 398.38,-501.88 404.38,-501.88 404.38,-501.88 513.38,-501.88 513.38,-501.88 519.38,-501.88 525.38,-507.88 525.38,-513.88 525.38,-513.88 525.38,-530.12 525.38,-530.12 525.38,-536.12 519.38,-542.12 513.38,-542.12"/>
146
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-529.58" font-family="sans-Serif" font-size="9.00" fill="#0f172a">BurpSuite ⭐ · Zaproxy</text>
147
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-518.33" font-family="sans-Serif" font-size="9.00" fill="#0f172a">TransparentBrowser · Spider</text>
148
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-507.82" font-family="sans-Serif" font-size="9.00" fill="#0f172a">OpenAPI · URIScheme</text>
152
149
  </g>
153
- <!-- Web&#45;&gt;Vuln -->
150
+ <!-- Web&#45;&gt;w -->
154
151
  <g id="edge11" class="edge">
155
- <title>Web&#45;&gt;Vuln</title>
156
- <path fill="none" stroke="black" d="M189.33,-87.81C197.87,-78.03 208.02,-66.41 217.28,-55.81"/>
157
- <polygon fill="black" stroke="black" points="219.85,-58.18 223.8,-48.35 214.58,-53.58 219.85,-58.18"/>
152
+ <title>Web&#45;&gt;w</title>
153
+ <path fill="none" stroke="#94a3b8" d="M273.32,-520.3C302.43,-520.56 346.52,-520.97 384.31,-521.32"/>
154
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="384.25,-523.42 390.26,-521.38 384.28,-519.22 384.25,-523.42"/>
158
155
  </g>
159
- <!-- Auth&#45;&gt;Vuln -->
156
+ <!-- n -->
157
+ <g id="node13" class="node">
158
+ <title>n</title>
159
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M500.25,-484C500.25,-484 417.5,-484 417.5,-484 411.5,-484 405.5,-478 405.5,-472 405.5,-472 405.5,-460 405.5,-460 405.5,-454 411.5,-448 417.5,-448 417.5,-448 500.25,-448 500.25,-448 506.25,-448 512.25,-454 512.25,-460 512.25,-460 512.25,-472 512.25,-472 512.25,-478 506.25,-484 500.25,-484"/>
160
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-467.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">NmapIt · Sock · Packet</text>
161
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-457.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Tor · IPInfo</text>
162
+ </g>
163
+ <!-- Net&#45;&gt;n -->
160
164
  <g id="edge12" class="edge">
161
- <title>Auth&#45;&gt;Vuln</title>
162
- <path fill="none" stroke="black" d="M301.71,-92.58C292.89,-82.07 281.47,-68.44 271.16,-56.15"/>
163
- <polygon fill="black" stroke="black" points="273.99,-54.07 264.88,-48.66 268.62,-58.57 273.99,-54.07"/>
165
+ <title>Net&#45;&gt;n</title>
166
+ <path fill="none" stroke="#94a3b8" d="M267.92,-466C300.05,-466 355.14,-466 397.74,-466"/>
167
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="397.49,-468.1 403.49,-466 397.49,-463.9 397.49,-468.1"/>
168
+ </g>
169
+ <!-- x -->
170
+ <g id="node14" class="node">
171
+ <title>x</title>
172
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M489.38,-430C489.38,-430 428.38,-430 428.38,-430 422.38,-430 416.38,-424 416.38,-418 416.38,-418 416.38,-406 416.38,-406 416.38,-400 422.38,-394 428.38,-394 428.38,-394 489.38,-394 489.38,-394 495.38,-394 501.38,-400 501.38,-406 501.38,-406 501.38,-418 501.38,-418 501.38,-424 495.38,-430 489.38,-430"/>
173
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-413.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Metasploit · Fuzz</text>
174
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-403.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">BeEF · Assembly</text>
164
175
  </g>
165
- <!-- Infra&#45;&gt;Vuln -->
176
+ <!-- Xpl&#45;&gt;x -->
166
177
  <g id="edge13" class="edge">
167
- <title>Infra&#45;&gt;Vuln</title>
168
- <path fill="none" stroke="black" d="M388.27,-92.25C382.07,-89.13 375.67,-85.95 369.62,-83 347.88,-72.4 323.85,-61.07 302.72,-51.22"/>
169
- <polygon fill="black" stroke="black" points="304.19,-48.05 293.65,-47.01 301.24,-54.4 304.19,-48.05"/>
178
+ <title>Xpl&#45;&gt;x</title>
179
+ <path fill="none" stroke="#94a3b8" d="M272.86,-412C308.48,-412 366.96,-412 408.63,-412"/>
180
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="408.44,-414.1 414.44,-412 408.44,-409.9 408.44,-414.1"/>
181
+ </g>
182
+ <!-- o -->
183
+ <g id="node15" class="node">
184
+ <title>o</title>
185
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M495,-376C495,-376 422.75,-376 422.75,-376 416.75,-376 410.75,-370 410.75,-364 410.75,-364 410.75,-352 410.75,-352 410.75,-346 416.75,-340 422.75,-340 422.75,-340 495,-340 495,-340 501,-340 507,-346 507,-352 507,-352 507,-364 507,-364 507,-370 501,-376 495,-376"/>
186
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-359.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Shodan · Hunter</text>
187
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-349.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Github · HackerOne</text>
188
+ </g>
189
+ <!-- Osint&#45;&gt;o -->
190
+ <g id="edge14" class="edge">
191
+ <title>Osint&#45;&gt;o</title>
192
+ <path fill="none" stroke="#94a3b8" d="M267.92,-358C301.44,-358 359.94,-358 403.19,-358"/>
193
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="403.02,-360.1 409.02,-358 403.02,-355.9 403.02,-360.1"/>
194
+ </g>
195
+ <!-- d -->
196
+ <g id="node16" class="node">
197
+ <title>d</title>
198
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M518.62,-322C518.62,-322 399.12,-322 399.12,-322 393.12,-322 387.12,-316 387.12,-310 387.12,-310 387.12,-298 387.12,-298 387.12,-292 393.12,-286 399.12,-286 399.12,-286 518.62,-286 518.62,-286 524.62,-286 530.62,-292 530.62,-298 530.62,-298 530.62,-310 530.62,-310 530.62,-316 524.62,-322 518.62,-322"/>
199
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-305.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">DAO::LDAP/Mongo/PG/SQLite</text>
200
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-295.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">JSONPathify · PDFParse · OCR</text>
201
+ </g>
202
+ <!-- Data&#45;&gt;d -->
203
+ <g id="edge15" class="edge">
204
+ <title>Data&#45;&gt;d</title>
205
+ <path fill="none" stroke="#94a3b8" d="M271.48,-304C299.25,-304 341.73,-304 379.12,-304"/>
206
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="379.01,-306.1 385.01,-304 379.01,-301.9 379.01,-306.1"/>
207
+ </g>
208
+ <!-- a -->
209
+ <g id="node17" class="node">
210
+ <title>a</title>
211
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M511.5,-268C511.5,-268 406.25,-268 406.25,-268 400.25,-268 394.25,-262 394.25,-256 394.25,-256 394.25,-244 394.25,-244 394.25,-238 400.25,-232 406.25,-232 406.25,-232 511.5,-232 511.5,-232 517.5,-232 523.5,-238 523.5,-244 523.5,-244 523.5,-256 523.5,-256 523.5,-262 517.5,-268 511.5,-268"/>
212
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-251.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">OAuth2 · BasicAuth</text>
213
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-241.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">AuthenticationHelper · Vault</text>
214
+ </g>
215
+ <!-- Auth&#45;&gt;a -->
216
+ <g id="edge16" class="edge">
217
+ <title>Auth&#45;&gt;a</title>
218
+ <path fill="none" stroke="#94a3b8" d="M267.92,-250C297.26,-250 345.74,-250 386.38,-250"/>
219
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="386.36,-252.1 392.36,-250 386.36,-247.9 386.36,-252.1"/>
220
+ </g>
221
+ <!-- h -->
222
+ <g id="node18" class="node">
223
+ <title>h</title>
224
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M512.62,-214C512.62,-214 405.12,-214 405.12,-214 399.12,-214 393.12,-208 393.12,-202 393.12,-202 393.12,-190 393.12,-190 393.12,-184 399.12,-178 405.12,-178 405.12,-178 512.62,-178 512.62,-178 518.62,-178 524.62,-184 524.62,-190 524.62,-190 524.62,-202 524.62,-202 524.62,-208 518.62,-214 512.62,-214"/>
225
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-197.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Serial · BusPirate</text>
226
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-187.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">MSR206 · Android · BareSIP</text>
227
+ </g>
228
+ <!-- HW&#45;&gt;h -->
229
+ <g id="edge17" class="edge">
230
+ <title>HW&#45;&gt;h</title>
231
+ <path fill="none" stroke="#94a3b8" d="M268.79,-196C297.93,-196 345.22,-196 385.21,-196"/>
232
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="385.07,-198.1 391.07,-196 385.07,-193.9 385.07,-198.1"/>
233
+ </g>
234
+ <!-- c -->
235
+ <g id="node19" class="node">
236
+ <title>c</title>
237
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M502.88,-160C502.88,-160 414.88,-160 414.88,-160 408.88,-160 402.88,-154 402.88,-148 402.88,-148 402.88,-136 402.88,-136 402.88,-130 408.88,-124 414.88,-124 414.88,-124 502.88,-124 502.88,-124 508.88,-124 514.88,-130 514.88,-136 514.88,-136 514.88,-148 514.88,-148 514.88,-154 508.88,-160 502.88,-160"/>
238
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-143.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Jenkins · Git · vSphere</text>
239
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-133.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">DefectDojo · BlackDuck</text>
240
+ </g>
241
+ <!-- CI&#45;&gt;c -->
242
+ <g id="edge18" class="edge">
243
+ <title>CI&#45;&gt;c</title>
244
+ <path fill="none" stroke="#94a3b8" d="M273.32,-142C305.32,-142 355.42,-142 395.36,-142"/>
245
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="395.17,-144.1 401.17,-142 395.17,-139.9 395.17,-144.1"/>
246
+ </g>
247
+ <!-- m -->
248
+ <g id="node20" class="node">
249
+ <title>m</title>
250
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M525,-106C525,-106 392.75,-106 392.75,-106 386.75,-106 380.75,-100 380.75,-94 380.75,-94 380.75,-82 380.75,-82 380.75,-76 386.75,-70 392.75,-70 392.75,-70 525,-70 525,-70 531,-70 537,-76 537,-82 537,-82 537,-94 537,-94 537,-100 531,-106 525,-106"/>
251
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-89.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">MailAgent · SlackClient</text>
252
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-79.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">IRC · RabbitMQ · TwitterAPI · Voice</text>
253
+ </g>
254
+ <!-- Comm&#45;&gt;m -->
255
+ <g id="edge19" class="edge">
256
+ <title>Comm&#45;&gt;m</title>
257
+ <path fill="none" stroke="#94a3b8" d="M267.92,-88C294.07,-88 335.42,-88 372.87,-88"/>
258
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="372.79,-90.1 378.79,-88 372.79,-85.9 372.79,-90.1"/>
259
+ </g>
260
+ <!-- u -->
261
+ <g id="node21" class="node">
262
+ <title>u</title>
263
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.2" d="M516.38,-52C516.38,-52 401.38,-52 401.38,-52 395.38,-52 389.38,-46 389.38,-40 389.38,-40 389.38,-14 389.38,-14 389.38,-8 395.38,-2 401.38,-2 401.38,-2 516.38,-2 516.38,-2 522.38,-2 528.38,-8 528.38,-14 528.38,-14 528.38,-40 528.38,-40 528.38,-46 522.38,-52 516.38,-52"/>
264
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-39.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">FileFu · ThreadPool · Log</text>
265
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-28.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">Char · XXD · DetectOS</text>
266
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-18.45" font-family="sans-Serif" font-size="9.00" fill="#0f172a">ScannableCodes · CreditCard</text>
267
+ <text xml:space="preserve" text-anchor="middle" x="458.88" y="-7.95" font-family="sans-Serif" font-size="9.00" fill="#0f172a">SSN · EIN · VIN · Pony · PS</text>
268
+ </g>
269
+ <!-- Util&#45;&gt;u -->
270
+ <g id="edge20" class="edge">
271
+ <title>Util&#45;&gt;u</title>
272
+ <path fill="none" stroke="#94a3b8" d="M267.92,-33.14C296.09,-32.23 341.91,-30.75 381.48,-29.47"/>
273
+ <polygon fill="#94a3b8" stroke="#94a3b8" points="381.35,-31.58 387.28,-29.28 381.22,-27.38 381.35,-31.58"/>
170
274
  </g>
171
275
  </g>
172
276
  </svg>