pwn 0.5.620 → 0.5.621

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/documentation/Agent-Tool-Registry.md +2 -2
  4. data/documentation/Cron.md +13 -0
  5. data/documentation/Diagrams.md +1 -1
  6. data/documentation/Extrospection.md +71 -5
  7. data/documentation/Home.md +2 -2
  8. data/documentation/How-PWN-Works.md +1 -1
  9. data/documentation/Mistakes.md +2 -1
  10. data/documentation/Persistence.md +2 -1
  11. data/documentation/Skills-Memory-Learning.md +1 -0
  12. data/documentation/Transparent-Browser.md +18 -1
  13. data/documentation/diagrams/agent-tool-registry.svg +55 -54
  14. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  15. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  16. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  17. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  18. data/documentation/diagrams/cron-scheduling.svg +23 -23
  19. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  20. data/documentation/diagrams/dot/extrospection-world-awareness.dot +29 -8
  21. data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -0
  22. data/documentation/diagrams/dot/overall-pwn-architecture.dot +2 -2
  23. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -1
  24. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +10 -4
  25. data/documentation/diagrams/driver-framework.svg +13 -13
  26. data/documentation/diagrams/extrospection-world-awareness.svg +229 -99
  27. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  28. data/documentation/diagrams/hardware-hacking.svg +18 -18
  29. data/documentation/diagrams/history-to-drivers.svg +18 -18
  30. data/documentation/diagrams/memory-skills-detailed.svg +124 -101
  31. data/documentation/diagrams/mistakes-negative-feedback.svg +55 -55
  32. data/documentation/diagrams/network-infra-testing.svg +27 -27
  33. data/documentation/diagrams/overall-pwn-architecture.svg +85 -85
  34. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  35. data/documentation/diagrams/persistence-filesystem.svg +94 -85
  36. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  37. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +226 -180
  38. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  39. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  40. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  41. data/documentation/diagrams/sdr-radio-flow.svg +31 -31
  42. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  43. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  44. data/documentation/diagrams/web-application-testing.svg +26 -26
  45. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  46. data/documentation/pwn-ai-Agent.md +1 -1
  47. data/lib/pwn/ai/agent/extrospection.rb +433 -4
  48. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  49. data/lib/pwn/sdr/decoder/adsb.rb +14 -33
  50. data/lib/pwn/sdr/decoder/apt.rb +97 -36
  51. data/lib/pwn/sdr/decoder/base.rb +258 -171
  52. data/lib/pwn/sdr/decoder/bluetooth.rb +13 -20
  53. data/lib/pwn/sdr/decoder/dect.rb +13 -27
  54. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  55. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  56. data/lib/pwn/sdr/decoder/gps.rb +12 -21
  57. data/lib/pwn/sdr/decoder/gsm.rb +21 -73
  58. data/lib/pwn/sdr/decoder/iridium.rb +11 -26
  59. data/lib/pwn/sdr/decoder/lora.rb +16 -23
  60. data/lib/pwn/sdr/decoder/lte.rb +11 -32
  61. data/lib/pwn/sdr/decoder/morse.rb +95 -21
  62. data/lib/pwn/sdr/decoder/p25.rb +19 -16
  63. data/lib/pwn/sdr/decoder/pager.rb +22 -38
  64. data/lib/pwn/sdr/decoder/pocsag.rb +175 -68
  65. data/lib/pwn/sdr/decoder/rfid.rb +24 -33
  66. data/lib/pwn/sdr/decoder/rtl433.rb +21 -30
  67. data/lib/pwn/sdr/decoder/rtty.rb +100 -27
  68. data/lib/pwn/sdr/decoder/wifi.rb +21 -42
  69. data/lib/pwn/sdr/decoder/zigbee.rb +18 -40
  70. data/lib/pwn/sdr/decoder.rb +8 -0
  71. data/lib/pwn/version.rb +1 -1
  72. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  73. data/third_party/pwn_rdoc.jsonl +24 -3
  74. metadata +3 -1
@@ -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="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>
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>
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="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="Helvetica,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="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="Helvetica,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="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="Helvetica,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="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>
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>
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="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>
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>
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="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>
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>
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="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>
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>
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="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>
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>
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="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>
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>
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="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::PS</text>
106
- <text xml:space="preserve" text-anchor="middle" x="609.88" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">process health</text>
105
+ <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>
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="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>
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>
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="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>
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>
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="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="Helvetica,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">
@@ -9,35 +9,35 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 441.2)">
10
10
  <title>PWN_Hardware</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-441.2 658.7,-441.2 658.7,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="138.25" y="-376" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Hardware &amp; Physical&#45;Layer Hacking</text>
13
- <text xml:space="preserve" text-anchor="start" x="175.38" y="-364.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Serial · BusPirate · MSR206 · Android · BareSIP · SDR</text>
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>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_dev</title>
16
16
  <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M12,-8C12,-8 154,-8 154,-8 160,-8 166,-14 166,-20 166,-20 166,-339 166,-339 166,-345 160,-351 154,-351 154,-351 12,-351 12,-351 6,-351 0,-345 0,-339 0,-339 0,-20 0,-20 0,-14 6,-8 12,-8"/>
17
- <text xml:space="preserve" text-anchor="middle" x="83" y="-328" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Physical Devices</text>
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>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_pl</title>
21
21
  <path fill="#022c22" stroke="#047857" d="M248,-8C248,-8 420.75,-8 420.75,-8 426.75,-8 432.75,-14 432.75,-20 432.75,-20 432.75,-339 432.75,-339 432.75,-345 426.75,-351 420.75,-351 420.75,-351 248,-351 248,-351 242,-351 236,-345 236,-339 236,-339 236,-20 236,-20 236,-14 242,-8 248,-8"/>
22
- <text xml:space="preserve" text-anchor="middle" x="334.38" y="-328" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">PWN::Plugins / SDR</text>
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>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
25
  <title>cluster_out</title>
26
26
  <path fill="#2e1065" stroke="#6d28d9" d="M514.75,-73C514.75,-73 595.5,-73 595.5,-73 601.5,-73 607.5,-79 607.5,-85 607.5,-85 607.5,-209 607.5,-209 607.5,-215 601.5,-221 595.5,-221 595.5,-221 514.75,-221 514.75,-221 508.75,-221 502.75,-215 502.75,-209 502.75,-209 502.75,-85 502.75,-85 502.75,-79 508.75,-73 514.75,-73"/>
27
- <text xml:space="preserve" text-anchor="middle" x="555.12" y="-198" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Analysis</text>
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>
28
28
  </g>
29
29
  <!-- Uart -->
30
30
  <g id="node1" class="node">
31
31
  <title>Uart</title>
32
32
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M114.88,-52C114.88,-52 50.12,-52 50.12,-52 44.12,-52 38.12,-46 38.12,-40 38.12,-40 38.12,-28 38.12,-28 38.12,-22 44.12,-16 50.12,-16 50.12,-16 114.88,-16 114.88,-16 120.88,-16 126.88,-22 126.88,-28 126.88,-28 126.88,-40 126.88,-40 126.88,-46 120.88,-52 114.88,-52"/>
33
- <text xml:space="preserve" text-anchor="middle" x="82.5" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">UART / JTAG</text>
34
- <text xml:space="preserve" text-anchor="middle" x="82.5" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">embedded target</text>
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>
35
35
  </g>
36
36
  <!-- Serial -->
37
37
  <g id="node6" class="node">
38
38
  <title>Serial</title>
39
39
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M368.12,-52C368.12,-52 299.62,-52 299.62,-52 293.62,-52 287.62,-46 287.62,-40 287.62,-40 287.62,-28 287.62,-28 287.62,-22 293.62,-16 299.62,-16 299.62,-16 368.12,-16 368.12,-16 374.12,-16 380.12,-22 380.12,-28 380.12,-28 380.12,-40 380.12,-40 380.12,-46 374.12,-52 368.12,-52"/>
40
- <text xml:space="preserve" text-anchor="middle" x="333.88" y="-30.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Serial · BusPirate</text>
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>
41
41
  </g>
42
42
  <!-- Uart&#45;&gt;Serial -->
43
43
  <g id="edge1" class="edge">
@@ -49,13 +49,13 @@
49
49
  <g id="node2" class="node">
50
50
  <title>Mag</title>
51
51
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M110.75,-117C110.75,-117 54.25,-117 54.25,-117 48.25,-117 42.25,-111 42.25,-105 42.25,-105 42.25,-93 42.25,-93 42.25,-87 48.25,-81 54.25,-81 54.25,-81 110.75,-81 110.75,-81 116.75,-81 122.75,-87 122.75,-93 122.75,-93 122.75,-105 122.75,-105 122.75,-111 116.75,-117 110.75,-117"/>
52
- <text xml:space="preserve" text-anchor="middle" x="82.5" y="-95.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Magstripe card</text>
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>
53
53
  </g>
54
54
  <!-- MSR -->
55
55
  <g id="node7" class="node">
56
56
  <title>MSR</title>
57
57
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M349,-117C349,-117 318.75,-117 318.75,-117 312.75,-117 306.75,-111 306.75,-105 306.75,-105 306.75,-93 306.75,-93 306.75,-87 312.75,-81 318.75,-81 318.75,-81 349,-81 349,-81 355,-81 361,-87 361,-93 361,-93 361,-105 361,-105 361,-111 355,-117 349,-117"/>
58
- <text xml:space="preserve" text-anchor="middle" x="333.88" y="-95.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">MSR206</text>
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>
59
59
  </g>
60
60
  <!-- Mag&#45;&gt;MSR -->
61
61
  <g id="edge2" class="edge">
@@ -67,13 +67,13 @@
67
67
  <g id="node3" class="node">
68
68
  <title>Phone</title>
69
69
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M110.75,-182C110.75,-182 54.25,-182 54.25,-182 48.25,-182 42.25,-176 42.25,-170 42.25,-170 42.25,-158 42.25,-158 42.25,-152 48.25,-146 54.25,-146 54.25,-146 110.75,-146 110.75,-146 116.75,-146 122.75,-152 122.75,-158 122.75,-158 122.75,-170 122.75,-170 122.75,-176 116.75,-182 110.75,-182"/>
70
- <text xml:space="preserve" text-anchor="middle" x="82.5" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Android device</text>
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>
71
71
  </g>
72
72
  <!-- Adb -->
73
73
  <g id="node8" class="node">
74
74
  <title>Adb</title>
75
75
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M358.75,-182C358.75,-182 309,-182 309,-182 303,-182 297,-176 297,-170 297,-170 297,-158 297,-158 297,-152 303,-146 309,-146 309,-146 358.75,-146 358.75,-146 364.75,-146 370.75,-152 370.75,-158 370.75,-158 370.75,-170 370.75,-170 370.75,-176 364.75,-182 358.75,-182"/>
76
- <text xml:space="preserve" text-anchor="middle" x="333.88" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Android (adb)</text>
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>
77
77
  </g>
78
78
  <!-- Phone&#45;&gt;Adb -->
79
79
  <g id="edge3" class="edge">
@@ -85,13 +85,13 @@
85
85
  <g id="node4" class="node">
86
86
  <title>VoIP</title>
87
87
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M104.75,-247C104.75,-247 60.25,-247 60.25,-247 54.25,-247 48.25,-241 48.25,-235 48.25,-235 48.25,-223 48.25,-223 48.25,-217 54.25,-211 60.25,-211 60.25,-211 104.75,-211 104.75,-211 110.75,-211 116.75,-217 116.75,-223 116.75,-223 116.75,-235 116.75,-235 116.75,-241 110.75,-247 104.75,-247"/>
88
- <text xml:space="preserve" text-anchor="middle" x="82.5" y="-225.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SIP / PSTN</text>
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>
89
89
  </g>
90
90
  <!-- Sip -->
91
91
  <g id="node9" class="node">
92
92
  <title>Sip</title>
93
93
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M365.12,-247C365.12,-247 302.62,-247 302.62,-247 296.62,-247 290.62,-241 290.62,-235 290.62,-235 290.62,-223 290.62,-223 290.62,-217 296.62,-211 302.62,-211 302.62,-211 365.12,-211 365.12,-211 371.12,-211 377.12,-217 377.12,-223 377.12,-223 377.12,-235 377.12,-235 377.12,-241 371.12,-247 365.12,-247"/>
94
- <text xml:space="preserve" text-anchor="middle" x="333.88" y="-225.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BareSIP · Voice</text>
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>
95
95
  </g>
96
96
  <!-- VoIP&#45;&gt;Sip -->
97
97
  <g id="edge4" class="edge">
@@ -103,13 +103,13 @@
103
103
  <g id="node5" class="node">
104
104
  <title>RF</title>
105
105
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M107,-312C107,-312 58,-312 58,-312 52,-312 46,-306 46,-300 46,-300 46,-288 46,-288 46,-282 52,-276 58,-276 58,-276 107,-276 107,-276 113,-276 119,-282 119,-288 119,-288 119,-300 119,-300 119,-306 113,-312 107,-312"/>
106
- <text xml:space="preserve" text-anchor="middle" x="82.5" y="-290.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RF spectrum</text>
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>
107
107
  </g>
108
108
  <!-- Sdr -->
109
109
  <g id="node10" class="node">
110
110
  <title>Sdr</title>
111
111
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M377.5,-312C377.5,-312 290.25,-312 290.25,-312 284.25,-312 278.25,-306 278.25,-300 278.25,-300 278.25,-288 278.25,-288 278.25,-282 284.25,-276 290.25,-276 290.25,-276 377.5,-276 377.5,-276 383.5,-276 389.5,-282 389.5,-288 389.5,-288 389.5,-300 389.5,-300 389.5,-306 383.5,-312 377.5,-312"/>
112
- <text xml:space="preserve" text-anchor="middle" x="333.88" y="-290.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::GQRX · Flipper</text>
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>
113
113
  </g>
114
114
  <!-- RF&#45;&gt;Sdr -->
115
115
  <g id="edge5" class="edge">
@@ -121,7 +121,7 @@
121
121
  <g id="node11" class="node">
122
122
  <title>XXD</title>
123
123
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M587.5,-117C587.5,-117 522.75,-117 522.75,-117 516.75,-117 510.75,-111 510.75,-105 510.75,-105 510.75,-93 510.75,-93 510.75,-87 516.75,-81 522.75,-81 522.75,-81 587.5,-81 587.5,-81 593.5,-81 599.5,-87 599.5,-93 599.5,-93 599.5,-105 599.5,-105 599.5,-111 593.5,-117 587.5,-117"/>
124
- <text xml:space="preserve" text-anchor="middle" x="555.12" y="-95.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">XXD · Assembly</text>
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>
125
125
  </g>
126
126
  <!-- Serial&#45;&gt;XXD -->
127
127
  <g id="edge6" class="edge">
@@ -139,7 +139,7 @@
139
139
  <g id="node12" class="node">
140
140
  <title>Rep</title>
141
141
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M584.88,-182C584.88,-182 525.38,-182 525.38,-182 519.38,-182 513.38,-176 513.38,-170 513.38,-170 513.38,-158 513.38,-158 513.38,-152 519.38,-146 525.38,-146 525.38,-146 584.88,-146 584.88,-146 590.88,-146 596.88,-152 596.88,-158 596.88,-158 596.88,-170 596.88,-170 596.88,-176 590.88,-182 584.88,-182"/>
142
- <text xml:space="preserve" text-anchor="middle" x="555.12" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports · Skills</text>
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>
143
143
  </g>
144
144
  <!-- Adb&#45;&gt;Rep -->
145
145
  <g id="edge8" class="edge">
@@ -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="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>
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>
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="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="Helvetica,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="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>
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>
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="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>
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>
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="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="Helvetica,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="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="Helvetica,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="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>
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>
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="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>
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>
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="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>
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>
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="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>
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>
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="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="Helvetica,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">