pwn 0.5.615 → 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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -10
  3. data/bin/pwn +47 -2
  4. data/bin/pwn_gqrx_scanner +75 -18
  5. data/documentation/Diagrams.md +123 -40
  6. data/documentation/General-PWN-Usage.md +50 -30
  7. data/documentation/Home.md +78 -51
  8. data/documentation/How-PWN-Works.md +59 -57
  9. data/documentation/Installation.md +53 -28
  10. data/documentation/What-is-PWN.md +51 -32
  11. data/documentation/Why-PWN.md +41 -11
  12. data/documentation/diagrams/ai-integration-tool-calling.svg +141 -103
  13. data/documentation/diagrams/build.sh +20 -0
  14. data/documentation/diagrams/burp-vs-zap-preference.svg +47 -62
  15. data/documentation/diagrams/code-scanning-sast.svg +139 -79
  16. data/documentation/diagrams/dot/_THEME.md +27 -0
  17. data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
  18. data/documentation/diagrams/dot/ai-integration-tool-calling.dot +47 -20
  19. data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
  20. data/documentation/diagrams/dot/burp-vs-zap-preference.dot +23 -12
  21. data/documentation/diagrams/dot/code-scanning-sast.dot +46 -18
  22. data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
  23. data/documentation/diagrams/dot/driver-framework.dot +36 -14
  24. data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
  25. data/documentation/diagrams/dot/fuzzing-workflow.dot +44 -24
  26. data/documentation/diagrams/dot/history-to-drivers.dot +31 -17
  27. data/documentation/diagrams/dot/memory-skills-detailed.dot +57 -25
  28. data/documentation/diagrams/dot/network-infra-testing.dot +51 -19
  29. data/documentation/diagrams/dot/overall-pwn-architecture.dot +110 -44
  30. data/documentation/diagrams/dot/penetration-testing-workflow.dot +56 -25
  31. data/documentation/diagrams/dot/plugin-ecosystem.dot +41 -27
  32. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +87 -46
  33. data/documentation/diagrams/dot/pwn-repl-prototyping.dot +49 -30
  34. data/documentation/diagrams/dot/reporting-pipeline.dot +43 -14
  35. data/documentation/diagrams/dot/reverse-engineering-flow.dot +40 -18
  36. data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
  37. data/documentation/diagrams/dot/sessions-cron-automation.dot +41 -14
  38. data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
  39. data/documentation/diagrams/dot/web-application-testing.dot +45 -23
  40. data/documentation/diagrams/dot/zero-day-research-flow.dot +46 -24
  41. data/documentation/diagrams/driver-framework.svg +87 -66
  42. data/documentation/diagrams/fuzzing-workflow.svg +128 -115
  43. data/documentation/diagrams/history-to-drivers.svg +84 -82
  44. data/documentation/diagrams/memory-skills-detailed.svg +167 -119
  45. data/documentation/diagrams/network-infra-testing.svg +146 -84
  46. data/documentation/diagrams/overall-pwn-architecture.svg +356 -185
  47. data/documentation/diagrams/penetration-testing-workflow.svg +161 -108
  48. data/documentation/diagrams/plugin-ecosystem.svg +225 -121
  49. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +257 -185
  50. data/documentation/diagrams/pwn-repl-prototyping.svg +126 -137
  51. data/documentation/diagrams/reporting-pipeline.svg +128 -68
  52. data/documentation/diagrams/reverse-engineering-flow.svg +100 -80
  53. data/documentation/diagrams/sessions-cron-automation.svg +112 -68
  54. data/documentation/diagrams/web-application-testing.svg +136 -100
  55. data/documentation/diagrams/zero-day-research-flow.svg +116 -112
  56. data/git_commit.sh +1 -1
  57. data/lib/pwn/ai/agent/assembly.rb +1 -1
  58. data/lib/pwn/ai/agent/btc.rb +1 -1
  59. data/lib/pwn/ai/agent/burp_suite.rb +1 -1
  60. data/lib/pwn/ai/agent/extrospection.rb +618 -0
  61. data/lib/pwn/ai/agent/gqrx.rb +2 -2
  62. data/lib/pwn/ai/agent/hacker_one.rb +1 -1
  63. data/lib/pwn/ai/agent/introspection.rb +91 -0
  64. data/lib/pwn/ai/agent/learning.rb +6 -4
  65. data/lib/pwn/ai/agent/loop.rb +15 -0
  66. data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
  67. data/lib/pwn/ai/agent/sast.rb +1 -1
  68. data/lib/pwn/ai/agent/swarm.rb +437 -0
  69. data/lib/pwn/ai/agent/tools/cron.rb +163 -0
  70. data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
  71. data/lib/pwn/ai/agent/tools/learning.rb +108 -0
  72. data/lib/pwn/ai/agent/tools/memory.rb +27 -0
  73. data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
  74. data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
  75. data/lib/pwn/ai/agent/tools/skills.rb +30 -0
  76. data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
  77. data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
  78. data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
  79. data/lib/pwn/ai/agent.rb +3 -0
  80. data/lib/pwn/ai/anthropic.rb +19 -4
  81. data/lib/pwn/ai.rb +0 -1
  82. data/lib/pwn/config.rb +10 -23
  83. data/lib/pwn/cron.rb +16 -7
  84. data/lib/pwn/plugins/repl.rb +90 -281
  85. data/lib/pwn/sdr/decoder/base.rb +251 -0
  86. data/lib/pwn/sdr/decoder/gsm.rb +84 -185
  87. data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
  88. data/lib/pwn/sdr/decoder.rb +1 -0
  89. data/lib/pwn/sdr/gqrx.rb +446 -65
  90. data/lib/pwn/version.rb +1 -1
  91. data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
  92. data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
  93. data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
  94. data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
  95. data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
  96. data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
  97. data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
  98. data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
  99. data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
  100. data/third_party/pwn_rdoc.jsonl +178 -33
  101. metadata +27 -3
  102. data/lib/pwn/ai/introspection.rb +0 -76
@@ -3,145 +3,158 @@
3
3
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
- <!-- Title: PWN Fuzzing Workflows Pages: 1 -->
7
- <svg width="740pt" height="247pt"
8
- viewBox="0.00 0.00 740.00 247.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 243)">
10
- <title>PWN Fuzzing Workflows</title>
11
- <polygon fill="white" stroke="none" points="-4,4 -4,-243 736.32,-243 736.32,4 -4,4"/>
12
- <!-- Input -->
6
+ <!-- Title: PWN_Fuzz Pages: 1 -->
7
+ <svg width="901pt" height="389pt"
8
+ viewBox="0.00 0.00 901.00 389.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 346.07)">
10
+ <title>PWN_Fuzz</title>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-346.07 858.2,-346.07 858.2,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="322.75" y="-280.87" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Fuzzing with PWN</text>
13
+ <text xml:space="preserve" text-anchor="start" x="299.5" y="-269.42" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">Plugins::Fuzz · Sock · Packet · Reports::Fuzz</text>
14
+ <g id="clust1" class="cluster">
15
+ <title>cluster_gen</title>
16
+ <path fill="#022c22" stroke="#047857" d="M182.75,-36.87C182.75,-36.87 267.25,-36.87 267.25,-36.87 273.25,-36.87 279.25,-42.87 279.25,-48.87 279.25,-48.87 279.25,-175.87 279.25,-175.87 279.25,-181.87 273.25,-187.87 267.25,-187.87 267.25,-187.87 182.75,-187.87 182.75,-187.87 176.75,-187.87 170.75,-181.87 170.75,-175.87 170.75,-175.87 170.75,-48.87 170.75,-48.87 170.75,-42.87 176.75,-36.87 182.75,-36.87"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-164.87" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Generate</text>
18
+ </g>
19
+ <g id="clust2" class="cluster">
20
+ <title>cluster_deliver</title>
21
+ <path fill="#422006" stroke="#a16207" d="M362.25,-36.87C362.25,-36.87 479,-36.87 479,-36.87 485,-36.87 491,-42.87 491,-48.87 491,-48.87 491,-243.87 491,-243.87 491,-249.87 485,-255.87 479,-255.87 479,-255.87 362.25,-255.87 362.25,-255.87 356.25,-255.87 350.25,-249.87 350.25,-243.87 350.25,-243.87 350.25,-48.87 350.25,-48.87 350.25,-42.87 356.25,-36.87 362.25,-36.87"/>
22
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Deliver</text>
23
+ </g>
24
+ <g id="clust3" class="cluster">
25
+ <title>cluster_mon</title>
26
+ <path fill="#450a0a" stroke="#b91c1c" d="M574,-104.87C574,-104.87 645.75,-104.87 645.75,-104.87 651.75,-104.87 657.75,-110.87 657.75,-116.87 657.75,-116.87 657.75,-243.87 657.75,-243.87 657.75,-249.87 651.75,-255.87 645.75,-255.87 645.75,-255.87 574,-255.87 574,-255.87 568,-255.87 562,-249.87 562,-243.87 562,-243.87 562,-116.87 562,-116.87 562,-110.87 568,-104.87 574,-104.87"/>
27
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-232.87" font-family="sans-Serif" font-size="20.00" fill="#fecaca">Monitor</text>
28
+ </g>
29
+ <!-- Seed -->
13
30
  <g id="node1" class="node">
14
- <title>Input</title>
15
- <path fill="none" stroke="black" d="M76,-36C76,-36 12,-36 12,-36 6,-36 0,-30 0,-24 0,-24 0,-12 0,-12 0,-6 6,0 12,0 12,0 76,0 76,0 82,0 88,-6 88,-12 88,-12 88,-24 88,-24 88,-30 82,-36 76,-36"/>
16
- <text xml:space="preserve" text-anchor="middle" x="44" y="-19.95" font-family="Arial" font-size="9.00">Input Corpus</text>
17
- <text xml:space="preserve" text-anchor="middle" x="44" y="-9.45" font-family="Arial" font-size="9.00">(Seeds, Mutators)</text>
31
+ <title>Seed</title>
32
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M79.75,-113.87C79.75,-113.87 12,-113.87 12,-113.87 6,-113.87 0,-107.87 0,-101.87 0,-101.87 0,-89.87 0,-89.87 0,-83.87 6,-77.87 12,-77.87 12,-77.87 79.75,-77.87 79.75,-77.87 85.75,-77.87 91.75,-83.87 91.75,-89.87 91.75,-89.87 91.75,-101.87 91.75,-101.87 91.75,-107.87 85.75,-113.87 79.75,-113.87"/>
33
+ <text xml:space="preserve" text-anchor="middle" x="45.88" y="-98.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Seed corpus /</text>
34
+ <text xml:space="preserve" text-anchor="middle" x="45.88" y="-86.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">protocol grammar</text>
18
35
  </g>
19
- <!-- PWNfuzz -->
20
- <g id="node6" class="node">
21
- <title>PWNfuzz</title>
22
- <ellipse fill="none" stroke="black" cx="181.1" cy="-113" rx="56.1" ry="18"/>
23
- <text xml:space="preserve" text-anchor="middle" x="181.1" y="-109.7" font-family="Arial" font-size="9.00">PWN::Plugins::Fuzz</text>
24
- </g>
25
- <!-- Input&#45;&gt;PWNfuzz -->
26
- <g id="edge1" class="edge">
27
- <title>Input&#45;&gt;PWNfuzz</title>
28
- <path fill="none" stroke="black" d="M71.05,-36.32C92.88,-51.67 124.16,-73.67 147.63,-90.17"/>
29
- <polygon fill="black" stroke="black" points="145.4,-92.88 155.6,-95.77 149.43,-87.16 145.4,-92.88"/>
30
- </g>
31
- <!-- FuzzProto -->
36
+ <!-- Fuzz -->
32
37
  <g id="node2" class="node">
33
- <title>FuzzProto</title>
34
- <path fill="none" stroke="black" d="M388.45,-239C388.45,-239 286.2,-239 286.2,-239 280.2,-239 274.2,-233 274.2,-227 274.2,-227 274.2,-215 274.2,-215 274.2,-209 280.2,-203 286.2,-203 286.2,-203 388.45,-203 388.45,-203 394.45,-203 400.45,-209 400.45,-215 400.45,-215 400.45,-227 400.45,-227 400.45,-233 394.45,-239 388.45,-239"/>
35
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-222.95" font-family="Arial" font-size="9.00">Protocol Fuzz</text>
36
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-212.45" font-family="Arial" font-size="9.00">(pwn_fuzz_net_app_proto)</text>
38
+ <title>Fuzz</title>
39
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M259.25,-148.87C259.25,-148.87 190.75,-148.87 190.75,-148.87 184.75,-148.87 178.75,-142.87 178.75,-136.87 178.75,-136.87 178.75,-124.87 178.75,-124.87 178.75,-118.87 184.75,-112.87 190.75,-112.87 190.75,-112.87 259.25,-112.87 259.25,-112.87 265.25,-112.87 271.25,-118.87 271.25,-124.87 271.25,-124.87 271.25,-136.87 271.25,-136.87 271.25,-142.87 265.25,-148.87 259.25,-148.87"/>
40
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
41
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mutate · generate</text>
37
42
  </g>
38
- <!-- Monitor -->
39
- <g id="node7" class="node">
40
- <title>Monitor</title>
41
- <path fill="none" stroke="black" d="M547.2,-131C547.2,-131 449.45,-131 449.45,-131 443.45,-131 437.45,-125 437.45,-119 437.45,-119 437.45,-107 437.45,-107 437.45,-101 443.45,-95 449.45,-95 449.45,-95 547.2,-95 547.2,-95 553.2,-95 559.2,-101 559.2,-107 559.2,-107 559.2,-119 559.2,-119 559.2,-125 553.2,-131 547.2,-131"/>
42
- <text xml:space="preserve" text-anchor="middle" x="498.32" y="-114.95" font-family="Arial" font-size="9.00">Monitor Crashes</text>
43
- <text xml:space="preserve" text-anchor="middle" x="498.32" y="-104.45" font-family="Arial" font-size="9.00">(PS, logging, core dumps)</text>
44
- </g>
45
- <!-- FuzzProto&#45;&gt;Monitor -->
46
- <g id="edge6" class="edge">
47
- <title>FuzzProto&#45;&gt;Monitor</title>
48
- <path fill="none" stroke="black" d="M384.87,-202.53C390.24,-199.89 395.55,-197.03 400.45,-194 426.05,-178.19 452.05,-156.05 470.66,-138.91"/>
49
- <polygon fill="black" stroke="black" points="472.9,-141.61 477.81,-132.22 468.11,-136.5 472.9,-141.61"/>
43
+ <!-- Seed&#45;&gt;Fuzz -->
44
+ <g id="edge1" class="edge">
45
+ <title>Seed&#45;&gt;Fuzz</title>
46
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.03,-104.8C115.37,-109.41 144.07,-115.08 168.73,-119.95"/>
47
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="167.99,-122.66 176.38,-121.46 169.08,-117.17 167.99,-122.66"/>
50
48
  </g>
51
- <!-- FuzzFile -->
49
+ <!-- Char -->
52
50
  <g id="node3" class="node">
53
- <title>FuzzFile</title>
54
- <path fill="none" stroke="black" d="M369.32,-185C369.32,-185 305.32,-185 305.32,-185 299.32,-185 293.32,-179 293.32,-173 293.32,-173 293.32,-161 293.32,-161 293.32,-155 299.32,-149 305.32,-149 305.32,-149 369.32,-149 369.32,-149 375.32,-149 381.32,-155 381.32,-161 381.32,-161 381.32,-173 381.32,-173 381.32,-179 375.32,-185 369.32,-185"/>
55
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-163.7" font-family="Arial" font-size="9.00">File / Format Fuzz</text>
51
+ <title>Char</title>
52
+ <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M250.62,-80.87C250.62,-80.87 199.38,-80.87 199.38,-80.87 193.38,-80.87 187.38,-74.87 187.38,-68.87 187.38,-68.87 187.38,-56.87 187.38,-56.87 187.38,-50.87 193.38,-44.87 199.38,-44.87 199.38,-44.87 250.62,-44.87 250.62,-44.87 256.62,-44.87 262.62,-50.87 262.62,-56.87 262.62,-56.87 262.62,-68.87 262.62,-68.87 262.62,-74.87 256.62,-80.87 250.62,-80.87"/>
53
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Char</text>
54
+ <text xml:space="preserve" text-anchor="middle" x="225" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">encodings</text>
56
55
  </g>
57
- <!-- FuzzFile&#45;&gt;Monitor -->
58
- <g id="edge7" class="edge">
59
- <title>FuzzFile&#45;&gt;Monitor</title>
60
- <path fill="none" stroke="black" d="M381.77,-152.24C397.46,-146.92 415.52,-140.78 432.63,-134.97"/>
61
- <polygon fill="black" stroke="black" points="433.36,-138.42 441.7,-131.89 431.1,-131.79 433.36,-138.42"/>
56
+ <!-- Seed&#45;&gt;Char -->
57
+ <g id="edge2" class="edge">
58
+ <title>Seed&#45;&gt;Char</title>
59
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M92.03,-87.46C118.11,-82.6 150.87,-76.5 177.22,-71.59"/>
60
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="177.7,-74.35 185.05,-70.13 176.67,-68.84 177.7,-74.35"/>
62
61
  </g>
63
- <!-- FuzzNet -->
62
+ <!-- Sock -->
64
63
  <g id="node4" class="node">
65
- <title>FuzzNet</title>
66
- <path fill="none" stroke="black" d="M377.57,-131C377.57,-131 297.07,-131 297.07,-131 291.07,-131 285.07,-125 285.07,-119 285.07,-119 285.07,-107 285.07,-107 285.07,-101 291.07,-95 297.07,-95 297.07,-95 377.57,-95 377.57,-95 383.57,-95 389.57,-101 389.57,-107 389.57,-107 389.57,-119 389.57,-119 389.57,-125 383.57,-131 377.57,-131"/>
67
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-109.7" font-family="Arial" font-size="9.00">Network Service Fuzz</text>
64
+ <title>Sock</title>
65
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M447,-216.87C447,-216.87 394.25,-216.87 394.25,-216.87 388.25,-216.87 382.25,-210.87 382.25,-204.87 382.25,-204.87 382.25,-192.87 382.25,-192.87 382.25,-186.87 388.25,-180.87 394.25,-180.87 394.25,-180.87 447,-180.87 447,-180.87 453,-180.87 459,-186.87 459,-192.87 459,-192.87 459,-204.87 459,-204.87 459,-210.87 453,-216.87 447,-216.87"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Sock</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP</text>
68
68
  </g>
69
- <!-- FuzzNet&#45;&gt;Monitor -->
70
- <g id="edge8" class="edge">
71
- <title>FuzzNet&#45;&gt;Monitor</title>
72
- <path fill="none" stroke="black" d="M389.95,-113C401.35,-113 413.64,-113 425.68,-113"/>
73
- <polygon fill="black" stroke="black" points="425.6,-116.5 435.6,-113 425.6,-109.5 425.6,-116.5"/>
69
+ <!-- Fuzz&#45;&gt;Sock -->
70
+ <g id="edge3" class="edge">
71
+ <title>Fuzz&#45;&gt;Sock</title>
72
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M271.89,-146.99C302.29,-157.67 342.06,-171.63 372.68,-182.39"/>
73
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="371.54,-184.95 380.01,-184.96 373.39,-179.67 371.54,-184.95"/>
74
74
  </g>
75
- <!-- FuzzWeb -->
75
+ <!-- Packet -->
76
76
  <g id="node5" class="node">
77
- <title>FuzzWeb</title>
78
- <path fill="none" stroke="black" d="M370.45,-77C370.45,-77 304.2,-77 304.2,-77 298.2,-77 292.2,-71 292.2,-65 292.2,-65 292.2,-53 292.2,-53 292.2,-47 298.2,-41 304.2,-41 304.2,-41 370.45,-41 370.45,-41 376.45,-41 382.45,-47 382.45,-53 382.45,-53 382.45,-65 382.45,-65 382.45,-71 376.45,-77 370.45,-77"/>
79
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-60.95" font-family="Arial" font-size="9.00">Web App Fuzz</text>
80
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-50.45" font-family="Arial" font-size="9.00">(XSS vectors, etc.)</text>
77
+ <title>Packet</title>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M451.12,-148.87C451.12,-148.87 390.12,-148.87 390.12,-148.87 384.12,-148.87 378.12,-142.87 378.12,-136.87 378.12,-136.87 378.12,-124.87 378.12,-124.87 378.12,-118.87 384.12,-112.87 390.12,-112.87 390.12,-112.87 451.12,-112.87 451.12,-112.87 457.12,-112.87 463.12,-118.87 463.12,-124.87 463.12,-124.87 463.12,-136.87 463.12,-136.87 463.12,-142.87 457.12,-148.87 451.12,-148.87"/>
79
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Packet</text>
80
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">raw L2/L3</text>
81
81
  </g>
82
- <!-- FuzzWeb&#45;&gt;Monitor -->
83
- <g id="edge9" class="edge">
84
- <title>FuzzWeb&#45;&gt;Monitor</title>
85
- <path fill="none" stroke="black" d="M382.61,-74.04C397.99,-79.26 415.57,-85.23 432.27,-90.91"/>
86
- <polygon fill="black" stroke="black" points="431.06,-94.19 441.65,-94.09 433.31,-87.56 431.06,-94.19"/>
82
+ <!-- Fuzz&#45;&gt;Packet -->
83
+ <g id="edge4" class="edge">
84
+ <title>Fuzz&#45;&gt;Packet</title>
85
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M271.89,-130.87C300.72,-130.87 337.98,-130.87 367.87,-130.87"/>
86
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="367.73,-133.67 375.73,-130.87 367.73,-128.07 367.73,-133.67"/>
87
87
  </g>
88
- <!-- PWNfuzz&#45;&gt;FuzzProto -->
89
- <g id="edge2" class="edge">
90
- <title>PWNfuzz&#45;&gt;FuzzProto</title>
91
- <path fill="none" stroke="black" d="M198.45,-130.26C215.93,-147.99 245.08,-175.51 274.2,-194 276.02,-195.16 277.91,-196.29 279.83,-197.39"/>
92
- <polygon fill="black" stroke="black" points="277.89,-200.32 288.36,-201.94 281.18,-194.15 277.89,-200.32"/>
88
+ <!-- NetApp -->
89
+ <g id="node6" class="node">
90
+ <title>NetApp</title>
91
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M471,-80.87C471,-80.87 370.25,-80.87 370.25,-80.87 364.25,-80.87 358.25,-74.87 358.25,-68.87 358.25,-68.87 358.25,-56.87 358.25,-56.87 358.25,-50.87 364.25,-44.87 370.25,-44.87 370.25,-44.87 471,-44.87 471,-44.87 477,-44.87 483,-50.87 483,-56.87 483,-56.87 483,-68.87 483,-68.87 483,-74.87 477,-80.87 471,-80.87"/>
92
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-65.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn_fuzz_net_app_proto</text>
93
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-53.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">CLI driver</text>
93
94
  </g>
94
- <!-- PWNfuzz&#45;&gt;FuzzFile -->
95
- <g id="edge3" class="edge">
96
- <title>PWNfuzz&#45;&gt;FuzzFile</title>
97
- <path fill="none" stroke="black" d="M220.22,-126.35C238.9,-132.89 261.71,-140.88 282.16,-148.04"/>
98
- <polygon fill="black" stroke="black" points="280.9,-151.3 291.49,-151.3 283.21,-144.69 280.9,-151.3"/>
95
+ <!-- Char&#45;&gt;NetApp -->
96
+ <g id="edge5" class="edge">
97
+ <title>Char&#45;&gt;NetApp</title>
98
+ <path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M262.88,-62.87C286.93,-62.87 319.12,-62.87 348.07,-62.87"/>
99
+ <polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="347.78,-65.67 355.78,-62.87 347.78,-60.07 347.78,-65.67"/>
99
100
  </g>
100
- <!-- PWNfuzz&#45;&gt;FuzzNet -->
101
- <g id="edge4" class="edge">
102
- <title>PWNfuzz&#45;&gt;FuzzNet</title>
103
- <path fill="none" stroke="black" d="M237.34,-113C249.07,-113 261.53,-113 273.51,-113"/>
104
- <polygon fill="black" stroke="black" points="273.3,-116.5 283.3,-113 273.3,-109.5 273.3,-116.5"/>
101
+ <!-- PS -->
102
+ <g id="node7" class="node">
103
+ <title>PS</title>
104
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M637.75,-216.87C637.75,-216.87 582,-216.87 582,-216.87 576,-216.87 570,-210.87 570,-204.87 570,-204.87 570,-192.87 570,-192.87 570,-186.87 576,-180.87 582,-180.87 582,-180.87 637.75,-180.87 637.75,-180.87 643.75,-180.87 649.75,-186.87 649.75,-192.87 649.75,-192.87 649.75,-204.87 649.75,-204.87 649.75,-210.87 643.75,-216.87 637.75,-216.87"/>
105
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-201.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::PS</text>
106
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-189.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">process health</text>
105
107
  </g>
106
- <!-- PWNfuzz&#45;&gt;FuzzWeb -->
107
- <g id="edge5" class="edge">
108
- <title>PWNfuzz&#45;&gt;FuzzWeb</title>
109
- <path fill="none" stroke="black" d="M220.22,-99.65C238.6,-93.22 260.98,-85.38 281.17,-78.31"/>
110
- <polygon fill="black" stroke="black" points="282.09,-81.7 290.38,-75.09 279.78,-75.09 282.09,-81.7"/>
108
+ <!-- Sock&#45;&gt;PS -->
109
+ <g id="edge6" class="edge">
110
+ <title>Sock&#45;&gt;PS</title>
111
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M459.52,-198.87C488.35,-198.87 528.27,-198.87 559.58,-198.87"/>
112
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="559.46,-201.67 567.46,-198.87 559.46,-196.07 559.46,-201.67"/>
111
113
  </g>
112
- <!-- Corpus -->
114
+ <!-- Log -->
113
115
  <g id="node8" class="node">
114
- <title>Corpus</title>
115
- <path fill="none" stroke="black" d="M707.88,-129.31C707.88,-131.31 688.33,-132.94 664.26,-132.94 640.19,-132.94 620.63,-131.31 620.63,-129.31 620.63,-129.31 620.63,-96.69 620.63,-96.69 620.63,-94.69 640.19,-93.06 664.26,-93.06 688.33,-93.06 707.88,-94.69 707.88,-96.69 707.88,-96.69 707.88,-129.31 707.88,-129.31"/>
116
- <path fill="none" stroke="black" d="M707.88,-129.31C707.88,-127.31 688.33,-125.69 664.26,-125.69 640.19,-125.69 620.63,-127.31 620.63,-129.31"/>
117
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-114.95" font-family="Arial" font-size="9.00">Interesting Inputs</text>
118
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-104.45" font-family="Arial" font-size="9.00">(saved for replay)</text>
116
+ <title>Log</title>
117
+ <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M632.88,-148.87C632.88,-148.87 586.88,-148.87 586.88,-148.87 580.88,-148.87 574.88,-142.87 574.88,-136.87 574.88,-136.87 574.88,-124.87 574.88,-124.87 574.88,-118.87 580.88,-112.87 586.88,-112.87 586.88,-112.87 632.88,-112.87 632.88,-112.87 638.88,-112.87 644.88,-118.87 644.88,-124.87 644.88,-124.87 644.88,-136.87 644.88,-136.87 644.88,-142.87 638.88,-148.87 632.88,-148.87"/>
118
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-133.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Log</text>
119
+ <text xml:space="preserve" text-anchor="middle" x="609.88" y="-121.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash detect</text>
119
120
  </g>
120
- <!-- Monitor&#45;&gt;Corpus -->
121
- <g id="edge10" class="edge">
122
- <title>Monitor&#45;&gt;Corpus</title>
123
- <path fill="none" stroke="black" d="M559.44,-113C575.69,-113 593.17,-113 609.08,-113"/>
124
- <polygon fill="black" stroke="black" points="608.82,-116.5 618.82,-113 608.82,-109.5 608.82,-116.5"/>
121
+ <!-- Packet&#45;&gt;Log -->
122
+ <g id="edge7" class="edge">
123
+ <title>Packet&#45;&gt;Log</title>
124
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M463.65,-130.87C493.68,-130.87 534.01,-130.87 564.55,-130.87"/>
125
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="564.54,-133.67 572.54,-130.87 564.54,-128.07 564.54,-133.67"/>
126
+ </g>
127
+ <!-- NetApp&#45;&gt;Log -->
128
+ <g id="edge8" class="edge">
129
+ <title>NetApp&#45;&gt;Log</title>
130
+ <path fill="none" stroke="#fb7185" stroke-width="1.3" d="M472.79,-81.45C501.78,-91.98 537.67,-105.01 565.3,-115.05"/>
131
+ <polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="564.01,-117.56 572.49,-117.66 565.93,-112.3 564.01,-117.56"/>
125
132
  </g>
126
- <!-- Crash -->
133
+ <!-- Report -->
127
134
  <g id="node9" class="node">
128
- <title>Crash</title>
129
- <ellipse fill="none" stroke="black" cx="664.26" cy="-31" rx="68.06" ry="20.51"/>
130
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-32.95" font-family="Arial" font-size="9.00">Crash Analysis</text>
131
- <text xml:space="preserve" text-anchor="middle" x="664.26" y="-22.45" font-family="Arial" font-size="9.00">(identify root cause)</text>
135
+ <title>Report</title>
136
+ <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M803,-185.87C803,-185.87 748.75,-185.87 748.75,-185.87 742.75,-185.87 736.75,-179.87 736.75,-173.87 736.75,-173.87 736.75,-161.87 736.75,-161.87 736.75,-155.87 742.75,-149.87 748.75,-149.87 748.75,-149.87 803,-149.87 803,-149.87 809,-149.87 815,-155.87 815,-161.87 815,-161.87 815,-173.87 815,-173.87 815,-179.87 809,-185.87 803,-185.87"/>
137
+ <text xml:space="preserve" text-anchor="middle" x="775.88" y="-170.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Reports::Fuzz</text>
138
+ <text xml:space="preserve" text-anchor="middle" x="775.88" y="-158.37" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crash triage</text>
132
139
  </g>
133
- <!-- Monitor&#45;&gt;Crash -->
140
+ <!-- PS&#45;&gt;Report -->
141
+ <g id="edge9" class="edge">
142
+ <title>PS&#45;&gt;Report</title>
143
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M650.16,-191.45C673.06,-187.12 702.13,-181.62 726.45,-177.03"/>
144
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="726.92,-179.79 734.26,-175.55 725.88,-174.28 726.92,-179.79"/>
145
+ </g>
146
+ <!-- Log&#45;&gt;Fuzz -->
134
147
  <g id="edge11" class="edge">
135
- <title>Monitor&#45;&gt;Crash</title>
136
- <path fill="none" stroke="black" d="M536.11,-94.6C560.26,-82.52 592.01,-66.64 617.74,-53.77"/>
137
- <polygon fill="black" stroke="black" points="619.26,-56.92 626.64,-49.31 616.13,-50.66 619.26,-56.92"/>
138
- </g>
139
- <!-- Crash&#45;&gt;Input -->
140
- <g id="edge12" class="edge">
141
- <title>Crash&#45;&gt;Input</title>
142
- <path fill="none" stroke="black" d="M609.3,-18.57C577.48,-12.3 536.32,-6 499.32,-6 180.1,-6 180.1,-6 180.1,-6 153.57,-6 124.23,-8.32 99.69,-10.93"/>
143
- <polygon fill="black" stroke="black" points="99.47,-7.43 89.92,-12.01 100.24,-14.39 99.47,-7.43"/>
144
- <text xml:space="preserve" text-anchor="middle" x="337.32" y="-9.2" font-family="Times,serif" font-size="14.00">refine mutators</text>
148
+ <title>Log&#45;&gt;Fuzz</title>
149
+ <path fill="none" stroke="#fbbf24" stroke-width="1.3" stroke-dasharray="5,2" d="M596.69,-112.47C577.77,-85.77 538.53,-37.41 491,-18.37 432.93,4.89 407.43,7.01 350.25,-18.37 307.25,-37.46 315.17,-66.5 279.25,-96.87 275.22,-100.28 270.82,-103.61 266.34,-106.77"/>
150
+ <polygon fill="#fbbf24" stroke="#fbbf24" stroke-width="1.3" points="264.92,-104.34 259.87,-111.15 268.06,-108.98 264.92,-104.34"/>
151
+ <text xml:space="preserve" text-anchor="middle" x="420.62" y="-20.32" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">minimise + reseed</text>
152
+ </g>
153
+ <!-- Log&#45;&gt;Report -->
154
+ <g id="edge10" class="edge">
155
+ <title>Log&#45;&gt;Report</title>
156
+ <path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M645.25,-138.63C668.82,-143.95 700.43,-151.08 726.53,-156.97"/>
157
+ <polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="725.89,-159.69 734.31,-158.72 727.13,-154.23 725.89,-159.69"/>
145
158
  </g>
146
159
  </g>
147
160
  </svg>