pwn 0.5.615 → 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.
- checksums.yaml +4 -4
- data/README.md +109 -85
- data/README.md.bak +200 -0
- data/bin/pwn +47 -2
- data/bin/pwn_gqrx_scanner +75 -18
- data/documentation/AI-Integration.md +42 -26
- data/documentation/AWS.md +57 -0
- data/documentation/Agent-Tool-Registry.md +56 -0
- data/documentation/Banner.md +17 -0
- data/documentation/Blockchain.md +18 -0
- data/documentation/Bounty.md +21 -0
- data/documentation/BurpSuite.md +41 -16
- data/documentation/CLI-Drivers.md +58 -0
- data/documentation/Configuration.md +66 -0
- data/documentation/Contributing.md +33 -19
- data/documentation/Cron.md +47 -0
- data/documentation/Diagrams.md +123 -40
- data/documentation/Drivers.md +43 -16
- data/documentation/Extrospection.md +54 -0
- data/documentation/FFI.md +14 -0
- data/documentation/Fuzzing.md +36 -0
- data/documentation/General-PWN-Usage.md +50 -30
- data/documentation/Hardware.md +40 -0
- data/documentation/Home.md +78 -51
- data/documentation/How-PWN-Works.md +59 -57
- data/documentation/Installation.md +53 -28
- data/documentation/Metasploit.md +34 -0
- data/documentation/NmapIt.md +18 -12
- data/documentation/PWN.png +0 -0
- data/documentation/PWN_Contributors_and_Users.png +0 -0
- data/documentation/Persistence.md +38 -0
- data/documentation/Plugins.md +97 -47
- data/documentation/Reporting.md +25 -18
- data/documentation/SAST.md +39 -22
- data/documentation/SDR.md +40 -0
- data/documentation/Sessions.md +39 -0
- data/documentation/Skills-Memory-Learning.md +49 -29
- data/documentation/Swarm.md +71 -0
- data/documentation/Transparent-Browser.md +26 -22
- data/documentation/Troubleshooting.md +44 -25
- data/documentation/WWW.md +32 -0
- data/documentation/What-is-PWN.md +51 -32
- data/documentation/Why-PWN.md +41 -11
- data/documentation/diagrams/agent-tool-registry.svg +284 -0
- data/documentation/diagrams/ai-integration-tool-calling.svg +141 -103
- data/documentation/diagrams/aws-cloud-security.svg +166 -0
- data/documentation/diagrams/build.sh +20 -0
- data/documentation/diagrams/burp-vs-zap-preference.svg +47 -62
- data/documentation/diagrams/code-scanning-sast.svg +139 -79
- data/documentation/diagrams/cron-scheduling.svg +148 -0
- data/documentation/diagrams/dot/_THEME.md +27 -0
- data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
- data/documentation/diagrams/dot/ai-integration-tool-calling.dot +47 -20
- data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
- data/documentation/diagrams/dot/burp-vs-zap-preference.dot +23 -12
- data/documentation/diagrams/dot/code-scanning-sast.dot +46 -18
- data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
- data/documentation/diagrams/dot/driver-framework.dot +36 -14
- data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
- data/documentation/diagrams/dot/fuzzing-workflow.dot +44 -24
- data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
- data/documentation/diagrams/dot/history-to-drivers.dot +31 -17
- data/documentation/diagrams/dot/memory-skills-detailed.dot +57 -25
- data/documentation/diagrams/dot/network-infra-testing.dot +51 -19
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +110 -44
- data/documentation/diagrams/dot/penetration-testing-workflow.dot +56 -25
- data/documentation/diagrams/dot/persistence-filesystem.dot +29 -0
- data/documentation/diagrams/dot/plugin-ecosystem.dot +41 -27
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +87 -46
- data/documentation/diagrams/dot/pwn-repl-prototyping.dot +49 -30
- data/documentation/diagrams/dot/reporting-pipeline.dot +43 -14
- data/documentation/diagrams/dot/reverse-engineering-flow.dot +40 -18
- data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
- data/documentation/diagrams/dot/sessions-cron-automation.dot +41 -14
- data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
- data/documentation/diagrams/dot/web-application-testing.dot +45 -23
- data/documentation/diagrams/dot/zero-day-research-flow.dot +46 -24
- data/documentation/diagrams/driver-framework.svg +87 -66
- data/documentation/diagrams/extrospection-world-awareness.svg +185 -0
- data/documentation/diagrams/fuzzing-workflow.svg +128 -115
- data/documentation/diagrams/hardware-hacking.svg +163 -0
- data/documentation/diagrams/history-to-drivers.svg +84 -82
- data/documentation/diagrams/memory-skills-detailed.svg +167 -119
- data/documentation/diagrams/network-infra-testing.svg +146 -84
- data/documentation/diagrams/overall-pwn-architecture.svg +356 -185
- data/documentation/diagrams/penetration-testing-workflow.svg +161 -108
- data/documentation/diagrams/persistence-filesystem.svg +174 -0
- data/documentation/diagrams/plugin-ecosystem.svg +225 -121
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +257 -185
- data/documentation/diagrams/pwn-repl-prototyping.svg +126 -137
- data/documentation/diagrams/reporting-pipeline.svg +128 -68
- data/documentation/diagrams/reverse-engineering-flow.svg +100 -80
- data/documentation/diagrams/sdr-radio-flow.svg +146 -0
- data/documentation/diagrams/sessions-cron-automation.svg +112 -68
- data/documentation/diagrams/swarm-multi-agent.svg +225 -0
- data/documentation/diagrams/web-application-testing.svg +136 -100
- data/documentation/diagrams/zero-day-research-flow.svg +116 -112
- data/documentation/fax-spectrogram.png +0 -0
- data/documentation/fax-waveform.png +0 -0
- data/documentation/pwn-REPL.md +40 -24
- data/documentation/pwn-ai-Agent.md +59 -30
- data/documentation/pwn_android_war_dialer_session.png +0 -0
- data/documentation/pwn_install.png +0 -0
- data/documentation/pwn_wallpaper.jpg +0 -0
- data/documentation/ringing-spectrogram.png +0 -0
- data/documentation/ringing-waveform.png +0 -0
- data/git_commit.sh +1 -1
- data/lib/pwn/ai/agent/assembly.rb +1 -1
- data/lib/pwn/ai/agent/btc.rb +1 -1
- data/lib/pwn/ai/agent/burp_suite.rb +1 -1
- data/lib/pwn/ai/agent/extrospection.rb +618 -0
- data/lib/pwn/ai/agent/gqrx.rb +2 -2
- data/lib/pwn/ai/agent/hacker_one.rb +1 -1
- data/lib/pwn/ai/agent/introspection.rb +91 -0
- data/lib/pwn/ai/agent/learning.rb +6 -4
- data/lib/pwn/ai/agent/loop.rb +15 -0
- data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
- data/lib/pwn/ai/agent/sast.rb +1 -1
- data/lib/pwn/ai/agent/swarm.rb +437 -0
- data/lib/pwn/ai/agent/tools/cron.rb +163 -0
- data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
- data/lib/pwn/ai/agent/tools/learning.rb +108 -0
- data/lib/pwn/ai/agent/tools/memory.rb +27 -0
- data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
- data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
- data/lib/pwn/ai/agent/tools/skills.rb +30 -0
- data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
- data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
- data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
- data/lib/pwn/ai/agent.rb +3 -0
- data/lib/pwn/ai/anthropic.rb +19 -4
- data/lib/pwn/ai.rb +0 -1
- data/lib/pwn/config.rb +10 -23
- data/lib/pwn/cron.rb +16 -7
- data/lib/pwn/plugins/repl.rb +90 -281
- data/lib/pwn/sdr/decoder/base.rb +251 -0
- data/lib/pwn/sdr/decoder/gsm.rb +84 -185
- data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
- data/lib/pwn/sdr/decoder.rb +1 -0
- data/lib/pwn/sdr/gqrx.rb +446 -65
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
- data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
- data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
- data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
- data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
- data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
- data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
- data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
- data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
- data/third_party/pwn_rdoc.jsonl +199 -37
- metadata +65 -3
- data/lib/pwn/ai/introspection.rb +0 -76
|
@@ -1,31 +1,45 @@
|
|
|
1
|
-
digraph "
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
digraph "PWN_Plugins" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>PWN::Plugins — 66 Modules by Category</B>>,
|
|
4
|
+
labelloc=t, fontsize=20, fontname="Helvetica",
|
|
5
|
+
rankdir=LR, splines=spline, nodesep=0.25, ranksep=1.5,
|
|
6
|
+
bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
|
|
7
|
+
];
|
|
8
|
+
node [fontname="Helvetica", fontsize=9, style="filled,rounded",
|
|
9
|
+
shape=box, penwidth=1.2, color="#334155", fontcolor="#0f172a"];
|
|
10
|
+
edge [color="#94a3b8", penwidth=1.0, arrowsize=0.6];
|
|
5
11
|
|
|
6
|
-
|
|
7
|
-
Recon [label="Recon & Discovery\n(NmapIt, Shodan, IPInfo,\nHunter, crt.sh, Git)"];
|
|
8
|
-
Web [label="Web & Proxy\n(TransparentBrowser,\nBurpSuite, Zaproxy,\nSpider, URI Buster)"];
|
|
9
|
-
Vuln [label="Vulnerability\n(Fuzz, Metasploit,\nNessus, OpenVAS,\nNexpose, DefectDojo)"];
|
|
10
|
-
Auth [label="Auth & Access\n(OAuth2, BasicAuth,\nDAOs, Vault)"];
|
|
11
|
-
Infra [label="Infrastructure\n(Jenkins, AWS, Jira,\nRabbitMQ, Vsphere)"];
|
|
12
|
-
LowLevel [label="Low Level &\nHardware\n(Serial, BusPirate,\nPacket, Sock, Tor,\nAndroid, Assembly)"];
|
|
13
|
-
Util [label="Utilities\n(FileFu, Char, XXD,\nPS, Reports helpers)"];
|
|
14
|
-
SDR [label="SDR & RF\n(SDR, gqrx)"];
|
|
15
|
-
Other [label="Misc\n(BeEF, OCR, PDFParse,\nScannableCodes, etc.)"];
|
|
12
|
+
Root [label="PWN::Plugins", fillcolor="#7dd3fc", fontsize=14, penwidth=2];
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
subgraph cluster_cat {
|
|
15
|
+
label=""; style=invis;
|
|
16
|
+
Web [label="Web / Proxy", fillcolor="#6ee7b7"];
|
|
17
|
+
Net [label="Network", fillcolor="#6ee7b7"];
|
|
18
|
+
Xpl [label="Exploitation", fillcolor="#6ee7b7"];
|
|
19
|
+
Osint[label="OSINT", fillcolor="#6ee7b7"];
|
|
20
|
+
Data [label="Data / DAO", fillcolor="#6ee7b7"];
|
|
21
|
+
Auth [label="Auth", fillcolor="#6ee7b7"];
|
|
22
|
+
HW [label="Hardware", fillcolor="#6ee7b7"];
|
|
23
|
+
CI [label="CI / DevOps", fillcolor="#6ee7b7"];
|
|
24
|
+
Comm [label="Comms", fillcolor="#6ee7b7"];
|
|
25
|
+
Util [label="Utility", fillcolor="#6ee7b7"];
|
|
26
|
+
}
|
|
27
|
+
{rank=same; Web; Net; Xpl; Osint; Data; Auth; HW; CI; Comm; Util}
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
node [fillcolor="#fcd34d"];
|
|
30
|
+
w [label="BurpSuite ⭐ · Zaproxy\nTransparentBrowser · Spider\nOpenAPI · URIScheme"];
|
|
31
|
+
n [label="NmapIt · Sock · Packet\nTor · IPInfo"];
|
|
32
|
+
x [label="Metasploit · Fuzz\nBeEF · Assembly"];
|
|
33
|
+
o [label="Shodan · Hunter\nGithub · HackerOne"];
|
|
34
|
+
d [label="DAO::LDAP/Mongo/PG/SQLite\nJSONPathify · PDFParse · OCR"];
|
|
35
|
+
a [label="OAuth2 · BasicAuth\nAuthenticationHelper · Vault"];
|
|
36
|
+
h [label="Serial · BusPirate\nMSR206 · Android · BareSIP"];
|
|
37
|
+
c [label="Jenkins · Git · vSphere\nDefectDojo · BlackDuck"];
|
|
38
|
+
m [label="MailAgent · SlackClient\nIRC · RabbitMQ · TwitterAPI · Voice"];
|
|
39
|
+
u [label="FileFu · ThreadPool · Log\nChar · XXD · DetectOS\nScannableCodes · CreditCard\nSSN · EIN · VIN · Pony · PS"];
|
|
40
|
+
|
|
41
|
+
Root->Web; Root->Net; Root->Xpl; Root->Osint; Root->Data;
|
|
42
|
+
Root->Auth; Root->HW; Root->CI; Root->Comm; Root->Util;
|
|
43
|
+
Web->w; Net->n; Xpl->x; Osint->o; Data->d;
|
|
44
|
+
Auth->a; HW->h; CI->c; Comm->m; Util->u;
|
|
31
45
|
}
|
|
@@ -1,57 +1,98 @@
|
|
|
1
|
-
digraph "
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
Introspection [label="Introspection &\nReflection", shape=ellipse, style=filled, fillcolor=lightblue];
|
|
19
|
-
}
|
|
1
|
+
digraph "PWN_AI_Feedback_Learning_Loop" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>pwn-ai — Closed Self-Improvement Loop</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">Introspection (self) ⟷ Extrospection (world)</FONT>>,
|
|
4
|
+
labelloc=t, fontsize=20, fontname="Helvetica",
|
|
5
|
+
rankdir=TB, splines=spline, nodesep=0.6, ranksep=1.0,
|
|
6
|
+
bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true, compound=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
|
+
/* L0 ─ actors */
|
|
14
|
+
User [label="👤 Researcher", fillcolor="#7dd3fc"];
|
|
15
|
+
LLM [label="🤖 LLM Provider", fillcolor="#c4b5fd"];
|
|
16
|
+
World [label="🌍 Host · Net · Repo\nToolchain · Intel feeds", fillcolor="#fda4af"];
|
|
17
|
+
{rank=same; User; LLM; World}
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
/* L1 ─ agent core */
|
|
20
|
+
subgraph cluster_core {
|
|
21
|
+
label="PWN::AI::Agent::Loop"; fontcolor="#ddd6fe";
|
|
22
|
+
style=rounded; color="#6d28d9"; bgcolor="#2e1065"; penwidth=2;
|
|
23
|
+
Prompt [label="PromptBuilder\ninject context", fillcolor="#c4b5fd"];
|
|
24
|
+
Dispatch [label="Dispatch\ntool calls", fillcolor="#c4b5fd"];
|
|
25
|
+
Result [label="Result\nfinal answer", fillcolor="#c4b5fd"];
|
|
26
|
+
}
|
|
27
|
+
{rank=same; Prompt; Dispatch; Result}
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
/* L2 ─ dual engines */
|
|
30
|
+
subgraph cluster_intro {
|
|
31
|
+
label="INTROSPECTION (self)"; fontcolor="#a7f3d0";
|
|
32
|
+
style=rounded; color="#047857"; bgcolor="#022c22"; penwidth=2;
|
|
33
|
+
Metrics [label="Metrics\nper-tool success · avg ms", fillcolor="#6ee7b7"];
|
|
34
|
+
Learning [label="Learning\nnote_outcome · reflect\nconsolidate · distill_skill", fillcolor="#6ee7b7"];
|
|
35
|
+
}
|
|
36
|
+
subgraph cluster_extro {
|
|
37
|
+
label="EXTROSPECTION (world)"; fontcolor="#fde68a";
|
|
38
|
+
style=rounded; color="#a16207"; bgcolor="#422006"; penwidth=2;
|
|
39
|
+
Snapshot [label="snapshot · drift\nhost/net/toolchain/repo", fillcolor="#fcd34d"];
|
|
40
|
+
Observe [label="observe · intel\nrecon facts · CVE feed", fillcolor="#fcd34d"];
|
|
41
|
+
}
|
|
42
|
+
{rank=same; Metrics; Learning; Snapshot; Observe}
|
|
30
43
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
ToolCall -> REPL [label="pwn_eval(code) or shell(cmd)"];
|
|
35
|
-
REPL -> ToolCall [label="Results / stdout / exceptions"];
|
|
36
|
-
ToolCall -> LLM [label="If needed for decisioning"];
|
|
37
|
-
LLM -> ToolCall [label="Responses"];
|
|
44
|
+
/* L3 ─ correlate */
|
|
45
|
+
Correlate [label="extro_correlate()\n\"I did it wrong\" vs \"the world changed\"",
|
|
46
|
+
fillcolor="#fda4af", penwidth=2, fontsize=12];
|
|
38
47
|
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
/* L4 ─ persistence */
|
|
49
|
+
subgraph cluster_store {
|
|
50
|
+
label="~/.pwn/"; fontcolor="#94a3b8";
|
|
51
|
+
style="rounded,dashed"; color="#334155"; bgcolor="#1e293b";
|
|
52
|
+
Fmet [label="metrics.json", shape=cylinder, fillcolor="#fcd34d"];
|
|
53
|
+
Flrn [label="learning.jsonl", shape=cylinder, fillcolor="#fcd34d"];
|
|
54
|
+
Fmem [label="memory.json", shape=cylinder, fillcolor="#fcd34d"];
|
|
55
|
+
Fskl [label="skills/*.md", shape=cylinder, fillcolor="#fcd34d"];
|
|
56
|
+
Fext [label="extrospection.json", shape=cylinder, fillcolor="#fcd34d"];
|
|
57
|
+
}
|
|
58
|
+
{rank=same; Fmet; Flrn; Fmem; Fskl; Fext}
|
|
41
59
|
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
/* L0 → L1 */
|
|
61
|
+
User -> Prompt [label="task", color="#38bdf8", penwidth=2];
|
|
62
|
+
LLM -> Dispatch [label="tool_calls", dir=both, color="#a78bfa", penwidth=2];
|
|
63
|
+
World-> Result [style=invis];
|
|
44
64
|
|
|
45
|
-
|
|
46
|
-
|
|
65
|
+
/* L1 internal */
|
|
66
|
+
Prompt -> Dispatch [color="#a78bfa"];
|
|
67
|
+
Dispatch -> Result [color="#a78bfa"];
|
|
47
68
|
|
|
48
|
-
|
|
49
|
-
|
|
69
|
+
/* L1 → L2 */
|
|
70
|
+
Dispatch -> Metrics [label="record()", color="#34d399"];
|
|
71
|
+
Result -> Learning [label="auto_reflect", color="#34d399"];
|
|
72
|
+
Dispatch -> Snapshot [label="probe", color="#f59e0b"];
|
|
73
|
+
Result -> Observe [label="auto_extrospect", color="#f59e0b"];
|
|
74
|
+
World -> Snapshot [color="#fb7185", constraint=false];
|
|
75
|
+
World -> Observe [color="#fb7185", constraint=false];
|
|
50
76
|
|
|
51
|
-
|
|
77
|
+
/* L2 → L3 */
|
|
78
|
+
Metrics -> Correlate [color="#34d399"];
|
|
79
|
+
Learning -> Correlate [color="#34d399"];
|
|
80
|
+
Snapshot -> Correlate [color="#f59e0b"];
|
|
81
|
+
Observe -> Correlate [color="#f59e0b"];
|
|
52
82
|
|
|
53
|
-
|
|
54
|
-
|
|
83
|
+
/* L3 → L4 */
|
|
84
|
+
Correlate -> Fmet [style=invis];
|
|
85
|
+
Metrics -> Fmet [color="#94a3b8"];
|
|
86
|
+
Learning -> Flrn [color="#94a3b8"];
|
|
87
|
+
Learning -> Fmem [label="lesson", color="#94a3b8"];
|
|
88
|
+
Learning -> Fskl [label="skill", color="#94a3b8"];
|
|
89
|
+
Observe -> Fext [color="#94a3b8"];
|
|
55
90
|
|
|
56
|
-
|
|
91
|
+
/* feedback (dashed, non-constraining) */
|
|
92
|
+
Fmem -> Prompt [label="MEMORY block", style=dashed, color="#fbbf24", constraint=false];
|
|
93
|
+
Fskl -> Prompt [label="SKILLS block", style=dashed, color="#fbbf24", constraint=false];
|
|
94
|
+
Fext -> Prompt [label="EXTRO block", style=dashed, color="#fbbf24", constraint=false];
|
|
95
|
+
Correlate -> Prompt [label="findings → next run", style=dashed, color="#fb7185",
|
|
96
|
+
constraint=false, penwidth=2];
|
|
97
|
+
Result -> User [label="answer", color="#38bdf8", constraint=false, penwidth=2];
|
|
57
98
|
}
|
|
@@ -1,37 +1,56 @@
|
|
|
1
|
-
digraph "
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
digraph "PWN_REPL" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>The pwn REPL — Interactive Prototyping</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">Pry + full PWN:: preload + custom commands</FONT>>,
|
|
4
|
+
labelloc=t, fontsize=20, fontname="Helvetica",
|
|
5
|
+
rankdir=TB, splines=spline, nodesep=0.55, 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];
|
|
5
12
|
|
|
6
|
-
User [label="
|
|
7
|
-
Shell [label="shell (pwn command)", shape=box];
|
|
8
|
-
Pry [label="Pry REPL\n(PWN preloaded)", shape=ellipse, fillcolor=lightgreen, style=filled];
|
|
13
|
+
User [label="👤 $ pwn", fillcolor="#7dd3fc"];
|
|
9
14
|
|
|
10
|
-
subgraph
|
|
11
|
-
label="
|
|
12
|
-
color=
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Driver [label="PWN::Driver\n(Parser, auto_opts)", shape=box];
|
|
17
|
-
AI [label="PWN::AI::\n(Agent, Grok, etc.)", shape=box];
|
|
15
|
+
subgraph cluster_repl {
|
|
16
|
+
label="Plugins::REPL (Pry)"; fontcolor="#ddd6fe"; style=rounded;
|
|
17
|
+
color="#6d28d9"; bgcolor="#2e1065"; penwidth=2;
|
|
18
|
+
Prompt [label="pwn[v0.5.x]:001 >>>", fillcolor="#c4b5fd"];
|
|
19
|
+
Preload [label="autoload PWN::*\nBanner · MonkeyPatch", fillcolor="#c4b5fd"];
|
|
20
|
+
Hist [label="~/.pwn_history\nreplay · edit", fillcolor="#c4b5fd"];
|
|
18
21
|
}
|
|
22
|
+
{rank=same; Prompt; Preload; Hist}
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
subgraph cluster_cmds {
|
|
25
|
+
label="Custom Commands"; fontcolor="#a7f3d0"; style=rounded;
|
|
26
|
+
color="#047857"; bgcolor="#022c22";
|
|
27
|
+
CAI [label="pwn-ai", fillcolor="#6ee7b7"];
|
|
28
|
+
CASM [label="pwn-asm", fillcolor="#6ee7b7"];
|
|
29
|
+
CMEM [label="pwn-ai-memory", fillcolor="#6ee7b7"];
|
|
30
|
+
CSESS [label="pwn-ai-sessions",fillcolor="#6ee7b7"];
|
|
31
|
+
CCRON [label="pwn-ai-cron", fillcolor="#6ee7b7"];
|
|
32
|
+
CDEL [label="pwn-ai-delegate",fillcolor="#6ee7b7"];
|
|
33
|
+
}
|
|
34
|
+
{rank=same; CAI; CASM; CMEM; CSESS; CCRON; CDEL}
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
subgraph cluster_ns {
|
|
37
|
+
label="Live Namespace"; fontcolor="#fde68a"; style=rounded;
|
|
38
|
+
color="#a16207"; bgcolor="#422006";
|
|
39
|
+
NS [label="PWN::Plugins · PWN::SAST · PWN::AWS · PWN::SDR\nPWN::WWW · PWN::Reports · PWN::AI · PWN::Memory",
|
|
40
|
+
fillcolor="#fcd34d", fontsize=11];
|
|
41
|
+
}
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
User -> Prompt [color="#38bdf8", penwidth=2];
|
|
44
|
+
User -> Preload [style=invis];
|
|
45
|
+
User -> Hist [style=invis];
|
|
46
|
+
Prompt -> CAI [color="#34d399"];
|
|
47
|
+
Prompt -> CASM [color="#34d399"];
|
|
48
|
+
Preload -> CMEM [color="#34d399"];
|
|
49
|
+
Preload -> CSESS [color="#34d399"];
|
|
50
|
+
Hist -> CCRON [color="#34d399"];
|
|
51
|
+
Hist -> CDEL [color="#34d399"];
|
|
52
|
+
CAI -> NS [color="#f59e0b"];
|
|
53
|
+
CASM -> NS [color="#f59e0b"];
|
|
54
|
+
CMEM -> NS [color="#f59e0b"];
|
|
55
|
+
Prompt -> NS [label="direct call", color="#f59e0b", constraint=false, penwidth=2];
|
|
37
56
|
}
|
|
@@ -1,17 +1,46 @@
|
|
|
1
|
-
digraph "
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
digraph "PWN_Reports" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>PWN::Reports — Findings Pipeline</B>>,
|
|
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];
|
|
4
12
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
subgraph cluster_src {
|
|
14
|
+
label="Finding Sources"; fontcolor="#a7f3d0"; style=rounded;
|
|
15
|
+
color="#047857"; bgcolor="#022c22";
|
|
16
|
+
Sast [label="PWN::SAST", fillcolor="#6ee7b7"];
|
|
17
|
+
Fuzz [label="Plugins::Fuzz", fillcolor="#6ee7b7"];
|
|
18
|
+
Uri [label="URI Buster", fillcolor="#6ee7b7"];
|
|
19
|
+
Phone[label="BareSIP recon", fillcolor="#6ee7b7"];
|
|
20
|
+
}
|
|
21
|
+
subgraph cluster_gen {
|
|
22
|
+
label="Generators"; fontcolor="#fde68a"; style=rounded;
|
|
23
|
+
color="#a16207"; bgcolor="#422006";
|
|
24
|
+
Rsast [label="Reports::SAST", fillcolor="#fcd34d"];
|
|
25
|
+
Rfuzz [label="Reports::Fuzz", fillcolor="#fcd34d"];
|
|
26
|
+
Ruri [label="Reports::URIBuster", fillcolor="#fcd34d"];
|
|
27
|
+
Rphone[label="Reports::Phone", fillcolor="#fcd34d"];
|
|
28
|
+
}
|
|
29
|
+
subgraph cluster_out {
|
|
30
|
+
label="Delivery"; fontcolor="#ddd6fe"; style=rounded;
|
|
31
|
+
color="#6d28d9"; bgcolor="#2e1065";
|
|
32
|
+
HTML [label="HTML\n(Header/Footer)", fillcolor="#c4b5fd"];
|
|
33
|
+
JSON [label="JSON", fillcolor="#c4b5fd"];
|
|
34
|
+
DD [label="DefectDojo\nimport/reimport", fillcolor="#c4b5fd"];
|
|
35
|
+
Jira [label="JiraDataCenter", fillcolor="#c4b5fd"];
|
|
36
|
+
}
|
|
10
37
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
38
|
+
Sast -> Rsast [color="#f59e0b"];
|
|
39
|
+
Fuzz -> Rfuzz [color="#f59e0b"];
|
|
40
|
+
Uri -> Ruri [color="#f59e0b"];
|
|
41
|
+
Phone -> Rphone [color="#f59e0b"];
|
|
42
|
+
Rsast -> HTML [color="#a78bfa"];
|
|
43
|
+
Rfuzz -> JSON [color="#a78bfa"];
|
|
44
|
+
Ruri -> DD [color="#a78bfa"];
|
|
45
|
+
Rphone -> Jira [color="#a78bfa"];
|
|
17
46
|
}
|
|
@@ -1,21 +1,43 @@
|
|
|
1
|
-
digraph "
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
digraph "PWN_RE" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>Reverse Engineering & Binary Exploitation</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">pwn-asm · Assembly · XXD · FFI · Radare2 banners</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];
|
|
4
12
|
|
|
5
|
-
|
|
6
|
-
RE [label="RE Tools\n(XXD, Assembly,\nStrings, objdump,\nRadare/Ghidra via shell)"];
|
|
7
|
-
PWNRE [label="PWN::Plugins::\nAssembly, XXD,\nSerial, BusPirate"];
|
|
8
|
-
Analysis [label="Analysis\n(Deobfuscate, patch,\nidentify vulns)", shape=ellipse];
|
|
9
|
-
FuzzRE [label="Targeted Fuzzing"];
|
|
10
|
-
ExploitRE [label="Craft Exploit\n(ROP, shellcode)"];
|
|
11
|
-
Test [label="Validate in REPL"];
|
|
13
|
+
Bin [label="🔎 Binary / Firmware", fillcolor="#7dd3fc"];
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
subgraph cluster_static {
|
|
16
|
+
label="Static"; fontcolor="#a7f3d0"; style=rounded;
|
|
17
|
+
color="#047857"; bgcolor="#022c22";
|
|
18
|
+
XXD [label="Plugins::XXD\nhex dump / patch", fillcolor="#6ee7b7"];
|
|
19
|
+
BDBA [label="BlackDuckBinaryAnalysis\nSBOM · CVE match", fillcolor="#6ee7b7"];
|
|
20
|
+
}
|
|
21
|
+
subgraph cluster_disasm {
|
|
22
|
+
label="Disassemble"; fontcolor="#fde68a"; style=rounded;
|
|
23
|
+
color="#a16207"; bgcolor="#422006";
|
|
24
|
+
Asm [label="Plugins::Assembly\nopcodes ↔ asm\nmulti-arch", fillcolor="#fcd34d"];
|
|
25
|
+
PwnAsm [label="pwn-asm REPL\nmultiline shellcode", fillcolor="#fcd34d"];
|
|
26
|
+
}
|
|
27
|
+
subgraph cluster_dyn {
|
|
28
|
+
label="Dynamic"; fontcolor="#fecaca"; style=rounded;
|
|
29
|
+
color="#b91c1c"; bgcolor="#450a0a";
|
|
30
|
+
FFI [label="PWN::FFI::Stdio\nnative calls", fillcolor="#fda4af"];
|
|
31
|
+
Fuzz [label="Plugins::Fuzz\ntargeted crashes", fillcolor="#fda4af"];
|
|
32
|
+
}
|
|
33
|
+
Xpl [label="Exploit PoC\nMetasploit module", fillcolor="#c4b5fd"];
|
|
34
|
+
|
|
35
|
+
Bin -> XXD [color="#38bdf8"];
|
|
36
|
+
Bin -> BDBA [color="#38bdf8"];
|
|
37
|
+
XXD -> Asm [color="#f59e0b"];
|
|
38
|
+
BDBA -> PwnAsm [color="#f59e0b"];
|
|
39
|
+
Asm -> FFI [color="#fb7185"];
|
|
40
|
+
PwnAsm -> Fuzz [color="#fb7185"];
|
|
41
|
+
FFI -> Xpl [color="#a78bfa"];
|
|
42
|
+
Fuzz -> Xpl [color="#a78bfa"];
|
|
21
43
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
digraph "PWN_SDR" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>PWN::SDR — Software-Defined Radio & RF Hacking</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">GQRX · FlipperZero · RFIDler · SonMicro · FrequencyAllocation</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
|
+
RF [label="📡 RF Spectrum", fillcolor="#fda4af"];
|
|
14
|
+
|
|
15
|
+
subgraph cluster_hw {
|
|
16
|
+
label="Hardware"; fontcolor="#a7f3d0"; style=rounded;
|
|
17
|
+
color="#047857"; bgcolor="#022c22";
|
|
18
|
+
SDRhw [label="RTL-SDR / HackRF\n(via GQRX)", fillcolor="#6ee7b7"];
|
|
19
|
+
Flipper [label="SDR::FlipperZero", fillcolor="#6ee7b7"];
|
|
20
|
+
RFID [label="SDR::RFIDler\nSonMicroRFID", fillcolor="#6ee7b7"];
|
|
21
|
+
}
|
|
22
|
+
subgraph cluster_ctrl {
|
|
23
|
+
label="Control"; fontcolor="#fde68a"; style=rounded;
|
|
24
|
+
color="#a16207"; bgcolor="#422006";
|
|
25
|
+
GQRX [label="SDR::GQRX\nremote control · scan\nspectrum snapshot", fillcolor="#fcd34d"];
|
|
26
|
+
Freq [label="SDR::FrequencyAllocation\nband lookup", fillcolor="#fcd34d"];
|
|
27
|
+
Scan [label="bin/pwn_gqrx_scanner\nfast · iterative", fillcolor="#fcd34d"];
|
|
28
|
+
}
|
|
29
|
+
subgraph cluster_dec {
|
|
30
|
+
label="Decode"; fontcolor="#ddd6fe"; style=rounded;
|
|
31
|
+
color="#6d28d9"; bgcolor="#2e1065";
|
|
32
|
+
Dec [label="SDR::Decoder::*\ndemod · protocol", fillcolor="#c4b5fd"];
|
|
33
|
+
Obs [label="extro_observe\nrecord signal intel", fillcolor="#c4b5fd"];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
RF -> SDRhw [color="#fb7185"];
|
|
37
|
+
RF -> Flipper [color="#fb7185"];
|
|
38
|
+
RF -> RFID [color="#fb7185"];
|
|
39
|
+
SDRhw -> GQRX [color="#f59e0b"];
|
|
40
|
+
Flipper -> Freq [color="#f59e0b"];
|
|
41
|
+
RFID -> Scan [color="#f59e0b"];
|
|
42
|
+
GQRX -> Dec [color="#a78bfa"];
|
|
43
|
+
Freq -> Dec [color="#a78bfa"];
|
|
44
|
+
Scan -> Obs [color="#a78bfa"];
|
|
45
|
+
}
|
|
@@ -1,17 +1,44 @@
|
|
|
1
|
-
digraph "
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
digraph "PWN_SessionsCron" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>Sessions ↔ Cron ↔ Swarm — Cross-Session Continuity</B>>,
|
|
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];
|
|
4
12
|
|
|
5
|
-
|
|
6
|
-
Sessions [label="PWN::Sessions\n(record/replay,\ntranscripts)", shape=cylinder, fillcolor=lightyellow];
|
|
7
|
-
Cron [label="PWN::Cron\n(scheduled tasks)", shape=ellipse, fillcolor=lightcoral];
|
|
8
|
-
Drivers [label="Drivers &\nBin Scripts"];
|
|
9
|
-
Memory [label="PWN::Memory", shape=cylinder, fillcolor=lightyellow];
|
|
13
|
+
Now [label="pwn-ai\n(interactive turn)", fillcolor="#7dd3fc"];
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
subgraph cluster_p {
|
|
16
|
+
label="~/.pwn/"; fontcolor="#fde68a"; style=rounded;
|
|
17
|
+
color="#a16207"; bgcolor="#422006";
|
|
18
|
+
Sess [label="sessions/<id>.jsonl", shape=cylinder, fillcolor="#fcd34d"];
|
|
19
|
+
Cron [label="cron/jobs.yml", shape=cylinder, fillcolor="#fcd34d"];
|
|
20
|
+
Swarm [label="swarm/<id>/bus.jsonl",shape=cylinder, fillcolor="#fcd34d"];
|
|
21
|
+
}
|
|
22
|
+
{rank=same; Sess; Cron; Swarm}
|
|
23
|
+
|
|
24
|
+
subgraph cluster_later {
|
|
25
|
+
label="Later / Elsewhere"; fontcolor="#ddd6fe"; style=rounded;
|
|
26
|
+
color="#6d28d9"; bgcolor="#2e1065";
|
|
27
|
+
Reflect [label="learning_reflect\n(session_id)", fillcolor="#c4b5fd"];
|
|
28
|
+
Fire [label="crontab → PWN::Cron.run", fillcolor="#c4b5fd"];
|
|
29
|
+
Resume [label="agent_debate\n(swarm_id: ...)", fillcolor="#c4b5fd"];
|
|
30
|
+
}
|
|
31
|
+
{rank=same; Reflect; Fire; Resume}
|
|
32
|
+
|
|
33
|
+
Next [label="Next pwn-ai session\ncontext restored", fillcolor="#7dd3fc"];
|
|
34
|
+
|
|
35
|
+
Now -> Sess [label="append", color="#f59e0b"];
|
|
36
|
+
Now -> Cron [label="cron_create", color="#f59e0b"];
|
|
37
|
+
Now -> Swarm [label="agent_ask", color="#f59e0b"];
|
|
38
|
+
Sess -> Reflect [color="#a78bfa"];
|
|
39
|
+
Cron -> Fire [color="#a78bfa"];
|
|
40
|
+
Swarm -> Resume [color="#a78bfa"];
|
|
41
|
+
Reflect -> Next [color="#38bdf8"];
|
|
42
|
+
Fire -> Next [color="#38bdf8"];
|
|
43
|
+
Resume -> Next [color="#38bdf8"];
|
|
17
44
|
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
digraph "PWN_Swarm" {
|
|
2
|
+
graph [
|
|
3
|
+
label=<<B>PWN::AI::Agent::Swarm — Native Multi-Agent Orchestration</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">personas · ask · debate · broadcast · shared bus (no daemon)</FONT>>,
|
|
4
|
+
labelloc=t, fontsize=20, fontname="Helvetica",
|
|
5
|
+
rankdir=TB, splines=spline, nodesep=0.65, ranksep=1.0,
|
|
6
|
+
bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true, compound=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
|
+
/* L0 ─ orchestrator */
|
|
14
|
+
Orchestrator [label="👤 Orchestrator\n(you, in pwn-ai)", fillcolor="#7dd3fc"];
|
|
15
|
+
|
|
16
|
+
/* L1 ─ swarm verbs */
|
|
17
|
+
subgraph cluster_verbs {
|
|
18
|
+
label="Swarm Verbs (toolset: swarm)"; fontcolor="#ddd6fe";
|
|
19
|
+
style=rounded; color="#6d28d9"; bgcolor="#2e1065"; penwidth=2;
|
|
20
|
+
Spawn [label="agent_spawn\ndefine persona", fillcolor="#c4b5fd"];
|
|
21
|
+
Ask [label="agent_ask\n1 turn → 1 persona", fillcolor="#c4b5fd"];
|
|
22
|
+
Debate [label="agent_debate\nround-robin critique", fillcolor="#c4b5fd"];
|
|
23
|
+
Broadcast [label="agent_broadcast\nfan-out ensemble", fillcolor="#c4b5fd"];
|
|
24
|
+
}
|
|
25
|
+
{rank=same; Spawn; Ask; Debate; Broadcast}
|
|
26
|
+
|
|
27
|
+
/* L2 ─ personas */
|
|
28
|
+
subgraph cluster_personas {
|
|
29
|
+
label="Personas (each = full PWN::AI::Agent::Loop)"; fontcolor="#a7f3d0";
|
|
30
|
+
style=rounded; color="#047857"; bgcolor="#022c22"; penwidth=2;
|
|
31
|
+
Red [label="🔴 red_team\nengine: grok\ntoolsets: terminal,pwn", fillcolor="#6ee7b7"];
|
|
32
|
+
Blue [label="🔵 blue_team\nengine: anthropic\ntoolsets: pwn,extro", fillcolor="#6ee7b7"];
|
|
33
|
+
Recon [label="🛰 recon\nengine: ollama\ntoolsets: terminal,memory", fillcolor="#6ee7b7"];
|
|
34
|
+
Xpl [label="💥 exploit_dev\nengine: openai\ntoolsets: pwn,skills", fillcolor="#6ee7b7"];
|
|
35
|
+
}
|
|
36
|
+
{rank=same; Red; Blue; Recon; Xpl}
|
|
37
|
+
|
|
38
|
+
/* L3 ─ shared state */
|
|
39
|
+
subgraph cluster_state {
|
|
40
|
+
label="Shared State ~/.pwn/"; fontcolor="#fde68a";
|
|
41
|
+
style=rounded; color="#a16207"; bgcolor="#422006"; penwidth=2;
|
|
42
|
+
Agents [label="agents.yml\npersona registry", shape=cylinder, fillcolor="#fcd34d"];
|
|
43
|
+
Bus [label="swarm/<id>/bus.jsonl\nappend-only chat", shape=cylinder, fillcolor="#fcd34d"];
|
|
44
|
+
Pmap [label="swarm/<id>/personas.json\nname → session_id", shape=cylinder, fillcolor="#fcd34d"];
|
|
45
|
+
Sess [label="sessions/*.jsonl\nper-persona transcript", shape=cylinder, fillcolor="#fcd34d"];
|
|
46
|
+
}
|
|
47
|
+
{rank=same; Agents; Bus; Pmap; Sess}
|
|
48
|
+
|
|
49
|
+
/* edges */
|
|
50
|
+
Orchestrator -> Spawn [color="#38bdf8"];
|
|
51
|
+
Orchestrator -> Ask [color="#38bdf8"];
|
|
52
|
+
Orchestrator -> Debate [color="#38bdf8", penwidth=2];
|
|
53
|
+
Orchestrator -> Broadcast [color="#38bdf8"];
|
|
54
|
+
|
|
55
|
+
Spawn -> Red [style=invis];
|
|
56
|
+
Ask -> Red [color="#34d399"];
|
|
57
|
+
Debate -> Blue [color="#34d399"];
|
|
58
|
+
Debate -> Recon [color="#34d399"];
|
|
59
|
+
Broadcast -> Xpl [color="#34d399"];
|
|
60
|
+
|
|
61
|
+
Red -> Agents [style=invis];
|
|
62
|
+
Red -> Bus [label="append reply", color="#f59e0b"];
|
|
63
|
+
Blue -> Bus [color="#f59e0b"];
|
|
64
|
+
Recon -> Pmap [color="#f59e0b"];
|
|
65
|
+
Xpl -> Sess [color="#f59e0b"];
|
|
66
|
+
|
|
67
|
+
Spawn -> Agents [label="write", color="#f59e0b", constraint=false];
|
|
68
|
+
Bus -> Debate [label="tail → context", style=dashed, color="#fbbf24", constraint=false];
|
|
69
|
+
Bus -> Orchestrator [label="swarm_bus()", style=dashed, color="#38bdf8", constraint=false];
|
|
70
|
+
}
|