pwn 0.5.613 → 0.5.615

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 (87) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -10
  3. data/README.md +110 -24
  4. data/documentation/AI-Integration.md +36 -0
  5. data/documentation/BurpSuite.md +26 -0
  6. data/documentation/Contributing.md +31 -0
  7. data/documentation/Diagrams.md +57 -0
  8. data/documentation/Drivers.md +25 -0
  9. data/documentation/General-PWN-Usage.md +40 -0
  10. data/documentation/Home.md +51 -0
  11. data/documentation/How-PWN-Works.md +60 -0
  12. data/documentation/Installation.md +50 -0
  13. data/documentation/NmapIt.md +18 -0
  14. data/documentation/Plugins.md +59 -0
  15. data/documentation/Reporting.md +28 -0
  16. data/documentation/SAST.md +32 -0
  17. data/documentation/Skills-Memory-Learning.md +44 -0
  18. data/documentation/Transparent-Browser.md +32 -0
  19. data/documentation/Troubleshooting.md +38 -0
  20. data/documentation/What-is-PWN.md +34 -0
  21. data/documentation/Why-PWN.md +18 -0
  22. data/documentation/diagrams/ai-integration-tool-calling.svg +134 -0
  23. data/documentation/diagrams/burp-vs-zap-preference.svg +84 -0
  24. data/documentation/diagrams/code-scanning-sast.svg +112 -0
  25. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +23 -0
  26. data/documentation/diagrams/dot/burp-vs-zap-preference.dot +15 -0
  27. data/documentation/diagrams/dot/code-scanning-sast.dot +21 -0
  28. data/documentation/diagrams/dot/driver-framework.dot +17 -0
  29. data/documentation/diagrams/dot/fuzzing-workflow.dot +27 -0
  30. data/documentation/diagrams/dot/history-to-drivers.dot +20 -0
  31. data/documentation/diagrams/dot/memory-skills-detailed.dot +28 -0
  32. data/documentation/diagrams/dot/network-infra-testing.dot +22 -0
  33. data/documentation/diagrams/dot/overall-pwn-architecture.dot +49 -0
  34. data/documentation/diagrams/dot/penetration-testing-workflow.dot +29 -0
  35. data/documentation/diagrams/dot/plugin-ecosystem.dot +31 -0
  36. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +57 -0
  37. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +37 -0
  38. data/documentation/diagrams/dot/reporting-pipeline.dot +17 -0
  39. data/documentation/diagrams/dot/reverse-engineering-flow.dot +21 -0
  40. data/documentation/diagrams/dot/sessions-cron-automation.dot +17 -0
  41. data/documentation/diagrams/dot/web-application-testing.dot +27 -0
  42. data/documentation/diagrams/dot/zero-day-research-flow.dot +27 -0
  43. data/documentation/diagrams/driver-framework.svg +90 -0
  44. data/documentation/diagrams/fuzzing-workflow.svg +147 -0
  45. data/documentation/diagrams/history-to-drivers.svg +117 -0
  46. data/documentation/diagrams/memory-skills-detailed.svg +154 -0
  47. data/documentation/diagrams/network-infra-testing.svg +121 -0
  48. data/documentation/diagrams/overall-pwn-architecture.svg +234 -0
  49. data/documentation/diagrams/penetration-testing-workflow.svg +148 -0
  50. data/documentation/diagrams/plugin-ecosystem.svg +172 -0
  51. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +234 -0
  52. data/documentation/diagrams/pwn-repl-prototyping.svg +179 -0
  53. data/documentation/diagrams/reporting-pipeline.svg +91 -0
  54. data/documentation/diagrams/reverse-engineering-flow.svg +114 -0
  55. data/documentation/diagrams/sessions-cron-automation.svg +92 -0
  56. data/documentation/diagrams/web-application-testing.svg +137 -0
  57. data/documentation/diagrams/zero-day-research-flow.svg +149 -0
  58. data/documentation/pwn-REPL.md +33 -0
  59. data/documentation/pwn-ai-Agent.md +43 -0
  60. data/lib/pwn/ai/agent/learning.rb +377 -0
  61. data/lib/pwn/ai/agent/loop.rb +18 -3
  62. data/lib/pwn/ai/agent/metrics.rb +155 -0
  63. data/lib/pwn/ai/agent/prompt_builder.rb +23 -3
  64. data/lib/pwn/ai/agent/tools/learning.rb +113 -0
  65. data/lib/pwn/ai/agent/tools/skills.rb +94 -8
  66. data/lib/pwn/ai/agent.rb +2 -0
  67. data/lib/pwn/ai/grok.rb +249 -106
  68. data/lib/pwn/config.rb +86 -13
  69. data/lib/pwn/plugins/monkey_patch.rb +2 -2
  70. data/lib/pwn/plugins/repl.rb +68 -3
  71. data/lib/pwn/version.rb +1 -1
  72. data/spec/lib/pwn/ai/agent/learning_spec.rb +68 -0
  73. data/spec/lib/pwn/ai/agent/metrics_spec.rb +27 -0
  74. data/spec/lib/pwn/ai/agent/tools/learning_spec.rb +30 -0
  75. metadata +84 -34
  76. data/documentation/PWN.png +0 -0
  77. data/documentation/PWN_Contributors_and_Users.png +0 -0
  78. data/documentation/fax-spectrogram.png +0 -0
  79. data/documentation/fax-waveform.png +0 -0
  80. data/documentation/frozen_string_literal_files_changed_from_false_to_true.txt +0 -54
  81. data/documentation/lifecycle_authz_replay.example.yaml +0 -27
  82. data/documentation/pwn_android_war_dialer_session.png +0 -0
  83. data/documentation/pwn_install.png +0 -0
  84. data/documentation/pwn_wallpaper.jpg +0 -0
  85. data/documentation/ringing-spectrogram.png +0 -0
  86. data/documentation/ringing-waveform.png +0 -0
  87. data/documentation/vulnerability_report_template.md +0 -37
@@ -0,0 +1,121 @@
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: Network &amp; Infrastructure Testing with PWN Pages: 1 -->
7
+ <svg width="236pt" height="490pt"
8
+ viewBox="0.00 0.00 236.00 490.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(4 486)">
10
+ <title>Network &amp; Infrastructure Testing with PWN</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-486 231.5,-486 231.5,4 -4,4"/>
12
+ <!-- Targets -->
13
+ <g id="node1" class="node">
14
+ <title>Targets</title>
15
+ <path fill="none" stroke="black" d="M155.75,-482C155.75,-482 76,-482 76,-482 70,-482 64,-476 64,-470 64,-470 64,-458 64,-458 64,-452 70,-446 76,-446 76,-446 155.75,-446 155.75,-446 161.75,-446 167.75,-452 167.75,-458 167.75,-458 167.75,-470 167.75,-470 167.75,-476 161.75,-482 155.75,-482"/>
16
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-465.95" font-family="Arial" font-size="9.00">Targets</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-455.45" font-family="Arial" font-size="9.00">(IPs, Domains, ASNs)</text>
18
+ </g>
19
+ <!-- Discovery -->
20
+ <g id="node2" class="node">
21
+ <title>Discovery</title>
22
+ <path fill="none" stroke="black" d="M174.12,-410C174.12,-410 57.62,-410 57.62,-410 51.62,-410 45.62,-404 45.62,-398 45.62,-398 45.62,-382.5 45.62,-382.5 45.62,-376.5 51.62,-370.5 57.62,-370.5 57.62,-370.5 174.12,-370.5 174.12,-370.5 180.12,-370.5 186.12,-376.5 186.12,-382.5 186.12,-382.5 186.12,-398 186.12,-398 186.12,-404 180.12,-410 174.12,-410"/>
23
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-397.45" font-family="Arial" font-size="9.00">Discovery</text>
24
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-386.95" font-family="Arial" font-size="9.00">(NmapIt, pwn_nmap_discover,</text>
25
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-376.45" font-family="Arial" font-size="9.00">Shodan, IPInfo, crt.sh)</text>
26
+ </g>
27
+ <!-- Targets&#45;&gt;Discovery -->
28
+ <g id="edge1" class="edge">
29
+ <title>Targets&#45;&gt;Discovery</title>
30
+ <path fill="none" stroke="black" d="M115.88,-445.63C115.88,-438.5 115.88,-430.02 115.88,-421.91"/>
31
+ <polygon fill="black" stroke="black" points="119.38,-421.99 115.88,-411.99 112.38,-421.99 119.38,-421.99"/>
32
+ </g>
33
+ <!-- Enum -->
34
+ <g id="node3" class="node">
35
+ <title>Enum</title>
36
+ <path fill="none" stroke="black" d="M165.12,-334.5C165.12,-334.5 66.62,-334.5 66.62,-334.5 60.62,-334.5 54.62,-328.5 54.62,-322.5 54.62,-322.5 54.62,-310.5 54.62,-310.5 54.62,-304.5 60.62,-298.5 66.62,-298.5 66.62,-298.5 165.12,-298.5 165.12,-298.5 171.12,-298.5 177.12,-304.5 177.12,-310.5 177.12,-310.5 177.12,-322.5 177.12,-322.5 177.12,-328.5 171.12,-334.5 165.12,-334.5"/>
37
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-318.45" font-family="Arial" font-size="9.00">Service Enum</text>
38
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-307.95" font-family="Arial" font-size="9.00">(portscan, version, scripts)</text>
39
+ </g>
40
+ <!-- Discovery&#45;&gt;Enum -->
41
+ <g id="edge2" class="edge">
42
+ <title>Discovery&#45;&gt;Enum</title>
43
+ <path fill="none" stroke="black" d="M115.88,-370.02C115.88,-362.75 115.88,-354.29 115.88,-346.33"/>
44
+ <polygon fill="black" stroke="black" points="119.38,-346.33 115.88,-336.33 112.38,-346.33 119.38,-346.33"/>
45
+ </g>
46
+ <!-- Auth -->
47
+ <g id="node4" class="node">
48
+ <title>Auth</title>
49
+ <path fill="none" stroke="black" d="M151.25,-262.5C151.25,-262.5 80.5,-262.5 80.5,-262.5 74.5,-262.5 68.5,-256.5 68.5,-250.5 68.5,-250.5 68.5,-235 68.5,-235 68.5,-229 74.5,-223 80.5,-223 80.5,-223 151.25,-223 151.25,-223 157.25,-223 163.25,-229 163.25,-235 163.25,-235 163.25,-250.5 163.25,-250.5 163.25,-256.5 157.25,-262.5 151.25,-262.5"/>
50
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-249.95" font-family="Arial" font-size="9.00">Auth Testing</text>
51
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-239.45" font-family="Arial" font-size="9.00">(basic_auth, DAOs,</text>
52
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-228.95" font-family="Arial" font-size="9.00">credential spray)</text>
53
+ </g>
54
+ <!-- Enum&#45;&gt;Auth -->
55
+ <g id="edge3" class="edge">
56
+ <title>Enum&#45;&gt;Auth</title>
57
+ <path fill="none" stroke="black" d="M115.88,-298.13C115.88,-291 115.88,-282.52 115.88,-274.41"/>
58
+ <polygon fill="black" stroke="black" points="119.38,-274.49 115.88,-264.49 112.38,-274.49 119.38,-274.49"/>
59
+ </g>
60
+ <!-- VulnScan -->
61
+ <g id="node5" class="node">
62
+ <title>VulnScan</title>
63
+ <path fill="none" stroke="black" d="M164.75,-187C164.75,-187 67,-187 67,-187 61,-187 55,-181 55,-175 55,-175 55,-159.5 55,-159.5 55,-153.5 61,-147.5 67,-147.5 67,-147.5 164.75,-147.5 164.75,-147.5 170.75,-147.5 176.75,-153.5 176.75,-159.5 176.75,-159.5 176.75,-175 176.75,-175 176.75,-181 170.75,-187 164.75,-187"/>
64
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-174.45" font-family="Arial" font-size="9.00">Vuln Scanning</text>
65
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-163.95" font-family="Arial" font-size="9.00">(NessusCloud, OpenVAS,</text>
66
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-153.45" font-family="Arial" font-size="9.00">Nexpose, Zaproxy)</text>
67
+ </g>
68
+ <!-- Auth&#45;&gt;VulnScan -->
69
+ <g id="edge4" class="edge">
70
+ <title>Auth&#45;&gt;VulnScan</title>
71
+ <path fill="none" stroke="black" d="M115.88,-222.82C115.88,-215.51 115.88,-206.95 115.88,-198.81"/>
72
+ <polygon fill="black" stroke="black" points="119.38,-198.88 115.88,-188.88 112.38,-198.88 119.38,-198.88"/>
73
+ </g>
74
+ <!-- Packet -->
75
+ <g id="node6" class="node">
76
+ <title>Packet</title>
77
+ <path fill="none" stroke="black" d="M97.75,-111.5C97.75,-111.5 12,-111.5 12,-111.5 6,-111.5 0,-105.5 0,-99.5 0,-99.5 0,-84 0,-84 0,-78 6,-72 12,-72 12,-72 97.75,-72 97.75,-72 103.75,-72 109.75,-78 109.75,-84 109.75,-84 109.75,-99.5 109.75,-99.5 109.75,-105.5 103.75,-111.5 97.75,-111.5"/>
78
+ <text xml:space="preserve" text-anchor="middle" x="54.88" y="-98.95" font-family="Arial" font-size="9.00">Packet Crafting</text>
79
+ <text xml:space="preserve" text-anchor="middle" x="54.88" y="-88.45" font-family="Arial" font-size="9.00">(PWN::Plugins::Packet,</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="54.88" y="-77.95" font-family="Arial" font-size="9.00">Sock, Tor)</text>
81
+ </g>
82
+ <!-- VulnScan&#45;&gt;Packet -->
83
+ <g id="edge5" class="edge">
84
+ <title>VulnScan&#45;&gt;Packet</title>
85
+ <path fill="none" stroke="black" d="M100.17,-147.32C93.39,-139.16 85.32,-129.44 77.89,-120.48"/>
86
+ <polygon fill="black" stroke="black" points="80.79,-118.49 71.71,-113.03 75.4,-122.96 80.79,-118.49"/>
87
+ </g>
88
+ <!-- Infra -->
89
+ <g id="node7" class="node">
90
+ <title>Infra</title>
91
+ <path fill="none" stroke="black" d="M215.5,-111.5C215.5,-111.5 140.25,-111.5 140.25,-111.5 134.25,-111.5 128.25,-105.5 128.25,-99.5 128.25,-99.5 128.25,-84 128.25,-84 128.25,-78 134.25,-72 140.25,-72 140.25,-72 215.5,-72 215.5,-72 221.5,-72 227.5,-78 227.5,-84 227.5,-84 227.5,-99.5 227.5,-99.5 227.5,-105.5 221.5,-111.5 215.5,-111.5"/>
92
+ <text xml:space="preserve" text-anchor="middle" x="177.88" y="-98.95" font-family="Arial" font-size="9.00">Infra Specific</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="177.88" y="-88.45" font-family="Arial" font-size="9.00">(AWS, Jenkins, Jira,</text>
94
+ <text xml:space="preserve" text-anchor="middle" x="177.88" y="-77.95" font-family="Arial" font-size="9.00">Vsphere, RabbitMQ)</text>
95
+ </g>
96
+ <!-- VulnScan&#45;&gt;Infra -->
97
+ <g id="edge7" class="edge">
98
+ <title>VulnScan&#45;&gt;Infra</title>
99
+ <path fill="none" stroke="black" d="M131.84,-147.32C138.73,-139.16 146.93,-129.44 154.48,-120.48"/>
100
+ <polygon fill="black" stroke="black" points="157,-122.93 160.77,-113.03 151.65,-118.41 157,-122.93"/>
101
+ </g>
102
+ <!-- ExploitNet -->
103
+ <g id="node8" class="node">
104
+ <title>ExploitNet</title>
105
+ <path fill="none" stroke="black" d="M146,-36C146,-36 85.75,-36 85.75,-36 79.75,-36 73.75,-30 73.75,-24 73.75,-24 73.75,-12 73.75,-12 73.75,-6 79.75,0 85.75,0 85.75,0 146,0 146,0 152,0 158,-6 158,-12 158,-12 158,-24 158,-24 158,-30 152,-36 146,-36"/>
106
+ <text xml:space="preserve" text-anchor="middle" x="115.88" y="-14.7" font-family="Arial" font-size="9.00">Network Exploits</text>
107
+ </g>
108
+ <!-- Packet&#45;&gt;ExploitNet -->
109
+ <g id="edge6" class="edge">
110
+ <title>Packet&#45;&gt;ExploitNet</title>
111
+ <path fill="none" stroke="black" d="M71.22,-71.52C78.14,-63.39 86.3,-53.79 93.74,-45.04"/>
112
+ <polygon fill="black" stroke="black" points="96.36,-47.36 100.17,-37.47 91.03,-42.82 96.36,-47.36"/>
113
+ </g>
114
+ <!-- Infra&#45;&gt;ExploitNet -->
115
+ <g id="edge8" class="edge">
116
+ <title>Infra&#45;&gt;ExploitNet</title>
117
+ <path fill="none" stroke="black" d="M161.26,-71.52C154.16,-63.3 145.76,-53.59 138.13,-44.76"/>
118
+ <polygon fill="black" stroke="black" points="141.02,-42.74 131.83,-37.46 135.72,-47.32 141.02,-42.74"/>
119
+ </g>
120
+ </g>
121
+ </svg>
@@ -0,0 +1,234 @@
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 Overall Architecture Pages: 1 -->
7
+ <svg width="596pt" height="473pt"
8
+ viewBox="0.00 0.00 596.00 473.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(4 469.4)">
10
+ <title>PWN Overall Architecture</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-469.4 592.25,-469.4 592.25,4 -4,4"/>
12
+ <g id="clust1" class="cluster">
13
+ <title>cluster_core</title>
14
+ <polygon fill="none" stroke="darkblue" points="82,-65 82,-166 559,-166 559,-65 82,-65"/>
15
+ <text xml:space="preserve" text-anchor="middle" x="320.5" y="-148.7" font-family="Times,serif" font-size="14.00">Core PWN</text>
16
+ </g>
17
+ <g id="clust2" class="cluster">
18
+ <title>cluster_persistent</title>
19
+ <polygon fill="none" stroke="darkgreen" points="8,-290.83 8,-457.4 291,-457.4 291,-290.83 8,-290.83"/>
20
+ <text xml:space="preserve" text-anchor="middle" x="149.5" y="-440.1" font-family="Times,serif" font-size="14.00">Persistent Layer</text>
21
+ </g>
22
+ <!-- User -->
23
+ <g id="node1" class="node">
24
+ <title>User</title>
25
+ <path fill="none" stroke="black" d="M411.12,-422.96C411.12,-422.96 332.88,-422.96 332.88,-422.96 326.88,-422.96 320.88,-416.96 320.88,-410.96 320.88,-410.96 320.88,-398.96 320.88,-398.96 320.88,-392.96 326.88,-386.96 332.88,-386.96 332.88,-386.96 411.12,-386.96 411.12,-386.96 417.12,-386.96 423.12,-392.96 423.12,-398.96 423.12,-398.96 423.12,-410.96 423.12,-410.96 423.12,-416.96 417.12,-422.96 411.12,-422.96"/>
26
+ <text xml:space="preserve" text-anchor="middle" x="372" y="-406.91" font-family="Arial" font-size="9.00">End User</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="372" y="-396.41" font-family="Arial" font-size="9.00">(Researcher, pwn&#45;ai)</text>
28
+ </g>
29
+ <!-- REPL -->
30
+ <g id="node2" class="node">
31
+ <title>REPL</title>
32
+ <ellipse fill="lightgreen" stroke="black" cx="361" cy="-318.77" rx="44.72" ry="20.51"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="361" y="-320.72" font-family="Arial" font-size="9.00">PWN REPL</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="361" y="-310.22" font-family="Arial" font-size="9.00">(pry + pwn)</text>
35
+ </g>
36
+ <!-- User&#45;&gt;REPL -->
37
+ <g id="edge1" class="edge">
38
+ <title>User&#45;&gt;REPL</title>
39
+ <path fill="none" stroke="black" d="M369.72,-386.52C368.37,-376.15 366.61,-362.71 365.03,-350.6"/>
40
+ <polygon fill="black" stroke="black" points="368.55,-350.51 363.78,-341.05 361.61,-351.42 368.55,-350.51"/>
41
+ <text xml:space="preserve" text-anchor="middle" x="390.03" y="-359.42" font-family="Arial" font-size="8.00">pwn / pwn&#45;ai</text>
42
+ </g>
43
+ <!-- AI -->
44
+ <g id="node3" class="node">
45
+ <title>AI</title>
46
+ <ellipse fill="lightblue" stroke="black" cx="173" cy="-232.01" rx="67" ry="20.51"/>
47
+ <text xml:space="preserve" text-anchor="middle" x="173" y="-233.96" font-family="Arial" font-size="9.00">PWN::AI</text>
48
+ <text xml:space="preserve" text-anchor="middle" x="173" y="-223.46" font-family="Arial" font-size="9.00">(Agent + Providers)</text>
49
+ </g>
50
+ <!-- REPL&#45;&gt;AI -->
51
+ <g id="edge2" class="edge">
52
+ <title>REPL&#45;&gt;AI</title>
53
+ <path fill="none" stroke="black" d="M330.68,-303.46C319.66,-298.78 306.97,-293.98 295,-290.83 259.25,-281.42 244.92,-298.02 212.5,-280.26 204.32,-275.78 197.13,-268.88 191.21,-261.71"/>
54
+ <polygon fill="black" stroke="black" points="194.12,-259.76 185.31,-253.87 188.53,-263.97 194.12,-259.76"/>
55
+ <text xml:space="preserve" text-anchor="middle" x="237.25" y="-272.66" font-family="Arial" font-size="8.00">launch pwn&#45;ai</text>
56
+ </g>
57
+ <!-- Plugins -->
58
+ <g id="node4" class="node">
59
+ <title>Plugins</title>
60
+ <path fill="none" stroke="black" d="M187.5,-133.5C187.5,-133.5 102.5,-133.5 102.5,-133.5 96.5,-133.5 90.5,-127.5 90.5,-121.5 90.5,-121.5 90.5,-85 90.5,-85 90.5,-79 96.5,-73 102.5,-73 102.5,-73 187.5,-73 187.5,-73 193.5,-73 199.5,-79 199.5,-85 199.5,-85 199.5,-121.5 199.5,-121.5 199.5,-127.5 193.5,-133.5 187.5,-133.5"/>
61
+ <text xml:space="preserve" text-anchor="middle" x="145" y="-120.95" font-family="Arial" font-size="9.00">PWN::Plugins</text>
62
+ <text xml:space="preserve" text-anchor="middle" x="145" y="-110.45" font-family="Arial" font-size="9.00">(67+ modules:</text>
63
+ <text xml:space="preserve" text-anchor="middle" x="145" y="-99.95" font-family="Arial" font-size="9.00">Burp, NmapIt,</text>
64
+ <text xml:space="preserve" text-anchor="middle" x="145" y="-89.45" font-family="Arial" font-size="9.00">Metasploit, Fuzz,</text>
65
+ <text xml:space="preserve" text-anchor="middle" x="145" y="-78.95" font-family="Arial" font-size="9.00">TransparentBrowser...)</text>
66
+ </g>
67
+ <!-- REPL&#45;&gt;Plugins -->
68
+ <g id="edge3" class="edge">
69
+ <title>REPL&#45;&gt;Plugins</title>
70
+ <path fill="none" stroke="black" d="M331.97,-302.94C313,-291.7 289.34,-274.45 276,-252.51 257.59,-222.23 287.39,-198.73 262,-174 244.93,-157.38 230.36,-176.55 209,-166 197.11,-160.13 186,-151.25 176.48,-142.05"/>
71
+ <polygon fill="black" stroke="black" points="179.1,-139.72 169.61,-135.02 174.1,-144.61 179.1,-139.72"/>
72
+ <text xml:space="preserve" text-anchor="middle" x="304.5" y="-229.28" font-family="Arial" font-size="8.00">direct invocation</text>
73
+ </g>
74
+ <!-- SAST -->
75
+ <g id="node5" class="node">
76
+ <title>SAST</title>
77
+ <path fill="none" stroke="black" d="M454.38,-121.25C454.38,-121.25 413.62,-121.25 413.62,-121.25 407.62,-121.25 401.62,-115.25 401.62,-109.25 401.62,-109.25 401.62,-97.25 401.62,-97.25 401.62,-91.25 407.62,-85.25 413.62,-85.25 413.62,-85.25 454.38,-85.25 454.38,-85.25 460.38,-85.25 466.38,-91.25 466.38,-97.25 466.38,-97.25 466.38,-109.25 466.38,-109.25 466.38,-115.25 460.38,-121.25 454.38,-121.25"/>
78
+ <text xml:space="preserve" text-anchor="middle" x="434" y="-99.95" font-family="Arial" font-size="9.00">PWN::SAST</text>
79
+ </g>
80
+ <!-- REPL&#45;&gt;SAST -->
81
+ <g id="edge4" class="edge">
82
+ <title>REPL&#45;&gt;SAST</title>
83
+ <path fill="none" stroke="black" d="M377.69,-299.32C382.22,-293.54 386.77,-286.93 390,-280.26 413.71,-231.37 425.45,-168.45 430.58,-132.61"/>
84
+ <polygon fill="black" stroke="black" points="434,-133.43 431.87,-123.05 427.06,-132.49 434,-133.43"/>
85
+ </g>
86
+ <!-- Reports -->
87
+ <g id="node6" class="node">
88
+ <title>Reports</title>
89
+ <path fill="none" stroke="black" d="M371.88,-121.25C371.88,-121.25 322.12,-121.25 322.12,-121.25 316.12,-121.25 310.12,-115.25 310.12,-109.25 310.12,-109.25 310.12,-97.25 310.12,-97.25 310.12,-91.25 316.12,-85.25 322.12,-85.25 322.12,-85.25 371.88,-85.25 371.88,-85.25 377.88,-85.25 383.88,-91.25 383.88,-97.25 383.88,-97.25 383.88,-109.25 383.88,-109.25 383.88,-115.25 377.88,-121.25 371.88,-121.25"/>
90
+ <text xml:space="preserve" text-anchor="middle" x="347" y="-99.95" font-family="Arial" font-size="9.00">PWN::Reports</text>
91
+ </g>
92
+ <!-- REPL&#45;&gt;Reports -->
93
+ <g id="edge5" class="edge">
94
+ <title>REPL&#45;&gt;Reports</title>
95
+ <path fill="none" stroke="black" d="M369.77,-298.29C371.92,-292.59 373.91,-286.28 375,-280.26 383.39,-233.79 383.96,-220.37 375,-174 372.22,-159.63 366.51,-144.47 360.96,-131.96"/>
96
+ <polygon fill="black" stroke="black" points="364.23,-130.7 356.84,-123.11 357.89,-133.66 364.23,-130.7"/>
97
+ </g>
98
+ <!-- Driver -->
99
+ <g id="node7" class="node">
100
+ <title>Driver</title>
101
+ <path fill="none" stroke="black" d="M539.12,-121.25C539.12,-121.25 496.88,-121.25 496.88,-121.25 490.88,-121.25 484.88,-115.25 484.88,-109.25 484.88,-109.25 484.88,-97.25 484.88,-97.25 484.88,-91.25 490.88,-85.25 496.88,-85.25 496.88,-85.25 539.12,-85.25 539.12,-85.25 545.12,-85.25 551.12,-91.25 551.12,-97.25 551.12,-97.25 551.12,-109.25 551.12,-109.25 551.12,-115.25 545.12,-121.25 539.12,-121.25"/>
102
+ <text xml:space="preserve" text-anchor="middle" x="518" y="-99.95" font-family="Arial" font-size="9.00">PWN::Driver</text>
103
+ </g>
104
+ <!-- REPL&#45;&gt;Driver -->
105
+ <g id="edge6" class="edge">
106
+ <title>REPL&#45;&gt;Driver</title>
107
+ <path fill="none" stroke="black" d="M383.74,-301.1C391.28,-295 399.42,-287.75 406,-280.26 447.91,-232.61 484.91,-167.74 504.1,-131.54"/>
108
+ <polygon fill="black" stroke="black" points="507.01,-133.53 508.54,-123.04 500.81,-130.28 507.01,-133.53"/>
109
+ </g>
110
+ <!-- Memory -->
111
+ <g id="node8" class="node">
112
+ <title>Memory</title>
113
+ <path fill="none" stroke="black" d="M280.25,-121.25C280.25,-121.25 229.75,-121.25 229.75,-121.25 223.75,-121.25 217.75,-115.25 217.75,-109.25 217.75,-109.25 217.75,-97.25 217.75,-97.25 217.75,-91.25 223.75,-85.25 229.75,-85.25 229.75,-85.25 280.25,-85.25 280.25,-85.25 286.25,-85.25 292.25,-91.25 292.25,-97.25 292.25,-97.25 292.25,-109.25 292.25,-109.25 292.25,-115.25 286.25,-121.25 280.25,-121.25"/>
114
+ <text xml:space="preserve" text-anchor="middle" x="255" y="-99.95" font-family="Arial" font-size="9.00">PWN::Memory</text>
115
+ </g>
116
+ <!-- REPL&#45;&gt;Memory -->
117
+ <g id="edge9" class="edge">
118
+ <title>REPL&#45;&gt;Memory</title>
119
+ <path fill="none" stroke="black" d="M359.21,-298.1C356.61,-276.1 350.54,-239.83 337,-211.5 325.88,-188.23 316.7,-186.45 301,-166 292.18,-154.52 282.6,-141.7 274.47,-130.73"/>
120
+ <polygon fill="black" stroke="black" points="277.41,-128.83 268.65,-122.87 271.78,-132.99 277.41,-128.83"/>
121
+ </g>
122
+ <!-- BinDrivers -->
123
+ <g id="node13" class="node">
124
+ <title>BinDrivers</title>
125
+ <path fill="none" stroke="black" d="M576.25,-36C576.25,-36 519.75,-36 519.75,-36 513.75,-36 507.75,-30 507.75,-24 507.75,-24 507.75,-12 507.75,-12 507.75,-6 513.75,0 519.75,0 519.75,0 576.25,0 576.25,0 582.25,0 588.25,-6 588.25,-12 588.25,-12 588.25,-24 588.25,-24 588.25,-30 582.25,-36 576.25,-36"/>
126
+ <text xml:space="preserve" text-anchor="middle" x="548" y="-19.95" font-family="Arial" font-size="9.00">/opt/pwn/bin/</text>
127
+ <text xml:space="preserve" text-anchor="middle" x="548" y="-9.45" font-family="Arial" font-size="9.00">(Drivers &amp; CLIs)</text>
128
+ </g>
129
+ <!-- REPL&#45;&gt;BinDrivers -->
130
+ <g id="edge10" class="edge">
131
+ <title>REPL&#45;&gt;BinDrivers</title>
132
+ <path fill="none" stroke="black" d="M394.13,-304.81C442.17,-283.94 529.12,-237.81 563,-166 581.05,-127.73 569.62,-77.76 559.2,-47.05"/>
133
+ <polygon fill="black" stroke="black" points="562.52,-45.93 555.83,-37.71 555.93,-48.3 562.52,-45.93"/>
134
+ </g>
135
+ <!-- AI&#45;&gt;Plugins -->
136
+ <g id="edge7" class="edge">
137
+ <title>AI&#45;&gt;Plugins</title>
138
+ <path fill="none" stroke="black" d="M156.11,-212C152.11,-206.41 148.39,-200.04 146.25,-193.5 141.25,-178.25 140.09,-160.72 140.48,-145.26"/>
139
+ <polygon fill="black" stroke="black" points="143.97,-145.59 140.97,-135.43 136.98,-145.24 143.97,-145.59"/>
140
+ <text xml:space="preserve" text-anchor="middle" x="163.12" y="-185.9" font-family="Arial" font-size="8.00">tool calls</text>
141
+ <text xml:space="preserve" text-anchor="middle" x="163.12" y="-176.15" font-family="Arial" font-size="8.00">pwn_eval</text>
142
+ </g>
143
+ <!-- AI&#45;&gt;Memory -->
144
+ <g id="edge8" class="edge">
145
+ <title>AI&#45;&gt;Memory</title>
146
+ <path fill="none" stroke="black" d="M185.63,-211.48C199.55,-189.97 222.02,-155.24 237.59,-131.16"/>
147
+ <polygon fill="black" stroke="black" points="240.49,-133.13 242.98,-122.83 234.61,-129.32 240.49,-133.13"/>
148
+ <text xml:space="preserve" text-anchor="middle" x="238.34" y="-181.03" font-family="Arial" font-size="8.00">remember/recall</text>
149
+ </g>
150
+ <!-- Learn -->
151
+ <g id="node12" class="node">
152
+ <title>Learn</title>
153
+ <path fill="none" stroke="black" d="M106.12,-421.27C106.12,-423.27 85.9,-424.9 61,-424.9 36.1,-424.9 15.88,-423.27 15.88,-421.27 15.88,-421.27 15.88,-388.65 15.88,-388.65 15.88,-386.65 36.1,-385.02 61,-385.02 85.9,-385.02 106.12,-386.65 106.12,-388.65 106.12,-388.65 106.12,-421.27 106.12,-421.27"/>
154
+ <path fill="none" stroke="black" d="M106.12,-421.27C106.12,-419.27 85.9,-417.65 61,-417.65 36.1,-417.65 15.88,-419.27 15.88,-421.27"/>
155
+ <text xml:space="preserve" text-anchor="middle" x="61" y="-406.91" font-family="Arial" font-size="9.00">Learning</text>
156
+ <text xml:space="preserve" text-anchor="middle" x="61" y="-396.41" font-family="Arial" font-size="9.00">(Metrics + JSONL)</text>
157
+ </g>
158
+ <!-- AI&#45;&gt;Learn -->
159
+ <g id="edge13" class="edge">
160
+ <title>AI&#45;&gt;Learn</title>
161
+ <path fill="none" stroke="black" d="M171.47,-252.98C168.34,-281.33 158.93,-333.49 131,-367.02 126.77,-372.1 121.67,-376.57 116.16,-380.48"/>
162
+ <polygon fill="black" stroke="black" points="114.45,-377.43 107.88,-385.74 118.2,-383.33 114.45,-377.43"/>
163
+ <text xml:space="preserve" text-anchor="middle" x="182.2" y="-316.04" font-family="Arial" font-size="8.00">distill skills</text>
164
+ </g>
165
+ <!-- Plugins&#45;&gt;Learn -->
166
+ <g id="edge12" class="edge">
167
+ <title>Plugins&#45;&gt;Learn</title>
168
+ <path fill="none" stroke="black" d="M127.8,-133.6C116.56,-154.53 102.92,-183.77 97,-211.5 93.19,-229.33 94.08,-234.52 97,-252.51 98.35,-260.84 101.65,-262.19 103,-270.51 109.87,-312.85 120.68,-327.94 103,-367.02 101.48,-370.39 99.48,-373.56 97.19,-376.54"/>
169
+ <polygon fill="black" stroke="black" points="94.79,-373.98 90.61,-383.72 99.95,-378.71 94.79,-373.98"/>
170
+ </g>
171
+ <!-- Driver&#45;&gt;BinDrivers -->
172
+ <g id="edge11" class="edge">
173
+ <title>Driver&#45;&gt;BinDrivers</title>
174
+ <path fill="none" stroke="black" d="M524.22,-85C528.2,-73.95 533.46,-59.36 538.01,-46.71"/>
175
+ <polygon fill="black" stroke="black" points="541.18,-48.25 541.28,-37.65 534.6,-45.87 541.18,-48.25"/>
176
+ </g>
177
+ <!-- Skills -->
178
+ <g id="node9" class="node">
179
+ <title>Skills</title>
180
+ <path fill="none" stroke="black" d="M87.75,-335.08C87.75,-337.08 71.73,-338.71 52,-338.71 32.27,-338.71 16.25,-337.08 16.25,-335.08 16.25,-335.08 16.25,-302.46 16.25,-302.46 16.25,-300.46 32.27,-298.83 52,-298.83 71.73,-298.83 87.75,-300.46 87.75,-302.46 87.75,-302.46 87.75,-335.08 87.75,-335.08"/>
181
+ <path fill="none" stroke="black" d="M87.75,-335.08C87.75,-333.08 71.73,-331.46 52,-331.46 32.27,-331.46 16.25,-333.08 16.25,-335.08"/>
182
+ <text xml:space="preserve" text-anchor="middle" x="52" y="-320.72" font-family="Arial" font-size="9.00">PWN::Skills</text>
183
+ <text xml:space="preserve" text-anchor="middle" x="52" y="-310.22" font-family="Arial" font-size="9.00">(~/.pwn/skills)</text>
184
+ </g>
185
+ <!-- Skills&#45;&gt;REPL -->
186
+ <g id="edge16" class="edge">
187
+ <title>Skills&#45;&gt;REPL</title>
188
+ <path fill="none" stroke="black" d="M85.29,-337.67C103.73,-347.05 127.43,-357.38 150,-362.15 209.14,-374.65 227.62,-377.82 286,-362.15 300.79,-358.18 315.67,-350.51 328.24,-342.71"/>
189
+ <polygon fill="black" stroke="black" points="330.04,-345.71 336.51,-337.32 326.22,-339.85 330.04,-345.71"/>
190
+ </g>
191
+ <!-- Skills&#45;&gt;AI -->
192
+ <g id="edge15" class="edge">
193
+ <title>Skills&#45;&gt;AI</title>
194
+ <path fill="none" stroke="black" d="M65.51,-298.57C72.79,-289.23 82.39,-278.36 92.75,-270.51 101.39,-263.97 111.36,-258.18 121.27,-253.23"/>
195
+ <polygon fill="black" stroke="black" points="122.61,-256.47 130.15,-249.03 119.62,-250.14 122.61,-256.47"/>
196
+ <text xml:space="preserve" text-anchor="middle" x="120.88" y="-272.66" font-family="Arial" font-size="8.00">context injection</text>
197
+ </g>
198
+ <!-- Sess -->
199
+ <g id="node10" class="node">
200
+ <title>Sess</title>
201
+ <path fill="none" stroke="black" d="M203.5,-419.69C203.5,-421.49 185.8,-422.96 164,-422.96 142.2,-422.96 124.5,-421.49 124.5,-419.69 124.5,-419.69 124.5,-390.23 124.5,-390.23 124.5,-388.43 142.2,-386.96 164,-386.96 185.8,-386.96 203.5,-388.43 203.5,-390.23 203.5,-390.23 203.5,-419.69 203.5,-419.69"/>
202
+ <path fill="none" stroke="black" d="M203.5,-419.69C203.5,-417.88 185.8,-416.42 164,-416.42 142.2,-416.42 124.5,-417.88 124.5,-419.69"/>
203
+ <text xml:space="preserve" text-anchor="middle" x="164" y="-401.66" font-family="Arial" font-size="9.00">PWN::Sessions</text>
204
+ </g>
205
+ <!-- Sess&#45;&gt;REPL -->
206
+ <g id="edge18" class="edge">
207
+ <title>Sess&#45;&gt;REPL</title>
208
+ <path fill="none" stroke="black" d="M180.75,-386.54C191.22,-376.59 205.5,-364.67 220.25,-357.27 250.8,-341.97 261.99,-348.12 295,-339.27 300.99,-337.67 307.26,-335.91 313.45,-334.14"/>
209
+ <polygon fill="black" stroke="black" points="314.36,-337.52 322.99,-331.36 312.41,-330.8 314.36,-337.52"/>
210
+ <text xml:space="preserve" text-anchor="middle" x="243.12" y="-359.42" font-family="Arial" font-size="8.00">replay / audit</text>
211
+ </g>
212
+ <!-- Cron -->
213
+ <g id="node11" class="node">
214
+ <title>Cron</title>
215
+ <path fill="none" stroke="black" d="M282.88,-419.69C282.88,-421.49 269.04,-422.96 252,-422.96 234.96,-422.96 221.12,-421.49 221.12,-419.69 221.12,-419.69 221.12,-390.23 221.12,-390.23 221.12,-388.43 234.96,-386.96 252,-386.96 269.04,-386.96 282.88,-388.43 282.88,-390.23 282.88,-390.23 282.88,-419.69 282.88,-419.69"/>
216
+ <path fill="none" stroke="black" d="M282.88,-419.69C282.88,-417.88 269.04,-416.42 252,-416.42 234.96,-416.42 221.12,-417.88 221.12,-419.69"/>
217
+ <text xml:space="preserve" text-anchor="middle" x="252" y="-401.66" font-family="Arial" font-size="9.00">PWN::Cron</text>
218
+ </g>
219
+ <!-- Cron&#45;&gt;REPL -->
220
+ <g id="edge17" class="edge">
221
+ <title>Cron&#45;&gt;REPL</title>
222
+ <path fill="none" stroke="black" d="M258.44,-386.65C262.76,-376.98 269.26,-365.31 278,-357.27 288.18,-347.91 301.1,-340.56 313.7,-334.95"/>
223
+ <polygon fill="black" stroke="black" points="314.83,-338.27 322.73,-331.22 312.16,-331.8 314.83,-338.27"/>
224
+ <text xml:space="preserve" text-anchor="middle" x="320" y="-359.42" font-family="Arial" font-size="8.00">schedule drivers/agents</text>
225
+ </g>
226
+ <!-- Learn&#45;&gt;Skills -->
227
+ <g id="edge14" class="edge">
228
+ <title>Learn&#45;&gt;Skills</title>
229
+ <path fill="none" stroke="black" d="M44.09,-384.87C40.28,-379.46 36.76,-373.32 34.75,-367.02 32.94,-361.35 33.32,-355.34 34.85,-349.58"/>
230
+ <polygon fill="black" stroke="black" points="38.07,-350.96 38.4,-340.37 31.54,-348.44 38.07,-350.96"/>
231
+ <text xml:space="preserve" text-anchor="middle" x="68.88" y="-359.42" font-family="Arial" font-size="8.00">promote successful</text>
232
+ </g>
233
+ </g>
234
+ </svg>
@@ -0,0 +1,148 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 14.1.2 (0)
5
+ -->
6
+ <!-- Title: PWN Penetration Testing Workflow Pages: 1 -->
7
+ <svg width="295pt" height="807pt"
8
+ viewBox="0.00 0.00 295.00 807.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(4 802.91)">
10
+ <title>PWN Penetration Testing Workflow</title>
11
+ <polygon fill="white" stroke="none" points="-4,4 -4,-802.91 290.77,-802.91 290.77,4 -4,4"/>
12
+ <!-- Target -->
13
+ <g id="node1" class="node">
14
+ <title>Target</title>
15
+ <path fill="none" stroke="black" d="M224.77,-798.91C224.77,-798.91 148.77,-798.91 148.77,-798.91 142.77,-798.91 136.77,-792.91 136.77,-786.91 136.77,-786.91 136.77,-774.91 136.77,-774.91 136.77,-768.91 142.77,-762.91 148.77,-762.91 148.77,-762.91 224.77,-762.91 224.77,-762.91 230.77,-762.91 236.77,-768.91 236.77,-774.91 236.77,-774.91 236.77,-786.91 236.77,-786.91 236.77,-792.91 230.77,-798.91 224.77,-798.91"/>
16
+ <text xml:space="preserve" text-anchor="middle" x="186.77" y="-782.86" font-family="Arial" font-size="9.00">Target System</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="186.77" y="-772.36" font-family="Arial" font-size="9.00">(Host, Network, App)</text>
18
+ </g>
19
+ <!-- Recon -->
20
+ <g id="node2" class="node">
21
+ <title>Recon</title>
22
+ <ellipse fill="none" stroke="black" cx="186.77" cy="-697.97" rx="61.7" ry="27.93"/>
23
+ <text xml:space="preserve" text-anchor="middle" x="186.77" y="-705.17" font-family="Arial" font-size="9.00">Recon</text>
24
+ <text xml:space="preserve" text-anchor="middle" x="186.77" y="-694.67" font-family="Arial" font-size="9.00">(NmapIt, Shodan,</text>
25
+ <text xml:space="preserve" text-anchor="middle" x="186.77" y="-684.17" font-family="Arial" font-size="9.00">IPInfo, crt.sh)</text>
26
+ </g>
27
+ <!-- Target&#45;&gt;Recon -->
28
+ <g id="edge1" class="edge">
29
+ <title>Target&#45;&gt;Recon</title>
30
+ <path fill="none" stroke="black" d="M186.77,-762.74C186.77,-755.39 186.77,-746.47 186.77,-737.67"/>
31
+ <polygon fill="black" stroke="black" points="190.27,-737.82 186.77,-727.82 183.27,-737.82 190.27,-737.82"/>
32
+ </g>
33
+ <!-- Scanning -->
34
+ <g id="node3" class="node">
35
+ <title>Scanning</title>
36
+ <ellipse fill="none" stroke="black" cx="136.77" cy="-605.11" rx="70.18" ry="27.93"/>
37
+ <text xml:space="preserve" text-anchor="middle" x="136.77" y="-612.31" font-family="Arial" font-size="9.00">Vuln Scanning</text>
38
+ <text xml:space="preserve" text-anchor="middle" x="136.77" y="-601.81" font-family="Arial" font-size="9.00">(OpenVAS, Nessus,</text>
39
+ <text xml:space="preserve" text-anchor="middle" x="136.77" y="-591.31" font-family="Arial" font-size="9.00">Nexpose, ZAP/Burp)</text>
40
+ </g>
41
+ <!-- Recon&#45;&gt;Scanning -->
42
+ <g id="edge2" class="edge">
43
+ <title>Recon&#45;&gt;Scanning</title>
44
+ <path fill="none" stroke="black" d="M172.31,-670.69C167.48,-661.92 162.01,-651.98 156.83,-642.57"/>
45
+ <polygon fill="black" stroke="black" points="159.99,-641.05 152.1,-633.98 153.86,-644.42 159.99,-641.05"/>
46
+ </g>
47
+ <!-- Web -->
48
+ <g id="node4" class="node">
49
+ <title>Web</title>
50
+ <ellipse fill="none" stroke="black" cx="130.77" cy="-504.83" rx="73.89" ry="35.36"/>
51
+ <text xml:space="preserve" text-anchor="middle" x="130.77" y="-517.28" font-family="Arial" font-size="9.00">Web App Testing</text>
52
+ <text xml:space="preserve" text-anchor="middle" x="130.77" y="-506.78" font-family="Arial" font-size="9.00">(TransparentBrowser,</text>
53
+ <text xml:space="preserve" text-anchor="middle" x="130.77" y="-496.28" font-family="Arial" font-size="9.00">BurpSuite, Zaproxy,</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="130.77" y="-485.78" font-family="Arial" font-size="9.00">URI Buster)</text>
55
+ </g>
56
+ <!-- Scanning&#45;&gt;Web -->
57
+ <g id="edge3" class="edge">
58
+ <title>Scanning&#45;&gt;Web</title>
59
+ <path fill="none" stroke="black" d="M135.1,-576.73C134.63,-569 134.1,-560.37 133.58,-551.86"/>
60
+ <polygon fill="black" stroke="black" points="137.08,-551.71 132.98,-541.94 130.09,-552.14 137.08,-551.71"/>
61
+ </g>
62
+ <!-- Fuzz -->
63
+ <g id="node5" class="node">
64
+ <title>Fuzz</title>
65
+ <ellipse fill="none" stroke="black" cx="120.77" cy="-404.54" rx="87.15" ry="27.93"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="120.77" y="-411.74" font-family="Arial" font-size="9.00">Fuzzing</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="120.77" y="-401.24" font-family="Arial" font-size="9.00">(PWN::Plugins::Fuzz,</text>
68
+ <text xml:space="preserve" text-anchor="middle" x="120.77" y="-390.74" font-family="Arial" font-size="9.00">pwn_fuzz_net_app_proto)</text>
69
+ </g>
70
+ <!-- Web&#45;&gt;Fuzz -->
71
+ <g id="edge4" class="edge">
72
+ <title>Web&#45;&gt;Fuzz</title>
73
+ <path fill="none" stroke="black" d="M127.25,-469.17C126.42,-461.06 125.54,-452.37 124.69,-444.1"/>
74
+ <polygon fill="black" stroke="black" points="128.19,-443.88 123.7,-434.29 121.23,-444.59 128.19,-443.88"/>
75
+ </g>
76
+ <!-- Exploit -->
77
+ <g id="node6" class="node">
78
+ <title>Exploit</title>
79
+ <ellipse fill="none" stroke="black" cx="120.77" cy="-293.18" rx="67" ry="27.93"/>
80
+ <text xml:space="preserve" text-anchor="middle" x="120.77" y="-300.38" font-family="Arial" font-size="9.00">Exploitation</text>
81
+ <text xml:space="preserve" text-anchor="middle" x="120.77" y="-289.88" font-family="Arial" font-size="9.00">(Metasploit, custom</text>
82
+ <text xml:space="preserve" text-anchor="middle" x="120.77" y="-279.38" font-family="Arial" font-size="9.00">BeEF, Serial, etc.)</text>
83
+ </g>
84
+ <!-- Fuzz&#45;&gt;Exploit -->
85
+ <g id="edge5" class="edge">
86
+ <title>Fuzz&#45;&gt;Exploit</title>
87
+ <path fill="none" stroke="black" d="M120.77,-376.23C120.77,-363.05 120.77,-347.01 120.77,-332.62"/>
88
+ <polygon fill="black" stroke="black" points="124.27,-333.04 120.77,-323.04 117.27,-333.04 124.27,-333.04"/>
89
+ </g>
90
+ <!-- Post -->
91
+ <g id="node7" class="node">
92
+ <title>Post</title>
93
+ <ellipse fill="none" stroke="black" cx="71.77" cy="-200.32" rx="71.77" ry="27.93"/>
94
+ <text xml:space="preserve" text-anchor="middle" x="71.77" y="-207.52" font-family="Arial" font-size="9.00">Post&#45;Exploitation</text>
95
+ <text xml:space="preserve" text-anchor="middle" x="71.77" y="-197.02" font-family="Arial" font-size="9.00">(PS, FileFu, SSH,</text>
96
+ <text xml:space="preserve" text-anchor="middle" x="71.77" y="-186.52" font-family="Arial" font-size="9.00">credential extraction)</text>
97
+ </g>
98
+ <!-- Exploit&#45;&gt;Post -->
99
+ <g id="edge6" class="edge">
100
+ <title>Exploit&#45;&gt;Post</title>
101
+ <path fill="none" stroke="black" d="M106.33,-265.41C101.7,-256.81 96.48,-247.14 91.53,-237.96"/>
102
+ <polygon fill="black" stroke="black" points="94.65,-236.37 86.82,-229.23 88.49,-239.69 94.65,-236.37"/>
103
+ </g>
104
+ <!-- Report -->
105
+ <g id="node8" class="node">
106
+ <title>Report</title>
107
+ <ellipse fill="none" stroke="black" cx="83.77" cy="-106.13" rx="56.39" ry="20.51"/>
108
+ <text xml:space="preserve" text-anchor="middle" x="83.77" y="-108.08" font-family="Arial" font-size="9.00">Reporting</text>
109
+ <text xml:space="preserve" text-anchor="middle" x="83.77" y="-97.58" font-family="Arial" font-size="9.00">(PWN::Reports)</text>
110
+ </g>
111
+ <!-- Post&#45;&gt;Report -->
112
+ <g id="edge7" class="edge">
113
+ <title>Post&#45;&gt;Report</title>
114
+ <path fill="none" stroke="black" d="M75.31,-172.16C76.69,-161.55 78.28,-149.32 79.71,-138.35"/>
115
+ <polygon fill="black" stroke="black" points="83.16,-138.95 80.98,-128.58 76.22,-138.04 83.16,-138.95"/>
116
+ </g>
117
+ <!-- MemorySkills -->
118
+ <g id="node9" class="node">
119
+ <title>MemorySkills</title>
120
+ <path fill="none" stroke="black" d="M218.4,-36.25C218.4,-38.25 197.5,-39.88 171.77,-39.88 146.04,-39.88 125.15,-38.25 125.15,-36.25 125.15,-36.25 125.15,-3.62 125.15,-3.62 125.15,-1.62 146.04,0 171.77,0 197.5,0 218.4,-1.62 218.4,-3.62 218.4,-3.62 218.4,-36.25 218.4,-36.25"/>
121
+ <path fill="none" stroke="black" d="M218.4,-36.25C218.4,-34.25 197.5,-32.62 171.77,-32.62 146.04,-32.62 125.15,-34.25 125.15,-36.25"/>
122
+ <text xml:space="preserve" text-anchor="middle" x="171.77" y="-21.89" font-family="Arial" font-size="9.00">Memory + Skills</text>
123
+ <text xml:space="preserve" text-anchor="middle" x="171.77" y="-11.39" font-family="Arial" font-size="9.00">(persistent context)</text>
124
+ </g>
125
+ <!-- Report&#45;&gt;MemorySkills -->
126
+ <g id="edge8" class="edge">
127
+ <title>Report&#45;&gt;MemorySkills</title>
128
+ <path fill="none" stroke="black" d="M89.49,-85.55C92.93,-76.34 98.06,-65.69 105.27,-57.88 109.69,-53.09 114.87,-48.77 120.37,-44.93"/>
129
+ <polygon fill="black" stroke="black" points="121.99,-48.04 128.54,-39.71 118.23,-42.14 121.99,-48.04"/>
130
+ <text xml:space="preserve" text-anchor="middle" x="131.52" y="-60.02" font-family="Arial" font-size="8.00">note outcomes</text>
131
+ </g>
132
+ <!-- MemorySkills&#45;&gt;Recon -->
133
+ <g id="edge9" class="edge">
134
+ <title>MemorySkills&#45;&gt;Recon</title>
135
+ <path fill="none" stroke="black" d="M198.17,-40.32C215.8,-55.68 235.77,-78.88 235.77,-105.13 235.77,-606.11 235.77,-606.11 235.77,-606.11 235.77,-626.34 226.25,-646.39 215.6,-662.49"/>
136
+ <polygon fill="black" stroke="black" points="213.03,-660.05 210.14,-670.25 218.76,-664.09 213.03,-660.05"/>
137
+ <text xml:space="preserve" text-anchor="middle" x="261.27" y="-351.01" font-family="Arial" font-size="8.00">recall previous</text>
138
+ <text xml:space="preserve" text-anchor="middle" x="261.27" y="-341.26" font-family="Arial" font-size="8.00">findings</text>
139
+ </g>
140
+ <!-- MemorySkills&#45;&gt;Exploit -->
141
+ <g id="edge10" class="edge">
142
+ <title>MemorySkills&#45;&gt;Exploit</title>
143
+ <path fill="none" stroke="black" d="M172.36,-40.24C172.98,-77.4 171.9,-161.17 152.77,-228.25 150.16,-237.41 146.23,-246.83 142.02,-255.53"/>
144
+ <polygon fill="black" stroke="black" points="138.94,-253.87 137.5,-264.36 145.17,-257.06 138.94,-253.87"/>
145
+ <text xml:space="preserve" text-anchor="middle" x="192.21" y="-146.79" font-family="Arial" font-size="8.00">reuse exploits</text>
146
+ </g>
147
+ </g>
148
+ </svg>