pwn 0.5.779 → 0.5.781
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.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/documentation/AI-Integration.md +4 -4
- data/documentation/AWS.md +10 -9
- data/documentation/Agent-Tool-Registry.md +20 -17
- data/documentation/Blockchain.md +3 -2
- data/documentation/Bounty.md +8 -6
- data/documentation/BurpSuite.md +6 -10
- data/documentation/CLI-Drivers.md +7 -4
- data/documentation/Capability-Broker-Sandbox.md +1 -1
- data/documentation/Configuration.md +23 -15
- data/documentation/Contributing.md +3 -3
- data/documentation/Cron.md +3 -2
- data/documentation/Diagrams.md +9 -3
- data/documentation/Drivers.md +12 -6
- data/documentation/Extrospection.md +25 -5
- data/documentation/FFI.md +15 -25
- data/documentation/Fuzzing.md +13 -13
- data/documentation/General-PWN-Usage.md +7 -4
- data/documentation/Harness-Evaluation.md +90 -3
- data/documentation/Home.md +6 -5
- data/documentation/How-PWN-Works.md +9 -10
- data/documentation/Installation.md +12 -11
- data/documentation/Metasploit.md +13 -19
- data/documentation/Mistakes.md +2 -2
- data/documentation/NmapIt.md +6 -3
- data/documentation/Operability.md +99 -0
- data/documentation/Persistence.md +3 -2
- data/documentation/Plugin-Degradation.md +4 -2
- data/documentation/Plugins.md +4 -11
- data/documentation/Policy-Benchmark.md +4 -0
- data/documentation/Reinforcement-Learning.md +19 -3
- data/documentation/Reporting.md +6 -5
- data/documentation/SAST.md +15 -10
- data/documentation/SDR-Decoder-Coverage.md +10 -4
- data/documentation/SDR.md +28 -40
- data/documentation/Session-Workflow.md +25 -12
- data/documentation/Sessions.md +7 -0
- data/documentation/Skills-Memory-Learning.md +11 -4
- data/documentation/Swarm.md +6 -0
- data/documentation/Transparent-Browser.md +1 -1
- data/documentation/Troubleshooting.md +6 -3
- data/documentation/What-is-PWN.md +4 -4
- data/documentation/Why-PWN.md +1 -1
- data/documentation/diagrams/agent-tool-registry.svg +219 -180
- data/documentation/diagrams/ai-integration-tool-calling.svg +35 -34
- data/documentation/diagrams/code-scanning-sast.svg +78 -78
- data/documentation/diagrams/cron-scheduling.svg +165 -145
- data/documentation/diagrams/dot/_THEME.md +6 -4
- data/documentation/diagrams/dot/agent-tool-registry.dot +6 -2
- data/documentation/diagrams/dot/ai-integration-tool-calling.dot +1 -1
- data/documentation/diagrams/dot/code-scanning-sast.dot +8 -8
- data/documentation/diagrams/dot/cron-scheduling.dot +2 -0
- data/documentation/diagrams/dot/driver-framework.dot +1 -1
- data/documentation/diagrams/dot/extrospection-world-awareness.dot +2 -2
- data/documentation/diagrams/dot/fuzzing-workflow.dot +3 -3
- data/documentation/diagrams/dot/history-to-drivers.dot +1 -1
- data/documentation/diagrams/dot/memory-skills-detailed.dot +3 -3
- data/documentation/diagrams/dot/mistakes-negative-feedback.dot +2 -2
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +33 -121
- data/documentation/diagrams/dot/persistence-filesystem.dot +2 -2
- data/documentation/diagrams/dot/plugin-ecosystem.dot +2 -2
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +31 -167
- data/documentation/diagrams/dot/pwn-repl-prototyping.dot +1 -1
- data/documentation/diagrams/dot/reinforcement-learning.dot +15 -7
- data/documentation/diagrams/dot/reporting-pipeline.dot +5 -3
- data/documentation/diagrams/dot/reverse-engineering-flow.dot +3 -3
- data/documentation/diagrams/dot/sdr-radio-flow.dot +5 -5
- data/documentation/diagrams/dot/sessions-cron-automation.dot +1 -1
- data/documentation/diagrams/dot/swarm-multi-agent.dot +3 -3
- data/documentation/diagrams/dot/task-summarizer.dot +2 -2
- data/documentation/diagrams/dot/web-application-testing.dot +4 -3
- data/documentation/diagrams/dot/zero-day-research-flow.dot +4 -3
- data/documentation/diagrams/driver-framework.svg +1 -1
- data/documentation/diagrams/extrospection-world-awareness.svg +178 -178
- data/documentation/diagrams/fuzzing-workflow.svg +58 -58
- data/documentation/diagrams/history-to-drivers.svg +42 -42
- data/documentation/diagrams/memory-skills-detailed.svg +210 -210
- data/documentation/diagrams/mistakes-negative-feedback.svg +116 -116
- data/documentation/diagrams/overall-pwn-architecture.svg +248 -404
- data/documentation/diagrams/persistence-filesystem.svg +143 -143
- data/documentation/diagrams/plugin-ecosystem.svg +100 -100
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +233 -752
- data/documentation/diagrams/pwn-repl-prototyping.svg +27 -27
- data/documentation/diagrams/reinforcement-learning.svg +295 -221
- data/documentation/diagrams/reporting-pipeline.svg +94 -80
- data/documentation/diagrams/reverse-engineering-flow.svg +31 -31
- data/documentation/diagrams/sdr-radio-flow.svg +157 -155
- data/documentation/diagrams/sessions-cron-automation.svg +13 -13
- data/documentation/diagrams/swarm-multi-agent.svg +86 -86
- data/documentation/diagrams/task-summarizer.svg +57 -57
- data/documentation/diagrams/web-application-testing.svg +81 -75
- data/documentation/diagrams/zero-day-research-flow.svg +101 -92
- data/documentation/pwn-REPL.md +5 -3
- data/documentation/pwn-ai-Agent.md +18 -14
- data/documentation/pwn_silent_help_learn_demo.gif +0 -0
- data/etc/default_skills/pwn/ai/agent/learning/SKILL.md +1 -0
- data/lib/pwn/ai/agent/learning.rb +46 -1
- data/lib/pwn/ai/agent/loop.rb +6 -3
- data/lib/pwn/ai/agent/policy_evaluation.rb +5 -1
- data/lib/pwn/ai/agent/reward.rb +9 -0
- data/lib/pwn/version.rb +1 -1
- data/spec/fixtures/harness/completion_regressions.json +10 -0
- data/spec/fixtures/harness/completion_regressions.json.sha256 +1 -0
- data/spec/integration/harness_evaluation_spec.rb +13 -0
- data/spec/lib/pwn/ai/agent/learning_spec.rb +22 -0
- data/spec/lib/pwn/ai/agent/loop_spec.rb +39 -0
- data/spec/lib/pwn/ai/agent/policy_evaluation_spec.rb +6 -1
- data/spec/lib/pwn/ai/agent/reward_spec.rb +21 -0
- data/spec/support/harness/evaluate.rb +1 -1
- data/third_party/pwn_rdoc.jsonl +2 -1
- metadata +10 -7
|
@@ -4,330 +4,332 @@
|
|
|
4
4
|
<!-- Generated by graphviz version 14.1.2 (0)
|
|
5
5
|
-->
|
|
6
6
|
<!-- Title: PWN_SDR Pages: 1 -->
|
|
7
|
-
<svg width="
|
|
8
|
-
viewBox="0.00 0.00
|
|
9
|
-
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2
|
|
7
|
+
<svg width="1896pt" height="998pt"
|
|
8
|
+
viewBox="0.00 0.00 1896.00 998.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 955.27)">
|
|
10
10
|
<title>PWN_SDR</title>
|
|
11
|
-
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-
|
|
12
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
13
|
-
<text xml:space="preserve" text-anchor="start" x="
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-955.27 1852.45,-955.27 1852.45,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="666.12" y="-890.07" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::SDR - Software-Defined Radio & RF Hacking</text>
|
|
13
|
+
<text xml:space="preserve" text-anchor="start" x="469.62" y="-878.62" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">GQRX · FlipperZero · RFIDler · FrequencyAllocation · Decoder::* (21+Base/DSP) · mode-specific input boundaries · FFI::{Volk,Liquid,FFTW,RTLSdr,HackRF,AdalmPluto,SoapySDR}</text>
|
|
14
14
|
<g id="clust1" class="cluster">
|
|
15
15
|
<title>cluster_hw</title>
|
|
16
|
-
<path fill="#022c22" stroke="#047857" d="M223.5,-
|
|
17
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
16
|
+
<path fill="#022c22" stroke="#047857" d="M223.5,-627C223.5,-627 834.5,-627 834.5,-627 840.5,-627 846.5,-633 846.5,-639 846.5,-639 846.5,-698 846.5,-698 846.5,-704 840.5,-710 834.5,-710 834.5,-710 223.5,-710 223.5,-710 217.5,-710 211.5,-704 211.5,-698 211.5,-698 211.5,-639 211.5,-639 211.5,-633 217.5,-627 223.5,-627"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="529" y="-687" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Hardware</text>
|
|
18
18
|
</g>
|
|
19
19
|
<g id="clust2" class="cluster">
|
|
20
20
|
<title>cluster_ffi</title>
|
|
21
|
-
<path fill="#0c4a6e" stroke="#0369a1" d="
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
21
|
+
<path fill="#0c4a6e" stroke="#0369a1" d="M565,-369C565,-369 1017.25,-369 1017.25,-369 1023.25,-369 1029.25,-375 1029.25,-381 1029.25,-381 1029.25,-576 1029.25,-576 1029.25,-582 1023.25,-588 1017.25,-588 1017.25,-588 565,-588 565,-588 559,-588 553,-582 553,-576 553,-576 553,-381 553,-381 553,-375 559,-369 565,-369"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="791.12" y="-565" font-family="sans-Serif" font-size="20.00" fill="#bae6fd">PWN::FFI native backends</text>
|
|
23
23
|
</g>
|
|
24
24
|
<g id="clust3" class="cluster">
|
|
25
25
|
<title>cluster_ctrl</title>
|
|
26
|
-
<path fill="#422006" stroke="#a16207" d="
|
|
27
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
26
|
+
<path fill="#422006" stroke="#a16207" d="M546.25,-8C546.25,-8 1610.88,-8 1610.88,-8 1616.88,-8 1622.88,-14 1622.88,-20 1622.88,-20 1622.88,-99 1622.88,-99 1622.88,-105 1616.88,-111 1610.88,-111 1610.88,-111 546.25,-111 546.25,-111 540.25,-111 534.25,-105 534.25,-99 534.25,-99 534.25,-20 534.25,-20 534.25,-14 540.25,-8 546.25,-8"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="1078.56" y="-88" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Control · Scan</text>
|
|
28
28
|
</g>
|
|
29
29
|
<g id="clust4" class="cluster">
|
|
30
30
|
<title>cluster_dec</title>
|
|
31
|
-
<path fill="#2e1065" stroke="#6d28d9" d="M20,-
|
|
32
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
31
|
+
<path fill="#2e1065" stroke="#6d28d9" d="M20,-119C20,-119 1789.25,-119 1789.25,-119 1795.25,-119 1801.25,-125 1801.25,-131 1801.25,-131 1801.25,-349 1801.25,-349 1801.25,-355 1795.25,-361 1789.25,-361 1789.25,-361 20,-361 20,-361 14,-361 8,-355 8,-349 8,-349 8,-131 8,-131 8,-125 14,-119 20,-119"/>
|
|
32
|
+
<text xml:space="preserve" text-anchor="middle" x="904.62" y="-338" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Decode · Sense · Record</text>
|
|
33
33
|
</g>
|
|
34
34
|
<!-- RF -->
|
|
35
35
|
<g id="node1" class="node">
|
|
36
36
|
<title>RF</title>
|
|
37
|
-
<path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M111.88,-
|
|
38
|
-
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-
|
|
37
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M111.88,-819C111.88,-819 42.62,-819 42.62,-819 36.62,-819 30.62,-813 30.62,-807 30.62,-807 30.62,-795 30.62,-795 30.62,-789 36.62,-783 42.62,-783 42.62,-783 111.88,-783 111.88,-783 117.88,-783 123.88,-789 123.88,-795 123.88,-795 123.88,-807 123.88,-807 123.88,-813 117.88,-819 111.88,-819"/>
|
|
38
|
+
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-797.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">📡  RF Spectrum</text>
|
|
39
39
|
</g>
|
|
40
40
|
<!-- SDRhw -->
|
|
41
41
|
<g id="node2" class="node">
|
|
42
42
|
<title>SDRhw</title>
|
|
43
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M357.75,-
|
|
44
|
-
<text xml:space="preserve" text-anchor="middle" x="294.62" y="-
|
|
45
|
-
<text xml:space="preserve" text-anchor="middle" x="294.62" y="-
|
|
43
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M357.75,-671C357.75,-671 231.5,-671 231.5,-671 225.5,-671 219.5,-665 219.5,-659 219.5,-659 219.5,-647 219.5,-647 219.5,-641 225.5,-635 231.5,-635 231.5,-635 357.75,-635 357.75,-635 363.75,-635 369.75,-641 369.75,-647 369.75,-647 369.75,-659 369.75,-659 369.75,-665 363.75,-671 357.75,-671"/>
|
|
44
|
+
<text xml:space="preserve" text-anchor="middle" x="294.62" y="-655.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RTL-SDR / HackRF / Airspy</text>
|
|
45
|
+
<text xml:space="preserve" text-anchor="middle" x="294.62" y="-643.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">ADALM-Pluto / any Soapy dev</text>
|
|
46
46
|
</g>
|
|
47
47
|
<!-- RF->SDRhw -->
|
|
48
48
|
<g id="edge1" class="edge">
|
|
49
49
|
<title>RF->SDRhw</title>
|
|
50
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="
|
|
51
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="
|
|
50
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M105.09,-782.55C143.89,-755.89 215.68,-706.56 258.6,-677.07"/>
|
|
51
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="260.15,-679.4 265.16,-672.56 256.98,-674.78 260.15,-679.4"/>
|
|
52
52
|
</g>
|
|
53
53
|
<!-- Flipper -->
|
|
54
54
|
<g id="node3" class="node">
|
|
55
55
|
<title>Flipper</title>
|
|
56
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="
|
|
57
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
56
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M490.25,-671C490.25,-671 421.75,-671 421.75,-671 415.75,-671 409.75,-665 409.75,-659 409.75,-659 409.75,-647 409.75,-647 409.75,-641 415.75,-635 421.75,-635 421.75,-635 490.25,-635 490.25,-635 496.25,-635 502.25,-641 502.25,-647 502.25,-647 502.25,-659 502.25,-659 502.25,-665 496.25,-671 490.25,-671"/>
|
|
57
|
+
<text xml:space="preserve" text-anchor="middle" x="456" y="-649.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::FlipperZero</text>
|
|
58
58
|
</g>
|
|
59
59
|
<!-- RF->Flipper -->
|
|
60
60
|
<g id="edge2" class="edge">
|
|
61
61
|
<title>RF->Flipper</title>
|
|
62
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M124.
|
|
63
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="
|
|
62
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M124.27,-809.41C184.93,-818.01 292.95,-824.56 369.75,-780 408.09,-757.75 432.68,-710.52 445.15,-680.34"/>
|
|
63
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="447.7,-681.5 448.05,-673.03 442.5,-679.43 447.7,-681.5"/>
|
|
64
64
|
</g>
|
|
65
65
|
<!-- RFID -->
|
|
66
66
|
<g id="node4" class="node">
|
|
67
67
|
<title>RFID</title>
|
|
68
|
-
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="
|
|
69
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
70
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
68
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M826.5,-671C826.5,-671 769.25,-671 769.25,-671 763.25,-671 757.25,-665 757.25,-659 757.25,-659 757.25,-647 757.25,-647 757.25,-641 763.25,-635 769.25,-635 769.25,-635 826.5,-635 826.5,-635 832.5,-635 838.5,-641 838.5,-647 838.5,-647 838.5,-659 838.5,-659 838.5,-665 832.5,-671 826.5,-671"/>
|
|
69
|
+
<text xml:space="preserve" text-anchor="middle" x="797.88" y="-655.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::RFIDler</text>
|
|
70
|
+
<text xml:space="preserve" text-anchor="middle" x="797.88" y="-643.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SonMicroRFID</text>
|
|
71
71
|
</g>
|
|
72
72
|
<!-- RF->RFID -->
|
|
73
73
|
<g id="edge3" class="edge">
|
|
74
74
|
<title>RF->RFID</title>
|
|
75
|
-
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="
|
|
76
|
-
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="
|
|
75
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M110.02,-819.43C129.17,-829.46 154.44,-840.85 178.5,-846 319.2,-876.13 364.37,-887.14 502.25,-846 613.49,-812.81 721.77,-722.71 770.3,-678.36"/>
|
|
76
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="772.15,-680.46 776.13,-672.98 768.35,-676.35 772.15,-680.46"/>
|
|
77
77
|
</g>
|
|
78
78
|
<!-- Front -->
|
|
79
79
|
<g id="node8" class="node">
|
|
80
80
|
<title>Front</title>
|
|
81
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="
|
|
82
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
83
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
84
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
85
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
81
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="2" d="M686.5,-491C686.5,-491 573,-491 573,-491 567,-491 561,-485 561,-479 561,-479 561,-447 561,-447 561,-441 567,-435 573,-435 573,-435 686.5,-435 686.5,-435 692.5,-435 698.5,-441 698.5,-447 698.5,-447 698.5,-479 698.5,-479 698.5,-485 692.5,-491 686.5,-491"/>
|
|
82
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-477.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">FFI::{RTLSdr,HackRF,</text>
|
|
83
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-465.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">AdalmPluto,SoapySDR}</text>
|
|
84
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-453.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">open · configure · start_rx</text>
|
|
85
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-441.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">read_sync raw I/Q · stop_rx</text>
|
|
86
86
|
</g>
|
|
87
87
|
<!-- SDRhw->Front -->
|
|
88
88
|
<g id="edge4" class="edge">
|
|
89
89
|
<title>SDRhw->Front</title>
|
|
90
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="
|
|
91
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
92
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
90
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M361.86,-634.4C364.55,-633.31 367.19,-632.18 369.75,-631 391.44,-621 508.5,-543.47 577.6,-497.31"/>
|
|
91
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="579.05,-499.71 584.14,-492.93 575.93,-495.05 579.05,-499.71"/>
|
|
92
|
+
<text xml:space="preserve" text-anchor="middle" x="456" y="-606.37" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">libusb / libiio</text>
|
|
93
93
|
</g>
|
|
94
94
|
<!-- GQRX -->
|
|
95
95
|
<g id="node9" class="node">
|
|
96
96
|
<title>GQRX</title>
|
|
97
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="
|
|
98
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
99
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
100
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
101
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
97
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M705.25,-72C705.25,-72 554.25,-72 554.25,-72 548.25,-72 542.25,-66 542.25,-60 542.25,-60 542.25,-28 542.25,-28 542.25,-22 548.25,-16 554.25,-16 554.25,-16 705.25,-16 705.25,-16 711.25,-16 717.25,-22 717.25,-28 717.25,-28 717.25,-60 717.25,-60 717.25,-66 711.25,-72 705.25,-72"/>
|
|
98
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-58.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::GQRX</text>
|
|
99
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-46.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">remote control</text>
|
|
100
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-34.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">spectrum + FFT geometry</text>
|
|
101
|
+
<text xml:space="preserve" text-anchor="middle" x="629.75" y="-22.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(RAW panorama · plan-param refine)</text>
|
|
102
102
|
</g>
|
|
103
103
|
<!-- SDRhw->GQRX -->
|
|
104
104
|
<g id="edge5" class="edge">
|
|
105
105
|
<title>SDRhw->GQRX</title>
|
|
106
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
107
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
106
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M365.33,-634.52C366.86,-633.41 368.34,-632.24 369.75,-631 372.58,-628.51 555.95,-210.2 612.4,-81.34"/>
|
|
107
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="614.8,-82.83 615.45,-74.37 609.67,-80.58 614.8,-82.83"/>
|
|
108
108
|
</g>
|
|
109
|
-
<!--
|
|
110
|
-
<g id="
|
|
111
|
-
<title>
|
|
112
|
-
<path fill="#
|
|
113
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
114
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
115
|
-
<text xml:space="preserve" text-anchor="middle" x="618.5" y="-645.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">plan_bw · precision</text>
|
|
109
|
+
<!-- Obs -->
|
|
110
|
+
<g id="node15" class="node">
|
|
111
|
+
<title>Obs</title>
|
|
112
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1781.25,-270C1781.25,-270 1727.75,-270 1727.75,-270 1721.75,-270 1715.75,-264 1715.75,-258 1715.75,-258 1715.75,-246 1715.75,-246 1715.75,-240 1721.75,-234 1727.75,-234 1727.75,-234 1781.25,-234 1781.25,-234 1787.25,-234 1793.25,-240 1793.25,-246 1793.25,-246 1793.25,-258 1793.25,-258 1793.25,-264 1787.25,-270 1781.25,-270"/>
|
|
113
|
+
<text xml:space="preserve" text-anchor="middle" x="1754.5" y="-254.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extro_observe</text>
|
|
114
|
+
<text xml:space="preserve" text-anchor="middle" x="1754.5" y="-242.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">category: :rf</text>
|
|
116
115
|
</g>
|
|
117
|
-
<!-- Flipper->
|
|
116
|
+
<!-- Flipper->Obs -->
|
|
118
117
|
<g id="edge19" class="edge">
|
|
119
|
-
<title>Flipper->
|
|
120
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
121
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
118
|
+
<title>Flipper->Obs</title>
|
|
119
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M502.7,-644.17C567.77,-632.39 690.97,-613 796.88,-613 796.88,-613 796.88,-613 1555.75,-613 1707.18,-613 1743.41,-365.64 1751.4,-280.43"/>
|
|
120
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1754.18,-280.82 1752.09,-272.61 1748.6,-280.33 1754.18,-280.82"/>
|
|
121
|
+
<text xml:space="preserve" text-anchor="middle" x="1103.62" y="-614.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">operator observation</text>
|
|
122
122
|
</g>
|
|
123
|
-
<!--
|
|
124
|
-
<g id="node11" class="node">
|
|
125
|
-
<title>Scan</title>
|
|
126
|
-
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M981.25,-683C981.25,-683 885,-683 885,-683 879,-683 873,-677 873,-671 873,-671 873,-651 873,-651 873,-645 879,-639 885,-639 885,-639 981.25,-639 981.25,-639 987.25,-639 993.25,-645 993.25,-651 993.25,-651 993.25,-671 993.25,-671 993.25,-677 987.25,-683 981.25,-683"/>
|
|
127
|
-
<text xml:space="preserve" text-anchor="middle" x="933.12" y="-669.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_gqrx_scanner</text>
|
|
128
|
-
<text xml:space="preserve" text-anchor="middle" x="933.12" y="-657.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">--fft-scan · iterative</text>
|
|
129
|
-
<text xml:space="preserve" text-anchor="middle" x="933.12" y="-645.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">--min-snr-db · --no-refine</text>
|
|
130
|
-
</g>
|
|
131
|
-
<!-- RFID->Scan -->
|
|
123
|
+
<!-- RFID->Obs -->
|
|
132
124
|
<g id="edge20" class="edge">
|
|
133
|
-
<title>RFID->
|
|
134
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
135
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
125
|
+
<title>RFID->Obs</title>
|
|
126
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M839.13,-664.38C851.66,-667.58 865.58,-670.78 878.5,-673 977.11,-689.9 1002.58,-694 1102.62,-694 1102.62,-694 1102.62,-694 1555.75,-694 1614.6,-694 1639.37,-684.26 1675.75,-638 1719.94,-581.82 1743.81,-359.87 1751.08,-280.45"/>
|
|
127
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1753.86,-280.82 1751.78,-272.6 1748.28,-280.32 1753.86,-280.82"/>
|
|
128
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-695.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">operator observation</text>
|
|
136
129
|
</g>
|
|
137
130
|
<!-- Volk -->
|
|
138
131
|
<g id="node5" class="node">
|
|
139
132
|
<title>Volk</title>
|
|
140
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="
|
|
141
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
142
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
133
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M1009.25,-413C1009.25,-413 890.5,-413 890.5,-413 884.5,-413 878.5,-407 878.5,-401 878.5,-401 878.5,-389 878.5,-389 878.5,-383 884.5,-377 890.5,-377 890.5,-377 1009.25,-377 1009.25,-377 1015.25,-377 1021.25,-383 1021.25,-389 1021.25,-389 1021.25,-401 1021.25,-401 1021.25,-407 1015.25,-413 1009.25,-413"/>
|
|
134
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-397.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">FFI::Volk</text>
|
|
135
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-385.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SIMD s16→f32 · accumulate</text>
|
|
143
136
|
</g>
|
|
144
137
|
<!-- DSP -->
|
|
145
138
|
<g id="node13" class="node">
|
|
146
139
|
<title>DSP</title>
|
|
147
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
148
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
149
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
150
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
140
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1328,-322C1328,-322 1198,-322 1198,-322 1192,-322 1186,-316 1186,-310 1186,-310 1186,-290 1186,-290 1186,-284 1192,-278 1198,-278 1198,-278 1328,-278 1328,-278 1334,-278 1340,-284 1340,-290 1340,-290 1340,-310 1340,-310 1340,-316 1334,-322 1328,-322"/>
|
|
141
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-308.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Decoder::DSP</text>
|
|
142
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-296.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pure-Ruby + FFI accel</text>
|
|
143
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-284.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(unpack · resample · FSK · FM)</text>
|
|
151
144
|
</g>
|
|
152
145
|
<!-- Volk->DSP -->
|
|
153
146
|
<g id="edge10" class="edge">
|
|
154
147
|
<title>Volk->DSP</title>
|
|
155
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
156
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
148
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1017.6,-376.36C1021.54,-375.23 1025.45,-374.1 1029.25,-373 1081.27,-357.9 1094.31,-354.21 1146,-338 1158.53,-334.07 1171.79,-329.82 1184.69,-325.63"/>
|
|
149
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1185.4,-328.34 1192.14,-323.2 1183.66,-323.02 1185.4,-328.34"/>
|
|
157
150
|
</g>
|
|
158
151
|
<!-- Liquid -->
|
|
159
152
|
<g id="node6" class="node">
|
|
160
153
|
<title>Liquid</title>
|
|
161
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="
|
|
162
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
163
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
154
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M1003.62,-549C1003.62,-549 896.12,-549 896.12,-549 890.12,-549 884.12,-543 884.12,-537 884.12,-537 884.12,-525 884.12,-525 884.12,-519 890.12,-513 896.12,-513 896.12,-513 1003.62,-513 1003.62,-513 1009.62,-513 1015.62,-519 1015.62,-525 1015.62,-525 1015.62,-537 1015.62,-537 1015.62,-543 1009.62,-549 1003.62,-549"/>
|
|
155
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-533.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">FFI::Liquid</text>
|
|
156
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-521.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">freqdem · msresamp · FIR</text>
|
|
164
157
|
</g>
|
|
165
158
|
<!-- Liquid->DSP -->
|
|
166
159
|
<g id="edge11" class="edge">
|
|
167
160
|
<title>Liquid->DSP</title>
|
|
168
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
169
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
161
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1016.15,-525.98C1056.71,-520.12 1108.15,-507.43 1146,-480 1198.54,-441.94 1233.35,-372.12 1250.19,-331.53"/>
|
|
162
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1252.76,-332.66 1253.16,-324.19 1247.57,-330.56 1252.76,-332.66"/>
|
|
170
163
|
</g>
|
|
171
164
|
<!-- FFTW -->
|
|
172
165
|
<g id="node7" class="node">
|
|
173
166
|
<title>FFTW</title>
|
|
174
|
-
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="
|
|
175
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
176
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
167
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M988.62,-481C988.62,-481 911.12,-481 911.12,-481 905.12,-481 899.12,-475 899.12,-469 899.12,-469 899.12,-457 899.12,-457 899.12,-451 905.12,-445 911.12,-445 911.12,-445 988.62,-445 988.62,-445 994.62,-445 1000.62,-451 1000.62,-457 1000.62,-457 1000.62,-469 1000.62,-469 1000.62,-475 994.62,-481 988.62,-481"/>
|
|
168
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-465.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">FFI::FFTW</text>
|
|
169
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-453.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">rfft · cfft · power-dB</text>
|
|
177
170
|
</g>
|
|
178
171
|
<!-- FFTW->DSP -->
|
|
179
172
|
<g id="edge12" class="edge">
|
|
180
173
|
<title>FFTW->DSP</title>
|
|
181
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
182
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
174
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1001.16,-456.32C1042.18,-449.28 1100.56,-435.54 1146,-410 1182.62,-389.42 1216.48,-354.73 1238.05,-329.8"/>
|
|
175
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1240.01,-331.81 1243.06,-323.91 1235.75,-328.19 1240.01,-331.81"/>
|
|
183
176
|
</g>
|
|
184
177
|
<!-- Front->Volk -->
|
|
185
178
|
<g id="edge7" class="edge">
|
|
186
179
|
<title>Front->Volk</title>
|
|
187
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
188
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
180
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M699.41,-450.09C741.88,-441.92 797.47,-430.87 846.5,-420 853.66,-418.41 861.09,-416.71 868.52,-414.97"/>
|
|
181
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="868.87,-417.76 876.01,-413.2 867.58,-412.31 868.87,-417.76"/>
|
|
189
182
|
</g>
|
|
190
183
|
<!-- Front->Liquid -->
|
|
191
184
|
<g id="edge8" class="edge">
|
|
192
185
|
<title>Front->Liquid</title>
|
|
193
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
194
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
186
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M699.17,-481.13C717.94,-485.88 738.33,-490.83 757.25,-495 795.47,-503.42 838.26,-511.57 873.69,-517.99"/>
|
|
187
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="873.18,-520.74 881.55,-519.4 874.17,-515.23 873.18,-520.74"/>
|
|
195
188
|
</g>
|
|
196
189
|
<!-- Front->FFTW -->
|
|
197
190
|
<g id="edge9" class="edge">
|
|
198
191
|
<title>Front->FFTW</title>
|
|
199
|
-
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
200
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="
|
|
192
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" stroke-dasharray="5,2" d="M699.39,-463C755.79,-463 834.9,-463 888.82,-463"/>
|
|
193
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="888.61,-465.8 896.61,-463 888.61,-460.2 888.61,-465.8"/>
|
|
201
194
|
</g>
|
|
202
195
|
<!-- Base -->
|
|
203
196
|
<g id="node12" class="node">
|
|
204
197
|
<title>Base</title>
|
|
205
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="
|
|
206
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
207
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
208
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
209
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
210
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
198
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M1007.75,-295C1007.75,-295 892,-295 892,-295 886,-295 880,-289 880,-283 880,-283 880,-239 880,-239 880,-233 886,-227 892,-227 892,-227 1007.75,-227 1007.75,-227 1013.75,-227 1019.75,-233 1019.75,-239 1019.75,-239 1019.75,-283 1019.75,-283 1019.75,-289 1013.75,-295 1007.75,-295"/>
|
|
199
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-281.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Decoder::Base</text>
|
|
200
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-269.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">run_iq (supported IQ modes)</text>
|
|
201
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-257.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">run_native (48 kHz UDP)</text>
|
|
202
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-245.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">run_detector (energy)</text>
|
|
203
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-233.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">resolve_iq_source :auto</text>
|
|
211
204
|
</g>
|
|
212
205
|
<!-- Front->Base -->
|
|
213
206
|
<g id="edge6" class="edge">
|
|
214
207
|
<title>Front->Base</title>
|
|
215
|
-
<path fill="none" stroke="#38bdf8" stroke-width="2" d="
|
|
216
|
-
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="
|
|
217
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
218
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
208
|
+
<path fill="none" stroke="#38bdf8" stroke-width="2" d="M699.07,-439.78C705.32,-437.05 711.47,-434.11 717.25,-431 785.13,-394.47 855.46,-340.09 900.55,-302.73"/>
|
|
209
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="2" points="902.27,-304.94 906.62,-297.66 898.69,-300.64 902.27,-304.94"/>
|
|
210
|
+
<text xml:space="preserve" text-anchor="middle" x="797.88" y="-419.82" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">raw I/Q</text>
|
|
211
|
+
<text xml:space="preserve" text-anchor="middle" x="797.88" y="-409.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">cu8/cs8/cs16</text>
|
|
219
212
|
</g>
|
|
220
213
|
<!-- Xrf -->
|
|
221
214
|
<g id="node16" class="node">
|
|
222
215
|
<title>Xrf</title>
|
|
223
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M126.5,-
|
|
224
|
-
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-
|
|
225
|
-
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-
|
|
216
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M126.5,-242C126.5,-242 28,-242 28,-242 22,-242 16,-236 16,-230 16,-230 16,-218 16,-218 16,-212 22,-206 28,-206 28,-206 126.5,-206 126.5,-206 132.5,-206 138.5,-212 138.5,-218 138.5,-218 138.5,-230 138.5,-230 138.5,-236 132.5,-242 126.5,-242"/>
|
|
217
|
+
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-226.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extro_snapshot :rf</text>
|
|
218
|
+
<text xml:space="preserve" text-anchor="middle" x="77.25" y="-214.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">probe_rf → hw inventory</text>
|
|
226
219
|
</g>
|
|
227
220
|
<!-- Front->Xrf -->
|
|
228
221
|
<g id="edge23" class="edge">
|
|
229
222
|
<title>Front->Xrf</title>
|
|
230
|
-
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
231
|
-
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="
|
|
223
|
+
<path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M608.72,-491.68C542.86,-582.6 328.72,-851.28 178.5,-728 103.89,-666.77 83.79,-349.02 79.35,-252.1"/>
|
|
224
|
+
<polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="82.16,-252.24 79.01,-244.37 76.56,-252.49 82.16,-252.24"/>
|
|
232
225
|
</g>
|
|
233
226
|
<!-- GQRX->Base -->
|
|
234
227
|
<g id="edge13" class="edge">
|
|
235
228
|
<title>GQRX->Base</title>
|
|
236
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
237
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
238
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
229
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M667.06,-72.54C712.87,-108.02 794.84,-169.79 875.25,-220.87"/>
|
|
230
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="873.6,-223.15 881.86,-225.05 876.59,-218.41 873.6,-223.15"/>
|
|
231
|
+
<text xml:space="preserve" text-anchor="middle" x="797.88" y="-202.39" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">48 kHz UDP audio</text>
|
|
239
232
|
</g>
|
|
240
233
|
<!-- Tune -->
|
|
241
234
|
<g id="node17" class="node">
|
|
242
235
|
<title>Tune</title>
|
|
243
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="
|
|
244
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
245
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
246
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
236
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="2" d="M1322,-171.38C1322,-171.38 1204,-171.38 1204,-171.38 1198,-171.38 1192,-165.38 1192,-159.38 1192,-159.38 1192,-138.62 1192,-138.62 1192,-132.62 1198,-126.62 1204,-126.62 1204,-126.62 1322,-126.62 1322,-126.62 1328,-126.62 1334,-132.62 1334,-138.62 1334,-138.62 1334,-159.38 1334,-159.38 1334,-165.38 1328,-171.38 1322,-171.38"/>
|
|
237
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-157.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extro_rf_tune  📡</text>
|
|
238
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-145.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">tune · demod · strength</text>
|
|
239
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-133.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RDS.sample → now_playing</text>
|
|
247
240
|
</g>
|
|
248
241
|
<!-- GQRX->Tune -->
|
|
249
242
|
<g id="edge14" class="edge">
|
|
250
243
|
<title>GQRX->Tune</title>
|
|
251
|
-
<path fill="none" stroke="#f59e0b" stroke-width="2" d="
|
|
252
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="2" points="
|
|
253
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
244
|
+
<path fill="none" stroke="#f59e0b" stroke-width="2" d="M717.75,-62.45C730.96,-65.08 744.45,-67.68 757.25,-70 906.09,-96.93 1080.62,-123.04 1180.56,-137.47"/>
|
|
245
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="2" points="1179.87,-140.2 1188.19,-138.57 1180.67,-134.65 1179.87,-140.2"/>
|
|
246
|
+
<text xml:space="preserve" text-anchor="middle" x="949.88" y="-116.11" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">remote :7356</text>
|
|
247
|
+
</g>
|
|
248
|
+
<!-- Freq -->
|
|
249
|
+
<g id="node10" class="node">
|
|
250
|
+
<title>Freq</title>
|
|
251
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M1317.12,-72C1317.12,-72 1208.88,-72 1208.88,-72 1202.88,-72 1196.88,-66 1196.88,-60 1196.88,-60 1196.88,-40 1196.88,-40 1196.88,-34 1202.88,-28 1208.88,-28 1208.88,-28 1317.12,-28 1317.12,-28 1323.12,-28 1329.12,-34 1329.12,-40 1329.12,-40 1329.12,-60 1329.12,-60 1329.12,-66 1323.12,-72 1317.12,-72"/>
|
|
252
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-58.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::FrequencyAllocation</text>
|
|
253
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-46.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">band lookup</text>
|
|
254
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-34.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">plan_bw · precision</text>
|
|
255
|
+
</g>
|
|
256
|
+
<!-- Scan -->
|
|
257
|
+
<g id="node11" class="node">
|
|
258
|
+
<title>Scan</title>
|
|
259
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M1602.88,-72C1602.88,-72 1506.62,-72 1506.62,-72 1500.62,-72 1494.62,-66 1494.62,-60 1494.62,-60 1494.62,-40 1494.62,-40 1494.62,-34 1500.62,-28 1506.62,-28 1506.62,-28 1602.88,-28 1602.88,-28 1608.88,-28 1614.88,-34 1614.88,-40 1614.88,-40 1614.88,-60 1614.88,-60 1614.88,-66 1608.88,-72 1602.88,-72"/>
|
|
260
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-58.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_gqrx_scanner</text>
|
|
261
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-46.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">--fft-scan · iterative</text>
|
|
262
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-34.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">--min-snr-db · --no-refine</text>
|
|
254
263
|
</g>
|
|
255
264
|
<!-- Freq->Scan -->
|
|
256
265
|
<g id="edge21" class="edge">
|
|
257
266
|
<title>Freq->Scan</title>
|
|
258
|
-
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="
|
|
259
|
-
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="
|
|
260
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
267
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M1329.75,-50C1375.89,-50 1437.48,-50 1484.4,-50"/>
|
|
268
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1484.21,-52.8 1492.21,-50 1484.21,-47.2 1484.21,-52.8"/>
|
|
269
|
+
<text xml:space="preserve" text-anchor="middle" x="1407.38" y="-51.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">plan_bw/step</text>
|
|
261
270
|
</g>
|
|
262
271
|
<!-- Dec -->
|
|
263
272
|
<g id="node14" class="node">
|
|
264
273
|
<title>Dec</title>
|
|
265
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="
|
|
266
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
267
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
268
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
269
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
270
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
271
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
274
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1622.75,-292C1622.75,-292 1486.75,-292 1486.75,-292 1480.75,-292 1474.75,-286 1474.75,-280 1474.75,-280 1474.75,-224 1474.75,-224 1474.75,-218 1480.75,-212 1486.75,-212 1486.75,-212 1622.75,-212 1622.75,-212 1628.75,-212 1634.75,-218 1634.75,-224 1634.75,-224 1634.75,-280 1634.75,-280 1634.75,-286 1628.75,-292 1622.75,-292"/>
|
|
275
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-278.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::Decoder::*</text>
|
|
276
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-266.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">ADSB · APT · BT · DECT · GPS</text>
|
|
277
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-254.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">GSM · Iridium · LoRa · LTE</text>
|
|
278
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-242.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Morse · P25 · POCSAG/FLEX</text>
|
|
279
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-230.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RDS · RFID · rtl_433 · RTTY</text>
|
|
280
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-218.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">WiFi · ZigBee · Tempest</text>
|
|
272
281
|
</g>
|
|
273
282
|
<!-- Freq->Dec -->
|
|
274
283
|
<g id="edge18" class="edge">
|
|
275
284
|
<title>Freq->Dec</title>
|
|
276
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
277
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
278
|
-
</g>
|
|
279
|
-
<!-- Obs -->
|
|
280
|
-
<g id="node15" class="node">
|
|
281
|
-
<title>Obs</title>
|
|
282
|
-
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1677.75,-209C1677.75,-209 1624.25,-209 1624.25,-209 1618.25,-209 1612.25,-203 1612.25,-197 1612.25,-197 1612.25,-185 1612.25,-185 1612.25,-179 1618.25,-173 1624.25,-173 1624.25,-173 1677.75,-173 1677.75,-173 1683.75,-173 1689.75,-179 1689.75,-185 1689.75,-185 1689.75,-197 1689.75,-197 1689.75,-203 1683.75,-209 1677.75,-209"/>
|
|
283
|
-
<text xml:space="preserve" text-anchor="middle" x="1651" y="-193.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extro_observe</text>
|
|
284
|
-
<text xml:space="preserve" text-anchor="middle" x="1651" y="-181.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">category: :rf</text>
|
|
285
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1296.39,-72.58C1342.47,-104.7 1427.95,-164.3 1487.71,-205.96"/>
|
|
286
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1485.82,-208.05 1493.98,-210.33 1489.02,-203.46 1485.82,-208.05"/>
|
|
285
287
|
</g>
|
|
286
288
|
<!-- Scan->Obs -->
|
|
287
289
|
<g id="edge22" class="edge">
|
|
288
290
|
<title>Scan->Obs</title>
|
|
289
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
290
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
291
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1586.34,-72.46C1601.23,-83.69 1619.23,-97.69 1634.75,-111 1653.84,-127.37 1658.96,-131.27 1675.75,-150 1697.66,-174.44 1720.12,-204.56 1735.23,-225.71"/>
|
|
292
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1732.79,-227.11 1739.7,-232.02 1737.36,-223.88 1732.79,-227.11"/>
|
|
291
293
|
</g>
|
|
292
294
|
<!-- Base->DSP -->
|
|
293
295
|
<g id="edge15" class="edge">
|
|
294
296
|
<title>Base->DSP</title>
|
|
295
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
296
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
297
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1020.62,-270.65C1034.1,-272.47 1048.11,-274.32 1061.25,-276 1098.8,-280.8 1140.35,-285.81 1175.86,-290.01"/>
|
|
298
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1175.48,-292.78 1183.75,-290.94 1176.13,-287.22 1175.48,-292.78"/>
|
|
297
299
|
</g>
|
|
298
300
|
<!-- Base->Dec -->
|
|
299
301
|
<g id="edge17" class="edge">
|
|
300
302
|
<title>Base->Dec</title>
|
|
301
|
-
<path fill="none" stroke="#a78bfa" stroke-width="2" d="
|
|
302
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="
|
|
303
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
303
|
+
<path fill="none" stroke="#a78bfa" stroke-width="2" d="M1020.56,-257.45C1067.33,-255.24 1130.35,-252.62 1186,-251.5 1254.43,-250.12 1271.56,-251.42 1340,-251.5 1380.62,-251.55 1425.58,-251.65 1463.75,-251.74"/>
|
|
304
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="1463.29,-254.54 1471.29,-251.76 1463.3,-248.94 1463.29,-254.54"/>
|
|
305
|
+
<text xml:space="preserve" text-anchor="middle" x="1263" y="-253.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">feed_iq / feed</text>
|
|
304
306
|
</g>
|
|
305
307
|
<!-- DSP->Dec -->
|
|
306
308
|
<g id="edge16" class="edge">
|
|
307
309
|
<title>DSP->Dec</title>
|
|
308
|
-
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="
|
|
309
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="
|
|
310
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M1340.51,-287.33C1378.61,-281.01 1424.9,-273.34 1464.6,-266.77"/>
|
|
311
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="1464.91,-269.56 1472.34,-265.49 1463.99,-264.03 1464.91,-269.56"/>
|
|
310
312
|
</g>
|
|
311
313
|
<!-- Dec->Obs -->
|
|
312
314
|
<g id="edge24" class="edge">
|
|
313
315
|
<title>Dec->Obs</title>
|
|
314
|
-
<path fill="none" stroke="#c4b5fd" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
315
|
-
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="1.3" points="
|
|
316
|
+
<path fill="none" stroke="#c4b5fd" stroke-width="1.3" stroke-dasharray="5,2" d="M1635.33,-252C1659.14,-252 1684.5,-252 1705.6,-252"/>
|
|
317
|
+
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="1.3" points="1705.32,-254.8 1713.32,-252 1705.32,-249.2 1705.32,-254.8"/>
|
|
316
318
|
</g>
|
|
317
319
|
<!-- Tune->Dec -->
|
|
318
320
|
<g id="edge26" class="edge">
|
|
319
321
|
<title>Tune->Dec</title>
|
|
320
|
-
<path fill="none" stroke="#c4b5fd" stroke-width="1.3" stroke-dasharray="5,2" d="
|
|
321
|
-
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="1.3" points="
|
|
322
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
322
|
+
<path fill="none" stroke="#c4b5fd" stroke-width="1.3" stroke-dasharray="5,2" d="M1329.75,-172.37C1369.81,-186.61 1421.52,-204.99 1465.16,-220.51"/>
|
|
323
|
+
<polygon fill="#c4b5fd" stroke="#c4b5fd" stroke-width="1.3" points="1464.01,-223.07 1472.48,-223.11 1465.88,-217.79 1464.01,-223.07"/>
|
|
324
|
+
<text xml:space="preserve" text-anchor="middle" x="1407.38" y="-208.62" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">RDS.sample</text>
|
|
323
325
|
</g>
|
|
324
326
|
<!-- Tune->Obs -->
|
|
325
327
|
<g id="edge25" class="edge">
|
|
326
328
|
<title>Tune->Obs</title>
|
|
327
|
-
<path fill="none" stroke="#a78bfa" stroke-width="2" d="
|
|
328
|
-
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="
|
|
329
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
330
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
329
|
+
<path fill="none" stroke="#a78bfa" stroke-width="2" d="M1334.7,-143.64C1410.84,-140.22 1534.54,-141.5 1634.75,-175 1668.08,-186.14 1701.23,-208.87 1724,-226.75"/>
|
|
330
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="1722.15,-228.86 1730.14,-231.69 1725.66,-224.49 1722.15,-228.86"/>
|
|
331
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-187.45" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">category::rf</text>
|
|
332
|
+
<text xml:space="preserve" text-anchor="middle" x="1554.75" y="-176.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">ttl 300s</text>
|
|
331
333
|
</g>
|
|
332
334
|
</g>
|
|
333
335
|
</svg>
|