pwn 0.5.621 → 0.5.626
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -2
- data/Gemfile +1 -1
- data/README.md +7 -1
- data/bin/pwn_gqrx_scanner +78 -9
- data/documentation/Agent-Tool-Registry.md +3 -3
- data/documentation/Configuration.md +301 -47
- data/documentation/Cron.md +5 -3
- data/documentation/Diagrams.md +1 -1
- data/documentation/Extrospection.md +472 -26
- data/documentation/FFI.md +72 -8
- data/documentation/Home.md +4 -4
- data/documentation/How-PWN-Works.md +7 -3
- data/documentation/Mistakes.md +9 -0
- data/documentation/SDR.md +83 -10
- data/documentation/Skills-Memory-Learning.md +101 -11
- data/documentation/diagrams/agent-tool-registry.svg +56 -55
- data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
- data/documentation/diagrams/aws-cloud-security.svg +25 -25
- data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
- data/documentation/diagrams/code-scanning-sast.svg +25 -25
- data/documentation/diagrams/cron-scheduling.svg +23 -23
- data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
- data/documentation/diagrams/dot/extrospection-world-awareness.dot +33 -6
- data/documentation/diagrams/dot/hardware-hacking.dot +3 -1
- data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -2
- data/documentation/diagrams/dot/mistakes-negative-feedback.dot +4 -2
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +3 -3
- data/documentation/diagrams/dot/persistence-filesystem.dot +3 -3
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +10 -4
- data/documentation/diagrams/dot/sdr-radio-flow.dot +39 -16
- data/documentation/diagrams/driver-framework.svg +13 -13
- data/documentation/diagrams/extrospection-world-awareness.svg +383 -177
- data/documentation/diagrams/fuzzing-workflow.svg +24 -24
- data/documentation/diagrams/hardware-hacking.svg +84 -69
- data/documentation/diagrams/history-to-drivers.svg +18 -18
- data/documentation/diagrams/memory-skills-detailed.svg +137 -120
- data/documentation/diagrams/mistakes-negative-feedback.svg +152 -137
- data/documentation/diagrams/network-infra-testing.svg +27 -27
- data/documentation/diagrams/overall-pwn-architecture.svg +97 -97
- data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
- data/documentation/diagrams/persistence-filesystem.svg +100 -94
- data/documentation/diagrams/plugin-ecosystem.svg +35 -35
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +254 -207
- data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
- data/documentation/diagrams/reporting-pipeline.svg +18 -18
- data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
- data/documentation/diagrams/sdr-radio-flow.svg +223 -91
- data/documentation/diagrams/sessions-cron-automation.svg +18 -18
- data/documentation/diagrams/swarm-multi-agent.svg +39 -39
- data/documentation/diagrams/web-application-testing.svg +26 -26
- data/documentation/diagrams/zero-day-research-flow.svg +25 -25
- data/documentation/pwn-ai-Agent.md +16 -10
- data/documentation/pwn_silent_help_learn_demo.gif +0 -0
- 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 +2562 -57
- data/lib/pwn/ai/agent/gqrx.rb +2 -2
- data/lib/pwn/ai/agent/hacker_one.rb +1 -1
- data/lib/pwn/ai/agent/learning.rb +16 -16
- data/lib/pwn/ai/agent/loop.rb +1 -1
- data/lib/pwn/ai/agent/{introspection.rb → reflect.rb} +12 -12
- data/lib/pwn/ai/agent/sast.rb +1 -1
- data/lib/pwn/ai/agent/tools/extrospection.rb +311 -8
- data/lib/pwn/ai/agent/tools/learning.rb +7 -7
- 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 +1 -1
- data/lib/pwn/ai/open_ai.rb +10 -6
- data/lib/pwn/config.rb +5 -4
- data/lib/pwn/ffi/adalm_pluto.rb +498 -0
- data/lib/pwn/ffi/fftw.rb +192 -0
- data/lib/pwn/ffi/hack_rf.rb +193 -0
- data/lib/pwn/ffi/liquid.rb +244 -0
- data/lib/pwn/ffi/rtl_sdr.rb +210 -0
- data/lib/pwn/ffi/soapy_sdr.rb +177 -0
- data/lib/pwn/ffi/stdio.rb +9 -1
- data/lib/pwn/ffi/volk.rb +241 -0
- data/lib/pwn/ffi.rb +45 -2
- data/lib/pwn/plugins/burp_suite.rb +2 -2
- data/lib/pwn/sast/pom_version.rb +2 -2
- data/lib/pwn/sast/test_case_engine.rb +1 -1
- data/lib/pwn/sdr/decoder/adsb.rb +201 -12
- data/lib/pwn/sdr/decoder/apt.rb +19 -5
- data/lib/pwn/sdr/decoder/base.rb +314 -1
- data/lib/pwn/sdr/decoder/bluetooth.rb +91 -18
- data/lib/pwn/sdr/decoder/dect.rb +81 -23
- data/lib/pwn/sdr/decoder/dsp.rb +229 -15
- data/lib/pwn/sdr/decoder/flex.rb +23 -6
- data/lib/pwn/sdr/decoder/gps.rb +80 -18
- data/lib/pwn/sdr/decoder/gsm.rb +83 -28
- data/lib/pwn/sdr/decoder/iridium.rb +80 -18
- data/lib/pwn/sdr/decoder/lora.rb +84 -28
- data/lib/pwn/sdr/decoder/lte.rb +80 -18
- data/lib/pwn/sdr/decoder/morse.rb +23 -6
- data/lib/pwn/sdr/decoder/p25.rb +90 -31
- data/lib/pwn/sdr/decoder/pager.rb +23 -6
- data/lib/pwn/sdr/decoder/pocsag.rb +23 -6
- data/lib/pwn/sdr/decoder/rds.rb +219 -52
- data/lib/pwn/sdr/decoder/rfid.rb +81 -27
- data/lib/pwn/sdr/decoder/rtl433.rb +85 -27
- data/lib/pwn/sdr/decoder/rtty.rb +23 -6
- data/lib/pwn/sdr/decoder/wifi.rb +86 -32
- data/lib/pwn/sdr/decoder/zigbee.rb +88 -35
- data/lib/pwn/sdr/decoder.rb +6 -5
- data/lib/pwn/sdr/frequency_allocation.rb +124 -81
- data/lib/pwn/sdr/gqrx.rb +1513 -165
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/ai/agent/extrospection_spec.rb +96 -0
- data/spec/lib/pwn/ai/agent/{introspection_spec.rb → reflect_spec.rb} +3 -3
- data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +8 -24
- data/spec/lib/pwn/ffi/adalm_pluto_spec.rb +37 -0
- data/spec/lib/pwn/ffi/fftw_spec.rb +26 -0
- data/spec/lib/pwn/ffi/hack_rf_spec.rb +25 -0
- data/spec/lib/pwn/ffi/liquid_spec.rb +42 -0
- data/spec/lib/pwn/ffi/rtl_sdr_spec.rb +24 -0
- data/spec/lib/pwn/ffi/soapy_sdr_spec.rb +25 -0
- data/spec/lib/pwn/ffi/volk_spec.rb +36 -0
- data/spec/lib/pwn/sdr/decoder/base_iq_spec.rb +65 -0
- data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +50 -4
- data/spec/lib/pwn/sdr/decoder/rds_spec.rb +45 -4
- data/third_party/pwn_rdoc.jsonl +279 -30
- metadata +21 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
digraph "PWN_Extrospection" {
|
|
2
2
|
graph [
|
|
3
|
-
label=<<B>PWN::AI::Agent::Extrospection —
|
|
3
|
+
label=<<B>PWN::AI::Agent::Extrospection — On-demand sensing + ambient baseline</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">PRIMARY: intel · verify · watch · rf_tune · osint · serial · telecomm · packet · vision · voice · observe · SECONDARY: snapshot/drift (AUTO_SECTIONS=host/repo/env)</FONT>>,
|
|
4
4
|
labelloc=t, fontsize=20, fontname="Helvetica",
|
|
5
5
|
rankdir=LR, splines=spline, nodesep=0.5, ranksep=1.3,
|
|
6
6
|
bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
|
|
@@ -16,13 +16,19 @@ digraph "PWN_Extrospection" {
|
|
|
16
16
|
color="#b91c1c"; bgcolor="#450a0a";
|
|
17
17
|
Host [label="host\nuname · distro · arch", fillcolor="#fda4af"];
|
|
18
18
|
Net [label="net\ninterfaces · listening ports", fillcolor="#fda4af"];
|
|
19
|
-
Tool [label="toolchain\nnmap
|
|
19
|
+
Tool [label="toolchain (presence)\nnmap/git (safe --ver)\nburp/msf/gqrx PATH only", fillcolor="#fda4af"];
|
|
20
20
|
Repo [label="repo · env\nHEAD · dirty · ruby/gem", fillcolor="#fda4af"];
|
|
21
21
|
RFhw [label="rf 📡\nrtl-sdr · hackrf · flipper\ngqrx sock · serial devs", fillcolor="#fda4af"];
|
|
22
22
|
Web [label="web 🌐\nanchors · targets\nrendered DOM · TLS cert", fillcolor="#fda4af"];
|
|
23
23
|
Feeds [label="intel feeds\nNVD · CIRCL · Exploit-DB", fillcolor="#fda4af"];
|
|
24
|
+
OSINT [label="osint 🕵️\nphone · FCC · patent\nIP/ASN · CT · person", fillcolor="#fda4af"];
|
|
25
|
+
Serial[label="serial 🔌\nttyUSB/ACM · by-id\nUART / AT modem", fillcolor="#fda4af"];
|
|
26
|
+
Telco [label="telecomm ☎️\nBareSIP · SIP ports\nPSTN / VoIP", fillcolor="#fda4af"];
|
|
27
|
+
Pkt [label="packet 📦\ntshark · tcpdump\npcap summarise", fillcolor="#fda4af"];
|
|
28
|
+
Vis [label="vision 👁\ntesseract OCR\nzbar QR/barcode", fillcolor="#fda4af"];
|
|
29
|
+
Voice [label="voice 🔊\nespeak TTS · whisper STT\nsox / festival", fillcolor="#fda4af"];
|
|
24
30
|
}
|
|
25
|
-
{rank=same; Host; Net; Tool; Repo; RFhw; Web; Feeds}
|
|
31
|
+
{rank=same; Host; Net; Tool; Repo; RFhw; Web; Feeds; OSINT; Serial; Telco; Pkt; Vis; Voice}
|
|
26
32
|
|
|
27
33
|
/* col 0.5 ─ transport */
|
|
28
34
|
TB [label="PWN::Plugins::\nTransparentBrowser\n:headless (→ :rest fallback)",
|
|
@@ -32,15 +38,22 @@ digraph "PWN_Extrospection" {
|
|
|
32
38
|
subgraph cluster_eng {
|
|
33
39
|
label="Extrospection Engine"; fontcolor="#fde68a"; style=rounded;
|
|
34
40
|
color="#a16207"; bgcolor="#422006"; penwidth=2;
|
|
35
|
-
Snap [label="extro_snapshot\nprobe_host/net/toolchain
|
|
41
|
+
Snap [label="extro_snapshot\nprobe_host/net/toolchain/repo/env\nrf/web/osint/serial/telecomm\npacket/vision/voice\n(auto = host/repo/env only)", fillcolor="#fcd34d"];
|
|
36
42
|
Drift [label="extro_drift\ndelta vs baseline", fillcolor="#fcd34d"];
|
|
37
|
-
Obs [label="extro_observe\nrecon · vuln · intel
|
|
43
|
+
Obs [label="extro_observe\nrecon · vuln · intel · target\nnetwork · env · rf · web\nosint · serial · telecomm\npacket · vision · voice", fillcolor="#fcd34d"];
|
|
38
44
|
Intel [label="extro_intel\nCVE / exploit lookup", fillcolor="#fcd34d"];
|
|
39
45
|
Watch [label="extro_watch\nrender → DOM SHA-256\nscreenshot · TLS fp", fillcolor="#fcd34d"];
|
|
40
46
|
Verify[label="extro_verify\n:cve · :version · :doc · :generic\n→ :confirmed | :refuted | :unknown", fillcolor="#fcd34d", penwidth=2];
|
|
47
|
+
RFTune[label="extro_rf_tune 📡\ntune GQRX · demod · strength\nRDS PI/PS/RadioText → now_playing", fillcolor="#fcd34d", penwidth=2];
|
|
48
|
+
OsintT[label="extro_osint 🕵️\npublic APIs aggregate\nphone · FCC · patent · person", fillcolor="#fcd34d", penwidth=2];
|
|
49
|
+
SerT [label="extro_serial 🔌\nopen · payload · drain\nPWN::Plugins::Serial", fillcolor="#fcd34d", penwidth=2];
|
|
50
|
+
TelT [label="extro_telecomm ☎️\nBareSIP status/dial\ninventory SIP", fillcolor="#fcd34d", penwidth=2];
|
|
51
|
+
PktT [label="extro_packet 📦\ncapture · summarise pcap\ntshark/PacketFu", fillcolor="#fcd34d", penwidth=2];
|
|
52
|
+
VisT [label="extro_vision 👁\nOCR · barcode/QR", fillcolor="#fcd34d", penwidth=2];
|
|
53
|
+
VoxT [label="extro_voice 🔊\nTTS · STT · inventory", fillcolor="#fcd34d", penwidth=2];
|
|
41
54
|
Corr [label="extro_correlate\njoin with Learning\n+ Mistakes + Memory", fillcolor="#fcd34d", penwidth=2];
|
|
42
55
|
}
|
|
43
|
-
{rank=same; Snap; Drift; Obs; Intel; Watch; Verify; Corr}
|
|
56
|
+
{rank=same; Snap; Drift; Obs; Intel; Watch; Verify; RFTune; OsintT; SerT; TelT; PktT; VisT; VoxT; Corr}
|
|
44
57
|
|
|
45
58
|
/* col 2 ─ store + prompt + feedback sinks */
|
|
46
59
|
Store [label="~/.pwn/\nextrospection.json", shape=cylinder, fillcolor="#fcd34d"];
|
|
@@ -55,6 +68,7 @@ digraph "PWN_Extrospection" {
|
|
|
55
68
|
Tool -> Drift [color="#fb7185"];
|
|
56
69
|
Repo -> Drift [color="#fb7185"];
|
|
57
70
|
RFhw -> Obs [label="probe_rf", color="#fb7185"];
|
|
71
|
+
RFhw -> RFTune[label="tune · RDS", color="#fb7185", penwidth=2];
|
|
58
72
|
Feeds -> Intel [color="#fb7185"];
|
|
59
73
|
|
|
60
74
|
Web -> TB [color="#fb7185"];
|
|
@@ -68,6 +82,19 @@ digraph "PWN_Extrospection" {
|
|
|
68
82
|
Intel -> Store [label="record:true", color="#f59e0b"];
|
|
69
83
|
Watch -> Store [label="category::web", color="#f59e0b"];
|
|
70
84
|
Watch -> Shots [color="#f59e0b"];
|
|
85
|
+
RFTune-> Store [label="category::rf\nnow_playing", color="#f59e0b", penwidth=2];
|
|
86
|
+
OSINT -> OsintT[label="public APIs", color="#fb7185", penwidth=2];
|
|
87
|
+
Serial-> SerT [label="UART I/O", color="#fb7185", penwidth=2];
|
|
88
|
+
Telco -> TelT [label="SIP/HTTP", color="#fb7185", penwidth=2];
|
|
89
|
+
Pkt -> PktT [label="capture", color="#fb7185", penwidth=2];
|
|
90
|
+
Vis -> VisT [label="OCR", color="#fb7185", penwidth=2];
|
|
91
|
+
Voice -> VoxT [label="TTS/STT", color="#fb7185", penwidth=2];
|
|
92
|
+
OsintT-> Store [label="category::osint", color="#f59e0b", penwidth=2];
|
|
93
|
+
SerT -> Store [label="category::serial", color="#f59e0b"];
|
|
94
|
+
TelT -> Store [label="category::telecomm", color="#f59e0b"];
|
|
95
|
+
PktT -> Store [label="category::packet", color="#f59e0b"];
|
|
96
|
+
VisT -> Store [label="category::vision", color="#f59e0b"];
|
|
97
|
+
VoxT -> Store [label="category::voice", color="#f59e0b"];
|
|
71
98
|
Verify-> Mist [label=":refuted", color="#fb7185", penwidth=2];
|
|
72
99
|
Verify-> Store [label=":confirmed\n:intel obs (ttl 30d)", color="#f59e0b"];
|
|
73
100
|
Verify-> Mem [label="revalidate_memory\nmark stale :fact", color="#a78bfa", style=dashed];
|
|
@@ -26,7 +26,9 @@ digraph "PWN_Hardware" {
|
|
|
26
26
|
MSR [label="MSR206", fillcolor="#6ee7b7"];
|
|
27
27
|
Adb [label="Android (adb)", fillcolor="#6ee7b7"];
|
|
28
28
|
Sip [label="BareSIP · Voice", fillcolor="#6ee7b7"];
|
|
29
|
-
Sdr [label="SDR::GQRX · Flipper",fillcolor="#6ee7b7"];
|
|
29
|
+
Sdr [label="SDR::GQRX · Flipper\nDecoder::* (run_iq)",fillcolor="#6ee7b7"];
|
|
30
|
+
FfiSdr [label="FFI::RTLSdr · HackRF\nAdalmPluto · SoapySDR\nVolk · Liquid · FFTW",fillcolor="#34d399"];
|
|
31
|
+
Sdr -> FfiSdr;
|
|
30
32
|
}
|
|
31
33
|
subgraph cluster_out {
|
|
32
34
|
label="Analysis"; fontcolor="#ddd6fe"; style=rounded;
|
|
@@ -29,8 +29,9 @@ digraph "PWN_MemorySkills" {
|
|
|
29
29
|
Flrn [label="learning.jsonl\noutcome log", shape=cylinder, fillcolor="#fcd34d"];
|
|
30
30
|
Fses [label="sessions/*.jsonl\ntranscripts", shape=cylinder, fillcolor="#fcd34d"];
|
|
31
31
|
Fmis [label="mistakes.json\nsig → count · fix · regressed", shape=cylinder, fillcolor="#fcd34d"];
|
|
32
|
+
Fext [label="extrospection.json\nsnapshot · rf · web · obs", shape=cylinder, fillcolor="#fcd34d"];
|
|
32
33
|
}
|
|
33
|
-
{rank=same; Fmem; Fskl; Flrn; Fses; Fmis}
|
|
34
|
+
{rank=same; Fmem; Fskl; Flrn; Fses; Fmis; Fext}
|
|
34
35
|
|
|
35
36
|
subgraph cluster_read {
|
|
36
37
|
label="Read-Side / Injection"; fontcolor="#ddd6fe"; style=rounded;
|
|
@@ -43,7 +44,7 @@ digraph "PWN_MemorySkills" {
|
|
|
43
44
|
}
|
|
44
45
|
{rank=same; Rec; Skv; Out; Sesv; Mlst}
|
|
45
46
|
|
|
46
|
-
Prompt [label="PromptBuilder\nMEMORY + SKILLS + LEARNING\n+ KNOWN MISTAKES /
|
|
47
|
+
Prompt [label="PromptBuilder\nMEMORY + SKILLS + LEARNING\n+ KNOWN MISTAKES / FIXES\n+ METRICS + EXTROSPECTION", fillcolor="#7dd3fc", penwidth=2];
|
|
47
48
|
|
|
48
49
|
Rem -> Fmem [color="#f59e0b"];
|
|
49
50
|
Skc -> Fskl [color="#f59e0b"];
|
|
@@ -67,5 +68,6 @@ digraph "PWN_MemorySkills" {
|
|
|
67
68
|
|
|
68
69
|
ReVal [label="Extrospection.verify\nrevalidate_memory (cron)\nbrowser-backed GC", fillcolor="#fcd34d"];
|
|
69
70
|
ReVal -> Fmem [label="[UNVERIFIED yyyy-mm-dd]\nprefix stale :fact", color="#fb7185", style=dashed, penwidth=2];
|
|
71
|
+
ReVal -> Fext [label=":confirmed → :intel obs\n:refuted → observe stale", color="#f59e0b", style=dashed];
|
|
70
72
|
Fmem -> ReVal [label=":fact w/ CVE|ver|URL", style=dashed, color="#94a3b8", constraint=false];
|
|
71
73
|
}
|
|
@@ -12,14 +12,15 @@ digraph "PWN_Mistakes_Negative_Feedback" {
|
|
|
12
12
|
|
|
13
13
|
/* L0 ─ ingest sources */
|
|
14
14
|
subgraph cluster_in {
|
|
15
|
-
label="
|
|
15
|
+
label="Five ingest paths"; fontcolor="#fecaca"; style="rounded,dashed";
|
|
16
16
|
color="#b91c1c"; bgcolor="#450a0a";
|
|
17
17
|
ToolFail [label=":tool\nDispatch → success:false", fillcolor="#fda4af"];
|
|
18
18
|
LoopFail [label=":loop\niteration budget exhausted", fillcolor="#fda4af"];
|
|
19
19
|
UserCorr [label=":user_correction\n\"no that's wrong\" / \"still broken\"", fillcolor="#fda4af"];
|
|
20
20
|
ModelRec [label=":model\nmistakes_record(tool, error)", fillcolor="#fda4af"];
|
|
21
|
+
Verify [label=":model (proactive)\nextro_verify → :refuted\n(browser-caught assumption)", fillcolor="#fda4af", penwidth=2];
|
|
21
22
|
}
|
|
22
|
-
{rank=same; ToolFail; LoopFail; UserCorr; ModelRec}
|
|
23
|
+
{rank=same; ToolFail; LoopFail; UserCorr; ModelRec; Verify}
|
|
23
24
|
|
|
24
25
|
/* L1 ─ fingerprint */
|
|
25
26
|
subgraph cluster_fp {
|
|
@@ -61,6 +62,7 @@ digraph "PWN_Mistakes_Negative_Feedback" {
|
|
|
61
62
|
LoopFail -> Norm [color="#fb7185"];
|
|
62
63
|
UserCorr -> Sig [label="+ flip_last_outcome", color="#fb7185"];
|
|
63
64
|
ModelRec -> Sig [color="#fb7185"];
|
|
65
|
+
Verify -> Sig [label="assumption", color="#fb7185", penwidth=2];
|
|
64
66
|
Norm -> Sig [color="#34d399"];
|
|
65
67
|
|
|
66
68
|
/* L1 → L2 */
|
|
@@ -37,9 +37,9 @@ digraph "PWN_Overall_Architecture" {
|
|
|
37
37
|
label="PWN::AI::Agent"; fontcolor="#ddd6fe";
|
|
38
38
|
style=rounded; color="#6d28d9"; bgcolor="#2e1065"; penwidth=2;
|
|
39
39
|
Loop [label="Loop\nplan → dispatch → observe", fillcolor="#c4b5fd"];
|
|
40
|
-
Registry [label="Registry\n10 toolsets ·
|
|
40
|
+
Registry [label="Registry\n10 toolsets · 55 tools", fillcolor="#c4b5fd"];
|
|
41
41
|
Swarm [label="Swarm\npersonas · debate · bus", fillcolor="#c4b5fd"];
|
|
42
|
-
Prompt [label="PromptBuilder\nMEMORY · SKILLS\nMISTAKES · EXTRO",fillcolor="#c4b5fd"];
|
|
42
|
+
Prompt [label="PromptBuilder\nMEMORY · SKILLS · LEARNING\nMISTAKES · METRICS · EXTRO",fillcolor="#c4b5fd"];
|
|
43
43
|
}
|
|
44
44
|
{rank=same; Loop; Registry; Swarm; Prompt}
|
|
45
45
|
|
|
@@ -67,7 +67,7 @@ digraph "PWN_Overall_Architecture" {
|
|
|
67
67
|
Learn [label="learning.jsonl", shape=cylinder, fillcolor="#fcd34d"];
|
|
68
68
|
Metrics [label="metrics.json", shape=cylinder, fillcolor="#fcd34d"];
|
|
69
69
|
MistF [label="mistakes.json", shape=cylinder, fillcolor="#fcd34d"];
|
|
70
|
-
Extro [label="extrospection.json\
|
|
70
|
+
Extro [label="extrospection.json\nrf · web · observations", shape=cylinder, fillcolor="#fcd34d"];
|
|
71
71
|
Sessions [label="sessions/*.jsonl", shape=cylinder, fillcolor="#fcd34d"];
|
|
72
72
|
SwarmB [label="swarm/*/bus.jsonl", shape=cylinder, fillcolor="#fcd34d"];
|
|
73
73
|
CronF [label="cron/jobs.yml", shape=cylinder, fillcolor="#fcd34d"];
|
|
@@ -18,8 +18,8 @@ digraph "PWN_Persistence" {
|
|
|
18
18
|
lrn [label="learning.jsonl\ntask outcomes"];
|
|
19
19
|
mis [label="mistakes.json\nfailure fingerprints · fixes\n[REPEATING] · [REGRESSED]"];
|
|
20
20
|
met [label="metrics.json\nper-tool telemetry"];
|
|
21
|
-
ext [label="extrospection.json\
|
|
22
|
-
ews [label="extrospection/web/*.png\
|
|
21
|
+
ext [label="extrospection.json\nsnapshot (host/net/tc/repo/env/rf/web)\n+ previous + observations[]"];
|
|
22
|
+
ews [label="extrospection/web/*.png\nprobe_web / extro_watch shots"];
|
|
23
23
|
ses [label="sessions/*.jsonl\ntranscripts"];
|
|
24
24
|
crn [label="cron/jobs.yml\nscheduled jobs + logs"];
|
|
25
25
|
agt [label="agents.yml\npersona registry"];
|
|
@@ -27,5 +27,5 @@ digraph "PWN_Persistence" {
|
|
|
27
27
|
hist [label="~/.pwn_history\nREPL history"];
|
|
28
28
|
|
|
29
29
|
Root->cfg; Root->mem; Root->skl; Root->lrn; Root->mis; Root->met; Root->ext;
|
|
30
|
-
Root->ses; Root->crn; Root->agt; Root->swm; Root->hist;
|
|
30
|
+
Root->ews; Root->ses; Root->crn; Root->agt; Root->swm; Root->hist;
|
|
31
31
|
}
|
|
@@ -37,11 +37,12 @@ digraph "PWN_AI_Feedback_Learning_Loop" {
|
|
|
37
37
|
subgraph cluster_extro {
|
|
38
38
|
label="EXTROSPECTION (world)"; fontcolor="#fde68a";
|
|
39
39
|
style=rounded; color="#a16207"; bgcolor="#422006"; penwidth=2;
|
|
40
|
-
Snapshot [label="snapshot · drift\nhost/net/toolchain\nrepo/env/rf/web", fillcolor="#fcd34d"];
|
|
40
|
+
Snapshot [label="snapshot · drift\nhost/net/toolchain\nrepo/env/rf/web\n(AUTO_SECTIONS=host/repo/env)", fillcolor="#fcd34d"];
|
|
41
41
|
Observe [label="observe · intel · watch\nrecon · CVE · web DOM", fillcolor="#fcd34d"];
|
|
42
42
|
Verify [label="verify (browser)\nfact-check own claims\nrevalidate_memory", fillcolor="#fcd34d", penwidth=2];
|
|
43
|
+
RFTune [label="rf_tune 📡\ntune GQRX · demod\nRDS → now_playing", fillcolor="#fcd34d", penwidth=2];
|
|
43
44
|
}
|
|
44
|
-
{rank=same; Metrics; Learning; Mistakes; Snapshot; Observe; Verify}
|
|
45
|
+
{rank=same; Metrics; Learning; Mistakes; Snapshot; Observe; Verify; RFTune}
|
|
45
46
|
|
|
46
47
|
/* L3 ─ correlate */
|
|
47
48
|
Correlate [label="extro_correlate()\n\"I did it wrong\" vs \"the world changed\"",
|
|
@@ -71,15 +72,17 @@ digraph "PWN_AI_Feedback_Learning_Loop" {
|
|
|
71
72
|
|
|
72
73
|
/* L1 → L2 */
|
|
73
74
|
Dispatch -> Metrics [label="record()", color="#34d399"];
|
|
74
|
-
Result -> Learning [label="
|
|
75
|
+
Result -> Learning [label="auto_introspect", color="#34d399"];
|
|
75
76
|
Dispatch -> Mistakes [label="on failure\nrecord()", color="#fb7185", penwidth=2];
|
|
76
77
|
User -> Mistakes [label="\"that's wrong\"\ncheck_user_correction", color="#fb7185",
|
|
77
78
|
style=dashed, constraint=false];
|
|
78
79
|
Dispatch -> Snapshot [label="probe", color="#f59e0b"];
|
|
79
|
-
Result -> Observe [label="auto_extrospect", color="#f59e0b"];
|
|
80
|
+
Result -> Observe [label="auto_extrospect\n(AUTO_SECTIONS only)", color="#f59e0b"];
|
|
80
81
|
World -> Snapshot [color="#fb7185", constraint=false];
|
|
81
82
|
World -> Observe [color="#fb7185", constraint=false];
|
|
82
83
|
World -> Verify [label="TransparentBrowser\n:headless", color="#38bdf8", constraint=false, penwidth=2];
|
|
84
|
+
World -> RFTune [label="GQRX remote\n:7356 + SDR", color="#fb7185", constraint=false, penwidth=2];
|
|
85
|
+
Dispatch -> Observe [label="sense tools\nverify/watch/rf_tune/intel", color="#f59e0b", style=dashed, constraint=false];
|
|
83
86
|
|
|
84
87
|
/* L2 → L3 */
|
|
85
88
|
Metrics -> Correlate [color="#34d399"];
|
|
@@ -88,6 +91,7 @@ digraph "PWN_AI_Feedback_Learning_Loop" {
|
|
|
88
91
|
Snapshot -> Correlate [color="#f59e0b"];
|
|
89
92
|
Observe -> Correlate [color="#f59e0b"];
|
|
90
93
|
Verify -> Correlate [color="#f59e0b"];
|
|
94
|
+
RFTune -> Correlate [color="#f59e0b"];
|
|
91
95
|
|
|
92
96
|
/* L3 → L4 */
|
|
93
97
|
Correlate -> Fmet [style=invis];
|
|
@@ -98,7 +102,9 @@ digraph "PWN_AI_Feedback_Learning_Loop" {
|
|
|
98
102
|
Learning -> Fmem [label="lesson", color="#94a3b8"];
|
|
99
103
|
Learning -> Fskl [label="skill", color="#94a3b8"];
|
|
100
104
|
Observe -> Fext [color="#94a3b8"];
|
|
105
|
+
RFTune -> Fext [label=":rf obs\nttl 300s", color="#94a3b8"];
|
|
101
106
|
Verify -> Fmis [label=":refuted →\nassumption mistake", color="#fb7185", penwidth=2];
|
|
107
|
+
Verify -> Mistakes [label=":refuted", color="#fb7185", style=dashed, constraint=false];
|
|
102
108
|
Verify -> Fmem [label="mark stale\n[UNVERIFIED]", color="#a78bfa", style=dashed];
|
|
103
109
|
Verify -> Fext [label=":confirmed\n:intel obs", color="#94a3b8"];
|
|
104
110
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
digraph "PWN_SDR" {
|
|
2
2
|
graph [
|
|
3
|
-
label=<<B>PWN::SDR — Software-Defined Radio & RF Hacking</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">GQRX · FlipperZero · RFIDler ·
|
|
3
|
+
label=<<B>PWN::SDR — Software-Defined Radio & RF Hacking</B><BR/><FONT POINT-SIZE="11" COLOR="#94a3b8">GQRX · FlipperZero · RFIDler · FrequencyAllocation · Decoder::* (20) · FFI::{Volk,Liquid,FFTW,HackRF,RTLSdr,SoapySDR}</FONT>>,
|
|
4
4
|
labelloc=t, fontsize=20, fontname="Helvetica",
|
|
5
|
-
rankdir=LR, splines=spline, nodesep=0.45, ranksep=1.
|
|
5
|
+
rankdir=LR, splines=spline, nodesep=0.45, ranksep=1.1,
|
|
6
6
|
bgcolor="#0f172a", fontcolor="#e2e8f0", pad=0.6, newrank=true
|
|
7
7
|
];
|
|
8
8
|
node [fontname="Helvetica", fontsize=10, style="filled,rounded",
|
|
@@ -15,33 +15,56 @@ digraph "PWN_SDR" {
|
|
|
15
15
|
subgraph cluster_hw {
|
|
16
16
|
label="Hardware"; fontcolor="#a7f3d0"; style=rounded;
|
|
17
17
|
color="#047857"; bgcolor="#022c22";
|
|
18
|
-
SDRhw [label="RTL-SDR / HackRF\n(via GQRX / SoapySDR)", fillcolor="#6ee7b7"];
|
|
19
|
-
Flipper [label="SDR::FlipperZero",
|
|
20
|
-
RFID [label="SDR::RFIDler\nSonMicroRFID",
|
|
18
|
+
SDRhw [label="RTL-SDR / HackRF / Airspy\n(via GQRX / SoapySDR / FFI)", fillcolor="#6ee7b7"];
|
|
19
|
+
Flipper [label="SDR::FlipperZero", fillcolor="#6ee7b7"];
|
|
20
|
+
RFID [label="SDR::RFIDler\nSonMicroRFID", fillcolor="#6ee7b7"];
|
|
21
|
+
}
|
|
22
|
+
subgraph cluster_ffi {
|
|
23
|
+
label="PWN::FFI native backends"; fontcolor="#bae6fd"; style=rounded;
|
|
24
|
+
color="#0369a1"; bgcolor="#0c4a6e";
|
|
25
|
+
Volk [label="FFI::Volk\nSIMD s16→f32 · accumulate", fillcolor="#7dd3fc"];
|
|
26
|
+
Liquid [label="FFI::Liquid\nfreqdem · msresamp · FIR", fillcolor="#7dd3fc"];
|
|
27
|
+
FFTW [label="FFI::FFTW\nrfft · cfft · power-dB", fillcolor="#7dd3fc"];
|
|
28
|
+
Front [label="FFI::{HackRF,RTLSdr,SoapySDR}\ninventory · raw I/Q", fillcolor="#7dd3fc"];
|
|
21
29
|
}
|
|
22
30
|
subgraph cluster_ctrl {
|
|
23
31
|
label="Control · Scan"; fontcolor="#fde68a"; style=rounded;
|
|
24
32
|
color="#a16207"; bgcolor="#422006";
|
|
25
|
-
GQRX [label="SDR::GQRX\nremote control\nspectrum
|
|
26
|
-
Freq [label="SDR::FrequencyAllocation\nband lookup",
|
|
27
|
-
Scan [label="bin/pwn_gqrx_scanner\n--fft-scan · iterative\n--min-snr-db · --
|
|
33
|
+
GQRX [label="SDR::GQRX\nremote control\nspectrum + FFT geometry\n(RAW panorama · plan-param refine)", fillcolor="#fcd34d"];
|
|
34
|
+
Freq [label="SDR::FrequencyAllocation\nband lookup\nplan_bw · precision", fillcolor="#fcd34d"];
|
|
35
|
+
Scan [label="bin/pwn_gqrx_scanner\n--fft-scan · iterative\n--min-snr-db · --no-refine", fillcolor="#fcd34d"];
|
|
28
36
|
}
|
|
29
37
|
subgraph cluster_dec {
|
|
30
|
-
label="Decode · Record"; fontcolor="#ddd6fe"; style=rounded;
|
|
38
|
+
label="Decode · Sense · Record"; fontcolor="#ddd6fe"; style=rounded;
|
|
31
39
|
color="#6d28d9"; bgcolor="#2e1065";
|
|
40
|
+
DSP [label="Decoder::DSP\npure-Ruby + FFI accel\n(unpack · resample · FSK)", fillcolor="#c4b5fd"];
|
|
32
41
|
Dec [label="SDR::Decoder::*\nADSB · APT · BT · DECT · GPS\nGSM · Iridium · LoRa · LTE\nMorse · P25 · POCSAG/FLEX\nRDS · RFID · rtl_433 · RTTY\nWiFi · ZigBee", fillcolor="#c4b5fd"];
|
|
33
|
-
Obs [label="extro_observe\ncategory: :rf
|
|
42
|
+
Obs [label="extro_observe\ncategory: :rf", fillcolor="#c4b5fd"];
|
|
34
43
|
Xrf [label="extro_snapshot :rf\nprobe_rf → hw inventory", fillcolor="#c4b5fd"];
|
|
44
|
+
Tune[label="extro_rf_tune 📡\ntune · demod · strength\nRDS.sample → now_playing", fillcolor="#c4b5fd", penwidth=2];
|
|
35
45
|
}
|
|
36
46
|
|
|
37
47
|
RF -> SDRhw [color="#fb7185"];
|
|
38
48
|
RF -> Flipper [color="#fb7185"];
|
|
39
49
|
RF -> RFID [color="#fb7185"];
|
|
40
|
-
SDRhw
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
SDRhw -> Front [color="#38bdf8"];
|
|
51
|
+
SDRhw -> GQRX [color="#f59e0b"];
|
|
52
|
+
Front -> Volk [style=dashed, color="#38bdf8"];
|
|
53
|
+
Front -> Liquid [style=dashed, color="#38bdf8"];
|
|
54
|
+
Front -> FFTW [style=dashed, color="#38bdf8"];
|
|
55
|
+
Volk -> DSP [color="#a78bfa"];
|
|
56
|
+
Liquid -> DSP [color="#a78bfa"];
|
|
57
|
+
FFTW -> DSP [color="#a78bfa"];
|
|
58
|
+
GQRX -> DSP [color="#a78bfa"];
|
|
59
|
+
GQRX -> Tune [label="remote :7356", color="#f59e0b", penwidth=2];
|
|
60
|
+
DSP -> Dec [color="#a78bfa"];
|
|
44
61
|
Freq -> Dec [color="#a78bfa"];
|
|
45
|
-
|
|
46
|
-
|
|
62
|
+
Flipper -> Freq [color="#f59e0b"];
|
|
63
|
+
RFID -> Scan [color="#f59e0b"];
|
|
64
|
+
Freq -> Scan [label="plan_bw/step", color="#f59e0b"];
|
|
65
|
+
Scan -> Obs [color="#a78bfa"];
|
|
66
|
+
Front -> Xrf [style=dashed, color="#fbbf24", constraint=false];
|
|
67
|
+
Dec -> Obs [style=dashed, color="#c4b5fd"];
|
|
68
|
+
Tune -> Obs [label="category::rf\nttl 300s", color="#a78bfa", penwidth=2];
|
|
69
|
+
Tune -> Dec [label="RDS.sample", style=dashed, color="#c4b5fd"];
|
|
47
70
|
}
|
|
@@ -9,31 +9,31 @@
|
|
|
9
9
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 397.2)">
|
|
10
10
|
<title>PWN_Driver</title>
|
|
11
11
|
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-397.2 684.45,-397.2 684.45,43.2 -43.2,43.2"/>
|
|
12
|
-
<text xml:space="preserve" text-anchor="start" x="184.88" y="-332" font-family="
|
|
13
|
-
<text xml:space="preserve" text-anchor="start" x="206.25" y="-320.55" font-family="
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="184.88" y="-332" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Driver Anatomy — bin/pwn_*</text>
|
|
13
|
+
<text xml:space="preserve" text-anchor="start" x="206.25" y="-320.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">52 shipped drivers · thin CLI over PWN::Plugins</text>
|
|
14
14
|
<g id="clust1" class="cluster">
|
|
15
15
|
<title>cluster_d</title>
|
|
16
16
|
<path fill="#022c22" stroke="#047857" d="M276,-8C276,-8 419,-8 419,-8 425,-8 431,-14 431,-20 431,-20 431,-223 431,-223 431,-229 425,-235 419,-235 419,-235 276,-235 276,-235 270,-235 264,-229 264,-223 264,-223 264,-20 264,-20 264,-14 270,-8 276,-8"/>
|
|
17
|
-
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-212" font-family="
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-212" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Driver Body</text>
|
|
18
18
|
</g>
|
|
19
19
|
<g id="clust3" class="cluster">
|
|
20
20
|
<title>cluster_o</title>
|
|
21
21
|
<path fill="#2e1065" stroke="#6d28d9" d="M521,-80C521,-80 621.25,-80 621.25,-80 627.25,-80 633.25,-86 633.25,-92 633.25,-92 633.25,-295 633.25,-295 633.25,-301 627.25,-307 621.25,-307 621.25,-307 521,-307 521,-307 515,-307 509,-301 509,-295 509,-295 509,-92 509,-92 509,-86 515,-80 521,-80"/>
|
|
22
|
-
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-284" font-family="
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-284" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Output</text>
|
|
23
23
|
</g>
|
|
24
24
|
<!-- Sh -->
|
|
25
25
|
<g id="node1" class="node">
|
|
26
26
|
<title>Sh</title>
|
|
27
27
|
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M166,-88C166,-88 12,-88 12,-88 6,-88 0,-82 0,-76 0,-76 0,-64 0,-64 0,-58 6,-52 12,-52 12,-52 166,-52 166,-52 172,-52 178,-58 178,-64 178,-64 178,-76 178,-76 178,-82 172,-88 166,-88"/>
|
|
28
|
-
<text xml:space="preserve" text-anchor="middle" x="89" y="-72.5" font-family="
|
|
29
|
-
<text xml:space="preserve" text-anchor="middle" x="89" y="-60.5" font-family="
|
|
28
|
+
<text xml:space="preserve" text-anchor="middle" x="89" y="-72.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">$ pwn_burp_suite_pro_active_scan \ </text>
|
|
29
|
+
<text xml:space="preserve" text-anchor="middle" x="89" y="-60.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">    -t https://target -o out/</text>
|
|
30
30
|
</g>
|
|
31
31
|
<!-- Opt -->
|
|
32
32
|
<g id="node2" class="node">
|
|
33
33
|
<title>Opt</title>
|
|
34
34
|
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M378,-52C378,-52 317,-52 317,-52 311,-52 305,-46 305,-40 305,-40 305,-28 305,-28 305,-22 311,-16 317,-16 317,-16 378,-16 378,-16 384,-16 390,-22 390,-28 390,-28 390,-40 390,-40 390,-46 384,-52 378,-52"/>
|
|
35
|
-
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-36.5" font-family="
|
|
36
|
-
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-24.5" font-family="
|
|
35
|
+
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">OptionParser</text>
|
|
36
|
+
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">ARGV → opts{}</text>
|
|
37
37
|
</g>
|
|
38
38
|
<!-- Sh->Opt -->
|
|
39
39
|
<g id="edge1" class="edge">
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<g id="node3" class="node">
|
|
46
46
|
<title>Req</title>
|
|
47
47
|
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M370.88,-124C370.88,-124 324.12,-124 324.12,-124 318.12,-124 312.12,-118 312.12,-112 312.12,-112 312.12,-100 312.12,-100 312.12,-94 318.12,-88 324.12,-88 324.12,-88 370.88,-88 370.88,-88 376.88,-88 382.88,-94 382.88,-100 382.88,-100 382.88,-112 382.88,-112 382.88,-118 376.88,-124 370.88,-124"/>
|
|
48
|
-
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-102.5" font-family="
|
|
48
|
+
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">require 'pwn'</text>
|
|
49
49
|
</g>
|
|
50
50
|
<!-- Sh->Req -->
|
|
51
51
|
<g id="edge2" class="edge">
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
<g id="node4" class="node">
|
|
58
58
|
<title>Call</title>
|
|
59
59
|
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M411,-196C411,-196 284,-196 284,-196 278,-196 272,-190 272,-184 272,-184 272,-172 272,-172 272,-166 278,-160 284,-160 284,-160 411,-160 411,-160 417,-160 423,-166 423,-172 423,-172 423,-184 423,-184 423,-190 417,-196 411,-196"/>
|
|
60
|
-
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-174.5" font-family="
|
|
60
|
+
<text xml:space="preserve" text-anchor="middle" x="347.5" y="-174.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::Plugins::X.method(opts)</text>
|
|
61
61
|
</g>
|
|
62
62
|
<!-- Opt->Call -->
|
|
63
63
|
<g id="edge3" class="edge">
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
<g id="node5" class="node">
|
|
76
76
|
<title>Std</title>
|
|
77
77
|
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M613.25,-124C613.25,-124 529,-124 529,-124 523,-124 517,-118 517,-112 517,-112 517,-100 517,-100 517,-94 523,-88 529,-88 529,-88 613.25,-88 613.25,-88 619.25,-88 625.25,-94 625.25,-100 625.25,-100 625.25,-112 625.25,-112 625.25,-118 619.25,-124 613.25,-124"/>
|
|
78
|
-
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-102.5" font-family="
|
|
78
|
+
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">STDOUT / STDERR</text>
|
|
79
79
|
</g>
|
|
80
80
|
<!-- Call->Std -->
|
|
81
81
|
<g id="edge5" class="edge">
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
<g id="node6" class="node">
|
|
88
88
|
<title>Rep</title>
|
|
89
89
|
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M599.38,-196C599.38,-196 542.88,-196 542.88,-196 536.88,-196 530.88,-190 530.88,-184 530.88,-184 530.88,-172 530.88,-172 530.88,-166 536.88,-160 542.88,-160 542.88,-160 599.38,-160 599.38,-160 605.38,-160 611.38,-166 611.38,-172 611.38,-172 611.38,-184 611.38,-184 611.38,-190 605.38,-196 599.38,-196"/>
|
|
90
|
-
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-174.5" font-family="
|
|
90
|
+
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-174.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::Reports</text>
|
|
91
91
|
</g>
|
|
92
92
|
<!-- Call->Rep -->
|
|
93
93
|
<g id="edge6" class="edge">
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
<g id="node7" class="node">
|
|
100
100
|
<title>Ex</title>
|
|
101
101
|
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M587,-268C587,-268 555.25,-268 555.25,-268 549.25,-268 543.25,-262 543.25,-256 543.25,-256 543.25,-244 543.25,-244 543.25,-238 549.25,-232 555.25,-232 555.25,-232 587,-232 587,-232 593,-232 599,-238 599,-244 599,-244 599,-256 599,-256 599,-262 593,-268 587,-268"/>
|
|
102
|
-
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-246.5" font-family="
|
|
102
|
+
<text xml:space="preserve" text-anchor="middle" x="571.12" y="-246.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">exit code</text>
|
|
103
103
|
</g>
|
|
104
104
|
<!-- Call->Ex -->
|
|
105
105
|
<g id="edge7" class="edge">
|