pwn 0.5.621 → 0.5.626

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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -2
  3. data/Gemfile +1 -1
  4. data/README.md +7 -1
  5. data/bin/pwn_gqrx_scanner +78 -9
  6. data/documentation/Agent-Tool-Registry.md +3 -3
  7. data/documentation/Configuration.md +301 -47
  8. data/documentation/Cron.md +5 -3
  9. data/documentation/Diagrams.md +1 -1
  10. data/documentation/Extrospection.md +472 -26
  11. data/documentation/FFI.md +72 -8
  12. data/documentation/Home.md +4 -4
  13. data/documentation/How-PWN-Works.md +7 -3
  14. data/documentation/Mistakes.md +9 -0
  15. data/documentation/SDR.md +83 -10
  16. data/documentation/Skills-Memory-Learning.md +101 -11
  17. data/documentation/diagrams/agent-tool-registry.svg +56 -55
  18. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  19. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  20. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  21. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  22. data/documentation/diagrams/cron-scheduling.svg +23 -23
  23. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  24. data/documentation/diagrams/dot/extrospection-world-awareness.dot +33 -6
  25. data/documentation/diagrams/dot/hardware-hacking.dot +3 -1
  26. data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -2
  27. data/documentation/diagrams/dot/mistakes-negative-feedback.dot +4 -2
  28. data/documentation/diagrams/dot/overall-pwn-architecture.dot +3 -3
  29. data/documentation/diagrams/dot/persistence-filesystem.dot +3 -3
  30. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +10 -4
  31. data/documentation/diagrams/dot/sdr-radio-flow.dot +39 -16
  32. data/documentation/diagrams/driver-framework.svg +13 -13
  33. data/documentation/diagrams/extrospection-world-awareness.svg +383 -177
  34. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  35. data/documentation/diagrams/hardware-hacking.svg +84 -69
  36. data/documentation/diagrams/history-to-drivers.svg +18 -18
  37. data/documentation/diagrams/memory-skills-detailed.svg +137 -120
  38. data/documentation/diagrams/mistakes-negative-feedback.svg +152 -137
  39. data/documentation/diagrams/network-infra-testing.svg +27 -27
  40. data/documentation/diagrams/overall-pwn-architecture.svg +97 -97
  41. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  42. data/documentation/diagrams/persistence-filesystem.svg +100 -94
  43. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  44. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +254 -207
  45. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  46. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  47. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  48. data/documentation/diagrams/sdr-radio-flow.svg +223 -91
  49. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  50. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  51. data/documentation/diagrams/web-application-testing.svg +26 -26
  52. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  53. data/documentation/pwn-ai-Agent.md +16 -10
  54. data/documentation/pwn_silent_help_learn_demo.gif +0 -0
  55. data/lib/pwn/ai/agent/assembly.rb +1 -1
  56. data/lib/pwn/ai/agent/btc.rb +1 -1
  57. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  58. data/lib/pwn/ai/agent/extrospection.rb +2562 -57
  59. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  60. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  61. data/lib/pwn/ai/agent/learning.rb +16 -16
  62. data/lib/pwn/ai/agent/loop.rb +1 -1
  63. data/lib/pwn/ai/agent/{introspection.rb → reflect.rb} +12 -12
  64. data/lib/pwn/ai/agent/sast.rb +1 -1
  65. data/lib/pwn/ai/agent/tools/extrospection.rb +311 -8
  66. data/lib/pwn/ai/agent/tools/learning.rb +7 -7
  67. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  68. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  69. data/lib/pwn/ai/agent.rb +1 -1
  70. data/lib/pwn/ai/open_ai.rb +10 -6
  71. data/lib/pwn/config.rb +5 -4
  72. data/lib/pwn/ffi/adalm_pluto.rb +498 -0
  73. data/lib/pwn/ffi/fftw.rb +192 -0
  74. data/lib/pwn/ffi/hack_rf.rb +193 -0
  75. data/lib/pwn/ffi/liquid.rb +244 -0
  76. data/lib/pwn/ffi/rtl_sdr.rb +210 -0
  77. data/lib/pwn/ffi/soapy_sdr.rb +177 -0
  78. data/lib/pwn/ffi/stdio.rb +9 -1
  79. data/lib/pwn/ffi/volk.rb +241 -0
  80. data/lib/pwn/ffi.rb +45 -2
  81. data/lib/pwn/plugins/burp_suite.rb +2 -2
  82. data/lib/pwn/sast/pom_version.rb +2 -2
  83. data/lib/pwn/sast/test_case_engine.rb +1 -1
  84. data/lib/pwn/sdr/decoder/adsb.rb +201 -12
  85. data/lib/pwn/sdr/decoder/apt.rb +19 -5
  86. data/lib/pwn/sdr/decoder/base.rb +314 -1
  87. data/lib/pwn/sdr/decoder/bluetooth.rb +91 -18
  88. data/lib/pwn/sdr/decoder/dect.rb +81 -23
  89. data/lib/pwn/sdr/decoder/dsp.rb +229 -15
  90. data/lib/pwn/sdr/decoder/flex.rb +23 -6
  91. data/lib/pwn/sdr/decoder/gps.rb +80 -18
  92. data/lib/pwn/sdr/decoder/gsm.rb +83 -28
  93. data/lib/pwn/sdr/decoder/iridium.rb +80 -18
  94. data/lib/pwn/sdr/decoder/lora.rb +84 -28
  95. data/lib/pwn/sdr/decoder/lte.rb +80 -18
  96. data/lib/pwn/sdr/decoder/morse.rb +23 -6
  97. data/lib/pwn/sdr/decoder/p25.rb +90 -31
  98. data/lib/pwn/sdr/decoder/pager.rb +23 -6
  99. data/lib/pwn/sdr/decoder/pocsag.rb +23 -6
  100. data/lib/pwn/sdr/decoder/rds.rb +219 -52
  101. data/lib/pwn/sdr/decoder/rfid.rb +81 -27
  102. data/lib/pwn/sdr/decoder/rtl433.rb +85 -27
  103. data/lib/pwn/sdr/decoder/rtty.rb +23 -6
  104. data/lib/pwn/sdr/decoder/wifi.rb +86 -32
  105. data/lib/pwn/sdr/decoder/zigbee.rb +88 -35
  106. data/lib/pwn/sdr/decoder.rb +6 -5
  107. data/lib/pwn/sdr/frequency_allocation.rb +124 -81
  108. data/lib/pwn/sdr/gqrx.rb +1513 -165
  109. data/lib/pwn/version.rb +1 -1
  110. data/spec/lib/pwn/ai/agent/extrospection_spec.rb +96 -0
  111. data/spec/lib/pwn/ai/agent/{introspection_spec.rb → reflect_spec.rb} +3 -3
  112. data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +8 -24
  113. data/spec/lib/pwn/ffi/adalm_pluto_spec.rb +37 -0
  114. data/spec/lib/pwn/ffi/fftw_spec.rb +26 -0
  115. data/spec/lib/pwn/ffi/hack_rf_spec.rb +25 -0
  116. data/spec/lib/pwn/ffi/liquid_spec.rb +42 -0
  117. data/spec/lib/pwn/ffi/rtl_sdr_spec.rb +24 -0
  118. data/spec/lib/pwn/ffi/soapy_sdr_spec.rb +25 -0
  119. data/spec/lib/pwn/ffi/volk_spec.rb +36 -0
  120. data/spec/lib/pwn/sdr/decoder/base_iq_spec.rb +65 -0
  121. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +50 -4
  122. data/spec/lib/pwn/sdr/decoder/rds_spec.rb +45 -4
  123. data/third_party/pwn_rdoc.jsonl +279 -30
  124. metadata +21 -5
@@ -9,36 +9,36 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 346.07)">
10
10
  <title>PWN_Fuzz</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-346.07 858.2,-346.07 858.2,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="322.75" y="-280.87" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Fuzzing with PWN</text>
13
- <text xml:space="preserve" text-anchor="start" x="299.5" y="-269.42" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</text>
12
+ <text xml:space="preserve" text-anchor="start" x="322.75" y="-280.87" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Fuzzing with PWN</text>
13
+ <text xml:space="preserve" text-anchor="start" x="299.5" y="-269.42" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_gen</title>
16
16
  <path fill="#022c22" stroke="#047857" d="M182.75,-36.87C182.75,-36.87 267.25,-36.87 267.25,-36.87 273.25,-36.87 279.25,-42.87 279.25,-48.87 279.25,-48.87 279.25,-175.87 279.25,-175.87 279.25,-181.87 273.25,-187.87 267.25,-187.87 267.25,-187.87 182.75,-187.87 182.75,-187.87 176.75,-187.87 170.75,-181.87 170.75,-175.87 170.75,-175.87 170.75,-48.87 170.75,-48.87 170.75,-42.87 176.75,-36.87 182.75,-36.87"/>
17
- <text xml:space="preserve" text-anchor="middle" x="225" y="-164.87" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">Generate</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-164.87" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Generate</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_deliver</title>
21
21
  <path fill="#422006" stroke="#a16207" d="M362.25,-36.87C362.25,-36.87 479,-36.87 479,-36.87 485,-36.87 491,-42.87 491,-48.87 491,-48.87 491,-243.87 491,-243.87 491,-249.87 485,-255.87 479,-255.87 479,-255.87 362.25,-255.87 362.25,-255.87 356.25,-255.87 350.25,-249.87 350.25,-243.87 350.25,-243.87 350.25,-48.87 350.25,-48.87 350.25,-42.87 356.25,-36.87 362.25,-36.87"/>
22
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-232.87" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">Deliver</text>
22
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Deliver</text>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
25
  <title>cluster_mon</title>
26
26
  <path fill="#450a0a" stroke="#b91c1c" d="M574,-104.87C574,-104.87 645.75,-104.87 645.75,-104.87 651.75,-104.87 657.75,-110.87 657.75,-116.87 657.75,-116.87 657.75,-243.87 657.75,-243.87 657.75,-249.87 651.75,-255.87 645.75,-255.87 645.75,-255.87 574,-255.87 574,-255.87 568,-255.87 562,-249.87 562,-243.87 562,-243.87 562,-116.87 562,-116.87 562,-110.87 568,-104.87 574,-104.87"/>
27
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-232.87" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">Monitor</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Monitor</text>
28
28
  </g>
29
29
  <!-- Seed -->
30
30
  <g id="node1" class="node">
31
31
  <title>Seed</title>
32
32
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M79.75,-113.87C79.75,-113.87 12,-113.87 12,-113.87 6,-113.87 0,-107.87 0,-101.87 0,-101.87 0,-89.87 0,-89.87 0,-83.87 6,-77.87 12,-77.87 12,-77.87 79.75,-77.87 79.75,-77.87 85.75,-77.87 91.75,-83.87 91.75,-89.87 91.75,-89.87 91.75,-101.87 91.75,-101.87 91.75,-107.87 85.75,-113.87 79.75,-113.87"/>
33
- <text xml:space="preserve" text-anchor="middle" x="45.88" y="-98.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Seed corpus /</text>
34
- <text xml:space="preserve" text-anchor="middle" x="45.88" y="-86.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">protocol grammar</text>
33
+ <text xml:space="preserve" text-anchor="middle" x="45.88" y="-98.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Seed corpus /</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="45.88" y="-86.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">protocol grammar</text>
35
35
  </g>
36
36
  <!-- Fuzz -->
37
37
  <g id="node2" class="node">
38
38
  <title>Fuzz</title>
39
39
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M259.25,-148.87C259.25,-148.87 190.75,-148.87 190.75,-148.87 184.75,-148.87 178.75,-142.87 178.75,-136.87 178.75,-136.87 178.75,-124.87 178.75,-124.87 178.75,-118.87 184.75,-112.87 190.75,-112.87 190.75,-112.87 259.25,-112.87 259.25,-112.87 265.25,-112.87 271.25,-118.87 271.25,-124.87 271.25,-124.87 271.25,-136.87 271.25,-136.87 271.25,-142.87 265.25,-148.87 259.25,-148.87"/>
40
- <text xml:space="preserve" text-anchor="middle" x="225" y="-133.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
41
- <text xml:space="preserve" text-anchor="middle" x="225" y="-121.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">mutate · generate</text>
40
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mutate · generate</text>
42
42
  </g>
43
43
  <!-- Seed&#45;&gt;Fuzz -->
44
44
  <g id="edge1" class="edge">
@@ -50,8 +50,8 @@
50
50
  <g id="node3" class="node">
51
51
  <title>Char</title>
52
52
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M250.62,-80.87C250.62,-80.87 199.38,-80.87 199.38,-80.87 193.38,-80.87 187.38,-74.87 187.38,-68.87 187.38,-68.87 187.38,-56.87 187.38,-56.87 187.38,-50.87 193.38,-44.87 199.38,-44.87 199.38,-44.87 250.62,-44.87 250.62,-44.87 256.62,-44.87 262.62,-50.87 262.62,-56.87 262.62,-56.87 262.62,-68.87 262.62,-68.87 262.62,-74.87 256.62,-80.87 250.62,-80.87"/>
53
- <text xml:space="preserve" text-anchor="middle" x="225" y="-65.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Char</text>
54
- <text xml:space="preserve" text-anchor="middle" x="225" y="-53.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">encodings</text>
53
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Char</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">encodings</text>
55
55
  </g>
56
56
  <!-- Seed&#45;&gt;Char -->
57
57
  <g id="edge2" class="edge">
@@ -63,8 +63,8 @@
63
63
  <g id="node4" class="node">
64
64
  <title>Sock</title>
65
65
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M447,-216.87C447,-216.87 394.25,-216.87 394.25,-216.87 388.25,-216.87 382.25,-210.87 382.25,-204.87 382.25,-204.87 382.25,-192.87 382.25,-192.87 382.25,-186.87 388.25,-180.87 394.25,-180.87 394.25,-180.87 447,-180.87 447,-180.87 453,-180.87 459,-186.87 459,-192.87 459,-192.87 459,-204.87 459,-204.87 459,-210.87 453,-216.87 447,-216.87"/>
66
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-201.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
67
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-189.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP</text>
66
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP</text>
68
68
  </g>
69
69
  <!-- Fuzz&#45;&gt;Sock -->
70
70
  <g id="edge3" class="edge">
@@ -76,8 +76,8 @@
76
76
  <g id="node5" class="node">
77
77
  <title>Packet</title>
78
78
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M451.12,-148.87C451.12,-148.87 390.12,-148.87 390.12,-148.87 384.12,-148.87 378.12,-142.87 378.12,-136.87 378.12,-136.87 378.12,-124.87 378.12,-124.87 378.12,-118.87 384.12,-112.87 390.12,-112.87 390.12,-112.87 451.12,-112.87 451.12,-112.87 457.12,-112.87 463.12,-118.87 463.12,-124.87 463.12,-124.87 463.12,-136.87 463.12,-136.87 463.12,-142.87 457.12,-148.87 451.12,-148.87"/>
79
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-133.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
80
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-121.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">raw L2/L3</text>
79
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">raw L2/L3</text>
81
81
  </g>
82
82
  <!-- Fuzz&#45;&gt;Packet -->
83
83
  <g id="edge4" class="edge">
@@ -89,8 +89,8 @@
89
89
  <g id="node6" class="node">
90
90
  <title>NetApp</title>
91
91
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M471,-80.87C471,-80.87 370.25,-80.87 370.25,-80.87 364.25,-80.87 358.25,-74.87 358.25,-68.87 358.25,-68.87 358.25,-56.87 358.25,-56.87 358.25,-50.87 364.25,-44.87 370.25,-44.87 370.25,-44.87 471,-44.87 471,-44.87 477,-44.87 483,-50.87 483,-56.87 483,-56.87 483,-68.87 483,-68.87 483,-74.87 477,-80.87 471,-80.87"/>
92
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-65.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">pwn_fuzz_net_app_proto</text>
93
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-53.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">CLI driver</text>
92
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_fuzz_net_app_proto</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CLI driver</text>
94
94
  </g>
95
95
  <!-- Char&#45;&gt;NetApp -->
96
96
  <g id="edge5" class="edge">
@@ -102,8 +102,8 @@
102
102
  <g id="node7" class="node">
103
103
  <title>PS</title>
104
104
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M637.75,-216.87C637.75,-216.87 582,-216.87 582,-216.87 576,-216.87 570,-210.87 570,-204.87 570,-204.87 570,-192.87 570,-192.87 570,-186.87 576,-180.87 582,-180.87 582,-180.87 637.75,-180.87 637.75,-180.87 643.75,-180.87 649.75,-186.87 649.75,-192.87 649.75,-192.87 649.75,-204.87 649.75,-204.87 649.75,-210.87 643.75,-216.87 637.75,-216.87"/>
105
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-201.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::PS</text>
106
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-189.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">process health</text>
105
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::PS</text>
106
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">process health</text>
107
107
  </g>
108
108
  <!-- Sock&#45;&gt;PS -->
109
109
  <g id="edge6" class="edge">
@@ -115,8 +115,8 @@
115
115
  <g id="node8" class="node">
116
116
  <title>Log</title>
117
117
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M632.88,-148.87C632.88,-148.87 586.88,-148.87 586.88,-148.87 580.88,-148.87 574.88,-142.87 574.88,-136.87 574.88,-136.87 574.88,-124.87 574.88,-124.87 574.88,-118.87 580.88,-112.87 586.88,-112.87 586.88,-112.87 632.88,-112.87 632.88,-112.87 638.88,-112.87 644.88,-118.87 644.88,-124.87 644.88,-124.87 644.88,-136.87 644.88,-136.87 644.88,-142.87 638.88,-148.87 632.88,-148.87"/>
118
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-133.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Log</text>
119
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-121.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">crash detect</text>
118
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Log</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash detect</text>
120
120
  </g>
121
121
  <!-- Packet&#45;&gt;Log -->
122
122
  <g id="edge7" class="edge">
@@ -134,8 +134,8 @@
134
134
  <g id="node9" class="node">
135
135
  <title>Report</title>
136
136
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M803,-185.87C803,-185.87 748.75,-185.87 748.75,-185.87 742.75,-185.87 736.75,-179.87 736.75,-173.87 736.75,-173.87 736.75,-161.87 736.75,-161.87 736.75,-155.87 742.75,-149.87 748.75,-149.87 748.75,-149.87 803,-149.87 803,-149.87 809,-149.87 815,-155.87 815,-161.87 815,-161.87 815,-173.87 815,-173.87 815,-179.87 809,-185.87 803,-185.87"/>
137
- <text xml:space="preserve" text-anchor="middle" x="775.88" y="-170.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Reports::Fuzz</text>
138
- <text xml:space="preserve" text-anchor="middle" x="775.88" y="-158.37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">crash triage</text>
137
+ <text xml:space="preserve" text-anchor="middle" x="775.88" y="-170.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports::Fuzz</text>
138
+ <text xml:space="preserve" text-anchor="middle" x="775.88" y="-158.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash triage</text>
139
139
  </g>
140
140
  <!-- PS&#45;&gt;Report -->
141
141
  <g id="edge9" class="edge">
@@ -148,7 +148,7 @@
148
148
  <title>Log&#45;&gt;Fuzz</title>
149
149
  <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M596.69,-112.47C577.77,-85.77 538.53,-37.41 491,-18.37 432.93,4.89 407.43,7.01 350.25,-18.37 307.25,-37.46 315.17,-66.5 279.25,-96.87 275.22,-100.28 270.82,-103.61 266.34,-106.77"/>
150
150
  <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="264.92,-104.34 259.87,-111.15 268.06,-108.98 264.92,-104.34"/>
151
- <text xml:space="preserve" text-anchor="middle" x="420.62" y="-20.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">minimise + reseed</text>
151
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-20.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">minimise + reseed</text>
152
152
  </g>
153
153
  <!-- Log&#45;&gt;Report -->
154
154
  <g id="edge10" class="edge">
@@ -4,160 +4,175 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
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)">
7
+ <svg width="668pt" height="640pt"
8
+ viewBox="0.00 0.00 668.00 640.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 597.2)">
10
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="Helvetica,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="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">Serial · BusPirate · MSR206 · Android · BareSIP · SDR</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-597.2 625.2,-597.2 625.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="121.5" y="-532" 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="158.62" y="-520.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Serial · BusPirate · MSR206 · Android · BareSIP · SDR</text>
14
14
  <g id="clust1" class="cluster">
15
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="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">Physical Devices</text>
16
+ <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M12,-164C12,-164 154,-164 154,-164 160,-164 166,-170 166,-176 166,-176 166,-495 166,-495 166,-501 160,-507 154,-507 154,-507 12,-507 12,-507 6,-507 0,-501 0,-495 0,-495 0,-176 0,-176 0,-170 6,-164 12,-164"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="83" y="-484" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Physical Devices</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
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="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">PWN::Plugins / SDR</text>
21
+ <path fill="#022c22" stroke="#047857" d="M248,-164C248,-164 562,-164 562,-164 568,-164 574,-170 574,-176 574,-176 574,-495 574,-495 574,-501 568,-507 562,-507 562,-507 248,-507 248,-507 242,-507 236,-501 236,-495 236,-495 236,-176 236,-176 236,-170 242,-164 248,-164"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="405" y="-484" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">PWN::Plugins / SDR</text>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
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="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Analysis</text>
26
+ <path fill="#2e1065" stroke="#6d28d9" d="M463.25,-8C463.25,-8 544,-8 544,-8 550,-8 556,-14 556,-20 556,-20 556,-144 556,-144 556,-150 550,-156 544,-156 544,-156 463.25,-156 463.25,-156 457.25,-156 451.25,-150 451.25,-144 451.25,-144 451.25,-20 451.25,-20 451.25,-14 457.25,-8 463.25,-8"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="503.62" y="-133" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Analysis</text>
28
28
  </g>
29
29
  <!-- Uart -->
30
30
  <g id="node1" class="node">
31
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="Helvetica,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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">embedded target</text>
32
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M114.88,-208C114.88,-208 50.12,-208 50.12,-208 44.12,-208 38.12,-202 38.12,-196 38.12,-196 38.12,-184 38.12,-184 38.12,-178 44.12,-172 50.12,-172 50.12,-172 114.88,-172 114.88,-172 120.88,-172 126.88,-178 126.88,-184 126.88,-184 126.88,-196 126.88,-196 126.88,-202 120.88,-208 114.88,-208"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-192.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="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">embedded target</text>
35
35
  </g>
36
36
  <!-- Serial -->
37
37
  <g id="node6" class="node">
38
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Serial · BusPirate</text>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M333.88,-208C333.88,-208 265.38,-208 265.38,-208 259.38,-208 253.38,-202 253.38,-196 253.38,-196 253.38,-184 253.38,-184 253.38,-178 259.38,-172 265.38,-172 265.38,-172 333.88,-172 333.88,-172 339.88,-172 345.88,-178 345.88,-184 345.88,-184 345.88,-196 345.88,-196 345.88,-202 339.88,-208 333.88,-208"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="299.62" y="-186.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Serial · BusPirate</text>
41
41
  </g>
42
42
  <!-- Uart&#45;&gt;Serial -->
43
- <g id="edge1" class="edge">
43
+ <g id="edge2" class="edge">
44
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"/>
45
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M127.29,-190C160.76,-190 207.11,-190 243.16,-190"/>
46
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="243.07,-192.8 251.07,-190 243.07,-187.2 243.07,-192.8"/>
47
47
  </g>
48
48
  <!-- Mag -->
49
49
  <g id="node2" class="node">
50
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Magstripe card</text>
51
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M110.75,-273C110.75,-273 54.25,-273 54.25,-273 48.25,-273 42.25,-267 42.25,-261 42.25,-261 42.25,-249 42.25,-249 42.25,-243 48.25,-237 54.25,-237 54.25,-237 110.75,-237 110.75,-237 116.75,-237 122.75,-243 122.75,-249 122.75,-249 122.75,-261 122.75,-261 122.75,-267 116.75,-273 110.75,-273"/>
52
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-251.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Magstripe card</text>
53
53
  </g>
54
54
  <!-- MSR -->
55
55
  <g id="node7" class="node">
56
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">MSR206</text>
57
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M314.75,-273C314.75,-273 284.5,-273 284.5,-273 278.5,-273 272.5,-267 272.5,-261 272.5,-261 272.5,-249 272.5,-249 272.5,-243 278.5,-237 284.5,-237 284.5,-237 314.75,-237 314.75,-237 320.75,-237 326.75,-243 326.75,-249 326.75,-249 326.75,-261 326.75,-261 326.75,-267 320.75,-273 314.75,-273"/>
58
+ <text xml:space="preserve" text-anchor="middle" x="299.62" y="-251.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">MSR206</text>
59
59
  </g>
60
60
  <!-- Mag&#45;&gt;MSR -->
61
- <g id="edge2" class="edge">
61
+ <g id="edge3" class="edge">
62
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"/>
63
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M123.21,-255C162.99,-255 223.71,-255 262.27,-255"/>
64
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="262.08,-257.8 270.08,-255 262.08,-252.2 262.08,-257.8"/>
65
65
  </g>
66
66
  <!-- Phone -->
67
67
  <g id="node3" class="node">
68
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Android device</text>
69
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M110.75,-338C110.75,-338 54.25,-338 54.25,-338 48.25,-338 42.25,-332 42.25,-326 42.25,-326 42.25,-314 42.25,-314 42.25,-308 48.25,-302 54.25,-302 54.25,-302 110.75,-302 110.75,-302 116.75,-302 122.75,-308 122.75,-314 122.75,-314 122.75,-326 122.75,-326 122.75,-332 116.75,-338 110.75,-338"/>
70
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-316.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Android device</text>
71
71
  </g>
72
72
  <!-- Adb -->
73
73
  <g id="node8" class="node">
74
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Android (adb)</text>
75
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M324.5,-338C324.5,-338 274.75,-338 274.75,-338 268.75,-338 262.75,-332 262.75,-326 262.75,-326 262.75,-314 262.75,-314 262.75,-308 268.75,-302 274.75,-302 274.75,-302 324.5,-302 324.5,-302 330.5,-302 336.5,-308 336.5,-314 336.5,-314 336.5,-326 336.5,-326 336.5,-332 330.5,-338 324.5,-338"/>
76
+ <text xml:space="preserve" text-anchor="middle" x="299.62" y="-316.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Android (adb)</text>
77
77
  </g>
78
78
  <!-- Phone&#45;&gt;Adb -->
79
- <g id="edge3" class="edge">
79
+ <g id="edge4" class="edge">
80
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"/>
81
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M123.21,-320C159.76,-320 213.99,-320 252.46,-320"/>
82
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="252.4,-322.8 260.4,-320 252.4,-317.2 252.4,-322.8"/>
83
83
  </g>
84
84
  <!-- VoIP -->
85
85
  <g id="node4" class="node">
86
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">SIP / PSTN</text>
87
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M104.75,-403C104.75,-403 60.25,-403 60.25,-403 54.25,-403 48.25,-397 48.25,-391 48.25,-391 48.25,-379 48.25,-379 48.25,-373 54.25,-367 60.25,-367 60.25,-367 104.75,-367 104.75,-367 110.75,-367 116.75,-373 116.75,-379 116.75,-379 116.75,-391 116.75,-391 116.75,-397 110.75,-403 104.75,-403"/>
88
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-381.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SIP / PSTN</text>
89
89
  </g>
90
90
  <!-- Sip -->
91
91
  <g id="node9" class="node">
92
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">BareSIP · Voice</text>
93
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M330.88,-403C330.88,-403 268.38,-403 268.38,-403 262.38,-403 256.38,-397 256.38,-391 256.38,-391 256.38,-379 256.38,-379 256.38,-373 262.38,-367 268.38,-367 268.38,-367 330.88,-367 330.88,-367 336.88,-367 342.88,-373 342.88,-379 342.88,-379 342.88,-391 342.88,-391 342.88,-397 336.88,-403 330.88,-403"/>
94
+ <text xml:space="preserve" text-anchor="middle" x="299.62" y="-381.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BareSIP · Voice</text>
95
95
  </g>
96
96
  <!-- VoIP&#45;&gt;Sip -->
97
- <g id="edge4" class="edge">
97
+ <g id="edge5" class="edge">
98
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"/>
99
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M117.11,-385C151.65,-385 205.89,-385 246.1,-385"/>
100
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="246.03,-387.8 254.03,-385 246.03,-382.2 246.03,-387.8"/>
101
101
  </g>
102
102
  <!-- RF -->
103
103
  <g id="node5" class="node">
104
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">RF spectrum</text>
105
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M107,-468C107,-468 58,-468 58,-468 52,-468 46,-462 46,-456 46,-456 46,-444 46,-444 46,-438 52,-432 58,-432 58,-432 107,-432 107,-432 113,-432 119,-438 119,-444 119,-444 119,-456 119,-456 119,-462 113,-468 107,-468"/>
106
+ <text xml:space="preserve" text-anchor="middle" x="82.5" y="-446.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RF spectrum</text>
107
107
  </g>
108
108
  <!-- Sdr -->
109
109
  <g id="node10" class="node">
110
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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">SDR::GQRX · Flipper</text>
111
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M343.25,-468C343.25,-468 256,-468 256,-468 250,-468 244,-462 244,-456 244,-456 244,-444 244,-444 244,-438 250,-432 256,-432 256,-432 343.25,-432 343.25,-432 349.25,-432 355.25,-438 355.25,-444 355.25,-444 355.25,-456 355.25,-456 355.25,-462 349.25,-468 343.25,-468"/>
112
+ <text xml:space="preserve" text-anchor="middle" x="299.62" y="-452.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::GQRX · Flipper</text>
113
+ <text xml:space="preserve" text-anchor="middle" x="299.62" y="-440.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Decoder::* (run_iq)</text>
113
114
  </g>
114
115
  <!-- RF&#45;&gt;Sdr -->
115
- <g id="edge5" class="edge">
116
+ <g id="edge6" class="edge">
116
117
  <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"/>
118
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M119.51,-450C150.58,-450 196.23,-450 233.67,-450"/>
119
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="233.53,-452.8 241.53,-450 233.53,-447.2 233.53,-452.8"/>
119
120
  </g>
120
121
  <!-- XXD -->
121
- <g id="node11" class="node">
122
+ <g id="node12" class="node">
122
123
  <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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">XXD · Assembly</text>
124
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M536,-52C536,-52 471.25,-52 471.25,-52 465.25,-52 459.25,-46 459.25,-40 459.25,-40 459.25,-28 459.25,-28 459.25,-22 465.25,-16 471.25,-16 471.25,-16 536,-16 536,-16 542,-16 548,-22 548,-28 548,-28 548,-40 548,-40 548,-46 542,-52 536,-52"/>
125
+ <text xml:space="preserve" text-anchor="middle" x="503.62" y="-30.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">XXD · Assembly</text>
125
126
  </g>
126
127
  <!-- Serial&#45;&gt;XXD -->
127
- <g id="edge6" class="edge">
128
+ <g id="edge7" class="edge">
128
129
  <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"/>
130
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M319.05,-171.43C344.9,-145.98 394.06,-99.7 441.25,-67 445.96,-63.73 451.04,-60.54 456.17,-57.52"/>
131
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="457.55,-59.96 463.12,-53.56 454.78,-55.09 457.55,-59.96"/>
131
132
  </g>
132
133
  <!-- MSR&#45;&gt;XXD -->
133
- <g id="edge7" class="edge">
134
+ <g id="edge8" class="edge">
134
135
  <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"/>
136
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M327.37,-243.06C336.96,-237.87 347.35,-231.11 355.25,-223 410.5,-166.29 384.97,-122.69 441.25,-67 444.57,-63.72 448.28,-60.67 452.19,-57.87"/>
137
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="453.64,-60.27 458.8,-53.54 450.57,-55.58 453.64,-60.27"/>
137
138
  </g>
138
139
  <!-- Rep -->
139
- <g id="node12" class="node">
140
+ <g id="node13" class="node">
140
141
  <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="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Reports · Skills</text>
142
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M533.38,-117C533.38,-117 473.88,-117 473.88,-117 467.88,-117 461.88,-111 461.88,-105 461.88,-105 461.88,-93 461.88,-93 461.88,-87 467.88,-81 473.88,-81 473.88,-81 533.38,-81 533.38,-81 539.38,-81 545.38,-87 545.38,-93 545.38,-93 545.38,-105 545.38,-105 545.38,-111 539.38,-117 533.38,-117"/>
143
+ <text xml:space="preserve" text-anchor="middle" x="503.62" y="-95.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports · Skills</text>
143
144
  </g>
144
145
  <!-- Adb&#45;&gt;Rep -->
145
- <g id="edge8" class="edge">
146
+ <g id="edge9" class="edge">
146
147
  <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"/>
148
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M336.97,-301.9C343.44,-297.82 349.83,-293.15 355.25,-288 405.74,-240.02 396.53,-210.39 441.25,-157 450.96,-145.4 462.82,-133.73 473.51,-123.93"/>
149
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="475.15,-126.22 479.22,-118.78 471.41,-122.06 475.15,-126.22"/>
149
150
  </g>
150
151
  <!-- Sip&#45;&gt;Rep -->
151
- <g id="edge9" class="edge">
152
+ <g id="edge10" class="edge">
152
153
  <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"/>
154
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M339.39,-366.49C345.18,-362.59 350.72,-358.09 355.25,-353 418.49,-281.93 386.48,-234.78 441.25,-157 449.67,-145.04 460.85,-133.59 471.36,-124.07"/>
155
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="473.2,-126.18 477.37,-118.8 469.51,-121.97 473.2,-126.18"/>
156
+ </g>
157
+ <!-- FfiSdr -->
158
+ <g id="node11" class="node">
159
+ <title>FfiSdr</title>
160
+ <path fill="#34d399" stroke="#334155" stroke-width="1.3" d="M554,-468C554,-468 453.25,-468 453.25,-468 447.25,-468 441.25,-462 441.25,-456 441.25,-456 441.25,-436 441.25,-436 441.25,-430 447.25,-424 453.25,-424 453.25,-424 554,-424 554,-424 560,-424 566,-430 566,-436 566,-436 566,-456 566,-456 566,-462 560,-468 554,-468"/>
161
+ <text xml:space="preserve" text-anchor="middle" x="503.62" y="-454.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">FFI::RTLSdr · HackRF</text>
162
+ <text xml:space="preserve" text-anchor="middle" x="503.62" y="-442.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">AdalmPluto · SoapySDR</text>
163
+ <text xml:space="preserve" text-anchor="middle" x="503.62" y="-430.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Volk · Liquid · FFTW</text>
164
+ </g>
165
+ <!-- Sdr&#45;&gt;FfiSdr -->
166
+ <g id="edge1" class="edge">
167
+ <title>Sdr&#45;&gt;FfiSdr</title>
168
+ <path fill="none" stroke="#94a3b8" stroke-width="1.3" d="M355.82,-448.91C379.03,-448.45 406.32,-447.91 431.04,-447.42"/>
169
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.3" points="430.82,-450.22 438.76,-447.26 430.71,-444.62 430.82,-450.22"/>
155
170
  </g>
156
171
  <!-- Sdr&#45;&gt;Rep -->
157
- <g id="edge10" class="edge">
172
+ <g id="edge11" class="edge">
158
173
  <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"/>
174
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M340.37,-431.47C345.9,-427.61 351.11,-423.13 355.25,-418 432.01,-323 375.76,-260.09 441.25,-157 448.97,-144.85 459.79,-133.49 470.21,-124.1"/>
175
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="471.97,-126.28 476.18,-118.92 468.3,-122.05 471.97,-126.28"/>
161
176
  </g>
162
177
  </g>
163
178
  </svg>
@@ -9,40 +9,40 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 325.2)">
10
10
  <title>PWN_HistToDriver</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-325.2 990.2,-325.2 990.2,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="263.88" y="-260" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">From REPL History → Reusable Driver / Skill</text>
13
- <text xml:space="preserve" text-anchor="start" x="352" y="-248.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">explore → history → bin/pwn_* driver → distill_skill</text>
12
+ <text xml:space="preserve" text-anchor="start" x="263.88" y="-260" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">From REPL History → Reusable Driver / Skill</text>
13
+ <text xml:space="preserve" text-anchor="start" x="352" y="-248.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">explore → history → bin/pwn_* driver → distill_skill</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_out</title>
16
16
  <path fill="#2e1065" stroke="#6d28d9" d="M593.25,-8C593.25,-8 752.5,-8 752.5,-8 758.5,-8 764.5,-14 764.5,-20 764.5,-20 764.5,-223 764.5,-223 764.5,-229 758.5,-235 752.5,-235 752.5,-235 593.25,-235 593.25,-235 587.25,-235 581.25,-229 581.25,-223 581.25,-223 581.25,-20 581.25,-20 581.25,-14 587.25,-8 593.25,-8"/>
17
- <text xml:space="preserve" text-anchor="middle" x="672.88" y="-212" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">Reusable Artefacts</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="672.88" y="-212" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Reusable Artefacts</text>
18
18
  </g>
19
19
  <!-- Explore -->
20
20
  <g id="node1" class="node">
21
21
  <title>Explore</title>
22
22
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M95.5,-124C95.5,-124 12,-124 12,-124 6,-124 0,-118 0,-112 0,-112 0,-100 0,-100 0,-94 6,-88 12,-88 12,-88 95.5,-88 95.5,-88 101.5,-88 107.5,-94 107.5,-100 107.5,-100 107.5,-112 107.5,-112 107.5,-118 101.5,-124 95.5,-124"/>
23
- <text xml:space="preserve" text-anchor="middle" x="53.75" y="-108.88" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">🐚 &#160;Explore in REPL</text>
24
- <text xml:space="preserve" text-anchor="middle" x="53.75" y="-96.12" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">call PWN::Plugins::*</text>
23
+ <text xml:space="preserve" text-anchor="middle" x="53.75" y="-108.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">🐚 &#160;Explore in REPL</text>
24
+ <text xml:space="preserve" text-anchor="middle" x="53.75" y="-96.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">call PWN::Plugins::*</text>
25
25
  </g>
26
26
  <!-- Hist -->
27
27
  <g id="node2" class="node">
28
28
  <title>Hist</title>
29
29
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M318.25,-124C318.25,-126.21 297.86,-128 272.75,-128 247.64,-128 227.25,-126.21 227.25,-124 227.25,-124 227.25,-88 227.25,-88 227.25,-85.79 247.64,-84 272.75,-84 297.86,-84 318.25,-85.79 318.25,-88 318.25,-88 318.25,-124 318.25,-124"/>
30
30
  <path fill="none" stroke="#334155" stroke-width="1.3" d="M318.25,-124C318.25,-121.79 297.86,-120 272.75,-120 247.64,-120 227.25,-121.79 227.25,-124"/>
31
- <text xml:space="preserve" text-anchor="middle" x="272.75" y="-108.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn_history</text>
32
- <text xml:space="preserve" text-anchor="middle" x="272.75" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Pry `history` cmd</text>
31
+ <text xml:space="preserve" text-anchor="middle" x="272.75" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn_history</text>
32
+ <text xml:space="preserve" text-anchor="middle" x="272.75" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Pry `history` cmd</text>
33
33
  </g>
34
34
  <!-- Explore&#45;&gt;Hist -->
35
35
  <g id="edge1" class="edge">
36
36
  <title>Explore&#45;&gt;Hist</title>
37
37
  <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M108.11,-106C141.23,-106 183.7,-106 217.06,-106"/>
38
38
  <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="216.69,-108.8 224.69,-106 216.69,-103.2 216.69,-108.8"/>
39
- <text xml:space="preserve" text-anchor="middle" x="167.38" y="-107.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">auto&#45;log</text>
39
+ <text xml:space="preserve" text-anchor="middle" x="167.38" y="-107.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">auto&#45;log</text>
40
40
  </g>
41
41
  <!-- Extract -->
42
42
  <g id="node3" class="node">
43
43
  <title>Extract</title>
44
44
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M490.25,-124C490.25,-124 417.25,-124 417.25,-124 411.25,-124 405.25,-118 405.25,-112 405.25,-112 405.25,-100 405.25,-100 405.25,-94 411.25,-88 417.25,-88 417.25,-88 490.25,-88 490.25,-88 496.25,-88 502.25,-94 502.25,-100 502.25,-100 502.25,-112 502.25,-112 502.25,-118 496.25,-124 490.25,-124"/>
45
- <text xml:space="preserve" text-anchor="middle" x="453.75" y="-102.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">copy working lines</text>
45
+ <text xml:space="preserve" text-anchor="middle" x="453.75" y="-102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">copy working lines</text>
46
46
  </g>
47
47
  <!-- Hist&#45;&gt;Extract -->
48
48
  <g id="edge2" class="edge">
@@ -54,8 +54,8 @@
54
54
  <g id="node4" class="node">
55
55
  <title>Driver</title>
56
56
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M726.5,-196C726.5,-196 618.25,-196 618.25,-196 612.25,-196 606.25,-190 606.25,-184 606.25,-184 606.25,-172 606.25,-172 606.25,-166 612.25,-160 618.25,-160 618.25,-160 726.5,-160 726.5,-160 732.5,-160 738.5,-166 738.5,-172 738.5,-172 738.5,-184 738.5,-184 738.5,-190 732.5,-196 726.5,-196"/>
57
- <text xml:space="preserve" text-anchor="middle" x="672.38" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_&lt;name&gt;</text>
58
- <text xml:space="preserve" text-anchor="middle" x="672.38" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">OptionParser + PWN calls</text>
57
+ <text xml:space="preserve" text-anchor="middle" x="672.38" y="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_&lt;name&gt;</text>
58
+ <text xml:space="preserve" text-anchor="middle" x="672.38" y="-168.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">OptionParser + PWN calls</text>
59
59
  </g>
60
60
  <!-- Extract&#45;&gt;Driver -->
61
61
  <g id="edge3" class="edge">
@@ -67,8 +67,8 @@
67
67
  <g id="node5" class="node">
68
68
  <title>Skill</title>
69
69
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M723.88,-124C723.88,-124 620.88,-124 620.88,-124 614.88,-124 608.88,-118 608.88,-112 608.88,-112 608.88,-100 608.88,-100 608.88,-94 614.88,-88 620.88,-88 620.88,-88 723.88,-88 723.88,-88 729.88,-88 735.88,-94 735.88,-100 735.88,-100 735.88,-112 735.88,-112 735.88,-118 729.88,-124 723.88,-124"/>
70
- <text xml:space="preserve" text-anchor="middle" x="672.38" y="-108.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn/skills/&lt;name&gt;.md</text>
71
- <text xml:space="preserve" text-anchor="middle" x="672.38" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning_distill_skill</text>
70
+ <text xml:space="preserve" text-anchor="middle" x="672.38" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn/skills/&lt;name&gt;.md</text>
71
+ <text xml:space="preserve" text-anchor="middle" x="672.38" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_distill_skill</text>
72
72
  </g>
73
73
  <!-- Extract&#45;&gt;Skill -->
74
74
  <g id="edge4" class="edge">
@@ -80,8 +80,8 @@
80
80
  <g id="node6" class="node">
81
81
  <title>Cron</title>
82
82
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M699.88,-52C699.88,-52 644.88,-52 644.88,-52 638.88,-52 632.88,-46 632.88,-40 632.88,-40 632.88,-28 632.88,-28 632.88,-22 638.88,-16 644.88,-16 644.88,-16 699.88,-16 699.88,-16 705.88,-16 711.88,-22 711.88,-28 711.88,-28 711.88,-40 711.88,-40 711.88,-46 705.88,-52 699.88,-52"/>
83
- <text xml:space="preserve" text-anchor="middle" x="672.38" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">cron_create</text>
84
- <text xml:space="preserve" text-anchor="middle" x="672.38" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">prompt: | ruby:</text>
83
+ <text xml:space="preserve" text-anchor="middle" x="672.38" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">cron_create</text>
84
+ <text xml:space="preserve" text-anchor="middle" x="672.38" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">prompt: | ruby:</text>
85
85
  </g>
86
86
  <!-- Extract&#45;&gt;Cron -->
87
87
  <g id="edge5" class="edge">
@@ -93,8 +93,8 @@
93
93
  <g id="node7" class="node">
94
94
  <title>CI</title>
95
95
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M935,-124C935,-124 887.5,-124 887.5,-124 881.5,-124 875.5,-118 875.5,-112 875.5,-112 875.5,-100 875.5,-100 875.5,-94 881.5,-88 887.5,-88 887.5,-88 935,-88 935,-88 941,-88 947,-94 947,-100 947,-100 947,-112 947,-112 947,-118 941,-124 935,-124"/>
96
- <text xml:space="preserve" text-anchor="middle" x="911.25" y="-108.88" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">⚙️ &#160;CI / CD</text>
97
- <text xml:space="preserve" text-anchor="middle" x="911.25" y="-96.12" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">headless run</text>
96
+ <text xml:space="preserve" text-anchor="middle" x="911.25" y="-108.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">⚙️ &#160;CI / CD</text>
97
+ <text xml:space="preserve" text-anchor="middle" x="911.25" y="-96.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">headless run</text>
98
98
  </g>
99
99
  <!-- Driver&#45;&gt;CI -->
100
100
  <g id="edge6" class="edge">
@@ -107,7 +107,7 @@
107
107
  <title>Skill&#45;&gt;CI</title>
108
108
  <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M736.23,-106C776.82,-106 828.68,-106 865.19,-106"/>
109
109
  <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="865.09,-108.8 873.09,-106 865.09,-103.2 865.09,-108.8"/>
110
- <text xml:space="preserve" text-anchor="middle" x="816" y="-107.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#cbd5e1">pwn &#45;&#45;ai</text>
110
+ <text xml:space="preserve" text-anchor="middle" x="816" y="-107.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">pwn &#45;&#45;ai</text>
111
111
  </g>
112
112
  <!-- Cron&#45;&gt;CI -->
113
113
  <g id="edge8" class="edge">