pwn 0.5.617 → 0.5.618

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +95 -85
  3. data/README.md.bak +200 -0
  4. data/documentation/AI-Integration.md +42 -26
  5. data/documentation/AWS.md +57 -0
  6. data/documentation/Agent-Tool-Registry.md +56 -0
  7. data/documentation/Banner.md +17 -0
  8. data/documentation/Blockchain.md +18 -0
  9. data/documentation/Bounty.md +21 -0
  10. data/documentation/BurpSuite.md +41 -16
  11. data/documentation/CLI-Drivers.md +58 -0
  12. data/documentation/Configuration.md +66 -0
  13. data/documentation/Contributing.md +33 -19
  14. data/documentation/Cron.md +47 -0
  15. data/documentation/Drivers.md +43 -16
  16. data/documentation/Extrospection.md +54 -0
  17. data/documentation/FFI.md +14 -0
  18. data/documentation/Fuzzing.md +36 -0
  19. data/documentation/Hardware.md +40 -0
  20. data/documentation/Metasploit.md +34 -0
  21. data/documentation/NmapIt.md +18 -12
  22. data/documentation/PWN.png +0 -0
  23. data/documentation/PWN_Contributors_and_Users.png +0 -0
  24. data/documentation/Persistence.md +38 -0
  25. data/documentation/Plugins.md +97 -47
  26. data/documentation/Reporting.md +25 -18
  27. data/documentation/SAST.md +39 -22
  28. data/documentation/SDR.md +40 -0
  29. data/documentation/Sessions.md +39 -0
  30. data/documentation/Skills-Memory-Learning.md +49 -29
  31. data/documentation/Swarm.md +71 -0
  32. data/documentation/Transparent-Browser.md +26 -22
  33. data/documentation/Troubleshooting.md +44 -25
  34. data/documentation/WWW.md +32 -0
  35. data/documentation/diagrams/agent-tool-registry.svg +284 -0
  36. data/documentation/diagrams/aws-cloud-security.svg +166 -0
  37. data/documentation/diagrams/cron-scheduling.svg +148 -0
  38. data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
  39. data/documentation/diagrams/dot/persistence-filesystem.dot +29 -0
  40. data/documentation/diagrams/extrospection-world-awareness.svg +185 -0
  41. data/documentation/diagrams/hardware-hacking.svg +163 -0
  42. data/documentation/diagrams/persistence-filesystem.svg +174 -0
  43. data/documentation/diagrams/sdr-radio-flow.svg +146 -0
  44. data/documentation/diagrams/swarm-multi-agent.svg +225 -0
  45. data/documentation/fax-spectrogram.png +0 -0
  46. data/documentation/fax-waveform.png +0 -0
  47. data/documentation/pwn-REPL.md +40 -24
  48. data/documentation/pwn-ai-Agent.md +59 -30
  49. data/documentation/pwn_android_war_dialer_session.png +0 -0
  50. data/documentation/pwn_install.png +0 -0
  51. data/documentation/pwn_wallpaper.jpg +0 -0
  52. data/documentation/ringing-spectrogram.png +0 -0
  53. data/documentation/ringing-waveform.png +0 -0
  54. data/lib/pwn/version.rb +1 -1
  55. data/third_party/pwn_rdoc.jsonl +22 -5
  56. metadata +39 -1
@@ -0,0 +1,166 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN_AWS Pages: 1 -->
7
+ <svg width="1064pt" height="354pt"
8
+ viewBox="0.00 0.00 1064.00 354.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 311.2)">
10
+ <title>PWN_AWS</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-311.2 1021.2,-311.2 1021.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="246.38" y="-246" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AWS — Cloud Security (90 service wrappers)</text>
13
+ <text xml:space="preserve" text-anchor="start" x="379.12" y="-234.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">enumerate → misconfig → escalate → persist</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_enum</title>
16
+ <path fill="#022c22" stroke="#047857" d="M185.5,-8C185.5,-8 309,-8 309,-8 315,-8 321,-14 321,-20 321,-20 321,-209 321,-209 321,-215 315,-221 309,-221 309,-221 185.5,-221 185.5,-221 179.5,-221 173.5,-215 173.5,-209 173.5,-209 173.5,-20 173.5,-20 173.5,-14 179.5,-8 185.5,-8"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="247.25" y="-198" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Enumerate</text>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_mis</title>
21
+ <path fill="#422006" stroke="#a16207" d="M403,-8C403,-8 501.75,-8 501.75,-8 507.75,-8 513.75,-14 513.75,-20 513.75,-20 513.75,-209 513.75,-209 513.75,-215 507.75,-221 501.75,-221 501.75,-221 403,-221 403,-221 397,-221 391,-215 391,-209 391,-209 391,-20 391,-20 391,-14 397,-8 403,-8"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="452.38" y="-198" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Misconfig</text>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_esc</title>
26
+ <path fill="#450a0a" stroke="#b91c1c" d="M595.75,-73C595.75,-73 740.75,-73 740.75,-73 746.75,-73 752.75,-79 752.75,-85 752.75,-85 752.75,-209 752.75,-209 752.75,-215 746.75,-221 740.75,-221 740.75,-221 595.75,-221 595.75,-221 589.75,-221 583.75,-215 583.75,-209 583.75,-209 583.75,-85 583.75,-85 583.75,-79 589.75,-73 595.75,-73"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="668.25" y="-198" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Escalate / Persist</text>
28
+ </g>
29
+ <!-- Creds -->
30
+ <g id="node1" class="node">
31
+ <title>Creds</title>
32
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M83.5,-117C83.5,-117 12,-117 12,-117 6,-117 0,-111 0,-105 0,-105 0,-93 0,-93 0,-87 6,-81 12,-81 12,-81 83.5,-81 83.5,-81 89.5,-81 95.5,-87 95.5,-93 95.5,-93 95.5,-105 95.5,-105 95.5,-111 89.5,-117 83.5,-117"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="47.75" y="-101.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">🔑 &#160;AWS Creds</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="47.75" y="-89.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">STS · env · profile</text>
35
+ </g>
36
+ <!-- IAM -->
37
+ <g id="node2" class="node">
38
+ <title>IAM</title>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M273.25,-52C273.25,-52 221.25,-52 221.25,-52 215.25,-52 209.25,-46 209.25,-40 209.25,-40 209.25,-28 209.25,-28 209.25,-22 215.25,-16 221.25,-16 221.25,-16 273.25,-16 273.25,-16 279.25,-16 285.25,-22 285.25,-28 285.25,-28 285.25,-40 285.25,-40 285.25,-46 279.25,-52 273.25,-52"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="247.25" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">IAM · STS</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="247.25" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Organizations</text>
42
+ </g>
43
+ <!-- Creds&#45;&gt;IAM -->
44
+ <g id="edge1" class="edge">
45
+ <title>Creds&#45;&gt;IAM</title>
46
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M96.06,-83.43C127.39,-73.12 168.32,-59.65 199.53,-49.38"/>
47
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="200.29,-52.07 207.02,-46.91 198.54,-46.75 200.29,-52.07"/>
48
+ </g>
49
+ <!-- EC2 -->
50
+ <g id="node3" class="node">
51
+ <title>EC2</title>
52
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M283.38,-117C283.38,-117 211.12,-117 211.12,-117 205.12,-117 199.12,-111 199.12,-105 199.12,-105 199.12,-93 199.12,-93 199.12,-87 205.12,-81 211.12,-81 211.12,-81 283.38,-81 283.38,-81 289.38,-81 295.38,-87 295.38,-93 295.38,-93 295.38,-105 295.38,-105 295.38,-111 289.38,-117 283.38,-117"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="247.25" y="-101.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">EC2 · ECS · ECR</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="247.25" y="-89.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Lambda · Lightsail</text>
55
+ </g>
56
+ <!-- Creds&#45;&gt;EC2 -->
57
+ <g id="edge2" class="edge">
58
+ <title>Creds&#45;&gt;EC2</title>
59
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M96.06,-99C123.94,-99 159.43,-99 188.9,-99"/>
60
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="188.68,-101.8 196.68,-99 188.68,-96.2 188.68,-101.8"/>
61
+ </g>
62
+ <!-- Net -->
63
+ <g id="node4" class="node">
64
+ <title>Net</title>
65
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M301,-182C301,-182 193.5,-182 193.5,-182 187.5,-182 181.5,-176 181.5,-170 181.5,-170 181.5,-158 181.5,-158 181.5,-152 187.5,-146 193.5,-146 193.5,-146 301,-146 301,-146 307,-146 313,-152 313,-158 313,-158 313,-170 313,-170 313,-176 307,-182 301,-182"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="247.25" y="-166.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Route53 · ELB</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="247.25" y="-154.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">API Gateway · CloudFront</text>
68
+ </g>
69
+ <!-- Creds&#45;&gt;Net -->
70
+ <g id="edge3" class="edge">
71
+ <title>Creds&#45;&gt;Net</title>
72
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M96.06,-114.57C121.38,-122.9 152.97,-133.3 180.63,-142.4"/>
73
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="179.5,-144.98 187.98,-144.82 181.25,-139.66 179.5,-144.98"/>
74
+ </g>
75
+ <!-- S3 -->
76
+ <g id="node5" class="node">
77
+ <title>S3</title>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M479.88,-52C479.88,-52 424.88,-52 424.88,-52 418.88,-52 412.88,-46 412.88,-40 412.88,-40 412.88,-28 412.88,-28 412.88,-22 418.88,-16 424.88,-16 424.88,-16 479.88,-16 479.88,-16 485.88,-16 491.88,-22 491.88,-28 491.88,-28 491.88,-40 491.88,-40 491.88,-46 485.88,-52 479.88,-52"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="452.38" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">S3 · Glacier</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="452.38" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">public buckets</text>
81
+ </g>
82
+ <!-- IAM&#45;&gt;S3 -->
83
+ <g id="edge4" class="edge">
84
+ <title>IAM&#45;&gt;S3</title>
85
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M285.51,-34C318.38,-34 366.52,-34 402.48,-34"/>
86
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="402.31,-36.8 410.31,-34 402.31,-31.2 402.31,-36.8"/>
87
+ </g>
88
+ <!-- KMS -->
89
+ <g id="node6" class="node">
90
+ <title>KMS</title>
91
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M487.75,-117C487.75,-117 417,-117 417,-117 411,-117 405,-111 405,-105 405,-105 405,-93 405,-93 405,-87 411,-81 417,-81 417,-81 487.75,-81 487.75,-81 493.75,-81 499.75,-87 499.75,-93 499.75,-93 499.75,-105 499.75,-105 499.75,-111 493.75,-117 487.75,-117"/>
92
+ <text xml:space="preserve" text-anchor="middle" x="452.38" y="-101.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">KMS · CloudHSM</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="452.38" y="-89.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Secrets · SSM</text>
94
+ </g>
95
+ <!-- EC2&#45;&gt;KMS -->
96
+ <g id="edge5" class="edge">
97
+ <title>EC2&#45;&gt;KMS</title>
98
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M295.87,-99C325.39,-99 363.48,-99 394.57,-99"/>
99
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="394.43,-101.8 402.43,-99 394.43,-96.2 394.43,-101.8"/>
100
+ </g>
101
+ <!-- Log -->
102
+ <g id="node7" class="node">
103
+ <title>Log</title>
104
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M493.75,-182C493.75,-182 411,-182 411,-182 405,-182 399,-176 399,-170 399,-170 399,-158 399,-158 399,-152 405,-146 411,-146 411,-146 493.75,-146 493.75,-146 499.75,-146 505.75,-152 505.75,-158 505.75,-158 505.75,-170 505.75,-170 505.75,-176 499.75,-182 493.75,-182"/>
105
+ <text xml:space="preserve" text-anchor="middle" x="452.38" y="-166.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CloudTrail</text>
106
+ <text xml:space="preserve" text-anchor="middle" x="452.38" y="-154.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CloudWatch · Config</text>
107
+ </g>
108
+ <!-- Net&#45;&gt;Log -->
109
+ <g id="edge6" class="edge">
110
+ <title>Net&#45;&gt;Log</title>
111
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M313.64,-164C337.8,-164 365.1,-164 388.98,-164"/>
112
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="388.67,-166.8 396.67,-164 388.67,-161.2 388.67,-166.8"/>
113
+ </g>
114
+ <!-- Priv -->
115
+ <g id="node8" class="node">
116
+ <title>Priv</title>
117
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M695.25,-117C695.25,-117 640.25,-117 640.25,-117 634.25,-117 628.25,-111 628.25,-105 628.25,-105 628.25,-93 628.25,-93 628.25,-87 634.25,-81 640.25,-81 640.25,-81 695.25,-81 695.25,-81 701.25,-81 707.25,-87 707.25,-93 707.25,-93 707.25,-105 707.25,-105 707.25,-111 701.25,-117 695.25,-117"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="667.75" y="-101.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">iam:PassRole</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="667.75" y="-89.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">lambda invoke</text>
120
+ </g>
121
+ <!-- S3&#45;&gt;Priv -->
122
+ <g id="edge7" class="edge">
123
+ <title>S3&#45;&gt;Priv</title>
124
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M492.51,-45.92C528,-56.73 580.44,-72.71 618.51,-84.31"/>
125
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="617.51,-86.93 625.98,-86.58 619.14,-81.57 617.51,-86.93"/>
126
+ </g>
127
+ <!-- KMS&#45;&gt;Priv -->
128
+ <g id="edge8" class="edge">
129
+ <title>KMS&#45;&gt;Priv</title>
130
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M500.2,-99C535.19,-99 582.87,-99 618.25,-99"/>
131
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="617.92,-101.8 625.92,-99 617.92,-96.2 617.92,-101.8"/>
132
+ </g>
133
+ <!-- Back -->
134
+ <g id="node9" class="node">
135
+ <title>Back</title>
136
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M699.38,-182C699.38,-182 636.12,-182 636.12,-182 630.12,-182 624.12,-176 624.12,-170 624.12,-170 624.12,-158 624.12,-158 624.12,-152 630.12,-146 636.12,-146 636.12,-146 699.38,-146 699.38,-146 705.38,-146 711.38,-152 711.38,-158 711.38,-158 711.38,-170 711.38,-170 711.38,-176 705.38,-182 699.38,-182"/>
137
+ <text xml:space="preserve" text-anchor="middle" x="667.75" y="-166.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">new access key</text>
138
+ <text xml:space="preserve" text-anchor="middle" x="667.75" y="-154.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">EC2 userdata</text>
139
+ </g>
140
+ <!-- Log&#45;&gt;Back -->
141
+ <g id="edge9" class="edge">
142
+ <title>Log&#45;&gt;Back</title>
143
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M506.39,-164C539.17,-164 581.08,-164 613.83,-164"/>
144
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="613.71,-166.8 621.71,-164 613.71,-161.2 613.71,-166.8"/>
145
+ </g>
146
+ <!-- Rep -->
147
+ <g id="node10" class="node">
148
+ <title>Rep</title>
149
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M966,-149C966,-149 842.75,-149 842.75,-149 836.75,-149 830.75,-143 830.75,-137 830.75,-137 830.75,-125 830.75,-125 830.75,-119 836.75,-113 842.75,-113 842.75,-113 966,-113 966,-113 972,-113 978,-119 978,-125 978,-125 978,-137 978,-137 978,-143 972,-149 966,-149"/>
150
+ <text xml:space="preserve" text-anchor="middle" x="904.38" y="-133.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_aws_describe_resources</text>
151
+ <text xml:space="preserve" text-anchor="middle" x="904.38" y="-121.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports</text>
152
+ </g>
153
+ <!-- Priv&#45;&gt;Rep -->
154
+ <g id="edge10" class="edge">
155
+ <title>Priv&#45;&gt;Rep</title>
156
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M707.76,-104.32C738.39,-108.5 782.13,-114.46 820.48,-119.69"/>
157
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="819.85,-122.43 828.16,-120.74 820.61,-116.89 819.85,-122.43"/>
158
+ </g>
159
+ <!-- Back&#45;&gt;Rep -->
160
+ <g id="edge11" class="edge">
161
+ <title>Back&#45;&gt;Rep</title>
162
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M711.78,-157.95C742.14,-153.68 783.78,-147.82 820.48,-142.66"/>
163
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="820.71,-145.45 828.25,-141.57 819.93,-139.91 820.71,-145.45"/>
164
+ </g>
165
+ </g>
166
+ </svg>
@@ -0,0 +1,148 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN_Cron Pages: 1 -->
7
+ <svg width="1248pt" height="391pt"
8
+ viewBox="0.00 0.00 1248.00 391.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 348.08)">
10
+ <title>PWN_Cron</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-348.08 1204.45,-348.08 1204.45,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="372.5" y="-282.88" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::Cron — Scheduled Autonomous Jobs</text>
13
+ <text xml:space="preserve" text-anchor="start" x="452" y="-271.43" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">prompt · ruby · script → jobs.yml → crontab → pwn&#45;ai</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_kinds</title>
16
+ <path fill="#022c22" stroke="#047857" stroke-width="2" d="M775.75,-30.88C775.75,-30.88 930,-30.88 930,-30.88 936,-30.88 942,-36.88 942,-42.88 942,-42.88 942,-245.88 942,-245.88 942,-251.88 936,-257.88 930,-257.88 930,-257.88 775.75,-257.88 775.75,-257.88 769.75,-257.88 763.75,-251.88 763.75,-245.88 763.75,-245.88 763.75,-42.88 763.75,-42.88 763.75,-36.88 769.75,-30.88 775.75,-30.88"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="852.88" y="-234.88" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Job Kinds</text>
18
+ </g>
19
+ <!-- Create -->
20
+ <g id="node1" class="node">
21
+ <title>Create</title>
22
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.4" d="M102.25,-152.13C102.25,-152.13 12,-152.13 12,-152.13 6,-152.13 0,-146.13 0,-140.13 0,-140.13 0,-115.63 0,-115.63 0,-109.63 6,-103.63 12,-103.63 12,-103.63 102.25,-103.63 102.25,-103.63 108.25,-103.63 114.25,-109.63 114.25,-115.63 114.25,-115.63 114.25,-140.13 114.25,-140.13 114.25,-146.13 108.25,-152.13 102.25,-152.13"/>
23
+ <text xml:space="preserve" text-anchor="middle" x="57.12" y="-137.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">cron_create</text>
24
+ <text xml:space="preserve" text-anchor="middle" x="57.12" y="-124.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">name · schedule</text>
25
+ <text xml:space="preserve" text-anchor="middle" x="57.12" y="-110.68" font-family="sans-Serif" font-size="11.00" fill="#0f172a">prompt | ruby | script</text>
26
+ </g>
27
+ <!-- Jobs -->
28
+ <g id="node2" class="node">
29
+ <title>Jobs</title>
30
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M355.88,-184.6C355.88,-186.41 330.1,-187.88 298.38,-187.88 266.65,-187.88 240.88,-186.41 240.88,-184.6 240.88,-184.6 240.88,-155.15 240.88,-155.15 240.88,-153.34 266.65,-151.88 298.38,-151.88 330.1,-151.88 355.88,-153.34 355.88,-155.15 355.88,-155.15 355.88,-184.6 355.88,-184.6"/>
31
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M355.88,-184.6C355.88,-182.8 330.1,-181.33 298.38,-181.33 266.65,-181.33 240.88,-182.8 240.88,-184.6"/>
32
+ <text xml:space="preserve" text-anchor="middle" x="298.38" y="-166.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/cron/jobs.yml</text>
33
+ </g>
34
+ <!-- Create&#45;&gt;Jobs -->
35
+ <g id="edge1" class="edge">
36
+ <title>Create&#45;&gt;Jobs</title>
37
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M114.82,-137.83C149.58,-143.93 194.24,-151.77 230.69,-158.17"/>
38
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="229.95,-160.88 238.32,-159.51 230.92,-155.37 229.95,-160.88"/>
39
+ <text xml:space="preserve" text-anchor="middle" x="177" y="-153.34" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">write</text>
40
+ </g>
41
+ <!-- Crontab -->
42
+ <g id="node3" class="node">
43
+ <title>Crontab</title>
44
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M345,-109.88C345,-109.88 251.75,-109.88 251.75,-109.88 245.75,-109.88 239.75,-103.88 239.75,-97.88 239.75,-97.88 239.75,-85.88 239.75,-85.88 239.75,-79.88 245.75,-73.88 251.75,-73.88 251.75,-73.88 345,-73.88 345,-73.88 351,-73.88 357,-79.88 357,-85.88 357,-85.88 357,-97.88 357,-97.88 357,-103.88 351,-109.88 345,-109.88"/>
45
+ <text xml:space="preserve" text-anchor="middle" x="298.38" y="-94.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">system crontab</text>
46
+ <text xml:space="preserve" text-anchor="middle" x="298.38" y="-81.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">(install_crontab: true)</text>
47
+ </g>
48
+ <!-- Create&#45;&gt;Crontab -->
49
+ <g id="edge2" class="edge">
50
+ <title>Create&#45;&gt;Crontab</title>
51
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M114.83,-112.81C129.83,-109.26 146.08,-105.81 161.25,-103.38 183.28,-99.85 207.51,-97.36 229.34,-95.62"/>
52
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="229.46,-98.42 237.22,-95.03 229.03,-92.84 229.46,-98.42"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="177" y="-105.33" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">append</text>
54
+ </g>
55
+ <!-- Runner -->
56
+ <g id="node4" class="node">
57
+ <title>Runner</title>
58
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M611,-146.88C611,-146.88 528.25,-146.88 528.25,-146.88 522.25,-146.88 516.25,-140.88 516.25,-134.88 516.25,-134.88 516.25,-122.88 516.25,-122.88 516.25,-116.88 522.25,-110.88 528.25,-110.88 528.25,-110.88 611,-110.88 611,-110.88 617,-110.88 623,-116.88 623,-122.88 623,-122.88 623,-134.88 623,-134.88 623,-140.88 617,-146.88 611,-146.88"/>
59
+ <text xml:space="preserve" text-anchor="middle" x="569.62" y="-125.18" font-family="sans-Serif" font-size="11.00" fill="#0f172a">PWN::Cron.run(id)</text>
60
+ </g>
61
+ <!-- Jobs&#45;&gt;Runner -->
62
+ <g id="edge4" class="edge">
63
+ <title>Jobs&#45;&gt;Runner</title>
64
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M356.48,-161.18C400.34,-154.5 460.86,-145.29 506.04,-138.41"/>
65
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="506.29,-141.2 513.78,-137.23 505.45,-135.67 506.29,-141.2"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="436.62" y="-155" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">load job</text>
67
+ </g>
68
+ <!-- Crontab&#45;&gt;Runner -->
69
+ <g id="edge3" class="edge">
70
+ <title>Crontab&#45;&gt;Runner</title>
71
+ <path fill="none" stroke="#fb7185" stroke-width="2" d="M357.47,-99.86C400.88,-105.83 460.2,-113.98 504.92,-120.12"/>
72
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="2" points="504.36,-122.87 512.66,-121.19 505.12,-117.32 504.36,-122.87"/>
73
+ <text xml:space="preserve" text-anchor="middle" x="436.62" y="-116.73" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">fire on schedule</text>
74
+ </g>
75
+ <!-- Prompt -->
76
+ <g id="node5" class="node">
77
+ <title>Prompt</title>
78
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M894.62,-218.88C894.62,-218.88 811.12,-218.88 811.12,-218.88 805.12,-218.88 799.12,-212.88 799.12,-206.88 799.12,-206.88 799.12,-194.88 799.12,-194.88 799.12,-188.88 805.12,-182.88 811.12,-182.88 811.12,-182.88 894.62,-182.88 894.62,-182.88 900.62,-182.88 906.62,-188.88 906.62,-194.88 906.62,-194.88 906.62,-206.88 906.62,-206.88 906.62,-212.88 900.62,-218.88 894.62,-218.88"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="852.88" y="-203.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:prompt</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="852.88" y="-190.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ pwn&#45;ai one&#45;shot</text>
81
+ </g>
82
+ <!-- Runner&#45;&gt;Prompt -->
83
+ <g id="edge5" class="edge">
84
+ <title>Runner&#45;&gt;Prompt</title>
85
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M623.65,-144.21C638.6,-148.43 654.91,-152.93 670,-156.88 709.5,-167.22 754.05,-178.01 789.18,-186.32"/>
86
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="788.48,-189.03 796.91,-188.14 789.76,-183.58 788.48,-189.03"/>
87
+ </g>
88
+ <!-- Ruby -->
89
+ <g id="node6" class="node">
90
+ <title>Ruby</title>
91
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M922,-146.88C922,-146.88 783.75,-146.88 783.75,-146.88 777.75,-146.88 771.75,-140.88 771.75,-134.88 771.75,-134.88 771.75,-122.88 771.75,-122.88 771.75,-116.88 777.75,-110.88 783.75,-110.88 783.75,-110.88 922,-110.88 922,-110.88 928,-110.88 934,-116.88 934,-122.88 934,-122.88 934,-134.88 934,-134.88 934,-140.88 928,-146.88 922,-146.88"/>
92
+ <text xml:space="preserve" text-anchor="middle" x="852.88" y="-131.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:ruby</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="852.88" y="-118.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ TOPLEVEL_BINDING.eval</text>
94
+ </g>
95
+ <!-- Runner&#45;&gt;Ruby -->
96
+ <g id="edge6" class="edge">
97
+ <title>Runner&#45;&gt;Ruby</title>
98
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M623.53,-128.88C662.29,-128.88 715.87,-128.88 761.38,-128.88"/>
99
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="761.29,-131.68 769.29,-128.88 761.29,-126.08 761.29,-131.68"/>
100
+ </g>
101
+ <!-- Script -->
102
+ <g id="node7" class="node">
103
+ <title>Script</title>
104
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.4" d="M896.12,-74.88C896.12,-74.88 809.62,-74.88 809.62,-74.88 803.62,-74.88 797.62,-68.88 797.62,-62.88 797.62,-62.88 797.62,-50.88 797.62,-50.88 797.62,-44.88 803.62,-38.88 809.62,-38.88 809.62,-38.88 896.12,-38.88 896.12,-38.88 902.12,-38.88 908.12,-44.88 908.12,-50.88 908.12,-50.88 908.12,-62.88 908.12,-62.88 908.12,-68.88 902.12,-74.88 896.12,-74.88"/>
105
+ <text xml:space="preserve" text-anchor="middle" x="852.88" y="-59.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">:script</text>
106
+ <text xml:space="preserve" text-anchor="middle" x="852.88" y="-46.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">→ exec external file</text>
107
+ </g>
108
+ <!-- Runner&#45;&gt;Script -->
109
+ <g id="edge7" class="edge">
110
+ <title>Runner&#45;&gt;Script</title>
111
+ <path fill="none" stroke="#34d399" stroke-width="1.3" d="M623.53,-115.33C670.17,-103.39 738.24,-85.97 787.93,-73.25"/>
112
+ <polygon fill="#34d399" stroke="#34d399" stroke-width="1.3" points="788.33,-76.03 795.39,-71.34 786.94,-70.61 788.33,-76.03"/>
113
+ </g>
114
+ <!-- Log -->
115
+ <g id="node8" class="node">
116
+ <title>Log</title>
117
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M1161.25,-148.56C1161.25,-150.98 1131.61,-152.94 1095.12,-152.94 1058.64,-152.94 1029,-150.98 1029,-148.56 1029,-148.56 1029,-109.19 1029,-109.19 1029,-106.78 1058.64,-104.81 1095.12,-104.81 1131.61,-104.81 1161.25,-106.78 1161.25,-109.19 1161.25,-109.19 1161.25,-148.56 1161.25,-148.56"/>
118
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M1161.25,-148.56C1161.25,-146.15 1131.61,-144.19 1095.12,-144.19 1058.64,-144.19 1029,-146.15 1029,-148.56"/>
119
+ <text xml:space="preserve" text-anchor="middle" x="1095.12" y="-131.93" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/cron/log/&lt;id&gt;.log</text>
120
+ <text xml:space="preserve" text-anchor="middle" x="1095.12" y="-118.43" font-family="sans-Serif" font-size="11.00" fill="#0f172a">last_run · last_status</text>
121
+ </g>
122
+ <!-- Prompt&#45;&gt;Log -->
123
+ <g id="edge8" class="edge">
124
+ <title>Prompt&#45;&gt;Log</title>
125
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M907.19,-184.9C940.2,-175.01 983.08,-162.16 1019.44,-151.26"/>
126
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1019.79,-154.08 1026.65,-149.1 1018.18,-148.71 1019.79,-154.08"/>
127
+ </g>
128
+ <!-- Ruby&#45;&gt;Log -->
129
+ <g id="edge9" class="edge">
130
+ <title>Ruby&#45;&gt;Log</title>
131
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M934.54,-128.88C961.74,-128.88 991.97,-128.88 1018.74,-128.88"/>
132
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1018.47,-131.68 1026.47,-128.88 1018.47,-126.08 1018.47,-131.68"/>
133
+ </g>
134
+ <!-- Script&#45;&gt;Log -->
135
+ <g id="edge10" class="edge">
136
+ <title>Script&#45;&gt;Log</title>
137
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M908.69,-73.3C941.36,-83.1 983.3,-95.66 1019.02,-106.37"/>
138
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="1018.09,-109.01 1026.55,-108.63 1019.69,-103.65 1018.09,-109.01"/>
139
+ </g>
140
+ <!-- Log&#45;&gt;Jobs -->
141
+ <g id="edge11" class="edge">
142
+ <title>Log&#45;&gt;Jobs</title>
143
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M1069.63,-104.26C1041.6,-78 992.95,-38 942,-21.88 759.1,36 698.93,-34.31 516.25,-92.88 461.31,-110.49 399.34,-132.73 355.76,-148.78"/>
144
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="354.85,-146.13 348.32,-151.53 356.79,-151.38 354.85,-146.13"/>
145
+ <text xml:space="preserve" text-anchor="middle" x="697.38" y="-35.59" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">update status</text>
146
+ </g>
147
+ </g>
148
+ </svg>
@@ -0,0 +1,48 @@
1
+ digraph "PWN_Hardware" {
2
+ graph [
3
+ label=<<B>Hardware &amp; Physical-Layer Hacking</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">Serial · BusPirate · MSR206 · Android · BareSIP · SDR</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.4, ranksep=1.2,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
12
+
13
+ subgraph cluster_dev {
14
+ label="Physical Devices"; fontcolor="#fecaca"; style="rounded,dashed";
15
+ color="#b91c1c"; bgcolor="#450a0a";
16
+ Uart [label="UART / JTAG\nembedded target", fillcolor="#fda4af"];
17
+ Mag [label="Magstripe card", fillcolor="#fda4af"];
18
+ Phone [label="Android device", fillcolor="#fda4af"];
19
+ VoIP [label="SIP / PSTN", fillcolor="#fda4af"];
20
+ RF [label="RF spectrum", fillcolor="#fda4af"];
21
+ }
22
+ subgraph cluster_pl {
23
+ label="PWN::Plugins / SDR"; fontcolor="#a7f3d0"; style=rounded;
24
+ color="#047857"; bgcolor="#022c22";
25
+ Serial [label="Serial · BusPirate", fillcolor="#6ee7b7"];
26
+ MSR [label="MSR206", fillcolor="#6ee7b7"];
27
+ Adb [label="Android (adb)", fillcolor="#6ee7b7"];
28
+ Sip [label="BareSIP · Voice", fillcolor="#6ee7b7"];
29
+ Sdr [label="SDR::GQRX · Flipper",fillcolor="#6ee7b7"];
30
+ }
31
+ subgraph cluster_out {
32
+ label="Analysis"; fontcolor="#ddd6fe"; style=rounded;
33
+ color="#6d28d9"; bgcolor="#2e1065";
34
+ XXD [label="XXD · Assembly", fillcolor="#c4b5fd"];
35
+ Rep [label="Reports · Skills", fillcolor="#c4b5fd"];
36
+ }
37
+
38
+ Uart -> Serial [color="#fb7185"];
39
+ Mag -> MSR [color="#fb7185"];
40
+ Phone -> Adb [color="#fb7185"];
41
+ VoIP -> Sip [color="#fb7185"];
42
+ RF -> Sdr [color="#fb7185"];
43
+ Serial -> XXD [color="#a78bfa"];
44
+ MSR -> XXD [color="#a78bfa"];
45
+ Adb -> Rep [color="#a78bfa"];
46
+ Sip -> Rep [color="#a78bfa"];
47
+ Sdr -> Rep [color="#a78bfa"];
48
+ }
@@ -0,0 +1,29 @@
1
+ digraph "PWN_Persistence" {
2
+ graph [
3
+ label=<<B>~/.pwn/ — Everything PWN Persists Across Sessions</B>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.3, ranksep=1.4,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=10, style="filled,rounded",
9
+ shape=box, penwidth=1.3, color="#334155", fontcolor="#0f172a"];
10
+ edge [color="#94a3b8", penwidth=1.1, arrowsize=0.7];
11
+
12
+ Root [label="~/.pwn/", shape=folder, fillcolor="#7dd3fc", fontsize=13];
13
+
14
+ node [shape=cylinder, fillcolor="#fcd34d"];
15
+ cfg [label="config.yml\nengines · keys · agent opts"];
16
+ mem [label="memory.json\nfacts · prefs · lessons · env"];
17
+ skl [label="skills/*.md\nreusable procedures + refs"];
18
+ lrn [label="learning.jsonl\ntask outcomes"];
19
+ met [label="metrics.json\nper-tool telemetry"];
20
+ ext [label="extrospection.json\nhost snapshot + observations"];
21
+ ses [label="sessions/*.jsonl\ntranscripts"];
22
+ crn [label="cron/jobs.yml\nscheduled jobs + logs"];
23
+ agt [label="agents.yml\npersona registry"];
24
+ swm [label="swarm/<id>/bus.jsonl\nmulti-agent chat"];
25
+ hist [label="~/.pwn_history\nREPL history"];
26
+
27
+ Root->cfg; Root->mem; Root->skl; Root->lrn; Root->met; Root->ext;
28
+ Root->ses; Root->crn; Root->agt; Root->swm; Root->hist;
29
+ }
@@ -0,0 +1,185 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN_Extrospection Pages: 1 -->
7
+ <svg width="794pt" height="584pt"
8
+ viewBox="0.00 0.00 794.00 584.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 541.2)">
10
+ <title>PWN_Extrospection</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-541.2 750.45,-541.2 750.45,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="107.25" y="-476" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::AI::Agent::Extrospection — World Awareness</text>
13
+ <text xml:space="preserve" text-anchor="start" x="255" y="-464.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">snapshot · drift · observe · intel · correlate</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_world</title>
16
+ <path fill="#450a0a" stroke="#b91c1c" stroke-dasharray="5,2" d="M20,-80C20,-80 155.5,-80 155.5,-80 161.5,-80 167.5,-86 167.5,-92 167.5,-92 167.5,-439 167.5,-439 167.5,-445 161.5,-451 155.5,-451 155.5,-451 20,-451 20,-451 14,-451 8,-445 8,-439 8,-439 8,-92 8,-92 8,-86 14,-80 20,-80"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-428" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Outside World</text>
18
+ </g>
19
+ <g id="clust3" class="cluster">
20
+ <title>cluster_eng</title>
21
+ <path fill="#422006" stroke="#a16207" stroke-width="2" d="M258.5,-8C258.5,-8 439.5,-8 439.5,-8 445.5,-8 451.5,-14 451.5,-20 451.5,-20 451.5,-367 451.5,-367 451.5,-373 445.5,-379 439.5,-379 439.5,-379 258.5,-379 258.5,-379 252.5,-379 246.5,-373 246.5,-367 246.5,-367 246.5,-20 246.5,-20 246.5,-14 252.5,-8 258.5,-8"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="349" y="-356" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Extrospection Engine</text>
23
+ </g>
24
+ <!-- Host -->
25
+ <g id="node1" class="node">
26
+ <title>Host</title>
27
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M132.88,-412C132.88,-412 42.62,-412 42.62,-412 36.62,-412 30.62,-406 30.62,-400 30.62,-400 30.62,-388 30.62,-388 30.62,-382 36.62,-376 42.62,-376 42.62,-376 132.88,-376 132.88,-376 138.88,-376 144.88,-382 144.88,-388 144.88,-388 144.88,-400 144.88,-400 144.88,-406 138.88,-412 132.88,-412"/>
28
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-397.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">host</text>
29
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-383.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">uname · distro · arch</text>
30
+ </g>
31
+ <!-- Snap -->
32
+ <g id="node6" class="node">
33
+ <title>Snap</title>
34
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M381.25,-340C381.25,-340 315.75,-340 315.75,-340 309.75,-340 303.75,-334 303.75,-328 303.75,-328 303.75,-316 303.75,-316 303.75,-310 309.75,-304 315.75,-304 315.75,-304 381.25,-304 381.25,-304 387.25,-304 393.25,-310 393.25,-316 393.25,-316 393.25,-328 393.25,-328 393.25,-334 387.25,-340 381.25,-340"/>
35
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-325.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_snapshot</text>
36
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-311.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">fingerprint host</text>
37
+ </g>
38
+ <!-- Host&#45;&gt;Snap -->
39
+ <g id="edge1" class="edge">
40
+ <title>Host&#45;&gt;Snap</title>
41
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M145.53,-378.2C189.65,-365.92 250.42,-349.01 293.75,-336.96"/>
42
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="294.42,-339.68 301.38,-334.83 292.92,-334.28 294.42,-339.68"/>
43
+ </g>
44
+ <!-- Net -->
45
+ <g id="node2" class="node">
46
+ <title>Net</title>
47
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M144.5,-340C144.5,-340 31,-340 31,-340 25,-340 19,-334 19,-328 19,-328 19,-316 19,-316 19,-310 25,-304 31,-304 31,-304 144.5,-304 144.5,-304 150.5,-304 156.5,-310 156.5,-316 156.5,-316 156.5,-328 156.5,-328 156.5,-334 150.5,-340 144.5,-340"/>
48
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-325.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">net</text>
49
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-311.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">interfaces · listening ports</text>
50
+ </g>
51
+ <!-- Net&#45;&gt;Snap -->
52
+ <g id="edge2" class="edge">
53
+ <title>Net&#45;&gt;Snap</title>
54
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M157.07,-322C199.72,-322 253.86,-322 293.5,-322"/>
55
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="293.28,-324.8 301.28,-322 293.28,-319.2 293.28,-324.8"/>
56
+ </g>
57
+ <!-- Tool -->
58
+ <g id="node3" class="node">
59
+ <title>Tool</title>
60
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M135.88,-268C135.88,-268 39.62,-268 39.62,-268 33.62,-268 27.62,-262 27.62,-256 27.62,-256 27.62,-244 27.62,-244 27.62,-238 33.62,-232 39.62,-232 39.62,-232 135.88,-232 135.88,-232 141.88,-232 147.88,-238 147.88,-244 147.88,-244 147.88,-256 147.88,-256 147.88,-262 141.88,-268 135.88,-268"/>
61
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-253.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">toolchain</text>
62
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-239.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">nmap · burp · msf · git</text>
63
+ </g>
64
+ <!-- Drift -->
65
+ <g id="node7" class="node">
66
+ <title>Drift</title>
67
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M384.25,-268C384.25,-268 312.75,-268 312.75,-268 306.75,-268 300.75,-262 300.75,-256 300.75,-256 300.75,-244 300.75,-244 300.75,-238 306.75,-232 312.75,-232 312.75,-232 384.25,-232 384.25,-232 390.25,-232 396.25,-238 396.25,-244 396.25,-244 396.25,-256 396.25,-256 396.25,-262 390.25,-268 384.25,-268"/>
68
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-253.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_drift</text>
69
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-239.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">delta vs baseline</text>
70
+ </g>
71
+ <!-- Tool&#45;&gt;Drift -->
72
+ <g id="edge3" class="edge">
73
+ <title>Tool&#45;&gt;Drift</title>
74
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M148.44,-250C191.13,-250 248.26,-250 290.36,-250"/>
75
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="290.22,-252.8 298.22,-250 290.22,-247.2 290.22,-252.8"/>
76
+ </g>
77
+ <!-- Repo -->
78
+ <g id="node4" class="node">
79
+ <title>Repo</title>
80
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M135.12,-196C135.12,-196 40.38,-196 40.38,-196 34.38,-196 28.38,-190 28.38,-184 28.38,-184 28.38,-172 28.38,-172 28.38,-166 34.38,-160 40.38,-160 40.38,-160 135.12,-160 135.12,-160 141.12,-160 147.12,-166 147.12,-172 147.12,-172 147.12,-184 147.12,-184 147.12,-190 141.12,-196 135.12,-196"/>
81
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-181.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">repo</text>
82
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-167.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">HEAD · dirty · branch</text>
83
+ </g>
84
+ <!-- Repo&#45;&gt;Drift -->
85
+ <g id="edge4" class="edge">
86
+ <title>Repo&#45;&gt;Drift</title>
87
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M147.79,-194.43C190.78,-206.39 248.65,-222.49 291.03,-234.29"/>
88
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="290.01,-236.91 298.47,-236.36 291.51,-231.51 290.01,-236.91"/>
89
+ </g>
90
+ <!-- Feeds -->
91
+ <g id="node5" class="node">
92
+ <title>Feeds</title>
93
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.4" d="M147.5,-124C147.5,-124 28,-124 28,-124 22,-124 16,-118 16,-112 16,-112 16,-100 16,-100 16,-94 22,-88 28,-88 28,-88 147.5,-88 147.5,-88 153.5,-88 159.5,-94 159.5,-100 159.5,-100 159.5,-112 159.5,-112 159.5,-118 153.5,-124 147.5,-124"/>
94
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-109.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">intel feeds</text>
95
+ <text xml:space="preserve" text-anchor="middle" x="87.75" y="-95.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">NVD · CIRCL · Exploit&#45;DB</text>
96
+ </g>
97
+ <!-- Intel -->
98
+ <g id="node9" class="node">
99
+ <title>Intel</title>
100
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M393.25,-124C393.25,-124 303.75,-124 303.75,-124 297.75,-124 291.75,-118 291.75,-112 291.75,-112 291.75,-100 291.75,-100 291.75,-94 297.75,-88 303.75,-88 303.75,-88 393.25,-88 393.25,-88 399.25,-88 405.25,-94 405.25,-100 405.25,-100 405.25,-112 405.25,-112 405.25,-118 399.25,-124 393.25,-124"/>
101
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-109.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_intel</text>
102
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-95.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">CVE / exploit lookup</text>
103
+ </g>
104
+ <!-- Feeds&#45;&gt;Intel -->
105
+ <g id="edge5" class="edge">
106
+ <title>Feeds&#45;&gt;Intel</title>
107
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M160.14,-106C198.04,-106 244.31,-106 281.38,-106"/>
108
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="281.12,-108.8 289.12,-106 281.12,-103.2 281.12,-108.8"/>
109
+ </g>
110
+ <!-- Store -->
111
+ <g id="node11" class="node">
112
+ <title>Store</title>
113
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M695.62,-197.69C695.62,-200.1 672.71,-202.06 644.5,-202.06 616.29,-202.06 593.38,-200.1 593.38,-197.69 593.38,-197.69 593.38,-158.31 593.38,-158.31 593.38,-155.9 616.29,-153.94 644.5,-153.94 672.71,-153.94 695.62,-155.9 695.62,-158.31 695.62,-158.31 695.62,-197.69 695.62,-197.69"/>
114
+ <path fill="none" stroke="#334155" stroke-width="1.4" d="M695.62,-197.69C695.62,-195.27 672.71,-193.31 644.5,-193.31 616.29,-193.31 593.38,-195.27 593.38,-197.69"/>
115
+ <text xml:space="preserve" text-anchor="middle" x="644.5" y="-181.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">~/.pwn/</text>
116
+ <text xml:space="preserve" text-anchor="middle" x="644.5" y="-167.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extrospection.json</text>
117
+ </g>
118
+ <!-- Snap&#45;&gt;Store -->
119
+ <g id="edge6" class="edge">
120
+ <title>Snap&#45;&gt;Store</title>
121
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M393.84,-308.22C411.99,-302.09 433.03,-294.38 451.5,-286 503.15,-262.57 559.38,-230.05 597.56,-206.83"/>
122
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="598.86,-209.32 604.22,-202.75 595.94,-204.54 598.86,-209.32"/>
123
+ </g>
124
+ <!-- Drift&#45;&gt;Store -->
125
+ <g id="edge7" class="edge">
126
+ <title>Drift&#45;&gt;Store</title>
127
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M396.77,-239.03C434.24,-230.27 487.9,-217.59 534.75,-206 550.5,-202.1 567.5,-197.78 583.28,-193.72"/>
128
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="583.97,-196.43 591.02,-191.72 582.57,-191.01 583.97,-196.43"/>
129
+ </g>
130
+ <!-- Obs -->
131
+ <g id="node8" class="node">
132
+ <title>Obs</title>
133
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.4" d="M385,-196C385,-196 312,-196 312,-196 306,-196 300,-190 300,-184 300,-184 300,-172 300,-172 300,-166 306,-160 312,-160 312,-160 385,-160 385,-160 391,-160 397,-166 397,-172 397,-172 397,-184 397,-184 397,-190 391,-196 385,-196"/>
134
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-181.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_observe</text>
135
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-167.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">record recon fact</text>
136
+ </g>
137
+ <!-- Obs&#45;&gt;Store -->
138
+ <g id="edge8" class="edge">
139
+ <title>Obs&#45;&gt;Store</title>
140
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M397.39,-178C448.09,-178 528.24,-178 583.21,-178"/>
141
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="583.2,-180.8 591.2,-178 583.2,-175.2 583.2,-180.8"/>
142
+ </g>
143
+ <!-- Intel&#45;&gt;Store -->
144
+ <g id="edge9" class="edge">
145
+ <title>Intel&#45;&gt;Store</title>
146
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M405.84,-119.8C456.69,-132.25 531.3,-150.52 583.32,-163.26"/>
147
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="582.41,-165.92 590.84,-165.1 583.74,-160.48 582.41,-165.92"/>
148
+ <text xml:space="preserve" text-anchor="middle" x="512.62" y="-152.52" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">record:true</text>
149
+ </g>
150
+ <!-- Corr -->
151
+ <g id="node10" class="node">
152
+ <title>Corr</title>
153
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M386.5,-52C386.5,-52 310.5,-52 310.5,-52 304.5,-52 298.5,-46 298.5,-40 298.5,-40 298.5,-28 298.5,-28 298.5,-22 304.5,-16 310.5,-16 310.5,-16 386.5,-16 386.5,-16 392.5,-16 398.5,-22 398.5,-28 398.5,-28 398.5,-40 398.5,-40 398.5,-46 392.5,-52 386.5,-52"/>
154
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-37.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">extro_correlate</text>
155
+ <text xml:space="preserve" text-anchor="middle" x="348.5" y="-23.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">join with Learning</text>
156
+ </g>
157
+ <!-- Prompt -->
158
+ <g id="node12" class="node">
159
+ <title>Prompt</title>
160
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.4" d="M695.25,-77C695.25,-77 593.75,-77 593.75,-77 587.75,-77 581.75,-71 581.75,-65 581.75,-65 581.75,-53 581.75,-53 581.75,-47 587.75,-41 593.75,-41 593.75,-41 695.25,-41 695.25,-41 701.25,-41 707.25,-47 707.25,-53 707.25,-53 707.25,-65 707.25,-65 707.25,-71 701.25,-77 695.25,-77"/>
161
+ <text xml:space="preserve" text-anchor="middle" x="644.5" y="-62.05" font-family="sans-Serif" font-size="11.00" fill="#0f172a">EXTROSPECTION</text>
162
+ <text xml:space="preserve" text-anchor="middle" x="644.5" y="-48.55" font-family="sans-Serif" font-size="11.00" fill="#0f172a">block in system prompt</text>
163
+ </g>
164
+ <!-- Corr&#45;&gt;Prompt -->
165
+ <g id="edge10" class="edge">
166
+ <title>Corr&#45;&gt;Prompt</title>
167
+ <path fill="none" stroke="#a78bfa" stroke-width="2" d="M399.37,-38.24C446.27,-42.23 517.05,-48.25 570.34,-52.78"/>
168
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="2" points="569.86,-55.55 578.07,-53.44 570.34,-49.97 569.86,-55.55"/>
169
+ <text xml:space="preserve" text-anchor="middle" x="512.62" y="-51.42" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">findings</text>
170
+ </g>
171
+ <!-- Store&#45;&gt;Corr -->
172
+ <g id="edge12" class="edge">
173
+ <title>Store&#45;&gt;Corr</title>
174
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M625.47,-153.5C596.26,-113.98 541.21,-40.24 534.75,-37 496.22,-17.67 447.26,-17.76 409.35,-22.23"/>
175
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="408.99,-19.45 401.42,-23.27 409.71,-25 408.99,-19.45"/>
176
+ </g>
177
+ <!-- Store&#45;&gt;Prompt -->
178
+ <g id="edge11" class="edge">
179
+ <title>Store&#45;&gt;Prompt</title>
180
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M644.5,-153.34C644.5,-134.16 644.5,-107.51 644.5,-87.42"/>
181
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="647.3,-87.56 644.5,-79.56 641.7,-87.56 647.3,-87.56"/>
182
+ <text xml:space="preserve" text-anchor="middle" x="636.25" y="-112.17" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">inject</text>
183
+ </g>
184
+ </g>
185
+ </svg>