pwn 0.5.613 → 0.5.617

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -10
  3. data/README.md +117 -17
  4. data/bin/pwn +47 -2
  5. data/bin/pwn_gqrx_scanner +75 -18
  6. data/documentation/AI-Integration.md +36 -0
  7. data/documentation/BurpSuite.md +26 -0
  8. data/documentation/Contributing.md +31 -0
  9. data/documentation/Diagrams.md +140 -0
  10. data/documentation/Drivers.md +25 -0
  11. data/documentation/General-PWN-Usage.md +60 -0
  12. data/documentation/Home.md +78 -0
  13. data/documentation/How-PWN-Works.md +62 -0
  14. data/documentation/Installation.md +75 -0
  15. data/documentation/NmapIt.md +18 -0
  16. data/documentation/Plugins.md +59 -0
  17. data/documentation/Reporting.md +28 -0
  18. data/documentation/SAST.md +32 -0
  19. data/documentation/Skills-Memory-Learning.md +44 -0
  20. data/documentation/Transparent-Browser.md +32 -0
  21. data/documentation/Troubleshooting.md +38 -0
  22. data/documentation/What-is-PWN.md +53 -0
  23. data/documentation/Why-PWN.md +48 -0
  24. data/documentation/diagrams/ai-integration-tool-calling.svg +172 -0
  25. data/documentation/diagrams/build.sh +20 -0
  26. data/documentation/diagrams/burp-vs-zap-preference.svg +69 -0
  27. data/documentation/diagrams/code-scanning-sast.svg +172 -0
  28. data/documentation/diagrams/dot/_THEME.md +27 -0
  29. data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
  30. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +50 -0
  31. data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
  32. data/documentation/diagrams/dot/burp-vs-zap-preference.dot +26 -0
  33. data/documentation/diagrams/dot/code-scanning-sast.dot +49 -0
  34. data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
  35. data/documentation/diagrams/dot/driver-framework.dot +39 -0
  36. data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
  37. data/documentation/diagrams/dot/fuzzing-workflow.dot +47 -0
  38. data/documentation/diagrams/dot/history-to-drivers.dot +34 -0
  39. data/documentation/diagrams/dot/memory-skills-detailed.dot +60 -0
  40. data/documentation/diagrams/dot/network-infra-testing.dot +54 -0
  41. data/documentation/diagrams/dot/overall-pwn-architecture.dot +115 -0
  42. data/documentation/diagrams/dot/penetration-testing-workflow.dot +60 -0
  43. data/documentation/diagrams/dot/plugin-ecosystem.dot +45 -0
  44. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +98 -0
  45. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +56 -0
  46. data/documentation/diagrams/dot/reporting-pipeline.dot +46 -0
  47. data/documentation/diagrams/dot/reverse-engineering-flow.dot +43 -0
  48. data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
  49. data/documentation/diagrams/dot/sessions-cron-automation.dot +44 -0
  50. data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
  51. data/documentation/diagrams/dot/web-application-testing.dot +49 -0
  52. data/documentation/diagrams/dot/zero-day-research-flow.dot +49 -0
  53. data/documentation/diagrams/driver-framework.svg +111 -0
  54. data/documentation/diagrams/fuzzing-workflow.svg +160 -0
  55. data/documentation/diagrams/history-to-drivers.svg +119 -0
  56. data/documentation/diagrams/memory-skills-detailed.svg +202 -0
  57. data/documentation/diagrams/network-infra-testing.svg +183 -0
  58. data/documentation/diagrams/overall-pwn-architecture.svg +405 -0
  59. data/documentation/diagrams/penetration-testing-workflow.svg +201 -0
  60. data/documentation/diagrams/plugin-ecosystem.svg +276 -0
  61. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +306 -0
  62. data/documentation/diagrams/pwn-repl-prototyping.svg +168 -0
  63. data/documentation/diagrams/reporting-pipeline.svg +151 -0
  64. data/documentation/diagrams/reverse-engineering-flow.svg +134 -0
  65. data/documentation/diagrams/sessions-cron-automation.svg +136 -0
  66. data/documentation/diagrams/web-application-testing.svg +173 -0
  67. data/documentation/diagrams/zero-day-research-flow.svg +153 -0
  68. data/documentation/pwn-REPL.md +33 -0
  69. data/documentation/pwn-ai-Agent.md +43 -0
  70. data/git_commit.sh +1 -1
  71. data/lib/pwn/ai/agent/assembly.rb +1 -1
  72. data/lib/pwn/ai/agent/btc.rb +1 -1
  73. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  74. data/lib/pwn/ai/agent/extrospection.rb +618 -0
  75. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  76. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  77. data/lib/pwn/ai/agent/introspection.rb +91 -0
  78. data/lib/pwn/ai/agent/learning.rb +379 -0
  79. data/lib/pwn/ai/agent/loop.rb +33 -3
  80. data/lib/pwn/ai/agent/metrics.rb +155 -0
  81. data/lib/pwn/ai/agent/prompt_builder.rb +32 -3
  82. data/lib/pwn/ai/agent/sast.rb +1 -1
  83. data/lib/pwn/ai/agent/swarm.rb +437 -0
  84. data/lib/pwn/ai/agent/tools/cron.rb +163 -0
  85. data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
  86. data/lib/pwn/ai/agent/tools/learning.rb +221 -0
  87. data/lib/pwn/ai/agent/tools/memory.rb +27 -0
  88. data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
  89. data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
  90. data/lib/pwn/ai/agent/tools/skills.rb +124 -8
  91. data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
  92. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  93. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  94. data/lib/pwn/ai/agent.rb +5 -0
  95. data/lib/pwn/ai/anthropic.rb +19 -4
  96. data/lib/pwn/ai/grok.rb +249 -106
  97. data/lib/pwn/ai.rb +0 -1
  98. data/lib/pwn/config.rb +96 -36
  99. data/lib/pwn/cron.rb +16 -7
  100. data/lib/pwn/plugins/monkey_patch.rb +2 -2
  101. data/lib/pwn/plugins/repl.rb +158 -284
  102. data/lib/pwn/sdr/decoder/base.rb +251 -0
  103. data/lib/pwn/sdr/decoder/gsm.rb +84 -185
  104. data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
  105. data/lib/pwn/sdr/decoder.rb +1 -0
  106. data/lib/pwn/sdr/gqrx.rb +446 -65
  107. data/lib/pwn/version.rb +1 -1
  108. data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
  109. data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
  110. data/spec/lib/pwn/ai/agent/learning_spec.rb +68 -0
  111. data/spec/lib/pwn/ai/agent/metrics_spec.rb +27 -0
  112. data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
  113. data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
  114. data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
  115. data/spec/lib/pwn/ai/agent/tools/learning_spec.rb +30 -0
  116. data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
  117. data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
  118. data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
  119. data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
  120. data/third_party/pwn_rdoc.jsonl +178 -33
  121. metadata +110 -36
  122. data/documentation/PWN.png +0 -0
  123. data/documentation/PWN_Contributors_and_Users.png +0 -0
  124. data/documentation/fax-spectrogram.png +0 -0
  125. data/documentation/fax-waveform.png +0 -0
  126. data/documentation/frozen_string_literal_files_changed_from_false_to_true.txt +0 -54
  127. data/documentation/lifecycle_authz_replay.example.yaml +0 -27
  128. data/documentation/pwn_android_war_dialer_session.png +0 -0
  129. data/documentation/pwn_install.png +0 -0
  130. data/documentation/pwn_wallpaper.jpg +0 -0
  131. data/documentation/ringing-spectrogram.png +0 -0
  132. data/documentation/ringing-waveform.png +0 -0
  133. data/documentation/vulnerability_report_template.md +0 -37
  134. data/lib/pwn/ai/introspection.rb +0 -76
@@ -0,0 +1,59 @@
1
+ digraph "PWN_Agent_Tool_Registry" {
2
+ graph [
3
+ label=<<B>PWN::AI::Agent::Registry — Toolsets exposed to the LLM</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">10 toolsets · 45+ callable tools · lib/pwn/ai/agent/tools/*</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.35, 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
+ Registry [label="Registry\nJSON-Schema\nfunction defs", fillcolor="#c4b5fd", fontsize=12, penwidth=2];
13
+
14
+ subgraph cluster_ts {
15
+ label="Toolsets"; fontcolor="#a7f3d0"; style=rounded;
16
+ color="#047857"; bgcolor="#022c22"; penwidth=2;
17
+ terminal [label="terminal", fillcolor="#6ee7b7"];
18
+ pwn [label="pwn", fillcolor="#6ee7b7"];
19
+ memory [label="memory", fillcolor="#6ee7b7"];
20
+ skills [label="skills", fillcolor="#6ee7b7"];
21
+ sessions [label="sessions", fillcolor="#6ee7b7"];
22
+ learning [label="learning", fillcolor="#6ee7b7"];
23
+ metrics [label="metrics", fillcolor="#6ee7b7"];
24
+ extro [label="extrospection", fillcolor="#6ee7b7"];
25
+ cron [label="cron", fillcolor="#6ee7b7"];
26
+ swarm [label="swarm", fillcolor="#6ee7b7"];
27
+ }
28
+
29
+ subgraph cluster_tools {
30
+ label="Tools (LLM-callable)"; fontcolor="#fde68a"; style=rounded;
31
+ color="#a16207"; bgcolor="#422006"; penwidth=2;
32
+ node [fillcolor="#fcd34d", fontsize=9];
33
+ t_shell [label="shell"];
34
+ t_eval [label="pwn_eval"];
35
+ t_mem [label="memory_remember\nrecall · forget · clear"];
36
+ t_skill [label="skill_list · view\ncreate · add_reference · delete"];
37
+ t_sess [label="sessions_list · view\ncurrent · delete · stats"];
38
+ t_learn [label="learning_note_outcome\nreflect · distill_skill\nconsolidate · outcomes · reset"];
39
+ t_metric [label="metrics_summary\nmetrics_reset"];
40
+ t_extro [label="extro_snapshot · drift\nobserve · intel · correlate\nobservations · stats · reset"];
41
+ t_cron [label="cron_list · create · run\nenable · disable · remove"];
42
+ t_swarm [label="agent_list · spawn · ask\ndebate · broadcast\nswarm_bus · swarm_list"];
43
+ }
44
+
45
+ Registry -> terminal; Registry -> pwn; Registry -> memory;
46
+ Registry -> skills; Registry -> sessions; Registry -> learning;
47
+ Registry -> metrics; Registry -> extro; Registry -> cron; Registry -> swarm;
48
+
49
+ terminal -> t_shell [color="#f59e0b"];
50
+ pwn -> t_eval [color="#f59e0b"];
51
+ memory -> t_mem [color="#f59e0b"];
52
+ skills -> t_skill [color="#f59e0b"];
53
+ sessions -> t_sess [color="#f59e0b"];
54
+ learning -> t_learn [color="#f59e0b"];
55
+ metrics -> t_metric [color="#f59e0b"];
56
+ extro -> t_extro [color="#f59e0b"];
57
+ cron -> t_cron [color="#f59e0b"];
58
+ swarm -> t_swarm [color="#f59e0b"];
59
+ }
@@ -0,0 +1,50 @@
1
+ digraph "PWN_AI_Integration" {
2
+ graph [
3
+ label=<<B>PWN::AI — Multi-Provider LLM Integration</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">one Agent Loop · five interchangeable engines</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.45, ranksep=1.3,
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
+ Loop [label="PWN::AI::Agent::Loop\ntool-calling harness", fillcolor="#7dd3fc", penwidth=2];
14
+
15
+ subgraph cluster_c {
16
+ label="PWN::AI::* Clients"; fontcolor="#ddd6fe"; style=rounded;
17
+ color="#6d28d9"; bgcolor="#2e1065";
18
+ OpenAI [label="OpenAI", fillcolor="#c4b5fd"];
19
+ Anthropic [label="Anthropic", fillcolor="#c4b5fd"];
20
+ Grok [label="Grok\nOAuth device flow", fillcolor="#c4b5fd"];
21
+ Gemini [label="Gemini", fillcolor="#c4b5fd"];
22
+ Ollama [label="Ollama\n(local)", fillcolor="#c4b5fd"];
23
+ }
24
+ {rank=same; OpenAI; Anthropic; Grok; Gemini; Ollama}
25
+
26
+ subgraph cluster_api {
27
+ label="Provider APIs"; fontcolor="#fecaca"; style="rounded,dashed";
28
+ color="#b91c1c"; bgcolor="#450a0a";
29
+ A1 [label="api.openai.com", fillcolor="#fda4af"];
30
+ A2 [label="api.anthropic.com", fillcolor="#fda4af"];
31
+ A3 [label="api.x.ai\nauth.x.ai", fillcolor="#fda4af"];
32
+ A4 [label="generativelanguage\n.googleapis.com", fillcolor="#fda4af"];
33
+ A5 [label="localhost:11434", fillcolor="#fda4af"];
34
+ }
35
+ {rank=same; A1; A2; A3; A4; A5}
36
+
37
+ Cfg [label="PWN::Config\n~/.pwn/config.yml\nengine · key · oauth", shape=cylinder, fillcolor="#fcd34d"];
38
+
39
+ Loop -> OpenAI [color="#a78bfa"];
40
+ Loop -> Anthropic [color="#a78bfa"];
41
+ Loop -> Grok [color="#a78bfa"];
42
+ Loop -> Gemini [color="#a78bfa"];
43
+ Loop -> Ollama [color="#a78bfa"];
44
+ OpenAI -> A1 [color="#fb7185"];
45
+ Anthropic -> A2 [color="#fb7185"];
46
+ Grok -> A3 [color="#fb7185"];
47
+ Gemini -> A4 [color="#fb7185"];
48
+ Ollama -> A5 [color="#fb7185"];
49
+ Cfg -> Loop [label="active engine", style=dashed, color="#fbbf24", constraint=false];
50
+ }
@@ -0,0 +1,48 @@
1
+ digraph "PWN_AWS" {
2
+ graph [
3
+ label=<<B>PWN::AWS — Cloud Security (90 service wrappers)</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">enumerate → misconfig → escalate → persist</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
+ Creds [label="🔑 AWS Creds\nSTS · env · profile", fillcolor="#7dd3fc"];
14
+
15
+ subgraph cluster_enum {
16
+ label="Enumerate"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ IAM [label="IAM · STS\nOrganizations", fillcolor="#6ee7b7"];
19
+ EC2 [label="EC2 · ECS · ECR\nLambda · Lightsail", fillcolor="#6ee7b7"];
20
+ Net [label="Route53 · ELB\nAPI Gateway · CloudFront", fillcolor="#6ee7b7"];
21
+ }
22
+ subgraph cluster_mis {
23
+ label="Misconfig"; fontcolor="#fde68a"; style=rounded;
24
+ color="#a16207"; bgcolor="#422006";
25
+ S3 [label="S3 · Glacier\npublic buckets", fillcolor="#fcd34d"];
26
+ KMS [label="KMS · CloudHSM\nSecrets · SSM", fillcolor="#fcd34d"];
27
+ Log [label="CloudTrail\nCloudWatch · Config", fillcolor="#fcd34d"];
28
+ }
29
+ subgraph cluster_esc {
30
+ label="Escalate / Persist"; fontcolor="#fecaca"; style=rounded;
31
+ color="#b91c1c"; bgcolor="#450a0a";
32
+ Priv [label="iam:PassRole\nlambda invoke", fillcolor="#fda4af"];
33
+ Back [label="new access key\nEC2 userdata", fillcolor="#fda4af"];
34
+ }
35
+ Rep [label="pwn_aws_describe_resources\nReports", fillcolor="#c4b5fd"];
36
+
37
+ Creds -> IAM [color="#38bdf8"];
38
+ Creds -> EC2 [color="#38bdf8"];
39
+ Creds -> Net [color="#38bdf8"];
40
+ IAM -> S3 [color="#f59e0b"];
41
+ EC2 -> KMS [color="#f59e0b"];
42
+ Net -> Log [color="#f59e0b"];
43
+ S3 -> Priv [color="#fb7185"];
44
+ KMS -> Priv [color="#fb7185"];
45
+ Log -> Back [color="#fb7185"];
46
+ Priv -> Rep [color="#a78bfa"];
47
+ Back -> Rep [color="#a78bfa"];
48
+ }
@@ -0,0 +1,26 @@
1
+ digraph "PWN_BurpVsZap" {
2
+ graph [
3
+ label=<<B>Web Proxy Selection — BurpSuite ⭐ preferred over ZAP</B>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=TB, splines=spline, nodesep=0.7, ranksep=0.9,
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
+ Need [label="Need web proxy /\nactive scanner?", shape=diamond,
14
+ style=filled, fillcolor="#7dd3fc", height=1.1];
15
+ Burp [label="PWN::Plugins::BurpSuite\nheadless · REST · richer scanner\nBApp ecosystem",
16
+ fillcolor="#6ee7b7", penwidth=2];
17
+ Zap [label="PWN::Plugins::Zaproxy\nOSS fallback",
18
+ fillcolor="#fcd34d"];
19
+ Both [label="Same downstream:\nTransparentBrowser proxy · Reports · DefectDojo",
20
+ fillcolor="#c4b5fd"];
21
+
22
+ Need -> Burp [label="Burp Pro available", color="#34d399", penwidth=2];
23
+ Need -> Zap [label="fallback", color="#f59e0b"];
24
+ Burp -> Both [color="#a78bfa"];
25
+ Zap -> Both [color="#a78bfa"];
26
+ }
@@ -0,0 +1,49 @@
1
+ digraph "PWN_SAST" {
2
+ graph [
3
+ label=<<B>PWN::SAST — Static Application Security Testing</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">48 rules · multi-language · bin/pwn_sast · Reports::SAST</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
+ Src [label="📁 Source Tree\ngit clone / repo", fillcolor="#7dd3fc"];
14
+
15
+ subgraph cluster_engine {
16
+ label="SAST Engine"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ Factory [label="SAST::Factory\nrule loader", fillcolor="#6ee7b7"];
19
+ TCE [label="TestCaseEngine\ngenerate probes", fillcolor="#6ee7b7"];
20
+ }
21
+ subgraph cluster_rules {
22
+ label="Rule Families (48)"; fontcolor="#fde68a"; style=rounded;
23
+ color="#a16207"; bgcolor="#422006";
24
+ Cmd [label="cmd_execution_*\njava · py · ruby · go · scala", fillcolor="#fcd34d"];
25
+ Web [label="csrf · redirect · redos\ninner/outer_html · location_hash", fillcolor="#fcd34d"];
26
+ Cryp [label="md5 · ssl · keystore\npadding_oracle · private_key", fillcolor="#fcd34d"];
27
+ Data [label="sql · eval · deserial_java\nlog4j · php_type_juggling", fillcolor="#fcd34d"];
28
+ Mem [label="banned_c_calls\nuse_after_free", fillcolor="#fcd34d"];
29
+ }
30
+ subgraph cluster_out {
31
+ label="Output"; fontcolor="#ddd6fe"; style=rounded;
32
+ color="#6d28d9"; bgcolor="#2e1065";
33
+ Report [label="Reports::SAST\nHTML + JSON", fillcolor="#c4b5fd"];
34
+ DD [label="DefectDojo\nimport / reimport", fillcolor="#c4b5fd"];
35
+ }
36
+
37
+ Src -> Factory [color="#38bdf8"];
38
+ Src -> TCE [color="#38bdf8"];
39
+ Factory -> Cmd [color="#f59e0b"];
40
+ Factory -> Web [color="#f59e0b"];
41
+ Factory -> Cryp [color="#f59e0b"];
42
+ TCE -> Data [color="#f59e0b"];
43
+ TCE -> Mem [color="#f59e0b"];
44
+ Cmd -> Report [color="#a78bfa"];
45
+ Web -> Report [color="#a78bfa"];
46
+ Cryp -> Report [color="#a78bfa"];
47
+ Data -> DD [color="#a78bfa"];
48
+ Mem -> DD [color="#a78bfa"];
49
+ }
@@ -0,0 +1,40 @@
1
+ digraph "PWN_Cron" {
2
+ graph [
3
+ label=<<B>PWN::Cron — Scheduled Autonomous Jobs</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">prompt · ruby · script → jobs.yml → crontab → pwn-ai</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.5, ranksep=1.3,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=11, style="filled,rounded",
9
+ shape=box, penwidth=1.4, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
12
+
13
+ Create [label="cron_create\nname · schedule\nprompt | ruby | script", fillcolor="#7dd3fc"];
14
+ Jobs [label="~/.pwn/cron/jobs.yml", shape=cylinder, fillcolor="#fcd34d"];
15
+ Crontab[label="system crontab\n(install_crontab: true)", fillcolor="#fda4af"];
16
+ Runner [label="PWN::Cron.run(id)", fillcolor="#c4b5fd"];
17
+
18
+ subgraph cluster_kinds {
19
+ label="Job Kinds"; fontcolor="#a7f3d0"; style=rounded;
20
+ color="#047857"; bgcolor="#022c22"; penwidth=2;
21
+ Prompt [label=":prompt\n→ pwn-ai one-shot", fillcolor="#6ee7b7"];
22
+ Ruby [label=":ruby\n→ TOPLEVEL_BINDING.eval", fillcolor="#6ee7b7"];
23
+ Script [label=":script\n→ exec external file", fillcolor="#6ee7b7"];
24
+ }
25
+ {rank=same; Prompt; Ruby; Script}
26
+
27
+ Log [label="~/.pwn/cron/log/<id>.log\nlast_run · last_status", shape=cylinder, fillcolor="#fcd34d"];
28
+
29
+ Create -> Jobs [label="write", color="#38bdf8"];
30
+ Create -> Crontab [label="append", color="#fb7185"];
31
+ Crontab -> Runner [label="fire on schedule", color="#fb7185", penwidth=2];
32
+ Jobs -> Runner [label="load job", color="#f59e0b"];
33
+ Runner -> Prompt [color="#34d399"];
34
+ Runner -> Ruby [color="#34d399"];
35
+ Runner -> Script [color="#34d399"];
36
+ Prompt -> Log [color="#f59e0b"];
37
+ Ruby -> Log [color="#f59e0b"];
38
+ Script -> Log [color="#f59e0b"];
39
+ Log -> Jobs [label="update status", style=dashed, color="#fbbf24", constraint=false];
40
+ }
@@ -0,0 +1,39 @@
1
+ digraph "PWN_Driver" {
2
+ graph [
3
+ label=<<B>Driver Anatomy — bin/pwn_*</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">52 shipped drivers · thin CLI over PWN::Plugins</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.5, ranksep=1.3,
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
+ Sh [label="$ pwn_burp_suite_pro_active_scan \\ \n -t https://target -o out/", fillcolor="#7dd3fc"];
14
+
15
+ subgraph cluster_d {
16
+ label="Driver Body"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ Opt [label="OptionParser\nARGV → opts{}", fillcolor="#6ee7b7"];
19
+ Req [label="require 'pwn'", fillcolor="#6ee7b7"];
20
+ Call [label="PWN::Plugins::X.method(opts)", fillcolor="#6ee7b7"];
21
+ }
22
+ {rank=same; Opt; Req; Call}
23
+
24
+ subgraph cluster_o {
25
+ label="Output"; fontcolor="#ddd6fe"; style=rounded;
26
+ color="#6d28d9"; bgcolor="#2e1065";
27
+ Std [label="STDOUT / STDERR", fillcolor="#c4b5fd"];
28
+ Rep [label="PWN::Reports", fillcolor="#c4b5fd"];
29
+ Ex [label="exit code", fillcolor="#c4b5fd"];
30
+ }
31
+
32
+ Sh -> Opt [color="#38bdf8"];
33
+ Sh -> Req [color="#38bdf8"];
34
+ Opt -> Call [color="#34d399"];
35
+ Req -> Call [color="#34d399"];
36
+ Call -> Std [color="#a78bfa"];
37
+ Call -> Rep [color="#a78bfa"];
38
+ Call -> Ex [color="#a78bfa"];
39
+ }
@@ -0,0 +1,55 @@
1
+ digraph "PWN_Extrospection" {
2
+ graph [
3
+ label=<<B>PWN::AI::Agent::Extrospection — World Awareness</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">snapshot · drift · observe · intel · correlate</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.5, ranksep=1.3,
6
+ bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
7
+ ];
8
+ node [fontname="Helvetica", fontsize=11, style="filled,rounded",
9
+ shape=box, penwidth=1.4, color="#334155", fontcolor="#0f172a"];
10
+ edge [fontname="Helvetica", fontsize=9, color="#94a3b8",
11
+ fontcolor="#cbd5e1", penwidth=1.3, arrowsize=0.8];
12
+
13
+ /* col 0 ─ world */
14
+ subgraph cluster_world {
15
+ label="Outside World"; fontcolor="#fecaca"; style="rounded,dashed";
16
+ color="#b91c1c"; bgcolor="#450a0a";
17
+ Host [label="host\nuname · distro · arch", fillcolor="#fda4af"];
18
+ Net [label="net\ninterfaces · listening ports", fillcolor="#fda4af"];
19
+ Tool [label="toolchain\nnmap · burp · msf · git", fillcolor="#fda4af"];
20
+ Repo [label="repo\nHEAD · dirty · branch", fillcolor="#fda4af"];
21
+ Feeds [label="intel feeds\nNVD · CIRCL · Exploit-DB", fillcolor="#fda4af"];
22
+ }
23
+ {rank=same; Host; Net; Tool; Repo; Feeds}
24
+
25
+ /* col 1 ─ engine */
26
+ subgraph cluster_eng {
27
+ label="Extrospection Engine"; fontcolor="#fde68a"; style=rounded;
28
+ color="#a16207"; bgcolor="#422006"; penwidth=2;
29
+ Snap [label="extro_snapshot\nfingerprint host", fillcolor="#fcd34d"];
30
+ Drift [label="extro_drift\ndelta vs baseline", fillcolor="#fcd34d"];
31
+ Obs [label="extro_observe\nrecord recon fact", fillcolor="#fcd34d"];
32
+ Intel [label="extro_intel\nCVE / exploit lookup", fillcolor="#fcd34d"];
33
+ Corr [label="extro_correlate\njoin with Learning", fillcolor="#fcd34d", penwidth=2];
34
+ }
35
+ {rank=same; Snap; Drift; Obs; Intel; Corr}
36
+
37
+ /* col 2 ─ store + prompt */
38
+ Store [label="~/.pwn/\nextrospection.json", shape=cylinder, fillcolor="#fcd34d"];
39
+ Prompt [label="EXTROSPECTION\nblock in system prompt", fillcolor="#c4b5fd"];
40
+ {rank=same; Store; Prompt}
41
+
42
+ Host -> Snap [color="#fb7185"];
43
+ Net -> Snap [color="#fb7185"];
44
+ Tool -> Drift [color="#fb7185"];
45
+ Repo -> Drift [color="#fb7185"];
46
+ Feeds -> Intel [color="#fb7185"];
47
+
48
+ Snap -> Store [color="#f59e0b"];
49
+ Drift -> Store [color="#f59e0b"];
50
+ Obs -> Store [color="#f59e0b"];
51
+ Intel -> Store [label="record:true", color="#f59e0b"];
52
+ Corr -> Prompt[label="findings", color="#a78bfa", penwidth=2];
53
+ Store -> Prompt[label="inject", style=dashed, color="#fbbf24"];
54
+ Store -> Corr [style=dashed, color="#fbbf24", constraint=false];
55
+ }
@@ -0,0 +1,47 @@
1
+ digraph "PWN_Fuzz" {
2
+ graph [
3
+ label=<<B>Fuzzing with PWN</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.45, 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
+ Seed [label="Seed corpus /\nprotocol grammar", fillcolor="#7dd3fc"];
14
+
15
+ subgraph cluster_gen {
16
+ label="Generate"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ Fuzz [label="Plugins::Fuzz\nmutate · generate", fillcolor="#6ee7b7"];
19
+ Char [label="Plugins::Char\nencodings", fillcolor="#6ee7b7"];
20
+ }
21
+ subgraph cluster_deliver {
22
+ label="Deliver"; fontcolor="#fde68a"; style=rounded;
23
+ color="#a16207"; bgcolor="#422006";
24
+ Sock [label="Plugins::Sock\nTCP/UDP", fillcolor="#fcd34d"];
25
+ Packet [label="Plugins::Packet\nraw L2/L3", fillcolor="#fcd34d"];
26
+ NetApp [label="pwn_fuzz_net_app_proto\nCLI driver", fillcolor="#fcd34d"];
27
+ }
28
+ subgraph cluster_mon {
29
+ label="Monitor"; fontcolor="#fecaca"; style=rounded;
30
+ color="#b91c1c"; bgcolor="#450a0a";
31
+ PS [label="Plugins::PS\nprocess health", fillcolor="#fda4af"];
32
+ Log [label="Plugins::Log\ncrash detect", fillcolor="#fda4af"];
33
+ }
34
+ Report [label="Reports::Fuzz\ncrash triage", fillcolor="#7dd3fc"];
35
+
36
+ Seed -> Fuzz [color="#38bdf8"];
37
+ Seed -> Char [color="#38bdf8"];
38
+ Fuzz -> Sock [color="#f59e0b"];
39
+ Fuzz -> Packet [color="#f59e0b"];
40
+ Char -> NetApp [color="#f59e0b"];
41
+ Sock -> PS [color="#fb7185"];
42
+ Packet -> Log [color="#fb7185"];
43
+ NetApp -> Log [color="#fb7185"];
44
+ PS -> Report [color="#38bdf8"];
45
+ Log -> Report [color="#38bdf8"];
46
+ Log -> Fuzz [label="minimise + reseed", style=dashed, color="#fbbf24", constraint=false];
47
+ }
@@ -0,0 +1,34 @@
1
+ digraph "PWN_HistToDriver" {
2
+ graph [
3
+ label=<<B>From REPL History → Reusable Driver / Skill</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">explore → history → bin/pwn_* driver → distill_skill</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.5, 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
+ Explore [label="🐚 Explore in REPL\ncall PWN::Plugins::*", fillcolor="#7dd3fc"];
14
+ Hist [label="~/.pwn_history\nPry `history` cmd", shape=cylinder, fillcolor="#fcd34d"];
15
+ Extract [label="copy working lines", fillcolor="#6ee7b7"];
16
+
17
+ subgraph cluster_out {
18
+ label="Reusable Artefacts"; fontcolor="#ddd6fe"; style=rounded;
19
+ color="#6d28d9"; bgcolor="#2e1065";
20
+ Driver [label="bin/pwn_<name>\nOptionParser + PWN calls", fillcolor="#c4b5fd"];
21
+ Skill [label="~/.pwn/skills/<name>.md\nlearning_distill_skill", fillcolor="#c4b5fd"];
22
+ Cron [label="cron_create\nprompt: | ruby:", fillcolor="#c4b5fd"];
23
+ }
24
+ CI [label="⚙️ CI / CD\nheadless run", fillcolor="#7dd3fc"];
25
+
26
+ Explore -> Hist [label="auto-log", color="#38bdf8"];
27
+ Hist -> Extract [color="#f59e0b"];
28
+ Extract -> Driver [color="#a78bfa"];
29
+ Extract -> Skill [color="#a78bfa"];
30
+ Extract -> Cron [color="#a78bfa"];
31
+ Driver -> CI [color="#38bdf8", penwidth=2];
32
+ Skill -> CI [label="pwn --ai", color="#38bdf8"];
33
+ Cron -> CI [color="#38bdf8"];
34
+ }
@@ -0,0 +1,60 @@
1
+ digraph "PWN_MemorySkills" {
2
+ graph [
3
+ label=<<B>Persistent Knowledge — Memory · Skills · Sessions</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">everything under ~/.pwn/ that shapes future prompts</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=TB, splines=spline, nodesep=0.55, ranksep=0.95,
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_write {
14
+ label="Write-Side Tools"; fontcolor="#a7f3d0"; style=rounded;
15
+ color="#047857"; bgcolor="#022c22";
16
+ Rem [label="memory_remember\nkey · value · category", fillcolor="#6ee7b7"];
17
+ Skc [label="skill_create\nskill_add_reference", fillcolor="#6ee7b7"];
18
+ Note [label="learning_note_outcome\nlearning_reflect", fillcolor="#6ee7b7"];
19
+ Dist [label="learning_distill_skill\n(session → skill)", fillcolor="#6ee7b7"];
20
+ }
21
+ {rank=same; Rem; Skc; Note; Dist}
22
+
23
+ subgraph cluster_files {
24
+ label="~/.pwn/"; fontcolor="#fde68a"; style=rounded;
25
+ color="#a16207"; bgcolor="#422006";
26
+ Fmem [label="memory.json\nfact · pref · lesson · env", shape=cylinder, fillcolor="#fcd34d"];
27
+ Fskl [label="skills/*.md\nYAML front-matter refs", shape=cylinder, fillcolor="#fcd34d"];
28
+ Flrn [label="learning.jsonl\noutcome log", shape=cylinder, fillcolor="#fcd34d"];
29
+ Fses [label="sessions/*.jsonl\ntranscripts", shape=cylinder, fillcolor="#fcd34d"];
30
+ }
31
+ {rank=same; Fmem; Fskl; Flrn; Fses}
32
+
33
+ subgraph cluster_read {
34
+ label="Read-Side / Injection"; fontcolor="#ddd6fe"; style=rounded;
35
+ color="#6d28d9"; bgcolor="#2e1065";
36
+ Rec [label="memory_recall", fillcolor="#c4b5fd"];
37
+ Skv [label="skill_list · view", fillcolor="#c4b5fd"];
38
+ Out [label="learning_outcomes\nlearning_stats", fillcolor="#c4b5fd"];
39
+ Sesv [label="sessions_view\nsessions_current", fillcolor="#c4b5fd"];
40
+ }
41
+ {rank=same; Rec; Skv; Out; Sesv}
42
+
43
+ Prompt [label="PromptBuilder\nMEMORY + SKILLS + LEARNING blocks", fillcolor="#7dd3fc", penwidth=2];
44
+
45
+ Rem -> Fmem [color="#f59e0b"];
46
+ Skc -> Fskl [color="#f59e0b"];
47
+ Note -> Flrn [color="#f59e0b"];
48
+ Dist -> Fskl [color="#f59e0b"];
49
+ Dist -> Fses [dir=back, style=dashed, color="#fbbf24", label="mine"];
50
+
51
+ Fmem -> Rec [color="#a78bfa"];
52
+ Fskl -> Skv [color="#a78bfa"];
53
+ Flrn -> Out [color="#a78bfa"];
54
+ Fses -> Sesv [color="#a78bfa"];
55
+
56
+ Rec -> Prompt [color="#38bdf8"];
57
+ Skv -> Prompt [color="#38bdf8"];
58
+ Out -> Prompt [color="#38bdf8"];
59
+ Sesv -> Prompt [color="#38bdf8"];
60
+ }
@@ -0,0 +1,54 @@
1
+ digraph "PWN_Network" {
2
+ graph [
3
+ label=<<B>Network &amp; Infrastructure Testing</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">discovery → service enum → auth attacks → cloud / CI</FONT>>,
4
+ labelloc=t, fontsize=20, fontname="Helvetica",
5
+ rankdir=LR, splines=spline, nodesep=0.45, 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
+ CIDR [label="CIDR / ASN\nscope", fillcolor="#7dd3fc"];
14
+
15
+ subgraph cluster_disc {
16
+ label="Discover"; fontcolor="#a7f3d0"; style=rounded;
17
+ color="#047857"; bgcolor="#022c22";
18
+ Nmap [label="NmapIt\npwn_nmap_discover_tcp_udp", fillcolor="#6ee7b7"];
19
+ Packet [label="Plugins::Packet\nraw craft / sniff", fillcolor="#6ee7b7"];
20
+ }
21
+ subgraph cluster_svc {
22
+ label="Service Enum"; fontcolor="#fde68a"; style=rounded;
23
+ color="#a16207"; bgcolor="#422006";
24
+ Sock [label="Plugins::Sock\nbanner grab", fillcolor="#fcd34d"];
25
+ DAO [label="DAO::LDAP · Mongo\nPostgres · SQLite3", fillcolor="#fcd34d"];
26
+ MQ [label="RabbitMQ\nSlack · IRC · Mail", fillcolor="#fcd34d"];
27
+ }
28
+ subgraph cluster_auth {
29
+ label="Auth / Exploit"; fontcolor="#fecaca"; style=rounded;
30
+ color="#b91c1c"; bgcolor="#450a0a";
31
+ MSF [label="Metasploit\nmsf_postgres_login", fillcolor="#fda4af"];
32
+ Auth [label="BasicAuth · OAuth2\nAuthenticationHelper", fillcolor="#fda4af"];
33
+ }
34
+ subgraph cluster_cloud {
35
+ label="Cloud / CI"; fontcolor="#ddd6fe"; style=rounded;
36
+ color="#6d28d9"; bgcolor="#2e1065";
37
+ AWS [label="PWN::AWS::*\n90 services", fillcolor="#c4b5fd"];
38
+ Jenk [label="Plugins::Jenkins\nvSphere · Vault", fillcolor="#c4b5fd"];
39
+ }
40
+ Report [label="Reports · DefectDojo", fillcolor="#7dd3fc"];
41
+
42
+ CIDR -> Nmap [color="#38bdf8"];
43
+ CIDR -> Packet [color="#38bdf8"];
44
+ Nmap -> Sock [color="#f59e0b"];
45
+ Nmap -> DAO [color="#f59e0b"];
46
+ Packet -> MQ [color="#f59e0b"];
47
+ Sock -> MSF [color="#fb7185"];
48
+ DAO -> Auth [color="#fb7185"];
49
+ MQ -> Auth [color="#fb7185"];
50
+ MSF -> AWS [color="#a78bfa"];
51
+ Auth -> Jenk [color="#a78bfa"];
52
+ AWS -> Report [color="#38bdf8"];
53
+ Jenk -> Report [color="#38bdf8"];
54
+ }