pwn 0.5.617 → 0.5.620

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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +101 -83
  4. data/bin/pwn_gqrx_scanner +25 -5
  5. data/documentation/AI-Integration.md +42 -26
  6. data/documentation/AWS.md +57 -0
  7. data/documentation/Agent-Tool-Registry.md +56 -0
  8. data/documentation/Banner.md +17 -0
  9. data/documentation/Blockchain.md +18 -0
  10. data/documentation/Bounty.md +21 -0
  11. data/documentation/BurpSuite.md +41 -16
  12. data/documentation/CLI-Drivers.md +58 -0
  13. data/documentation/Configuration.md +66 -0
  14. data/documentation/Contributing.md +33 -19
  15. data/documentation/Cron.md +47 -0
  16. data/documentation/Diagrams.md +6 -2
  17. data/documentation/Drivers.md +43 -16
  18. data/documentation/Extrospection.md +73 -0
  19. data/documentation/FFI.md +14 -0
  20. data/documentation/Fuzzing.md +36 -0
  21. data/documentation/Hardware.md +40 -0
  22. data/documentation/Home.md +5 -4
  23. data/documentation/How-PWN-Works.md +7 -4
  24. data/documentation/Metasploit.md +34 -0
  25. data/documentation/Mistakes.md +96 -0
  26. data/documentation/NmapIt.md +18 -12
  27. data/documentation/PWN.png +0 -0
  28. data/documentation/PWN_Contributors_and_Users.png +0 -0
  29. data/documentation/Persistence.md +40 -0
  30. data/documentation/Plugins.md +97 -47
  31. data/documentation/Reporting.md +25 -18
  32. data/documentation/SAST.md +39 -22
  33. data/documentation/SDR.md +58 -0
  34. data/documentation/Sessions.md +39 -0
  35. data/documentation/Skills-Memory-Learning.md +59 -29
  36. data/documentation/Swarm.md +71 -0
  37. data/documentation/Transparent-Browser.md +26 -22
  38. data/documentation/Troubleshooting.md +44 -25
  39. data/documentation/WWW.md +32 -0
  40. data/documentation/diagrams/agent-tool-registry.svg +286 -0
  41. data/documentation/diagrams/aws-cloud-security.svg +166 -0
  42. data/documentation/diagrams/cron-scheduling.svg +148 -0
  43. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  44. data/documentation/diagrams/dot/extrospection-world-awareness.dot +9 -7
  45. data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
  46. data/documentation/diagrams/dot/memory-skills-detailed.dot +12 -5
  47. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
  48. data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
  49. data/documentation/diagrams/dot/persistence-filesystem.dot +30 -0
  50. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +19 -7
  51. data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
  52. data/documentation/diagrams/extrospection-world-awareness.svg +203 -0
  53. data/documentation/diagrams/hardware-hacking.svg +163 -0
  54. data/documentation/diagrams/memory-skills-detailed.svg +146 -97
  55. data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
  56. data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
  57. data/documentation/diagrams/persistence-filesystem.svg +189 -0
  58. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +217 -149
  59. data/documentation/diagrams/sdr-radio-flow.svg +166 -0
  60. data/documentation/diagrams/swarm-multi-agent.svg +225 -0
  61. data/documentation/fax-spectrogram.png +0 -0
  62. data/documentation/fax-waveform.png +0 -0
  63. data/documentation/pwn-REPL.md +40 -24
  64. data/documentation/pwn-ai-Agent.md +72 -30
  65. data/documentation/pwn_android_war_dialer_session.png +0 -0
  66. data/documentation/pwn_install.png +0 -0
  67. data/documentation/pwn_wallpaper.jpg +0 -0
  68. data/documentation/ringing-spectrogram.png +0 -0
  69. data/documentation/ringing-waveform.png +0 -0
  70. data/lib/pwn/ai/agent/extrospection.rb +65 -6
  71. data/lib/pwn/ai/agent/learning.rb +67 -7
  72. data/lib/pwn/ai/agent/loop.rb +72 -6
  73. data/lib/pwn/ai/agent/mistakes.rb +369 -0
  74. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  75. data/lib/pwn/ai/agent/tools/extrospection.rb +2 -2
  76. data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
  77. data/lib/pwn/ai/agent.rb +1 -0
  78. data/lib/pwn/plugins/jira_data_center.rb +2 -2
  79. data/lib/pwn/sdr/decoder/adsb.rb +101 -0
  80. data/lib/pwn/sdr/decoder/apt.rb +75 -0
  81. data/lib/pwn/sdr/decoder/bluetooth.rb +78 -0
  82. data/lib/pwn/sdr/decoder/dect.rb +84 -0
  83. data/lib/pwn/sdr/decoder/gps.rb +83 -0
  84. data/lib/pwn/sdr/decoder/gsm.rb +50 -29
  85. data/lib/pwn/sdr/decoder/iridium.rb +81 -0
  86. data/lib/pwn/sdr/decoder/lora.rb +87 -0
  87. data/lib/pwn/sdr/decoder/lte.rb +88 -0
  88. data/lib/pwn/sdr/decoder/morse.rb +64 -0
  89. data/lib/pwn/sdr/decoder/p25.rb +71 -0
  90. data/lib/pwn/sdr/decoder/pager.rb +77 -0
  91. data/lib/pwn/sdr/decoder/pocsag.rb +26 -11
  92. data/lib/pwn/sdr/decoder/rfid.rb +88 -0
  93. data/lib/pwn/sdr/decoder/rtl433.rb +95 -0
  94. data/lib/pwn/sdr/decoder/rtty.rb +66 -0
  95. data/lib/pwn/sdr/decoder/wifi.rb +98 -0
  96. data/lib/pwn/sdr/decoder/zigbee.rb +96 -0
  97. data/lib/pwn/sdr/decoder.rb +67 -7
  98. data/lib/pwn/sdr/frequency_allocation.rb +82 -41
  99. data/lib/pwn/sdr/gqrx.rb +186 -95
  100. data/lib/pwn/version.rb +1 -1
  101. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
  102. data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
  103. data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
  104. data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
  105. data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
  106. data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
  107. data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
  108. data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
  109. data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
  110. data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
  111. data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
  112. data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
  113. data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
  114. data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
  115. data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
  116. data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
  117. data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
  118. data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
  119. data/third_party/pwn_rdoc.jsonl +114 -8
  120. metadata +81 -5
@@ -1,6 +1,6 @@
1
1
  digraph "PWN_SDR" {
2
2
  graph [
3
- label=<<B>PWN::SDR — Software-Defined Radio &amp; RF Hacking</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">GQRX · FlipperZero · RFIDler · SonMicro · FrequencyAllocation</FONT>>,
3
+ label=<<B>PWN::SDR — Software-Defined Radio &amp; RF Hacking</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">GQRX · FlipperZero · RFIDler · SonMicro · FrequencyAllocation · Decoder::* (20 protocols)</FONT>>,
4
4
  labelloc=t, fontsize=20, fontname="Helvetica",
5
5
  rankdir=LR, splines=spline, nodesep=0.45, ranksep=1.2,
6
6
  bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
@@ -15,22 +15,23 @@ digraph "PWN_SDR" {
15
15
  subgraph cluster_hw {
16
16
  label="Hardware"; fontcolor="#a7f3d0"; style=rounded;
17
17
  color="#047857"; bgcolor="#022c22";
18
- SDRhw [label="RTL-SDR / HackRF\n(via GQRX)", fillcolor="#6ee7b7"];
19
- Flipper [label="SDR::FlipperZero", fillcolor="#6ee7b7"];
20
- RFID [label="SDR::RFIDler\nSonMicroRFID", fillcolor="#6ee7b7"];
18
+ SDRhw [label="RTL-SDR / HackRF\n(via GQRX / SoapySDR)", fillcolor="#6ee7b7"];
19
+ Flipper [label="SDR::FlipperZero", fillcolor="#6ee7b7"];
20
+ RFID [label="SDR::RFIDler\nSonMicroRFID", fillcolor="#6ee7b7"];
21
21
  }
22
22
  subgraph cluster_ctrl {
23
- label="Control"; fontcolor="#fde68a"; style=rounded;
23
+ label="Control · Scan"; fontcolor="#fde68a"; style=rounded;
24
24
  color="#a16207"; bgcolor="#422006";
25
- GQRX [label="SDR::GQRX\nremote control · scan\nspectrum snapshot", fillcolor="#fcd34d"];
26
- Freq [label="SDR::FrequencyAllocation\nband lookup", fillcolor="#fcd34d"];
27
- Scan [label="bin/pwn_gqrx_scanner\nfast · iterative", fillcolor="#fcd34d"];
25
+ GQRX [label="SDR::GQRX\nremote control\nspectrum snapshot\n(median floor · DC null)", fillcolor="#fcd34d"];
26
+ Freq [label="SDR::FrequencyAllocation\nband lookup", fillcolor="#fcd34d"];
27
+ Scan [label="bin/pwn_gqrx_scanner\n--fft-scan · iterative\n--min-snr-db · --avg", fillcolor="#fcd34d"];
28
28
  }
29
29
  subgraph cluster_dec {
30
- label="Decode"; fontcolor="#ddd6fe"; style=rounded;
30
+ label="Decode · Record"; fontcolor="#ddd6fe"; style=rounded;
31
31
  color="#6d28d9"; bgcolor="#2e1065";
32
- Dec [label="SDR::Decoder::*\ndemod · protocol", fillcolor="#c4b5fd"];
33
- Obs [label="extro_observe\nrecord signal intel", fillcolor="#c4b5fd"];
32
+ Dec [label="SDR::Decoder::*\nADSB · APT · BT · DECT · GPS\nGSM · Iridium · LoRa · LTE\nMorse · P25 · POCSAG/FLEX\nRDS · RFID · rtl_433 · RTTY\nWiFi · ZigBee", fillcolor="#c4b5fd"];
33
+ Obs [label="extro_observe\ncategory: :rf\nrecord signal intel", fillcolor="#c4b5fd"];
34
+ Xrf [label="extro_snapshot :rf\nprobe_rf → hw inventory", fillcolor="#c4b5fd"];
34
35
  }
35
36
 
36
37
  RF -> SDRhw [color="#fb7185"];
@@ -42,4 +43,5 @@ digraph "PWN_SDR" {
42
43
  GQRX -> Dec [color="#a78bfa"];
43
44
  Freq -> Dec [color="#a78bfa"];
44
45
  Scan -> Obs [color="#a78bfa"];
46
+ SDRhw -> Xrf [style=dashed, color="#fbbf24", constraint=false];
45
47
  }
@@ -0,0 +1,203 @@
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_Extrospection Pages: 1 -->
7
+ <svg width="827pt" height="635pt"
8
+ viewBox="0.00 0.00 827.00 635.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 592.2)">
10
+ <title>PWN_Extrospection</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-592.2 783.95,-592.2 783.95,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="124" y="-527" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Extrospection — World Awareness</text>
13
+ <text xml:space="preserve" text-anchor="start" x="175.75" y="-515.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">snapshot · drift · observe · intel · correlate &#160;— &#160;host · net · toolchain · repo · env · rf</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_world</title>
16
+ <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M20,-47C20,-47 155.5,-47 155.5,-47 161.5,-47 167.5,-53 167.5,-59 167.5,-59 167.5,-490 167.5,-490 167.5,-496 161.5,-502 155.5,-502 155.5,-502 20,-502 20,-502 14,-502 8,-496 8,-490 8,-490 8,-59 8,-59 8,-53 14,-47 20,-47"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-479" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Outside World</text>
18
+ </g>
19
+ <g id="clust3" class="cluster">
20
+ <title>cluster_eng</title>
21
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M292,-8C292,-8 473,-8 473,-8 479,-8 485,-14 485,-20 485,-20 485,-404 485,-404 485,-410 479,-416 473,-416 473,-416 292,-416 292,-416 286,-416 280,-410 280,-404 280,-404 280,-20 280,-20 280,-14 286,-8 292,-8"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="382.5" y="-393" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Extrospection Engine</text>
23
+ </g>
24
+ <!-- Host -->
25
+ <g id="node1" class="node">
26
+ <title>Host</title>
27
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M132.88,-463C132.88,-463 42.62,-463 42.62,-463 36.62,-463 30.62,-457 30.62,-451 30.62,-451 30.62,-439 30.62,-439 30.62,-433 36.62,-427 42.62,-427 42.62,-427 132.88,-427 132.88,-427 138.88,-427 144.88,-433 144.88,-439 144.88,-439 144.88,-451 144.88,-451 144.88,-457 138.88,-463 132.88,-463"/>
28
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-448.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">host</text>
29
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-434.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">uname · distro · arch</text>
30
+ </g>
31
+ <!-- Snap -->
32
+ <g id="node7" class="node">
33
+ <title>Snap</title>
34
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M436.88,-376.25C436.88,-376.25 327.12,-376.25 327.12,-376.25 321.12,-376.25 315.12,-370.25 315.12,-364.25 315.12,-364.25 315.12,-339.75 315.12,-339.75 315.12,-333.75 321.12,-327.75 327.12,-327.75 327.12,-327.75 436.88,-327.75 436.88,-327.75 442.88,-327.75 448.88,-333.75 448.88,-339.75 448.88,-339.75 448.88,-364.25 448.88,-364.25 448.88,-370.25 442.88,-376.25 436.88,-376.25"/>
35
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-361.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_snapshot</text>
36
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-348.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">probe_host/net/toolchain</text>
37
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-334.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">probe_repo/env/rf</text>
38
+ </g>
39
+ <!-- Host&#45;&gt;Snap -->
40
+ <g id="edge1" class="edge">
41
+ <title>Host&#45;&gt;Snap</title>
42
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M145.45,-426.96C190.9,-412.49 255.12,-392.06 305.03,-376.18"/>
43
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="305.84,-378.86 312.61,-373.76 304.14,-373.52 305.84,-378.86"/>
44
+ </g>
45
+ <!-- Net -->
46
+ <g id="node2" class="node">
47
+ <title>Net</title>
48
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M144.5,-391C144.5,-391 31,-391 31,-391 25,-391 19,-385 19,-379 19,-379 19,-367 19,-367 19,-361 25,-355 31,-355 31,-355 144.5,-355 144.5,-355 150.5,-355 156.5,-361 156.5,-367 156.5,-367 156.5,-379 156.5,-379 156.5,-385 150.5,-391 144.5,-391"/>
49
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-376.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">net</text>
50
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-362.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">interfaces · listening ports</text>
51
+ </g>
52
+ <!-- Net&#45;&gt;Snap -->
53
+ <g id="edge2" class="edge">
54
+ <title>Net&#45;&gt;Snap</title>
55
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M156.9,-368.1C201.13,-364.92 258.85,-360.78 304.63,-357.49"/>
56
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="304.76,-360.29 312.54,-356.92 304.36,-354.7 304.76,-360.29"/>
57
+ </g>
58
+ <!-- Tool -->
59
+ <g id="node3" class="node">
60
+ <title>Tool</title>
61
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M135.88,-319C135.88,-319 39.62,-319 39.62,-319 33.62,-319 27.62,-313 27.62,-307 27.62,-307 27.62,-295 27.62,-295 27.62,-289 33.62,-283 39.62,-283 39.62,-283 135.88,-283 135.88,-283 141.88,-283 147.88,-289 147.88,-295 147.88,-295 147.88,-307 147.88,-307 147.88,-313 141.88,-319 135.88,-319"/>
62
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-304.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolchain</text>
63
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-290.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">nmap · burp · msf · git</text>
64
+ </g>
65
+ <!-- Drift -->
66
+ <g id="node8" class="node">
67
+ <title>Drift</title>
68
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M417.75,-292C417.75,-292 346.25,-292 346.25,-292 340.25,-292 334.25,-286 334.25,-280 334.25,-280 334.25,-268 334.25,-268 334.25,-262 340.25,-256 346.25,-256 346.25,-256 417.75,-256 417.75,-256 423.75,-256 429.75,-262 429.75,-268 429.75,-268 429.75,-280 429.75,-280 429.75,-286 423.75,-292 417.75,-292"/>
69
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-277.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_drift</text>
70
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-263.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">delta vs baseline</text>
71
+ </g>
72
+ <!-- Tool&#45;&gt;Drift -->
73
+ <g id="edge3" class="edge">
74
+ <title>Tool&#45;&gt;Drift</title>
75
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M148.24,-295.5C199.56,-290.76 273.2,-283.96 323.83,-279.28"/>
76
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="323.97,-282.08 331.67,-278.56 323.45,-276.5 323.97,-282.08"/>
77
+ </g>
78
+ <!-- Repo -->
79
+ <g id="node4" class="node">
80
+ <title>Repo</title>
81
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M141.12,-247C141.12,-247 34.38,-247 34.38,-247 28.38,-247 22.38,-241 22.38,-235 22.38,-235 22.38,-223 22.38,-223 22.38,-217 28.38,-211 34.38,-211 34.38,-211 141.12,-211 141.12,-211 147.12,-211 153.12,-217 153.12,-223 153.12,-223 153.12,-235 153.12,-235 153.12,-241 147.12,-247 141.12,-247"/>
82
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-232.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">repo · env</text>
83
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-218.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">HEAD · dirty · ruby/gem</text>
84
+ </g>
85
+ <!-- Repo&#45;&gt;Drift -->
86
+ <g id="edge4" class="edge">
87
+ <title>Repo&#45;&gt;Drift</title>
88
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M153.61,-238.99C204.58,-246.84 274.9,-257.66 323.79,-265.19"/>
89
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="323.3,-267.95 331.63,-266.4 324.15,-262.41 323.3,-267.95"/>
90
+ </g>
91
+ <!-- RFhw -->
92
+ <g id="node5" class="node">
93
+ <title>RFhw</title>
94
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M136.62,-175.25C136.62,-175.25 38.88,-175.25 38.88,-175.25 32.88,-175.25 26.88,-169.25 26.88,-163.25 26.88,-163.25 26.88,-138.75 26.88,-138.75 26.88,-132.75 32.88,-126.75 38.88,-126.75 38.88,-126.75 136.62,-126.75 136.62,-126.75 142.62,-126.75 148.62,-132.75 148.62,-138.75 148.62,-138.75 148.62,-163.25 148.62,-163.25 148.62,-169.25 142.62,-175.25 136.62,-175.25"/>
95
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-160.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">rf &#160;📡</text>
96
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-147.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">rtl&#45;sdr · hackrf · flipper</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-133.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">gqrx sock · serial devs</text>
98
+ </g>
99
+ <!-- Obs -->
100
+ <g id="node9" class="node">
101
+ <title>Obs</title>
102
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M436.5,-220.25C436.5,-220.25 327.5,-220.25 327.5,-220.25 321.5,-220.25 315.5,-214.25 315.5,-208.25 315.5,-208.25 315.5,-183.75 315.5,-183.75 315.5,-177.75 321.5,-171.75 327.5,-171.75 327.5,-171.75 436.5,-171.75 436.5,-171.75 442.5,-171.75 448.5,-177.75 448.5,-183.75 448.5,-183.75 448.5,-208.25 448.5,-208.25 448.5,-214.25 442.5,-220.25 436.5,-220.25"/>
103
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-205.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_observe</text>
104
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-192.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">recon · vuln · intel</text>
105
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-178.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">target · network · env · rf</text>
106
+ </g>
107
+ <!-- RFhw&#45;&gt;Obs -->
108
+ <g id="edge5" class="edge">
109
+ <title>RFhw&#45;&gt;Obs</title>
110
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M149.3,-160.32C194.51,-167.28 256.58,-176.84 305.1,-184.31"/>
111
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="304.65,-187.08 312.98,-185.53 305.5,-181.54 304.65,-187.08"/>
112
+ <text xml:space="preserve" text-anchor="middle" x="223.75" y="-175.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">probe_rf</text>
113
+ </g>
114
+ <!-- Feeds -->
115
+ <g id="node6" class="node">
116
+ <title>Feeds</title>
117
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M147.5,-91C147.5,-91 28,-91 28,-91 22,-91 16,-85 16,-79 16,-79 16,-67 16,-67 16,-61 22,-55 28,-55 28,-55 147.5,-55 147.5,-55 153.5,-55 159.5,-61 159.5,-67 159.5,-67 159.5,-79 159.5,-79 159.5,-85 153.5,-91 147.5,-91"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-76.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">intel feeds</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-62.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">NVD · CIRCL · Exploit&#45;DB</text>
120
+ </g>
121
+ <!-- Intel -->
122
+ <g id="node10" class="node">
123
+ <title>Intel</title>
124
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M426.75,-136C426.75,-136 337.25,-136 337.25,-136 331.25,-136 325.25,-130 325.25,-124 325.25,-124 325.25,-112 325.25,-112 325.25,-106 331.25,-100 337.25,-100 337.25,-100 426.75,-100 426.75,-100 432.75,-100 438.75,-106 438.75,-112 438.75,-112 438.75,-124 438.75,-124 438.75,-130 432.75,-136 426.75,-136"/>
125
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-121.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_intel</text>
126
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-107.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">CVE / exploit lookup</text>
127
+ </g>
128
+ <!-- Feeds&#45;&gt;Intel -->
129
+ <g id="edge6" class="edge">
130
+ <title>Feeds&#45;&gt;Intel</title>
131
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M159.87,-83.95C207.19,-91.24 268.91,-100.74 315.12,-107.86"/>
132
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="314.45,-110.59 322.78,-109.04 315.3,-105.05 314.45,-110.59"/>
133
+ </g>
134
+ <!-- Store -->
135
+ <g id="node12" class="node">
136
+ <title>Store</title>
137
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M729.12,-215.69C729.12,-218.1 706.21,-220.06 678,-220.06 649.79,-220.06 626.88,-218.1 626.88,-215.69 626.88,-215.69 626.88,-176.31 626.88,-176.31 626.88,-173.9 649.79,-171.94 678,-171.94 706.21,-171.94 729.12,-173.9 729.12,-176.31 729.12,-176.31 729.12,-215.69 729.12,-215.69"/>
138
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M729.12,-215.69C729.12,-213.27 706.21,-211.31 678,-211.31 649.79,-211.31 626.88,-213.27 626.88,-215.69"/>
139
+ <text xml:space="preserve" text-anchor="middle" x="678" y="-199.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/</text>
140
+ <text xml:space="preserve" text-anchor="middle" x="678" y="-185.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
141
+ </g>
142
+ <!-- Snap&#45;&gt;Store -->
143
+ <g id="edge7" class="edge">
144
+ <title>Snap&#45;&gt;Store</title>
145
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M447.57,-327.07C460.13,-321.76 473.09,-315.95 485,-310 536.91,-284.07 593.76,-249.49 632.02,-225.24"/>
146
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="633.47,-227.64 638.71,-220.98 630.46,-222.91 633.47,-227.64"/>
147
+ </g>
148
+ <!-- Drift&#45;&gt;Store -->
149
+ <g id="edge8" class="edge">
150
+ <title>Drift&#45;&gt;Store</title>
151
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M430.24,-261.47C480.95,-248.01 561.65,-226.6 616.87,-211.95"/>
152
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="617.26,-214.75 624.28,-209.99 615.83,-209.33 617.26,-214.75"/>
153
+ </g>
154
+ <!-- Obs&#45;&gt;Store -->
155
+ <g id="edge9" class="edge">
156
+ <title>Obs&#45;&gt;Store</title>
157
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M448.98,-196C499.19,-196 567.74,-196 616.53,-196"/>
158
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="616.35,-198.8 624.35,-196 616.35,-193.2 616.35,-198.8"/>
159
+ </g>
160
+ <!-- Intel&#45;&gt;Store -->
161
+ <g id="edge10" class="edge">
162
+ <title>Intel&#45;&gt;Store</title>
163
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M439.34,-132.95C490.19,-146.44 564.8,-166.23 616.82,-180.03"/>
164
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="615.9,-182.69 624.35,-182.03 617.34,-177.27 615.9,-182.69"/>
165
+ <text xml:space="preserve" text-anchor="middle" x="546.12" y="-168.23" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">record:true</text>
166
+ </g>
167
+ <!-- Corr -->
168
+ <g id="node11" class="node">
169
+ <title>Corr</title>
170
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M420,-64.25C420,-64.25 344,-64.25 344,-64.25 338,-64.25 332,-58.25 332,-52.25 332,-52.25 332,-27.75 332,-27.75 332,-21.75 338,-15.75 344,-15.75 344,-15.75 420,-15.75 420,-15.75 426,-15.75 432,-21.75 432,-27.75 432,-27.75 432,-52.25 432,-52.25 432,-58.25 426,-64.25 420,-64.25"/>
171
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-49.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_correlate</text>
172
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-36.3" font-family="sans-Serif" font-size="11.00" fill="#0f172a">join with Learning</text>
173
+ <text xml:space="preserve" text-anchor="middle" x="382" y="-22.8" font-family="sans-Serif" font-size="11.00" fill="#0f172a">+ Mistakes</text>
174
+ </g>
175
+ <!-- Prompt -->
176
+ <g id="node13" class="node">
177
+ <title>Prompt</title>
178
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M728.75,-92C728.75,-92 627.25,-92 627.25,-92 621.25,-92 615.25,-86 615.25,-80 615.25,-80 615.25,-68 615.25,-68 615.25,-62 621.25,-56 627.25,-56 627.25,-56 728.75,-56 728.75,-56 734.75,-56 740.75,-62 740.75,-68 740.75,-68 740.75,-80 740.75,-80 740.75,-86 734.75,-92 728.75,-92"/>
179
+ <text xml:space="preserve" text-anchor="middle" x="678" y="-77.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">EXTROSPECTION</text>
180
+ <text xml:space="preserve" text-anchor="middle" x="678" y="-63.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">block in system prompt</text>
181
+ </g>
182
+ <!-- Corr&#45;&gt;Prompt -->
183
+ <g id="edge11" class="edge">
184
+ <title>Corr&#45;&gt;Prompt</title>
185
+ <path fill="none" stroke="#a78bfa" stroke-width="2" d="M432.87,-45.77C479.77,-51.19 550.55,-59.38 603.84,-65.54"/>
186
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="603.31,-68.3 611.58,-66.43 603.96,-62.73 603.31,-68.3"/>
187
+ <text xml:space="preserve" text-anchor="middle" x="546.12" y="-63" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
188
+ </g>
189
+ <!-- Store&#45;&gt;Corr -->
190
+ <g id="edge13" class="edge">
191
+ <title>Store&#45;&gt;Corr</title>
192
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M659.23,-171.26C629.26,-129.6 571.57,-49.77 568.25,-48 529.89,-27.53 480.45,-26.44 442.29,-29.97"/>
193
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="442.47,-27.13 434.8,-30.75 443.05,-32.7 442.47,-27.13"/>
194
+ </g>
195
+ <!-- Store&#45;&gt;Prompt -->
196
+ <g id="edge12" class="edge">
197
+ <title>Store&#45;&gt;Prompt</title>
198
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M678,-171.38C678,-151.44 678,-123.33 678,-102.43"/>
199
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="680.8,-102.5 678,-94.5 675.2,-102.5 680.8,-102.5"/>
200
+ <text xml:space="preserve" text-anchor="middle" x="669.75" y="-128.67" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
201
+ </g>
202
+ </g>
203
+ </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>