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,173 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN_Web Pages: 1 -->
7
+ <svg width="1092pt" height="360pt"
8
+ viewBox="0.00 0.00 1092.00 360.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 317.2)">
10
+ <title>PWN_Web</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-317.2 1048.7,-317.2 1048.7,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="388.38" y="-252" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Web Application Testing</text>
13
+ <text xml:space="preserve" text-anchor="start" x="342.25" y="-240.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">TransparentBrowser → BurpSuite (preferred) → SAST → Reports</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_drive</title>
16
+ <path fill="#022c22" stroke="#047857" d="M164.75,-8C164.75,-8 287.5,-8 287.5,-8 293.5,-8 299.5,-14 299.5,-20 299.5,-20 299.5,-215 299.5,-215 299.5,-221 293.5,-227 287.5,-227 287.5,-227 164.75,-227 164.75,-227 158.75,-227 152.75,-221 152.75,-215 152.75,-215 152.75,-20 152.75,-20 152.75,-14 158.75,-8 164.75,-8"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-204" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Drive Traffic</text>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_proxy</title>
21
+ <path fill="#422006" stroke="#a16207" d="M467.75,-8C467.75,-8 605.25,-8 605.25,-8 611.25,-8 617.25,-14 617.25,-20 617.25,-20 617.25,-147 617.25,-147 617.25,-153 611.25,-159 605.25,-159 605.25,-159 467.75,-159 467.75,-159 461.75,-159 455.75,-153 455.75,-147 455.75,-147 455.75,-20 455.75,-20 455.75,-14 461.75,-8 467.75,-8"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="536.5" y="-136" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Intercept + Scan</text>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_deep</title>
26
+ <path fill="#2e1065" stroke="#6d28d9" d="M700.25,-8C700.25,-8 819,-8 819,-8 825,-8 831,-14 831,-20 831,-20 831,-215 831,-215 831,-221 825,-227 819,-227 819,-227 700.25,-227 700.25,-227 694.25,-227 688.25,-221 688.25,-215 688.25,-215 688.25,-20 688.25,-20 688.25,-14 694.25,-8 700.25,-8"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="759.62" y="-204" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Deep Analysis</text>
28
+ </g>
29
+ <!-- Target -->
30
+ <g id="node1" class="node">
31
+ <title>Target</title>
32
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M61.75,-120C61.75,-120 12,-120 12,-120 6,-120 0,-114 0,-108 0,-108 0,-96 0,-96 0,-90 6,-84 12,-84 12,-84 61.75,-84 61.75,-84 67.75,-84 73.75,-90 73.75,-96 73.75,-96 73.75,-108 73.75,-108 73.75,-114 67.75,-120 61.75,-120"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="36.88" y="-104.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">🌐 &#160;Web App</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="36.88" y="-92.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">URL / API</text>
35
+ </g>
36
+ <!-- TB -->
37
+ <g id="node2" class="node">
38
+ <title>TB</title>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M279.5,-188C279.5,-188 172.75,-188 172.75,-188 166.75,-188 160.75,-182 160.75,-176 160.75,-176 160.75,-164 160.75,-164 160.75,-158 166.75,-152 172.75,-152 172.75,-152 279.5,-152 279.5,-152 285.5,-152 291.5,-158 291.5,-164 291.5,-164 291.5,-176 291.5,-176 291.5,-182 285.5,-188 279.5,-188"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-172.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TransparentBrowser</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">headless · watir · devtools</text>
42
+ </g>
43
+ <!-- Target&#45;&gt;TB -->
44
+ <g id="edge1" class="edge">
45
+ <title>Target&#45;&gt;TB</title>
46
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-115.11C99.69,-124.45 134.86,-137.22 164.8,-148.09"/>
47
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="163.59,-150.63 172.06,-150.73 165.5,-145.37 163.59,-150.63"/>
48
+ </g>
49
+ <!-- Spider -->
50
+ <g id="node3" class="node">
51
+ <title>Spider</title>
52
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M255.12,-120C255.12,-120 197.12,-120 197.12,-120 191.12,-120 185.12,-114 185.12,-108 185.12,-108 185.12,-96 185.12,-96 185.12,-90 191.12,-84 197.12,-84 197.12,-84 255.12,-84 255.12,-84 261.12,-84 267.12,-90 267.12,-96 267.12,-96 267.12,-108 267.12,-108 267.12,-114 261.12,-120 255.12,-120"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Spider</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">URI buster</text>
55
+ </g>
56
+ <!-- Target&#45;&gt;Spider -->
57
+ <g id="edge2" class="edge">
58
+ <title>Target&#45;&gt;Spider</title>
59
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-102C102.68,-102 143.15,-102 175,-102"/>
60
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="174.61,-104.8 182.61,-102 174.61,-99.2 174.61,-104.8"/>
61
+ </g>
62
+ <!-- WWW -->
63
+ <g id="node4" class="node">
64
+ <title>WWW</title>
65
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M256.25,-52C256.25,-52 196,-52 196,-52 190,-52 184,-46 184,-40 184,-40 184,-28 184,-28 184,-22 190,-16 196,-16 196,-16 256.25,-16 256.25,-16 262.25,-16 268.25,-22 268.25,-28 268.25,-28 268.25,-40 268.25,-40 268.25,-46 262.25,-52 256.25,-52"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::WWW::*</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="226.12" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">21 site drivers</text>
68
+ </g>
69
+ <!-- Target&#45;&gt;WWW -->
70
+ <g id="edge3" class="edge">
71
+ <title>Target&#45;&gt;WWW</title>
72
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M73.98,-88.89C102.51,-78.53 142.69,-63.94 174.44,-52.41"/>
73
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="175.17,-55.12 181.73,-49.76 173.26,-49.86 175.17,-55.12"/>
74
+ </g>
75
+ <!-- Burp -->
76
+ <g id="node5" class="node">
77
+ <title>Burp</title>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="2" d="M584.5,-120C584.5,-120 487.5,-120 487.5,-120 481.5,-120 475.5,-114 475.5,-108 475.5,-108 475.5,-96 475.5,-96 475.5,-90 481.5,-84 487.5,-84 487.5,-84 584.5,-84 584.5,-84 590.5,-84 596.5,-90 596.5,-96 596.5,-96 596.5,-108 596.5,-108 596.5,-114 590.5,-120 584.5,-120"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-104.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BurpSuite &#160;⭐</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-92.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">active · passive · REST</text>
81
+ </g>
82
+ <!-- TB&#45;&gt;Burp -->
83
+ <g id="edge4" class="edge">
84
+ <title>TB&#45;&gt;Burp</title>
85
+ <path fill="none" stroke="#f59e0b" stroke-width="2" d="M292.04,-155.66C342.46,-144.53 412.3,-129.1 464.17,-117.65"/>
86
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="2" points="464.45,-120.45 471.66,-115.99 463.25,-114.98 464.45,-120.45"/>
87
+ <text xml:space="preserve" text-anchor="middle" x="377.62" y="-148.01" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">proxy 127.0.0.1:8080</text>
88
+ </g>
89
+ <!-- Spider&#45;&gt;Burp -->
90
+ <g id="edge5" class="edge">
91
+ <title>Spider&#45;&gt;Burp</title>
92
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M267.69,-102C317.81,-102 403.89,-102 464.81,-102"/>
93
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="464.78,-104.8 472.78,-102 464.78,-99.2 464.78,-104.8"/>
94
+ </g>
95
+ <!-- Zap -->
96
+ <g id="node6" class="node">
97
+ <title>Zap</title>
98
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M551.88,-52C551.88,-52 520.12,-52 520.12,-52 514.12,-52 508.12,-46 508.12,-40 508.12,-40 508.12,-28 508.12,-28 508.12,-22 514.12,-16 520.12,-16 520.12,-16 551.88,-16 551.88,-16 557.88,-16 563.88,-22 563.88,-28 563.88,-28 563.88,-40 563.88,-40 563.88,-46 557.88,-52 551.88,-52"/>
99
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Zaproxy</text>
100
+ <text xml:space="preserve" text-anchor="middle" x="536" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(fallback)</text>
101
+ </g>
102
+ <!-- WWW&#45;&gt;Zap -->
103
+ <g id="edge6" class="edge">
104
+ <title>WWW&#45;&gt;Zap</title>
105
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M268.65,-34C329.03,-34 440.17,-34 497.94,-34"/>
106
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="497.77,-36.8 505.77,-34 497.77,-31.2 497.77,-36.8"/>
107
+ </g>
108
+ <!-- SAST -->
109
+ <g id="node7" class="node">
110
+ <title>SAST</title>
111
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M795.25,-188C795.25,-188 723,-188 723,-188 717,-188 711,-182 711,-176 711,-176 711,-164 711,-164 711,-158 717,-152 723,-152 723,-152 795.25,-152 795.25,-152 801.25,-152 807.25,-158 807.25,-164 807.25,-164 807.25,-176 807.25,-176 807.25,-182 801.25,-188 795.25,-188"/>
112
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-172.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::SAST</text>
113
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-160.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">48 rules on source</text>
114
+ </g>
115
+ <!-- Burp&#45;&gt;SAST -->
116
+ <g id="edge7" class="edge">
117
+ <title>Burp&#45;&gt;SAST</title>
118
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M597.42,-120.58C629.78,-130.53 669.4,-142.72 701.21,-152.5"/>
119
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="700.03,-155.06 708.5,-154.74 701.68,-149.71 700.03,-155.06"/>
120
+ </g>
121
+ <!-- XSS -->
122
+ <g id="node8" class="node">
123
+ <title>XSS</title>
124
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M805.38,-120C805.38,-120 712.88,-120 712.88,-120 706.88,-120 700.88,-114 700.88,-108 700.88,-108 700.88,-96 700.88,-96 700.88,-90 706.88,-84 712.88,-84 712.88,-84 805.38,-84 805.38,-84 811.38,-84 817.38,-90 817.38,-96 817.38,-96 817.38,-108 817.38,-108 817.38,-114 811.38,-120 805.38,-120"/>
125
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_xss_dom_vectors</text>
126
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">web_cache_deception</text>
127
+ </g>
128
+ <!-- Burp&#45;&gt;XSS -->
129
+ <g id="edge8" class="edge">
130
+ <title>Burp&#45;&gt;XSS</title>
131
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M597.42,-102C626.26,-102 660.87,-102 690.57,-102"/>
132
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="690.47,-104.8 698.47,-102 690.47,-99.2 690.47,-104.8"/>
133
+ </g>
134
+ <!-- API -->
135
+ <g id="node9" class="node">
136
+ <title>API</title>
137
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M803.5,-52C803.5,-52 714.75,-52 714.75,-52 708.75,-52 702.75,-46 702.75,-40 702.75,-40 702.75,-28 702.75,-28 702.75,-22 708.75,-16 714.75,-16 714.75,-16 803.5,-16 803.5,-16 809.5,-16 815.5,-22 815.5,-28 815.5,-28 815.5,-40 815.5,-40 815.5,-46 809.5,-52 803.5,-52"/>
138
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::OpenAPI</text>
139
+ <text xml:space="preserve" text-anchor="middle" x="759.12" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">GraphQL introspection</text>
140
+ </g>
141
+ <!-- Zap&#45;&gt;API -->
142
+ <g id="edge9" class="edge">
143
+ <title>Zap&#45;&gt;API</title>
144
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M564.11,-34C595.89,-34 649.65,-34 692.54,-34"/>
145
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="692.38,-36.8 700.38,-34 692.38,-31.2 692.38,-36.8"/>
146
+ </g>
147
+ <!-- Report -->
148
+ <g id="node10" class="node">
149
+ <title>Report</title>
150
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M993.5,-120C993.5,-120 922,-120 922,-120 916,-120 910,-114 910,-108 910,-108 910,-96 910,-96 910,-90 916,-84 922,-84 922,-84 993.5,-84 993.5,-84 999.5,-84 1005.5,-90 1005.5,-96 1005.5,-96 1005.5,-108 1005.5,-108 1005.5,-114 999.5,-120 993.5,-120"/>
151
+ <text xml:space="preserve" text-anchor="middle" x="957.75" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::Reports</text>
152
+ <text xml:space="preserve" text-anchor="middle" x="957.75" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">DefectDojo import</text>
153
+ </g>
154
+ <!-- SAST&#45;&gt;Report -->
155
+ <g id="edge10" class="edge">
156
+ <title>SAST&#45;&gt;Report</title>
157
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M807.72,-153.54C835.62,-143.89 871.01,-131.65 900.31,-121.52"/>
158
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="901.09,-124.21 907.73,-118.95 899.26,-118.92 901.09,-124.21"/>
159
+ </g>
160
+ <!-- XSS&#45;&gt;Report -->
161
+ <g id="edge11" class="edge">
162
+ <title>XSS&#45;&gt;Report</title>
163
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M817.79,-102C843.71,-102 874.21,-102 900.03,-102"/>
164
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="899.7,-104.8 907.7,-102 899.7,-99.2 899.7,-104.8"/>
165
+ </g>
166
+ <!-- API&#45;&gt;Report -->
167
+ <g id="edge12" class="edge">
168
+ <title>API&#45;&gt;Report</title>
169
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M813.85,-52.58C840.6,-61.83 872.94,-73.02 900.08,-82.4"/>
170
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="899.11,-85.03 907.59,-85 900.95,-79.74 899.11,-85.03"/>
171
+ </g>
172
+ </g>
173
+ </svg>
@@ -0,0 +1,153 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN_ZeroDay Pages: 1 -->
7
+ <svg width="1064pt" height="309pt"
8
+ viewBox="0.00 0.00 1064.00 309.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 265.39)">
10
+ <title>PWN_ZeroDay</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-265.39 1021.2,-265.39 1021.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="304.5" y="-200.19" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Zero&#45;Day Research Lifecycle with PWN</text>
13
+ <text xml:space="preserve" text-anchor="start" x="337.12" y="-188.74" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">attack surface → hypothesis → prove → weaponise → disclose</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_hyp</title>
16
+ <path fill="#022c22" stroke="#047857" d="M210.5,-24.19C210.5,-24.19 312,-24.19 312,-24.19 318,-24.19 324,-30.19 324,-36.19 324,-36.19 324,-163.19 324,-163.19 324,-169.19 318,-175.19 312,-175.19 312,-175.19 210.5,-175.19 210.5,-175.19 204.5,-175.19 198.5,-169.19 198.5,-163.19 198.5,-163.19 198.5,-36.19 198.5,-36.19 198.5,-30.19 204.5,-24.19 210.5,-24.19"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="261.25" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Hypothesise</text>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_prove</title>
21
+ <path fill="#422006" stroke="#a16207" d="M407,-24.19C407,-24.19 502.75,-24.19 502.75,-24.19 508.75,-24.19 514.75,-30.19 514.75,-36.19 514.75,-36.19 514.75,-163.19 514.75,-163.19 514.75,-169.19 508.75,-175.19 502.75,-175.19 502.75,-175.19 407,-175.19 407,-175.19 401,-175.19 395,-169.19 395,-163.19 395,-163.19 395,-36.19 395,-36.19 395,-30.19 401,-24.19 407,-24.19"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Prove</text>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_weapon</title>
26
+ <path fill="#450a0a" stroke="#b91c1c" d="M674.75,-24.19C674.75,-24.19 767.25,-24.19 767.25,-24.19 773.25,-24.19 779.25,-30.19 779.25,-36.19 779.25,-36.19 779.25,-163.19 779.25,-163.19 779.25,-169.19 773.25,-175.19 767.25,-175.19 767.25,-175.19 674.75,-175.19 674.75,-175.19 668.75,-175.19 662.75,-169.19 662.75,-163.19 662.75,-163.19 662.75,-36.19 662.75,-36.19 662.75,-30.19 668.75,-24.19 674.75,-24.19"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="721" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Weaponise</text>
28
+ </g>
29
+ <g id="clust4" class="cluster">
30
+ <title>cluster_disc</title>
31
+ <path fill="#2e1065" stroke="#6d28d9" d="M862.25,-24.19C862.25,-24.19 958,-24.19 958,-24.19 964,-24.19 970,-30.19 970,-36.19 970,-36.19 970,-163.19 970,-163.19 970,-169.19 964,-175.19 958,-175.19 958,-175.19 862.25,-175.19 862.25,-175.19 856.25,-175.19 850.25,-169.19 850.25,-163.19 850.25,-163.19 850.25,-36.19 850.25,-36.19 850.25,-30.19 856.25,-24.19 862.25,-24.19"/>
32
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-152.19" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Disclose</text>
33
+ </g>
34
+ <!-- Surface -->
35
+ <g id="node1" class="node">
36
+ <title>Surface</title>
37
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M107.5,-101.19C107.5,-101.19 12,-101.19 12,-101.19 6,-101.19 0,-95.19 0,-89.19 0,-89.19 0,-77.19 0,-77.19 0,-71.19 6,-65.19 12,-65.19 12,-65.19 107.5,-65.19 107.5,-65.19 113.5,-65.19 119.5,-71.19 119.5,-77.19 119.5,-77.19 119.5,-89.19 119.5,-89.19 119.5,-95.19 113.5,-101.19 107.5,-101.19"/>
38
+ <text xml:space="preserve" text-anchor="middle" x="59.75" y="-85.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Attack Surface</text>
39
+ <text xml:space="preserve" text-anchor="middle" x="59.75" y="-73.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">OpenAPI · Shodan · Git</text>
40
+ </g>
41
+ <!-- SAST -->
42
+ <g id="node2" class="node">
43
+ <title>SAST</title>
44
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M285.25,-136.19C285.25,-136.19 236.25,-136.19 236.25,-136.19 230.25,-136.19 224.25,-130.19 224.25,-124.19 224.25,-124.19 224.25,-112.19 224.25,-112.19 224.25,-106.19 230.25,-100.19 236.25,-100.19 236.25,-100.19 285.25,-100.19 285.25,-100.19 291.25,-100.19 297.25,-106.19 297.25,-112.19 297.25,-112.19 297.25,-124.19 297.25,-124.19 297.25,-130.19 291.25,-136.19 285.25,-136.19"/>
45
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::SAST</text>
46
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">taint patterns</text>
47
+ </g>
48
+ <!-- Surface&#45;&gt;SAST -->
49
+ <g id="edge1" class="edge">
50
+ <title>Surface&#45;&gt;SAST</title>
51
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M119.92,-93.59C150.05,-98.89 186.12,-105.24 214.08,-110.16"/>
52
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="213.3,-112.86 221.67,-111.49 214.27,-107.35 213.3,-112.86"/>
53
+ </g>
54
+ <!-- AI -->
55
+ <g id="node3" class="node">
56
+ <title>AI</title>
57
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M291.25,-68.19C291.25,-68.19 230.25,-68.19 230.25,-68.19 224.25,-68.19 218.25,-62.19 218.25,-56.19 218.25,-56.19 218.25,-44.19 218.25,-44.19 218.25,-38.19 224.25,-32.19 230.25,-32.19 230.25,-32.19 291.25,-32.19 291.25,-32.19 297.25,-32.19 303.25,-38.19 303.25,-44.19 303.25,-44.19 303.25,-56.19 303.25,-56.19 303.25,-62.19 297.25,-68.19 291.25,-68.19"/>
58
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn&#45;ai</text>
59
+ <text xml:space="preserve" text-anchor="middle" x="260.75" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Agent::VulnGen</text>
60
+ </g>
61
+ <!-- Surface&#45;&gt;AI -->
62
+ <g id="edge2" class="edge">
63
+ <title>Surface&#45;&gt;AI</title>
64
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M119.92,-73.38C147.98,-68.72 181.19,-63.22 208.2,-58.74"/>
65
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="208.48,-61.53 215.91,-57.46 207.56,-56 208.48,-61.53"/>
66
+ </g>
67
+ <!-- Fuzz -->
68
+ <g id="node4" class="node">
69
+ <title>Fuzz</title>
70
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M477.5,-136.19C477.5,-136.19 432.25,-136.19 432.25,-136.19 426.25,-136.19 420.25,-130.19 420.25,-124.19 420.25,-124.19 420.25,-112.19 420.25,-112.19 420.25,-106.19 426.25,-100.19 432.25,-100.19 432.25,-100.19 477.5,-100.19 477.5,-100.19 483.5,-100.19 489.5,-106.19 489.5,-112.19 489.5,-112.19 489.5,-124.19 489.5,-124.19 489.5,-130.19 483.5,-136.19 477.5,-136.19"/>
71
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Fuzz · Sock</text>
72
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Packet</text>
73
+ </g>
74
+ <!-- SAST&#45;&gt;Fuzz -->
75
+ <g id="edge3" class="edge">
76
+ <title>SAST&#45;&gt;Fuzz</title>
77
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M297.89,-118.19C329.74,-118.19 376.24,-118.19 410.18,-118.19"/>
78
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="409.87,-120.99 417.87,-118.19 409.87,-115.39 409.87,-120.99"/>
79
+ </g>
80
+ <!-- TB -->
81
+ <g id="node5" class="node">
82
+ <title>TB</title>
83
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M494.75,-68.19C494.75,-68.19 415,-68.19 415,-68.19 409,-68.19 403,-62.19 403,-56.19 403,-56.19 403,-44.19 403,-44.19 403,-38.19 409,-32.19 415,-32.19 415,-32.19 494.75,-32.19 494.75,-32.19 500.75,-32.19 506.75,-38.19 506.75,-44.19 506.75,-44.19 506.75,-56.19 506.75,-56.19 506.75,-62.19 500.75,-68.19 494.75,-68.19"/>
84
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TransparentBrowser</text>
85
+ <text xml:space="preserve" text-anchor="middle" x="454.88" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Burp replay</text>
86
+ </g>
87
+ <!-- AI&#45;&gt;TB -->
88
+ <g id="edge4" class="edge">
89
+ <title>AI&#45;&gt;TB</title>
90
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M303.44,-50.19C329.61,-50.19 363.82,-50.19 393,-50.19"/>
91
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="392.72,-52.99 400.72,-50.19 392.72,-47.39 392.72,-52.99"/>
92
+ </g>
93
+ <!-- Asm -->
94
+ <g id="node6" class="node">
95
+ <title>Asm</title>
96
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M758.5,-136.19C758.5,-136.19 682.5,-136.19 682.5,-136.19 676.5,-136.19 670.5,-130.19 670.5,-124.19 670.5,-124.19 670.5,-112.19 670.5,-112.19 670.5,-106.19 676.5,-100.19 682.5,-100.19 682.5,-100.19 758.5,-100.19 758.5,-100.19 764.5,-100.19 770.5,-106.19 770.5,-112.19 770.5,-112.19 770.5,-124.19 770.5,-124.19 770.5,-130.19 764.5,-136.19 758.5,-136.19"/>
97
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Assembly</text>
98
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn&#45;asm shellcode</text>
99
+ </g>
100
+ <!-- Fuzz&#45;&gt;Asm -->
101
+ <g id="edge5" class="edge">
102
+ <title>Fuzz&#45;&gt;Asm</title>
103
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M490.07,-118.19C533.13,-118.19 607.81,-118.19 660.24,-118.19"/>
104
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="660.12,-120.99 668.12,-118.19 660.12,-115.39 660.12,-120.99"/>
105
+ </g>
106
+ <!-- MSF -->
107
+ <g id="node7" class="node">
108
+ <title>MSF</title>
109
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M739,-68.19C739,-68.19 702,-68.19 702,-68.19 696,-68.19 690,-62.19 690,-56.19 690,-56.19 690,-44.19 690,-44.19 690,-38.19 696,-32.19 702,-32.19 702,-32.19 739,-32.19 739,-32.19 745,-32.19 751,-38.19 751,-44.19 751,-44.19 751,-56.19 751,-56.19 751,-62.19 745,-68.19 739,-68.19"/>
110
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Metasploit</text>
111
+ <text xml:space="preserve" text-anchor="middle" x="720.5" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">module</text>
112
+ </g>
113
+ <!-- TB&#45;&gt;MSF -->
114
+ <g id="edge6" class="edge">
115
+ <title>TB&#45;&gt;MSF</title>
116
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M507.33,-50.19C557.76,-50.19 633.56,-50.19 679.6,-50.19"/>
117
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="679.54,-52.99 687.54,-50.19 679.54,-47.39 679.54,-52.99"/>
118
+ </g>
119
+ <!-- H1 -->
120
+ <g id="node8" class="node">
121
+ <title>H1</title>
122
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M950,-136.19C950,-136.19 870.25,-136.19 870.25,-136.19 864.25,-136.19 858.25,-130.19 858.25,-124.19 858.25,-124.19 858.25,-112.19 858.25,-112.19 858.25,-106.19 864.25,-100.19 870.25,-100.19 870.25,-100.19 950,-100.19 950,-100.19 956,-100.19 962,-106.19 962,-112.19 962,-112.19 962,-124.19 962,-124.19 962,-130.19 956,-136.19 950,-136.19"/>
123
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-120.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">HackerOne</text>
124
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-108.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">BugCrowd · Synack</text>
125
+ </g>
126
+ <!-- Asm&#45;&gt;H1 -->
127
+ <g id="edge7" class="edge">
128
+ <title>Asm&#45;&gt;H1</title>
129
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M770.8,-118.19C794.47,-118.19 823.07,-118.19 848.11,-118.19"/>
130
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="847.9,-120.99 855.9,-118.19 847.9,-115.39 847.9,-120.99"/>
131
+ </g>
132
+ <!-- Rep -->
133
+ <g id="node9" class="node">
134
+ <title>Rep</title>
135
+ <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M939.88,-68.19C939.88,-68.19 880.38,-68.19 880.38,-68.19 874.38,-68.19 868.38,-62.19 868.38,-56.19 868.38,-56.19 868.38,-44.19 868.38,-44.19 868.38,-38.19 874.38,-32.19 880.38,-32.19 880.38,-32.19 939.88,-32.19 939.88,-32.19 945.88,-32.19 951.88,-38.19 951.88,-44.19 951.88,-44.19 951.88,-56.19 951.88,-56.19 951.88,-62.19 945.88,-68.19 939.88,-68.19"/>
136
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-52.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports · Skills</text>
137
+ <text xml:space="preserve" text-anchor="middle" x="910.12" y="-40.69" font-family="sans-Serif" font-size="10.00" fill="#0f172a">distill_skill</text>
138
+ </g>
139
+ <!-- MSF&#45;&gt;Rep -->
140
+ <g id="edge8" class="edge">
141
+ <title>MSF&#45;&gt;Rep</title>
142
+ <path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M751.65,-50.19C780.31,-50.19 823.98,-50.19 858.07,-50.19"/>
143
+ <polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="857.9,-52.99 865.9,-50.19 857.9,-47.39 857.9,-52.99"/>
144
+ </g>
145
+ <!-- Rep&#45;&gt;AI -->
146
+ <g id="edge9" class="edge">
147
+ <title>Rep&#45;&gt;AI</title>
148
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M867.84,-36.49C842.58,-28.83 809.42,-20.07 779.25,-16.19 609.87,5.62 564.45,5.09 395,-16.19 367.6,-19.63 337.77,-26.9 313.29,-33.84"/>
149
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="312.63,-31.11 305.73,-36.03 314.19,-36.49 312.63,-31.11"/>
150
+ <text xml:space="preserve" text-anchor="middle" x="588.75" y="-2.92" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">lesson → next hunt</text>
151
+ </g>
152
+ </g>
153
+ </svg>
@@ -0,0 +1,33 @@
1
+ # The pwn REPL
2
+
3
+ The `pwn` command launches a Pry-based interactive Ruby shell with the entire `PWN` namespace pre-loaded.
4
+
5
+ ## Starting
6
+
7
+ ```bash
8
+ pwn
9
+ pwn[v0.5.613]:001 >>>
10
+ ```
11
+
12
+ ## Key Features
13
+
14
+ - Direct access to every `PWN::` constant and plugin.
15
+ - Tab completion for classes and methods.
16
+ - Multi-line support.
17
+ - Easy prototyping of security workflows.
18
+ - `PWN.help` and inspection of any object.
19
+
20
+ ## Useful REPL Commands
21
+
22
+ ```
23
+ pwn[v0.5.613]:001 >>> PWN::Plugins.constants.sort
24
+ pwn[v0.5.613]:001 >>> PWN::Plugins::BurpSuite.methods(false).sort
25
+ pwn[v0.5.613]:001 >>> PWN::SAST.constants
26
+ pwn[v0.5.613]:001 >>> pwn-ai
27
+ ```
28
+
29
+ See:
30
+ - [pwn-ai Agent](pwn-ai-Agent.md) — the killer feature inside the REPL
31
+ - [General Usage](General-PWN-Usage.md)
32
+
33
+ [[Diagrams]]
@@ -0,0 +1,43 @@
1
+ # pwn-ai Autonomous Agent
2
+
3
+ The most powerful way to use PWN is via the `pwn-ai` command inside the REPL.
4
+
5
+ ## Activation
6
+
7
+ ```bash
8
+ pwn[v0.5.613]:001 >>> pwn-ai
9
+ [*] pwn-ai agent TUI activated...
10
+ >
11
+ ```
12
+
13
+ ## Capabilities
14
+
15
+ - Natural language instruction of complex multi-step security tasks.
16
+ - Full tool calling access to:
17
+ - All `PWN::Plugins` (BurpSuite preferred, TransparentBrowser, NmapIt, Shodan, Metasploit, etc.)
18
+ - `PWN::SAST`
19
+ - `PWN::Reports`
20
+ - Shell execution
21
+ - Memory recall / remember
22
+ - Skill usage and distillation
23
+ - Learning / introspection loop
24
+ - Persistent context across interactions via memory and skills.
25
+
26
+ ## Tips
27
+
28
+ - Use `SHIFT+ENTER` to insert newlines.
29
+ - `ENTER` submits the prompt.
30
+ - Type `back` or `exit` to return to normal REPL.
31
+ - Example prompt:
32
+ ```
33
+ Scan https://target with NmapIt + TransparentBrowser (via BurpSuite),
34
+ run relevant SAST if source present, exploit any findings, generate report.
35
+ ```
36
+
37
+ ## Self-Improvement
38
+
39
+ Successful workflows can be distilled into reusable **Skills** (see [Skills-Memory-Learning](Skills-Memory-Learning.md)).
40
+
41
+ See also [AI Integration](AI-Integration.md).
42
+
43
+ [[Diagrams]]
data/git_commit.sh CHANGED
@@ -37,7 +37,7 @@ if (( $# == 3 )); then
37
37
  fi
38
38
 
39
39
  # Generate RDoc JSONL for fine-tunning LLMs
40
- echo "[TEMP] skipping rdoc for commit completion"
40
+ pwn_rdoc_to_jsonl --rdoc-root-dir '/opt/pwn/rdoc/PWN' --jsonl-results '/opt/pwn/third_party/pwn_rdoc.jsonl'
41
41
 
42
42
  # Tag for every 100 commits (i.e. 0.1.100, 0.1.200, etc)
43
43
  tag_this_version_bool=`ruby -r 'pwn' -e 'if (PWN::VERSION.split(".")[-1].to_i + 1) % 100 == 0; then print true; else print false; end'`
@@ -35,7 +35,7 @@ module PWN
35
35
  raise "ERROR: Unsupported type parameter value '#{type}'. Supported values are :opcodes_to_asm and :asm_to_opcodes."
36
36
  end
37
37
 
38
- PWN::AI::Introspection.reflect_on(
38
+ PWN::AI::Agent::Introspection.reflect_on(
39
39
  system_role_content: system_role_content,
40
40
  request: request,
41
41
  suppress_pii_warning: true
@@ -16,7 +16,7 @@ module PWN
16
16
 
17
17
  system_role_content = 'Provide a useful summary of this latest bitcoin block returned from a bitcoin node via getblockchaininfo.'
18
18
 
19
- PWN::AI::Introspection.reflect_on(
19
+ PWN::AI::Agent::Introspection.reflect_on(
20
20
  system_role_content: system_role_content,
21
21
  request: request,
22
22
  suppress_pii_warning: true
@@ -50,7 +50,7 @@ module PWN
50
50
  Analyze provided HTTP request/response pairs methodically: Start with a high-level overview, then dive into specifics, flag potential issues with evidence from the traffic, and end with PoC if applicable. Be verbose in reasoning but concise in output. Prioritize high-severity findings. If data is incomplete, request clarifications. If analyzing a JavaScript source map file (i.e. .js.map), focus on deobfuscating and identifying any potentially vulnerable code patterns, especially those that could lead to client-side vulnerabilities like DOM XSS, prototype pollution, or insecure deserialization. Look for patterns such as eval, document.write, innerHTML assignments, and event handlers that could be influenced by user input. Provide detailed analysis and PoCs if vulnerabilities are identified.
51
51
  '
52
52
 
53
- PWN::AI::Introspection.reflect_on(
53
+ PWN::AI::Agent::Introspection.reflect_on(
54
54
  system_role_content: system_role_content,
55
55
  request: request,
56
56
  suppress_pii_warning: true