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,145 +3,158 @@
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 Fuzzing Workflows Pages: 1 -->
7
- <svg width="740pt" height="247pt"
8
- viewBox="0.00 0.00 740.00 247.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 243)">
10
- <title>PWN Fuzzing Workflows</title>
11
- <polygon fill="white" stroke="none" points="-4,4 -4,-243 736.32,-243 736.32,4 -4,4"/>
12
- <!-- Input -->
6
+ <!-- Title: PWN_Fuzz Pages: 1 -->
7
+ <svg width="901pt" height="389pt"
8
+ viewBox="0.00 0.00 901.00 389.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 346.07)">
10
+ <title>PWN_Fuzz</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-346.07 858.2,-346.07 858.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="322.75" y="-280.87" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Fuzzing with PWN</text>
13
+ <text xml:space="preserve" text-anchor="start" x="299.5" y="-269.42" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_gen</title>
16
+ <path fill="#022c22" stroke="#047857" d="M182.75,-36.87C182.75,-36.87 267.25,-36.87 267.25,-36.87 273.25,-36.87 279.25,-42.87 279.25,-48.87 279.25,-48.87 279.25,-175.87 279.25,-175.87 279.25,-181.87 273.25,-187.87 267.25,-187.87 267.25,-187.87 182.75,-187.87 182.75,-187.87 176.75,-187.87 170.75,-181.87 170.75,-175.87 170.75,-175.87 170.75,-48.87 170.75,-48.87 170.75,-42.87 176.75,-36.87 182.75,-36.87"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-164.87" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Generate</text>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_deliver</title>
21
+ <path fill="#422006" stroke="#a16207" d="M362.25,-36.87C362.25,-36.87 479,-36.87 479,-36.87 485,-36.87 491,-42.87 491,-48.87 491,-48.87 491,-243.87 491,-243.87 491,-249.87 485,-255.87 479,-255.87 479,-255.87 362.25,-255.87 362.25,-255.87 356.25,-255.87 350.25,-249.87 350.25,-243.87 350.25,-243.87 350.25,-48.87 350.25,-48.87 350.25,-42.87 356.25,-36.87 362.25,-36.87"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Deliver</text>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_mon</title>
26
+ <path fill="#450a0a" stroke="#b91c1c" d="M574,-104.87C574,-104.87 645.75,-104.87 645.75,-104.87 651.75,-104.87 657.75,-110.87 657.75,-116.87 657.75,-116.87 657.75,-243.87 657.75,-243.87 657.75,-249.87 651.75,-255.87 645.75,-255.87 645.75,-255.87 574,-255.87 574,-255.87 568,-255.87 562,-249.87 562,-243.87 562,-243.87 562,-116.87 562,-116.87 562,-110.87 568,-104.87 574,-104.87"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Monitor</text>
28
+ </g>
29
+ <!-- Seed -->
13
30
  <g id="node1" class="node">
14
- <title>Input</title>
15
- <path fill="none" stroke="black" d="M76,-36C76,-36 12,-36 12,-36 6,-36 0,-30 0,-24 0,-24 0,-12 0,-12 0,-6 6,0 12,0 12,0 76,0 76,0 82,0 88,-6 88,-12 88,-12 88,-24 88,-24 88,-30 82,-36 76,-36"/>
16
- <text xml:space="preserve" text-anchor="middle" x="44" y="-19.95" font-family="Arial" font-size="9.00">Input Corpus</text>
17
- <text xml:space="preserve" text-anchor="middle" x="44" y="-9.45" font-family="Arial" font-size="9.00">(Seeds, Mutators)</text>
31
+ <title>Seed</title>
32
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M79.75,-113.87C79.75,-113.87 12,-113.87 12,-113.87 6,-113.87 0,-107.87 0,-101.87 0,-101.87 0,-89.87 0,-89.87 0,-83.87 6,-77.87 12,-77.87 12,-77.87 79.75,-77.87 79.75,-77.87 85.75,-77.87 91.75,-83.87 91.75,-89.87 91.75,-89.87 91.75,-101.87 91.75,-101.87 91.75,-107.87 85.75,-113.87 79.75,-113.87"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="45.88" y="-98.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Seed corpus /</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="45.88" y="-86.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">protocol grammar</text>
18
35
  </g>
19
- <!-- PWNfuzz -->
20
- <g id="node6" class="node">
21
- <title>PWNfuzz</title>
22
- <ellipse fill="none" stroke="black" cx="181.1" cy="-113" rx="56.1" ry="18"/>
23
- <text xml:space="preserve" text-anchor="middle" x="181.1" y="-109.7" font-family="Arial" font-size="9.00">PWN::Plugins::Fuzz</text>
24
- </g>
25
- <!-- Input&#45;&gt;PWNfuzz -->
26
- <g id="edge1" class="edge">
27
- <title>Input&#45;&gt;PWNfuzz</title>
28
- <path fill="none" stroke="black" d="M71.05,-36.32C92.88,-51.67 124.16,-73.67 147.63,-90.17"/>
29
- <polygon fill="black" stroke="black" points="145.4,-92.88 155.6,-95.77 149.43,-87.16 145.4,-92.88"/>
30
- </g>
31
- <!-- FuzzProto -->
36
+ <!-- Fuzz -->
32
37
  <g id="node2" class="node">
33
- <title>FuzzProto</title>
34
- <path fill="none" stroke="black" d="M388.45,-239C388.45,-239 286.2,-239 286.2,-239 280.2,-239 274.2,-233 274.2,-227 274.2,-227 274.2,-215 274.2,-215 274.2,-209 280.2,-203 286.2,-203 286.2,-203 388.45,-203 388.45,-203 394.45,-203 400.45,-209 400.45,-215 400.45,-215 400.45,-227 400.45,-227 400.45,-233 394.45,-239 388.45,-239"/>
35
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-222.95" font-family="Arial" font-size="9.00">Protocol Fuzz</text>
36
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-212.45" font-family="Arial" font-size="9.00">(pwn_fuzz_net_app_proto)</text>
38
+ <title>Fuzz</title>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M259.25,-148.87C259.25,-148.87 190.75,-148.87 190.75,-148.87 184.75,-148.87 178.75,-142.87 178.75,-136.87 178.75,-136.87 178.75,-124.87 178.75,-124.87 178.75,-118.87 184.75,-112.87 190.75,-112.87 190.75,-112.87 259.25,-112.87 259.25,-112.87 265.25,-112.87 271.25,-118.87 271.25,-124.87 271.25,-124.87 271.25,-136.87 271.25,-136.87 271.25,-142.87 265.25,-148.87 259.25,-148.87"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mutate · generate</text>
37
42
  </g>
38
- <!-- Monitor -->
39
- <g id="node7" class="node">
40
- <title>Monitor</title>
41
- <path fill="none" stroke="black" d="M547.2,-131C547.2,-131 449.45,-131 449.45,-131 443.45,-131 437.45,-125 437.45,-119 437.45,-119 437.45,-107 437.45,-107 437.45,-101 443.45,-95 449.45,-95 449.45,-95 547.2,-95 547.2,-95 553.2,-95 559.2,-101 559.2,-107 559.2,-107 559.2,-119 559.2,-119 559.2,-125 553.2,-131 547.2,-131"/>
42
- <text xml:space="preserve" text-anchor="middle" x="498.32" y="-114.95" font-family="Arial" font-size="9.00">Monitor Crashes</text>
43
- <text xml:space="preserve" text-anchor="middle" x="498.32" y="-104.45" font-family="Arial" font-size="9.00">(PS, logging, core dumps)</text>
44
- </g>
45
- <!-- FuzzProto&#45;&gt;Monitor -->
46
- <g id="edge6" class="edge">
47
- <title>FuzzProto&#45;&gt;Monitor</title>
48
- <path fill="none" stroke="black" d="M384.87,-202.53C390.24,-199.89 395.55,-197.03 400.45,-194 426.05,-178.19 452.05,-156.05 470.66,-138.91"/>
49
- <polygon fill="black" stroke="black" points="472.9,-141.61 477.81,-132.22 468.11,-136.5 472.9,-141.61"/>
43
+ <!-- Seed&#45;&gt;Fuzz -->
44
+ <g id="edge1" class="edge">
45
+ <title>Seed&#45;&gt;Fuzz</title>
46
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.03,-104.8C115.37,-109.41 144.07,-115.08 168.73,-119.95"/>
47
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="167.99,-122.66 176.38,-121.46 169.08,-117.17 167.99,-122.66"/>
50
48
  </g>
51
- <!-- FuzzFile -->
49
+ <!-- Char -->
52
50
  <g id="node3" class="node">
53
- <title>FuzzFile</title>
54
- <path fill="none" stroke="black" d="M369.32,-185C369.32,-185 305.32,-185 305.32,-185 299.32,-185 293.32,-179 293.32,-173 293.32,-173 293.32,-161 293.32,-161 293.32,-155 299.32,-149 305.32,-149 305.32,-149 369.32,-149 369.32,-149 375.32,-149 381.32,-155 381.32,-161 381.32,-161 381.32,-173 381.32,-173 381.32,-179 375.32,-185 369.32,-185"/>
55
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-163.7" font-family="Arial" font-size="9.00">File / Format Fuzz</text>
51
+ <title>Char</title>
52
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M250.62,-80.87C250.62,-80.87 199.38,-80.87 199.38,-80.87 193.38,-80.87 187.38,-74.87 187.38,-68.87 187.38,-68.87 187.38,-56.87 187.38,-56.87 187.38,-50.87 193.38,-44.87 199.38,-44.87 199.38,-44.87 250.62,-44.87 250.62,-44.87 256.62,-44.87 262.62,-50.87 262.62,-56.87 262.62,-56.87 262.62,-68.87 262.62,-68.87 262.62,-74.87 256.62,-80.87 250.62,-80.87"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Char</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">encodings</text>
56
55
  </g>
57
- <!-- FuzzFile&#45;&gt;Monitor -->
58
- <g id="edge7" class="edge">
59
- <title>FuzzFile&#45;&gt;Monitor</title>
60
- <path fill="none" stroke="black" d="M381.77,-152.24C397.46,-146.92 415.52,-140.78 432.63,-134.97"/>
61
- <polygon fill="black" stroke="black" points="433.36,-138.42 441.7,-131.89 431.1,-131.79 433.36,-138.42"/>
56
+ <!-- Seed&#45;&gt;Char -->
57
+ <g id="edge2" class="edge">
58
+ <title>Seed&#45;&gt;Char</title>
59
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.03,-87.46C118.11,-82.6 150.87,-76.5 177.22,-71.59"/>
60
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="177.7,-74.35 185.05,-70.13 176.67,-68.84 177.7,-74.35"/>
62
61
  </g>
63
- <!-- FuzzNet -->
62
+ <!-- Sock -->
64
63
  <g id="node4" class="node">
65
- <title>FuzzNet</title>
66
- <path fill="none" stroke="black" d="M377.57,-131C377.57,-131 297.07,-131 297.07,-131 291.07,-131 285.07,-125 285.07,-119 285.07,-119 285.07,-107 285.07,-107 285.07,-101 291.07,-95 297.07,-95 297.07,-95 377.57,-95 377.57,-95 383.57,-95 389.57,-101 389.57,-107 389.57,-107 389.57,-119 389.57,-119 389.57,-125 383.57,-131 377.57,-131"/>
67
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-109.7" font-family="Arial" font-size="9.00">Network Service Fuzz</text>
64
+ <title>Sock</title>
65
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M447,-216.87C447,-216.87 394.25,-216.87 394.25,-216.87 388.25,-216.87 382.25,-210.87 382.25,-204.87 382.25,-204.87 382.25,-192.87 382.25,-192.87 382.25,-186.87 388.25,-180.87 394.25,-180.87 394.25,-180.87 447,-180.87 447,-180.87 453,-180.87 459,-186.87 459,-192.87 459,-192.87 459,-204.87 459,-204.87 459,-210.87 453,-216.87 447,-216.87"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP</text>
68
68
  </g>
69
- <!-- FuzzNet&#45;&gt;Monitor -->
70
- <g id="edge8" class="edge">
71
- <title>FuzzNet&#45;&gt;Monitor</title>
72
- <path fill="none" stroke="black" d="M389.95,-113C401.35,-113 413.64,-113 425.68,-113"/>
73
- <polygon fill="black" stroke="black" points="425.6,-116.5 435.6,-113 425.6,-109.5 425.6,-116.5"/>
69
+ <!-- Fuzz&#45;&gt;Sock -->
70
+ <g id="edge3" class="edge">
71
+ <title>Fuzz&#45;&gt;Sock</title>
72
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M271.89,-146.99C302.29,-157.67 342.06,-171.63 372.68,-182.39"/>
73
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="371.54,-184.95 380.01,-184.96 373.39,-179.67 371.54,-184.95"/>
74
74
  </g>
75
- <!-- FuzzWeb -->
75
+ <!-- Packet -->
76
76
  <g id="node5" class="node">
77
- <title>FuzzWeb</title>
78
- <path fill="none" stroke="black" d="M370.45,-77C370.45,-77 304.2,-77 304.2,-77 298.2,-77 292.2,-71 292.2,-65 292.2,-65 292.2,-53 292.2,-53 292.2,-47 298.2,-41 304.2,-41 304.2,-41 370.45,-41 370.45,-41 376.45,-41 382.45,-47 382.45,-53 382.45,-53 382.45,-65 382.45,-65 382.45,-71 376.45,-77 370.45,-77"/>
79
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-60.95" font-family="Arial" font-size="9.00">Web App Fuzz</text>
80
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-50.45" font-family="Arial" font-size="9.00">(XSS vectors, etc.)</text>
77
+ <title>Packet</title>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M451.12,-148.87C451.12,-148.87 390.12,-148.87 390.12,-148.87 384.12,-148.87 378.12,-142.87 378.12,-136.87 378.12,-136.87 378.12,-124.87 378.12,-124.87 378.12,-118.87 384.12,-112.87 390.12,-112.87 390.12,-112.87 451.12,-112.87 451.12,-112.87 457.12,-112.87 463.12,-118.87 463.12,-124.87 463.12,-124.87 463.12,-136.87 463.12,-136.87 463.12,-142.87 457.12,-148.87 451.12,-148.87"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">raw L2/L3</text>
81
81
  </g>
82
- <!-- FuzzWeb&#45;&gt;Monitor -->
83
- <g id="edge9" class="edge">
84
- <title>FuzzWeb&#45;&gt;Monitor</title>
85
- <path fill="none" stroke="black" d="M382.61,-74.04C397.99,-79.26 415.57,-85.23 432.27,-90.91"/>
86
- <polygon fill="black" stroke="black" points="431.06,-94.19 441.65,-94.09 433.31,-87.56 431.06,-94.19"/>
82
+ <!-- Fuzz&#45;&gt;Packet -->
83
+ <g id="edge4" class="edge">
84
+ <title>Fuzz&#45;&gt;Packet</title>
85
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M271.89,-130.87C300.72,-130.87 337.98,-130.87 367.87,-130.87"/>
86
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="367.73,-133.67 375.73,-130.87 367.73,-128.07 367.73,-133.67"/>
87
87
  </g>
88
- <!-- PWNfuzz&#45;&gt;FuzzProto -->
89
- <g id="edge2" class="edge">
90
- <title>PWNfuzz&#45;&gt;FuzzProto</title>
91
- <path fill="none" stroke="black" d="M198.45,-130.26C215.93,-147.99 245.08,-175.51 274.2,-194 276.02,-195.16 277.91,-196.29 279.83,-197.39"/>
92
- <polygon fill="black" stroke="black" points="277.89,-200.32 288.36,-201.94 281.18,-194.15 277.89,-200.32"/>
88
+ <!-- NetApp -->
89
+ <g id="node6" class="node">
90
+ <title>NetApp</title>
91
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M471,-80.87C471,-80.87 370.25,-80.87 370.25,-80.87 364.25,-80.87 358.25,-74.87 358.25,-68.87 358.25,-68.87 358.25,-56.87 358.25,-56.87 358.25,-50.87 364.25,-44.87 370.25,-44.87 370.25,-44.87 471,-44.87 471,-44.87 477,-44.87 483,-50.87 483,-56.87 483,-56.87 483,-68.87 483,-68.87 483,-74.87 477,-80.87 471,-80.87"/>
92
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_fuzz_net_app_proto</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CLI driver</text>
93
94
  </g>
94
- <!-- PWNfuzz&#45;&gt;FuzzFile -->
95
- <g id="edge3" class="edge">
96
- <title>PWNfuzz&#45;&gt;FuzzFile</title>
97
- <path fill="none" stroke="black" d="M220.22,-126.35C238.9,-132.89 261.71,-140.88 282.16,-148.04"/>
98
- <polygon fill="black" stroke="black" points="280.9,-151.3 291.49,-151.3 283.21,-144.69 280.9,-151.3"/>
95
+ <!-- Char&#45;&gt;NetApp -->
96
+ <g id="edge5" class="edge">
97
+ <title>Char&#45;&gt;NetApp</title>
98
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M262.88,-62.87C286.93,-62.87 319.12,-62.87 348.07,-62.87"/>
99
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="347.78,-65.67 355.78,-62.87 347.78,-60.07 347.78,-65.67"/>
99
100
  </g>
100
- <!-- PWNfuzz&#45;&gt;FuzzNet -->
101
- <g id="edge4" class="edge">
102
- <title>PWNfuzz&#45;&gt;FuzzNet</title>
103
- <path fill="none" stroke="black" d="M237.34,-113C249.07,-113 261.53,-113 273.51,-113"/>
104
- <polygon fill="black" stroke="black" points="273.3,-116.5 283.3,-113 273.3,-109.5 273.3,-116.5"/>
101
+ <!-- PS -->
102
+ <g id="node7" class="node">
103
+ <title>PS</title>
104
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M637.75,-216.87C637.75,-216.87 582,-216.87 582,-216.87 576,-216.87 570,-210.87 570,-204.87 570,-204.87 570,-192.87 570,-192.87 570,-186.87 576,-180.87 582,-180.87 582,-180.87 637.75,-180.87 637.75,-180.87 643.75,-180.87 649.75,-186.87 649.75,-192.87 649.75,-192.87 649.75,-204.87 649.75,-204.87 649.75,-210.87 643.75,-216.87 637.75,-216.87"/>
105
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::PS</text>
106
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">process health</text>
105
107
  </g>
106
- <!-- PWNfuzz&#45;&gt;FuzzWeb -->
107
- <g id="edge5" class="edge">
108
- <title>PWNfuzz&#45;&gt;FuzzWeb</title>
109
- <path fill="none" stroke="black" d="M220.22,-99.65C238.6,-93.22 260.98,-85.38 281.17,-78.31"/>
110
- <polygon fill="black" stroke="black" points="282.09,-81.7 290.38,-75.09 279.78,-75.09 282.09,-81.7"/>
108
+ <!-- Sock&#45;&gt;PS -->
109
+ <g id="edge6" class="edge">
110
+ <title>Sock&#45;&gt;PS</title>
111
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M459.52,-198.87C488.35,-198.87 528.27,-198.87 559.58,-198.87"/>
112
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="559.46,-201.67 567.46,-198.87 559.46,-196.07 559.46,-201.67"/>
111
113
  </g>
112
- <!-- Corpus -->
114
+ <!-- Log -->
113
115
  <g id="node8" class="node">
114
- <title>Corpus</title>
115
- <path fill="none" stroke="black" d="M707.88,-129.31C707.88,-131.31 688.33,-132.94 664.26,-132.94 640.19,-132.94 620.63,-131.31 620.63,-129.31 620.63,-129.31 620.63,-96.69 620.63,-96.69 620.63,-94.69 640.19,-93.06 664.26,-93.06 688.33,-93.06 707.88,-94.69 707.88,-96.69 707.88,-96.69 707.88,-129.31 707.88,-129.31"/>
116
- <path fill="none" stroke="black" d="M707.88,-129.31C707.88,-127.31 688.33,-125.69 664.26,-125.69 640.19,-125.69 620.63,-127.31 620.63,-129.31"/>
117
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-114.95" font-family="Arial" font-size="9.00">Interesting Inputs</text>
118
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-104.45" font-family="Arial" font-size="9.00">(saved for replay)</text>
116
+ <title>Log</title>
117
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M632.88,-148.87C632.88,-148.87 586.88,-148.87 586.88,-148.87 580.88,-148.87 574.88,-142.87 574.88,-136.87 574.88,-136.87 574.88,-124.87 574.88,-124.87 574.88,-118.87 580.88,-112.87 586.88,-112.87 586.88,-112.87 632.88,-112.87 632.88,-112.87 638.88,-112.87 644.88,-118.87 644.88,-124.87 644.88,-124.87 644.88,-136.87 644.88,-136.87 644.88,-142.87 638.88,-148.87 632.88,-148.87"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Log</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash detect</text>
119
120
  </g>
120
- <!-- Monitor&#45;&gt;Corpus -->
121
- <g id="edge10" class="edge">
122
- <title>Monitor&#45;&gt;Corpus</title>
123
- <path fill="none" stroke="black" d="M559.44,-113C575.69,-113 593.17,-113 609.08,-113"/>
124
- <polygon fill="black" stroke="black" points="608.82,-116.5 618.82,-113 608.82,-109.5 608.82,-116.5"/>
121
+ <!-- Packet&#45;&gt;Log -->
122
+ <g id="edge7" class="edge">
123
+ <title>Packet&#45;&gt;Log</title>
124
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M463.65,-130.87C493.68,-130.87 534.01,-130.87 564.55,-130.87"/>
125
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="564.54,-133.67 572.54,-130.87 564.54,-128.07 564.54,-133.67"/>
126
+ </g>
127
+ <!-- NetApp&#45;&gt;Log -->
128
+ <g id="edge8" class="edge">
129
+ <title>NetApp&#45;&gt;Log</title>
130
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M472.79,-81.45C501.78,-91.98 537.67,-105.01 565.3,-115.05"/>
131
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="564.01,-117.56 572.49,-117.66 565.93,-112.3 564.01,-117.56"/>
125
132
  </g>
126
- <!-- Crash -->
133
+ <!-- Report -->
127
134
  <g id="node9" class="node">
128
- <title>Crash</title>
129
- <ellipse fill="none" stroke="black" cx="664.26" cy="-31" rx="68.06" ry="20.51"/>
130
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-32.95" font-family="Arial" font-size="9.00">Crash Analysis</text>
131
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-22.45" font-family="Arial" font-size="9.00">(identify root cause)</text>
135
+ <title>Report</title>
136
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M803,-185.87C803,-185.87 748.75,-185.87 748.75,-185.87 742.75,-185.87 736.75,-179.87 736.75,-173.87 736.75,-173.87 736.75,-161.87 736.75,-161.87 736.75,-155.87 742.75,-149.87 748.75,-149.87 748.75,-149.87 803,-149.87 803,-149.87 809,-149.87 815,-155.87 815,-161.87 815,-161.87 815,-173.87 815,-173.87 815,-179.87 809,-185.87 803,-185.87"/>
137
+ <text xml:space="preserve" text-anchor="middle" x="775.88" y="-170.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports::Fuzz</text>
138
+ <text xml:space="preserve" text-anchor="middle" x="775.88" y="-158.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash triage</text>
132
139
  </g>
133
- <!-- Monitor&#45;&gt;Crash -->
140
+ <!-- PS&#45;&gt;Report -->
141
+ <g id="edge9" class="edge">
142
+ <title>PS&#45;&gt;Report</title>
143
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M650.16,-191.45C673.06,-187.12 702.13,-181.62 726.45,-177.03"/>
144
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="726.92,-179.79 734.26,-175.55 725.88,-174.28 726.92,-179.79"/>
145
+ </g>
146
+ <!-- Log&#45;&gt;Fuzz -->
134
147
  <g id="edge11" class="edge">
135
- <title>Monitor&#45;&gt;Crash</title>
136
- <path fill="none" stroke="black" d="M536.11,-94.6C560.26,-82.52 592.01,-66.64 617.74,-53.77"/>
137
- <polygon fill="black" stroke="black" points="619.26,-56.92 626.64,-49.31 616.13,-50.66 619.26,-56.92"/>
138
- </g>
139
- <!-- Crash&#45;&gt;Input -->
140
- <g id="edge12" class="edge">
141
- <title>Crash&#45;&gt;Input</title>
142
- <path fill="none" stroke="black" d="M609.3,-18.57C577.48,-12.3 536.32,-6 499.32,-6 180.1,-6 180.1,-6 180.1,-6 153.57,-6 124.23,-8.32 99.69,-10.93"/>
143
- <polygon fill="black" stroke="black" points="99.47,-7.43 89.92,-12.01 100.24,-14.39 99.47,-7.43"/>
144
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-9.2" font-family="Times,serif" font-size="14.00">refine mutators</text>
148
+ <title>Log&#45;&gt;Fuzz</title>
149
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M596.69,-112.47C577.77,-85.77 538.53,-37.41 491,-18.37 432.93,4.89 407.43,7.01 350.25,-18.37 307.25,-37.46 315.17,-66.5 279.25,-96.87 275.22,-100.28 270.82,-103.61 266.34,-106.77"/>
150
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="264.92,-104.34 259.87,-111.15 268.06,-108.98 264.92,-104.34"/>
151
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-20.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">minimise + reseed</text>
152
+ </g>
153
+ <!-- Log&#45;&gt;Report -->
154
+ <g id="edge10" class="edge">
155
+ <title>Log&#45;&gt;Report</title>
156
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M645.25,-138.63C668.82,-143.95 700.43,-151.08 726.53,-156.97"/>
157
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="725.89,-159.69 734.31,-158.72 727.13,-154.23 725.89,-159.69"/>
145
158
  </g>
146
159
  </g>
147
160
  </svg>
@@ -0,0 +1,163 @@
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_Hardware Pages: 1 -->
7
+ <svg width="702pt" height="484pt"
8
+ viewBox="0.00 0.00 702.00 484.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 441.2)">
10
+ <title>PWN_Hardware</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-441.2 658.7,-441.2 658.7,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="138.25" y="-376" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Hardware &amp; Physical&#45;Layer Hacking</text>
13
+ <text xml:space="preserve" text-anchor="start" x="175.38" y="-364.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Serial · BusPirate · MSR206 · Android · BareSIP · SDR</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_dev</title>
16
+ <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M12,-8C12,-8 154,-8 154,-8 160,-8 166,-14 166,-20 166,-20 166,-339 166,-339 166,-345 160,-351 154,-351 154,-351 12,-351 12,-351 6,-351 0,-345 0,-339 0,-339 0,-20 0,-20 0,-14 6,-8 12,-8"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="83" y="-328" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Physical Devices</text>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_pl</title>
21
+ <path fill="#022c22" stroke="#047857" d="M248,-8C248,-8 420.75,-8 420.75,-8 426.75,-8 432.75,-14 432.75,-20 432.75,-20 432.75,-339 432.75,-339 432.75,-345 426.75,-351 420.75,-351 420.75,-351 248,-351 248,-351 242,-351 236,-345 236,-339 236,-339 236,-20 236,-20 236,-14 242,-8 248,-8"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="334.38" y="-328" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">PWN::Plugins / SDR</text>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_out</title>
26
+ <path fill="#2e1065" stroke="#6d28d9" d="M514.75,-73C514.75,-73 595.5,-73 595.5,-73 601.5,-73 607.5,-79 607.5,-85 607.5,-85 607.5,-209 607.5,-209 607.5,-215 601.5,-221 595.5,-221 595.5,-221 514.75,-221 514.75,-221 508.75,-221 502.75,-215 502.75,-209 502.75,-209 502.75,-85 502.75,-85 502.75,-79 508.75,-73 514.75,-73"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="555.12" y="-198" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Analysis</text>
28
+ </g>
29
+ <!-- Uart -->
30
+ <g id="node1" class="node">
31
+ <title>Uart</title>
32
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M114.88,-52C114.88,-52 50.12,-52 50.12,-52 44.12,-52 38.12,-46 38.12,-40 38.12,-40 38.12,-28 38.12,-28 38.12,-22 44.12,-16 50.12,-16 50.12,-16 114.88,-16 114.88,-16 120.88,-16 126.88,-22 126.88,-28 126.88,-28 126.88,-40 126.88,-40 126.88,-46 120.88,-52 114.88,-52"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">UART / JTAG</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">embedded target</text>
35
+ </g>
36
+ <!-- Serial -->
37
+ <g id="node6" class="node">
38
+ <title>Serial</title>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M368.12,-52C368.12,-52 299.62,-52 299.62,-52 293.62,-52 287.62,-46 287.62,-40 287.62,-40 287.62,-28 287.62,-28 287.62,-22 293.62,-16 299.62,-16 299.62,-16 368.12,-16 368.12,-16 374.12,-16 380.12,-22 380.12,-28 380.12,-28 380.12,-40 380.12,-40 380.12,-46 374.12,-52 368.12,-52"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="333.88" y="-30.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Serial · BusPirate</text>
41
+ </g>
42
+ <!-- Uart&#45;&gt;Serial -->
43
+ <g id="edge1" class="edge">
44
+ <title>Uart&#45;&gt;Serial</title>
45
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M127.51,-34C169.24,-34 232.09,-34 277.27,-34"/>
46
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="277.23,-36.8 285.23,-34 277.23,-31.2 277.23,-36.8"/>
47
+ </g>
48
+ <!-- Mag -->
49
+ <g id="node2" class="node">
50
+ <title>Mag</title>
51
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M110.75,-117C110.75,-117 54.25,-117 54.25,-117 48.25,-117 42.25,-111 42.25,-105 42.25,-105 42.25,-93 42.25,-93 42.25,-87 48.25,-81 54.25,-81 54.25,-81 110.75,-81 110.75,-81 116.75,-81 122.75,-87 122.75,-93 122.75,-93 122.75,-105 122.75,-105 122.75,-111 116.75,-117 110.75,-117"/>
52
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-95.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Magstripe card</text>
53
+ </g>
54
+ <!-- MSR -->
55
+ <g id="node7" class="node">
56
+ <title>MSR</title>
57
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M349,-117C349,-117 318.75,-117 318.75,-117 312.75,-117 306.75,-111 306.75,-105 306.75,-105 306.75,-93 306.75,-93 306.75,-87 312.75,-81 318.75,-81 318.75,-81 349,-81 349,-81 355,-81 361,-87 361,-93 361,-93 361,-105 361,-105 361,-111 355,-117 349,-117"/>
58
+ <text xml:space="preserve" text-anchor="middle" x="333.88" y="-95.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">MSR206</text>
59
+ </g>
60
+ <!-- Mag&#45;&gt;MSR -->
61
+ <g id="edge2" class="edge">
62
+ <title>Mag&#45;&gt;MSR</title>
63
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M123.29,-99C170.97,-99 250.21,-99 296.38,-99"/>
64
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="296.29,-101.8 304.29,-99 296.29,-96.2 296.29,-101.8"/>
65
+ </g>
66
+ <!-- Phone -->
67
+ <g id="node3" class="node">
68
+ <title>Phone</title>
69
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M110.75,-182C110.75,-182 54.25,-182 54.25,-182 48.25,-182 42.25,-176 42.25,-170 42.25,-170 42.25,-158 42.25,-158 42.25,-152 48.25,-146 54.25,-146 54.25,-146 110.75,-146 110.75,-146 116.75,-146 122.75,-152 122.75,-158 122.75,-158 122.75,-170 122.75,-170 122.75,-176 116.75,-182 110.75,-182"/>
70
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Android device</text>
71
+ </g>
72
+ <!-- Adb -->
73
+ <g id="node8" class="node">
74
+ <title>Adb</title>
75
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M358.75,-182C358.75,-182 309,-182 309,-182 303,-182 297,-176 297,-170 297,-170 297,-158 297,-158 297,-152 303,-146 309,-146 309,-146 358.75,-146 358.75,-146 364.75,-146 370.75,-152 370.75,-158 370.75,-158 370.75,-170 370.75,-170 370.75,-176 364.75,-182 358.75,-182"/>
76
+ <text xml:space="preserve" text-anchor="middle" x="333.88" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Android (adb)</text>
77
+ </g>
78
+ <!-- Phone&#45;&gt;Adb -->
79
+ <g id="edge3" class="edge">
80
+ <title>Phone&#45;&gt;Adb</title>
81
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M123.29,-164C167.74,-164 239.62,-164 286.56,-164"/>
82
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="286.5,-166.8 294.5,-164 286.5,-161.2 286.5,-166.8"/>
83
+ </g>
84
+ <!-- VoIP -->
85
+ <g id="node4" class="node">
86
+ <title>VoIP</title>
87
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M104.75,-247C104.75,-247 60.25,-247 60.25,-247 54.25,-247 48.25,-241 48.25,-235 48.25,-235 48.25,-223 48.25,-223 48.25,-217 54.25,-211 60.25,-211 60.25,-211 104.75,-211 104.75,-211 110.75,-211 116.75,-217 116.75,-223 116.75,-223 116.75,-235 116.75,-235 116.75,-241 110.75,-247 104.75,-247"/>
88
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-225.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SIP / PSTN</text>
89
+ </g>
90
+ <!-- Sip -->
91
+ <g id="node9" class="node">
92
+ <title>Sip</title>
93
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M365.12,-247C365.12,-247 302.62,-247 302.62,-247 296.62,-247 290.62,-241 290.62,-235 290.62,-235 290.62,-223 290.62,-223 290.62,-217 296.62,-211 302.62,-211 302.62,-211 365.12,-211 365.12,-211 371.12,-211 377.12,-217 377.12,-223 377.12,-223 377.12,-235 377.12,-235 377.12,-241 371.12,-247 365.12,-247"/>
94
+ <text xml:space="preserve" text-anchor="middle" x="333.88" y="-225.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BareSIP · Voice</text>
95
+ </g>
96
+ <!-- VoIP&#45;&gt;Sip -->
97
+ <g id="edge4" class="edge">
98
+ <title>VoIP&#45;&gt;Sip</title>
99
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M117.39,-229C159.38,-229 231.36,-229 280.48,-229"/>
100
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="280.32,-231.8 288.32,-229 280.32,-226.2 280.32,-231.8"/>
101
+ </g>
102
+ <!-- RF -->
103
+ <g id="node5" class="node">
104
+ <title>RF</title>
105
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M107,-312C107,-312 58,-312 58,-312 52,-312 46,-306 46,-300 46,-300 46,-288 46,-288 46,-282 52,-276 58,-276 58,-276 107,-276 107,-276 113,-276 119,-282 119,-288 119,-288 119,-300 119,-300 119,-306 113,-312 107,-312"/>
106
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-290.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RF spectrum</text>
107
+ </g>
108
+ <!-- Sdr -->
109
+ <g id="node10" class="node">
110
+ <title>Sdr</title>
111
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M377.5,-312C377.5,-312 290.25,-312 290.25,-312 284.25,-312 278.25,-306 278.25,-300 278.25,-300 278.25,-288 278.25,-288 278.25,-282 284.25,-276 290.25,-276 290.25,-276 377.5,-276 377.5,-276 383.5,-276 389.5,-282 389.5,-288 389.5,-288 389.5,-300 389.5,-300 389.5,-306 383.5,-312 377.5,-312"/>
112
+ <text xml:space="preserve" text-anchor="middle" x="333.88" y="-290.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::GQRX · Flipper</text>
113
+ </g>
114
+ <!-- RF&#45;&gt;Sdr -->
115
+ <g id="edge5" class="edge">
116
+ <title>RF&#45;&gt;Sdr</title>
117
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M119.49,-294C158.28,-294 220.8,-294 268.17,-294"/>
118
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="268.06,-296.8 276.06,-294 268.06,-291.2 268.06,-296.8"/>
119
+ </g>
120
+ <!-- XXD -->
121
+ <g id="node11" class="node">
122
+ <title>XXD</title>
123
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M587.5,-117C587.5,-117 522.75,-117 522.75,-117 516.75,-117 510.75,-111 510.75,-105 510.75,-105 510.75,-93 510.75,-93 510.75,-87 516.75,-81 522.75,-81 522.75,-81 587.5,-81 587.5,-81 593.5,-81 599.5,-87 599.5,-93 599.5,-93 599.5,-105 599.5,-105 599.5,-111 593.5,-117 587.5,-117"/>
124
+ <text xml:space="preserve" text-anchor="middle" x="555.12" y="-95.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">XXD · Assembly</text>
125
+ </g>
126
+ <!-- Serial&#45;&gt;XXD -->
127
+ <g id="edge6" class="edge">
128
+ <title>Serial&#45;&gt;XXD</title>
129
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M380.57,-47.55C415.74,-57.97 464.41,-72.4 501.26,-83.33"/>
130
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="500.01,-85.88 508.47,-85.47 501.6,-80.51 500.01,-85.88"/>
131
+ </g>
132
+ <!-- MSR&#45;&gt;XXD -->
133
+ <g id="edge7" class="edge">
134
+ <title>MSR&#45;&gt;XXD</title>
135
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M361.32,-99C395.63,-99 456.3,-99 500.44,-99"/>
136
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="500.19,-101.8 508.19,-99 500.19,-96.2 500.19,-101.8"/>
137
+ </g>
138
+ <!-- Rep -->
139
+ <g id="node12" class="node">
140
+ <title>Rep</title>
141
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M584.88,-182C584.88,-182 525.38,-182 525.38,-182 519.38,-182 513.38,-176 513.38,-170 513.38,-170 513.38,-158 513.38,-158 513.38,-152 519.38,-146 525.38,-146 525.38,-146 584.88,-146 584.88,-146 590.88,-146 596.88,-152 596.88,-158 596.88,-158 596.88,-170 596.88,-170 596.88,-176 590.88,-182 584.88,-182"/>
142
+ <text xml:space="preserve" text-anchor="middle" x="555.12" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports · Skills</text>
143
+ </g>
144
+ <!-- Adb&#45;&gt;Rep -->
145
+ <g id="edge8" class="edge">
146
+ <title>Adb&#45;&gt;Rep</title>
147
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M371.08,-164C407.07,-164 462.61,-164 503.07,-164"/>
148
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="503.04,-166.8 511.04,-164 503.04,-161.2 503.04,-166.8"/>
149
+ </g>
150
+ <!-- Sip&#45;&gt;Rep -->
151
+ <g id="edge9" class="edge">
152
+ <title>Sip&#45;&gt;Rep</title>
153
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M377.67,-216.31C413.74,-205.62 465.43,-190.3 503.54,-179"/>
154
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="504.16,-181.73 511.04,-176.77 502.57,-176.36 504.16,-181.73"/>
155
+ </g>
156
+ <!-- Sdr&#45;&gt;Rep -->
157
+ <g id="edge10" class="edge">
158
+ <title>Sdr&#45;&gt;Rep</title>
159
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M389.93,-279.87C404.3,-275.15 419.48,-269.21 432.75,-262 469.26,-242.17 505.59,-210.92 528.86,-189.05"/>
160
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="530.65,-191.21 534.51,-183.66 526.78,-187.16 530.65,-191.21"/>
161
+ </g>
162
+ </g>
163
+ </svg>