pwn 0.5.708 → 0.5.709

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 (434) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/Installation.md +1 -0
  3. data/etc/default_skills/pwn/ai/agent/extrospection/osint/bridges/SKILL.md +30 -8
  4. data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/SKILL.md +30 -8
  5. data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/references/urls.md +1 -1
  6. data/etc/default_skills/pwn/ai/agent/extrospection/references/urls.md +0 -1
  7. data/etc/default_skills/pwn/memory_index/SKILL.md +0 -4
  8. data/etc/default_skills/pwn/plugins/aflplusplus/SKILL.md +48 -0
  9. data/etc/default_skills/pwn/plugins/android/SKILL.md +1 -0
  10. data/etc/default_skills/pwn/plugins/artifact_registry/SKILL.md +49 -0
  11. data/etc/default_skills/pwn/plugins/binary_parser/SKILL.md +54 -0
  12. data/etc/default_skills/pwn/plugins/credential_attack/SKILL.md +51 -0
  13. data/etc/default_skills/pwn/plugins/doctor/SKILL.md +57 -0
  14. data/etc/default_skills/pwn/plugins/exploit_dev/SKILL.md +61 -0
  15. data/etc/default_skills/pwn/plugins/frida/SKILL.md +49 -0
  16. data/etc/default_skills/pwn/plugins/gdb/SKILL.md +52 -0
  17. data/etc/default_skills/pwn/plugins/jobs/SKILL.md +51 -0
  18. data/etc/default_skills/pwn/plugins/nuclei/SKILL.md +48 -0
  19. data/etc/default_skills/pwn/plugins/process_tube/SKILL.md +52 -0
  20. data/etc/default_skills/pwn/plugins/radare2/SKILL.md +59 -0
  21. data/etc/default_skills/pwn/plugins/recon/SKILL.md +55 -0
  22. data/etc/default_skills/pwn/plugins/recon/references/urls.md +5 -0
  23. data/etc/default_skills/pwn/plugins/sqlmap/SKILL.md +48 -0
  24. data/etc/default_skills/pwn/plugins/transparent_browser/SKILL.md +0 -4
  25. data/etc/default_skills/pwn/plugins/volatility/SKILL.md +48 -0
  26. data/lib/pwn/ai/agent/assembly.rb +4 -1
  27. data/lib/pwn/ai/agent/btc.rb +4 -1
  28. data/lib/pwn/ai/agent/burp_suite.rb +5 -2
  29. data/lib/pwn/ai/agent/curriculum.rb +89 -30
  30. data/lib/pwn/ai/agent/dispatch.rb +27 -16
  31. data/lib/pwn/ai/agent/extrospection/osint/bridges.rb +9 -18
  32. data/lib/pwn/ai/agent/extrospection/osint/social.rb +9 -18
  33. data/lib/pwn/ai/agent/extrospection.rb +185 -60
  34. data/lib/pwn/ai/agent/gqrx.rb +4 -1
  35. data/lib/pwn/ai/agent/hacker_one.rb +5 -2
  36. data/lib/pwn/ai/agent/learning.rb +142 -25
  37. data/lib/pwn/ai/agent/loop.rb +53 -46
  38. data/lib/pwn/ai/agent/metrics.rb +133 -23
  39. data/lib/pwn/ai/agent/mistakes.rb +126 -17
  40. data/lib/pwn/ai/agent/open_goal.rb +25 -9
  41. data/lib/pwn/ai/agent/policy.rb +158 -18
  42. data/lib/pwn/ai/agent/prompt_builder.rb +21 -11
  43. data/lib/pwn/ai/agent/prompt_cache.rb +44 -13
  44. data/lib/pwn/ai/agent/reflect.rb +9 -5
  45. data/lib/pwn/ai/agent/registry.rb +65 -12
  46. data/lib/pwn/ai/agent/result.rb +19 -10
  47. data/lib/pwn/ai/agent/reward.rb +150 -32
  48. data/lib/pwn/ai/agent/sast.rb +4 -1
  49. data/lib/pwn/ai/agent/swarm.rb +72 -36
  50. data/lib/pwn/ai/agent/task_summarizer.rb +165 -36
  51. data/lib/pwn/ai/agent/tool_guard.rb +105 -6
  52. data/lib/pwn/ai/agent/transparent_browser.rb +4 -1
  53. data/lib/pwn/ai/agent/turn_finalizer.rb +41 -21
  54. data/lib/pwn/ai/agent/vuln_gen.rb +6 -3
  55. data/lib/pwn/ai/agent.rb +4 -0
  56. data/lib/pwn/ai/anthropic.rb +41 -7
  57. data/lib/pwn/ai/gemini.rb +21 -11
  58. data/lib/pwn/ai/grok.rb +44 -6
  59. data/lib/pwn/ai/http_retry.rb +40 -12
  60. data/lib/pwn/ai/ollama.rb +19 -10
  61. data/lib/pwn/ai/open_ai.rb +81 -30
  62. data/lib/pwn/ai/open_web_ui.rb +20 -14
  63. data/lib/pwn/ai/red_team/agent_protocol_abuse.rb +7 -1
  64. data/lib/pwn/ai/red_team/data_and_model_poisoning.rb +7 -1
  65. data/lib/pwn/ai/red_team/excessive_agency.rb +7 -1
  66. data/lib/pwn/ai/red_team/hidden_context_exposure.rb +7 -1
  67. data/lib/pwn/ai/red_team/insecure_output_handling.rb +7 -1
  68. data/lib/pwn/ai/red_team/jailbreak.rb +7 -1
  69. data/lib/pwn/ai/red_team/memory_poisoning.rb +7 -1
  70. data/lib/pwn/ai/red_team/multimodal_injection.rb +7 -1
  71. data/lib/pwn/ai/red_team/overreliance.rb +7 -1
  72. data/lib/pwn/ai/red_team/payload_splitting.rb +7 -1
  73. data/lib/pwn/ai/red_team/prompt_injection.rb +7 -1
  74. data/lib/pwn/ai/red_team/rag_poisoning.rb +7 -1
  75. data/lib/pwn/ai/red_team/sensitive_information_disclosure.rb +7 -1
  76. data/lib/pwn/ai/red_team/supply_chain.rb +7 -1
  77. data/lib/pwn/ai/red_team/system_prompt_extraction.rb +7 -1
  78. data/lib/pwn/ai/red_team/test_case_engine.rb +12 -9
  79. data/lib/pwn/ai/red_team/token_smuggling.rb +7 -1
  80. data/lib/pwn/ai/red_team/unbounded_consumption.rb +7 -1
  81. data/lib/pwn/ai/red_team/vector_and_embedding_weaknesses.rb +7 -1
  82. data/lib/pwn/ai/red_team.rb +4 -0
  83. data/lib/pwn/ai.rb +4 -0
  84. data/lib/pwn/aws/acm.rb +5 -2
  85. data/lib/pwn/aws/api_gateway.rb +10 -7
  86. data/lib/pwn/aws/app_stream.rb +5 -2
  87. data/lib/pwn/aws/application_auto_scaling.rb +5 -2
  88. data/lib/pwn/aws/application_discovery_service.rb +5 -2
  89. data/lib/pwn/aws/auto_scaling.rb +5 -2
  90. data/lib/pwn/aws/batch.rb +5 -2
  91. data/lib/pwn/aws/budgets.rb +5 -2
  92. data/lib/pwn/aws/cloud_formation.rb +5 -2
  93. data/lib/pwn/aws/cloud_front.rb +7 -4
  94. data/lib/pwn/aws/cloud_hsm.rb +5 -2
  95. data/lib/pwn/aws/cloud_search.rb +5 -2
  96. data/lib/pwn/aws/cloud_search_domain.rb +5 -2
  97. data/lib/pwn/aws/cloud_trail.rb +5 -2
  98. data/lib/pwn/aws/cloud_watch.rb +5 -2
  99. data/lib/pwn/aws/cloud_watch_events.rb +5 -2
  100. data/lib/pwn/aws/cloud_watch_logs.rb +5 -2
  101. data/lib/pwn/aws/code_build.rb +5 -2
  102. data/lib/pwn/aws/code_commit.rb +5 -2
  103. data/lib/pwn/aws/code_deploy.rb +5 -2
  104. data/lib/pwn/aws/code_pipeline.rb +5 -2
  105. data/lib/pwn/aws/cognito_identity.rb +5 -2
  106. data/lib/pwn/aws/cognito_identity_provider.rb +5 -2
  107. data/lib/pwn/aws/cognito_sync.rb +5 -2
  108. data/lib/pwn/aws/config_service.rb +5 -2
  109. data/lib/pwn/aws/data_pipleline.rb +5 -2
  110. data/lib/pwn/aws/database_migration_service.rb +5 -2
  111. data/lib/pwn/aws/device_farm.rb +5 -2
  112. data/lib/pwn/aws/direct_connect.rb +5 -2
  113. data/lib/pwn/aws/directory_service.rb +5 -2
  114. data/lib/pwn/aws/dynamo_db.rb +5 -2
  115. data/lib/pwn/aws/dynamo_db_streams.rb +5 -2
  116. data/lib/pwn/aws/ec2.rb +5 -2
  117. data/lib/pwn/aws/ecr.rb +5 -2
  118. data/lib/pwn/aws/ecs.rb +5 -2
  119. data/lib/pwn/aws/efs.rb +5 -2
  120. data/lib/pwn/aws/elasti_cache.rb +5 -2
  121. data/lib/pwn/aws/elastic_beanstalk.rb +8 -5
  122. data/lib/pwn/aws/elastic_load_balancing.rb +5 -2
  123. data/lib/pwn/aws/elastic_load_balancing_v2.rb +6 -3
  124. data/lib/pwn/aws/elastic_transcoder.rb +5 -2
  125. data/lib/pwn/aws/elasticsearch_service.rb +5 -2
  126. data/lib/pwn/aws/emr.rb +5 -2
  127. data/lib/pwn/aws/firehose.rb +5 -2
  128. data/lib/pwn/aws/game_lift.rb +5 -2
  129. data/lib/pwn/aws/glacier.rb +6 -3
  130. data/lib/pwn/aws/health.rb +5 -2
  131. data/lib/pwn/aws/iam.rb +10 -4
  132. data/lib/pwn/aws/import_export.rb +5 -2
  133. data/lib/pwn/aws/inspector.rb +5 -2
  134. data/lib/pwn/aws/iot.rb +5 -2
  135. data/lib/pwn/aws/iot_data_plane.rb +5 -2
  136. data/lib/pwn/aws/kinesis.rb +5 -2
  137. data/lib/pwn/aws/kinesis_analytics.rb +5 -2
  138. data/lib/pwn/aws/kms.rb +5 -2
  139. data/lib/pwn/aws/lambda.rb +5 -2
  140. data/lib/pwn/aws/lambda_preview.rb +5 -2
  141. data/lib/pwn/aws/lex.rb +5 -2
  142. data/lib/pwn/aws/lightsail.rb +5 -2
  143. data/lib/pwn/aws/machine_learning.rb +5 -2
  144. data/lib/pwn/aws/marketplace_commerce_analytics.rb +5 -2
  145. data/lib/pwn/aws/marketplace_metering.rb +5 -2
  146. data/lib/pwn/aws/ops_works.rb +5 -2
  147. data/lib/pwn/aws/ops_works_cm.rb +5 -2
  148. data/lib/pwn/aws/pinpoint.rb +5 -2
  149. data/lib/pwn/aws/polly.rb +5 -2
  150. data/lib/pwn/aws/rds.rb +5 -2
  151. data/lib/pwn/aws/redshift.rb +5 -2
  152. data/lib/pwn/aws/rekognition.rb +5 -2
  153. data/lib/pwn/aws/route53.rb +5 -2
  154. data/lib/pwn/aws/route53_domains.rb +5 -2
  155. data/lib/pwn/aws/s3.rb +5 -2
  156. data/lib/pwn/aws/service_catalog.rb +5 -2
  157. data/lib/pwn/aws/ses.rb +5 -2
  158. data/lib/pwn/aws/shield.rb +5 -2
  159. data/lib/pwn/aws/simple_db.rb +5 -2
  160. data/lib/pwn/aws/sms.rb +5 -2
  161. data/lib/pwn/aws/snowball.rb +5 -2
  162. data/lib/pwn/aws/sns.rb +5 -2
  163. data/lib/pwn/aws/sqs.rb +5 -2
  164. data/lib/pwn/aws/ssm.rb +5 -2
  165. data/lib/pwn/aws/states.rb +5 -2
  166. data/lib/pwn/aws/storage_gateway.rb +5 -2
  167. data/lib/pwn/aws/sts.rb +4 -1
  168. data/lib/pwn/aws/support.rb +5 -2
  169. data/lib/pwn/aws/swf.rb +5 -2
  170. data/lib/pwn/aws/waf.rb +5 -2
  171. data/lib/pwn/aws/waf_regional.rb +5 -2
  172. data/lib/pwn/aws/workspaces.rb +5 -2
  173. data/lib/pwn/aws/x_ray.rb +5 -2
  174. data/lib/pwn/aws.rb +4 -0
  175. data/lib/pwn/banner/anon.rb +3 -0
  176. data/lib/pwn/banner/bubble.rb +3 -0
  177. data/lib/pwn/banner/cheshire.rb +3 -0
  178. data/lib/pwn/banner/code_cave.rb +3 -0
  179. data/lib/pwn/banner/dont_panic.rb +3 -0
  180. data/lib/pwn/banner/f_society.rb +3 -0
  181. data/lib/pwn/banner/fork_bomb.rb +3 -0
  182. data/lib/pwn/banner/jmp_esp.rb +3 -0
  183. data/lib/pwn/banner/matrix.rb +5 -1
  184. data/lib/pwn/banner/ninja.rb +3 -0
  185. data/lib/pwn/banner/off_the_air.rb +3 -0
  186. data/lib/pwn/banner/pirate.rb +3 -0
  187. data/lib/pwn/banner/radare2.rb +3 -0
  188. data/lib/pwn/banner/radare2_ai.rb +3 -0
  189. data/lib/pwn/banner/white_rabbit.rb +3 -0
  190. data/lib/pwn/banner.rb +6 -2
  191. data/lib/pwn/blockchain/btc.rb +8 -3
  192. data/lib/pwn/blockchain/eth.rb +10 -3
  193. data/lib/pwn/blockchain.rb +4 -0
  194. data/lib/pwn/bounty/lifecycle_authz_replay.rb +46 -27
  195. data/lib/pwn/bounty.rb +4 -0
  196. data/lib/pwn/config.rb +79 -13
  197. data/lib/pwn/cron.rb +297 -20
  198. data/lib/pwn/driver.rb +2 -18
  199. data/lib/pwn/ffi/adalm_pluto.rb +65 -11
  200. data/lib/pwn/ffi/fftw.rb +31 -6
  201. data/lib/pwn/ffi/hack_rf.rb +59 -8
  202. data/lib/pwn/ffi/liquid.rb +63 -10
  203. data/lib/pwn/ffi/rtl_sdr.rb +35 -5
  204. data/lib/pwn/ffi/soapy_sdr.rb +60 -10
  205. data/lib/pwn/ffi/stdio.rb +5 -8
  206. data/lib/pwn/ffi/volk.rb +36 -7
  207. data/lib/pwn/ffi.rb +12 -0
  208. data/lib/pwn/memory.rb +136 -16
  209. data/lib/pwn/memory_index.rb +34 -19
  210. data/lib/pwn/migrate.rb +34 -24
  211. data/lib/pwn/module_skills.rb +39 -8
  212. data/lib/pwn/plugins/aflplusplus.rb +52 -0
  213. data/lib/pwn/plugins/android.rb +65 -245
  214. data/lib/pwn/plugins/artifact_registry.rb +71 -0
  215. data/lib/pwn/plugins/assembly.rb +9 -4
  216. data/lib/pwn/plugins/authentication_helper.rb +8 -5
  217. data/lib/pwn/plugins/baresip.rb +59 -12
  218. data/lib/pwn/plugins/basic_auth.rb +9 -3
  219. data/lib/pwn/plugins/beef.rb +28 -18
  220. data/lib/pwn/plugins/binary_parser.rb +133 -0
  221. data/lib/pwn/plugins/black_duck_binary_analysis.rb +63 -39
  222. data/lib/pwn/plugins/burp_suite.rb +98 -68
  223. data/lib/pwn/plugins/bus_pirate.rb +15 -8
  224. data/lib/pwn/plugins/char.rb +33 -3
  225. data/lib/pwn/plugins/credential_attack.rb +99 -0
  226. data/lib/pwn/plugins/credit_card.rb +6 -1
  227. data/lib/pwn/plugins/dao_ldap.rb +19 -13
  228. data/lib/pwn/plugins/dao_mongo.rb +11 -5
  229. data/lib/pwn/plugins/dao_postgres.rb +28 -19
  230. data/lib/pwn/plugins/dao_sqlite3.rb +15 -6
  231. data/lib/pwn/plugins/defect_dojo.rb +38 -22
  232. data/lib/pwn/plugins/detect_os.rb +5 -0
  233. data/lib/pwn/plugins/doctor.rb +149 -0
  234. data/lib/pwn/plugins/ein.rb +3 -0
  235. data/lib/pwn/plugins/exploit_dev.rb +264 -0
  236. data/lib/pwn/plugins/file_fu.rb +11 -8
  237. data/lib/pwn/plugins/frida.rb +61 -0
  238. data/lib/pwn/plugins/fuzz.rb +9 -6
  239. data/lib/pwn/plugins/gdb.rb +95 -0
  240. data/lib/pwn/plugins/git.rb +19 -14
  241. data/lib/pwn/plugins/github.rb +38 -15
  242. data/lib/pwn/plugins/google_workspace.rb +188 -45
  243. data/lib/pwn/plugins/hacker_one.rb +159 -35
  244. data/lib/pwn/plugins/hunter.rb +6 -3
  245. data/lib/pwn/plugins/ip_info.rb +9 -4
  246. data/lib/pwn/plugins/irc.rb +28 -15
  247. data/lib/pwn/plugins/jenkins.rb +65 -57
  248. data/lib/pwn/plugins/jira_data_center.rb +30 -22
  249. data/lib/pwn/plugins/jobs.rb +109 -0
  250. data/lib/pwn/plugins/json_pathify.rb +9 -5
  251. data/lib/pwn/plugins/log.rb +113 -13
  252. data/lib/pwn/plugins/mail_agent.rb +87 -79
  253. data/lib/pwn/plugins/metasploit.rb +11 -6
  254. data/lib/pwn/plugins/monkey_patch.rb +3 -0
  255. data/lib/pwn/plugins/msr206.rb +42 -28
  256. data/lib/pwn/plugins/nessus_cloud.rb +44 -4
  257. data/lib/pwn/plugins/nexpose_vuln_scan.rb +40 -24
  258. data/lib/pwn/plugins/nmap_it.rb +14 -34
  259. data/lib/pwn/plugins/nuclei.rb +57 -0
  260. data/lib/pwn/plugins/oauth2.rb +11 -5
  261. data/lib/pwn/plugins/ocr.rb +3 -0
  262. data/lib/pwn/plugins/open_api.rb +5 -2
  263. data/lib/pwn/plugins/openvas.rb +33 -25
  264. data/lib/pwn/plugins/packet.rb +152 -31
  265. data/lib/pwn/plugins/pdf_parse.rb +5 -2
  266. data/lib/pwn/plugins/pony.rb +86 -1
  267. data/lib/pwn/plugins/process_tube.rb +120 -0
  268. data/lib/pwn/plugins/ps.rb +7 -1
  269. data/lib/pwn/plugins/pwn_logger.rb +6 -2
  270. data/lib/pwn/plugins/rabbit_mq.rb +12 -7
  271. data/lib/pwn/plugins/radare2.rb +253 -0
  272. data/lib/pwn/plugins/recon.rb +161 -0
  273. data/lib/pwn/plugins/repl.rb +122 -1
  274. data/lib/pwn/plugins/scannable_codes.rb +5 -1
  275. data/lib/pwn/plugins/serial.rb +24 -14
  276. data/lib/pwn/plugins/shodan.rb +54 -35
  277. data/lib/pwn/plugins/slack_client.rb +11 -6
  278. data/lib/pwn/plugins/sock.rb +16 -8
  279. data/lib/pwn/plugins/spider.rb +5 -2
  280. data/lib/pwn/plugins/sqlmap.rb +49 -0
  281. data/lib/pwn/plugins/ssn.rb +3 -0
  282. data/lib/pwn/plugins/thread_pool.rb +6 -9
  283. data/lib/pwn/plugins/tor.rb +9 -4
  284. data/lib/pwn/plugins/transparent_browser.rb +62 -107
  285. data/lib/pwn/plugins/tty_spinner.rb +16 -2
  286. data/lib/pwn/plugins/twitter_api.rb +6 -2
  287. data/lib/pwn/plugins/uri_scheme.rb +4 -1
  288. data/lib/pwn/plugins/vault.rb +12 -3
  289. data/lib/pwn/plugins/vin.rb +24 -12
  290. data/lib/pwn/plugins/voice.rb +7 -2
  291. data/lib/pwn/plugins/volatility.rb +48 -0
  292. data/lib/pwn/plugins/vsphere.rb +9 -5
  293. data/lib/pwn/plugins/xxd.rb +12 -43
  294. data/lib/pwn/plugins/zaproxy.rb +30 -16
  295. data/lib/pwn/plugins.rb +19 -0
  296. data/lib/pwn/reports/ai_red_team.rb +6 -2
  297. data/lib/pwn/reports/csv.rb +8 -1
  298. data/lib/pwn/reports/fuzz.rb +5 -2
  299. data/lib/pwn/reports/html.rb +8 -1
  300. data/lib/pwn/reports/html_footer.rb +4 -3
  301. data/lib/pwn/reports/html_header.rb +6 -2
  302. data/lib/pwn/reports/json.rb +8 -1
  303. data/lib/pwn/reports/markdown.rb +8 -1
  304. data/lib/pwn/reports/pdf.rb +8 -1
  305. data/lib/pwn/reports/phone.rb +5 -2
  306. data/lib/pwn/reports/sast.rb +6 -2
  307. data/lib/pwn/reports/uri_buster.rb +5 -2
  308. data/lib/pwn/reports/xml.rb +8 -1
  309. data/lib/pwn/reports.rb +19 -0
  310. data/lib/pwn/sast/amqp_connect_as_guest.rb +9 -3
  311. data/lib/pwn/sast/apache_file_system_util_api.rb +9 -3
  312. data/lib/pwn/sast/aws.rb +9 -3
  313. data/lib/pwn/sast/banned_function_calls_c.rb +9 -3
  314. data/lib/pwn/sast/base64.rb +9 -3
  315. data/lib/pwn/sast/beef_hook.rb +9 -3
  316. data/lib/pwn/sast/cmd_execution_go_lang.rb +9 -3
  317. data/lib/pwn/sast/cmd_execution_java.rb +9 -3
  318. data/lib/pwn/sast/cmd_execution_python.rb +9 -3
  319. data/lib/pwn/sast/cmd_execution_ruby.rb +9 -3
  320. data/lib/pwn/sast/cmd_execution_scala.rb +9 -3
  321. data/lib/pwn/sast/csrf.rb +9 -3
  322. data/lib/pwn/sast/deserial_java.rb +9 -3
  323. data/lib/pwn/sast/emoticon.rb +9 -3
  324. data/lib/pwn/sast/eval.rb +9 -3
  325. data/lib/pwn/sast/factory.rb +9 -3
  326. data/lib/pwn/sast/http_authorization_header.rb +9 -3
  327. data/lib/pwn/sast/inner_html.rb +9 -3
  328. data/lib/pwn/sast/keystore.rb +9 -3
  329. data/lib/pwn/sast/local_storage.rb +9 -3
  330. data/lib/pwn/sast/location_hash.rb +9 -3
  331. data/lib/pwn/sast/log4j.rb +9 -3
  332. data/lib/pwn/sast/logger.rb +9 -3
  333. data/lib/pwn/sast/md5.rb +9 -3
  334. data/lib/pwn/sast/outer_html.rb +9 -3
  335. data/lib/pwn/sast/padding_oracle.rb +9 -3
  336. data/lib/pwn/sast/password.rb +9 -3
  337. data/lib/pwn/sast/php_input_mechanisms.rb +9 -3
  338. data/lib/pwn/sast/php_type_juggling.rb +9 -3
  339. data/lib/pwn/sast/pom_version.rb +9 -3
  340. data/lib/pwn/sast/port.rb +9 -3
  341. data/lib/pwn/sast/post_message.rb +9 -3
  342. data/lib/pwn/sast/private_key.rb +9 -3
  343. data/lib/pwn/sast/redirect.rb +9 -3
  344. data/lib/pwn/sast/redos.rb +9 -3
  345. data/lib/pwn/sast/shell.rb +9 -3
  346. data/lib/pwn/sast/signature.rb +9 -3
  347. data/lib/pwn/sast/sql.rb +9 -3
  348. data/lib/pwn/sast/ssl.rb +9 -3
  349. data/lib/pwn/sast/sudo.rb +9 -3
  350. data/lib/pwn/sast/task_tag.rb +9 -3
  351. data/lib/pwn/sast/test_case_engine.rb +11 -7
  352. data/lib/pwn/sast/throw_errors.rb +9 -3
  353. data/lib/pwn/sast/token.rb +9 -3
  354. data/lib/pwn/sast/type_script_type_juggling.rb +9 -3
  355. data/lib/pwn/sast/use_after_free.rb +9 -3
  356. data/lib/pwn/sast/version.rb +9 -3
  357. data/lib/pwn/sast/window_location_hash.rb +9 -3
  358. data/lib/pwn/sast.rb +4 -0
  359. data/lib/pwn/sdr/decoder/adsb.rb +36 -5
  360. data/lib/pwn/sdr/decoder/apt.rb +9 -6
  361. data/lib/pwn/sdr/decoder/base.rb +74 -22
  362. data/lib/pwn/sdr/decoder/bluetooth.rb +17 -5
  363. data/lib/pwn/sdr/decoder/dect.rb +12 -3
  364. data/lib/pwn/sdr/decoder/dsp.rb +229 -39
  365. data/lib/pwn/sdr/decoder/flex.rb +59 -11
  366. data/lib/pwn/sdr/decoder/gps.rb +12 -3
  367. data/lib/pwn/sdr/decoder/gsm.rb +24 -4
  368. data/lib/pwn/sdr/decoder/iridium.rb +12 -3
  369. data/lib/pwn/sdr/decoder/lora.rb +13 -4
  370. data/lib/pwn/sdr/decoder/lte.rb +27 -3
  371. data/lib/pwn/sdr/decoder/morse.rb +12 -3
  372. data/lib/pwn/sdr/decoder/p25.rb +12 -3
  373. data/lib/pwn/sdr/decoder/pager.rb +8 -5
  374. data/lib/pwn/sdr/decoder/pocsag.rb +29 -9
  375. data/lib/pwn/sdr/decoder/rds.rb +14 -8
  376. data/lib/pwn/sdr/decoder/rfid.rb +12 -3
  377. data/lib/pwn/sdr/decoder/rtl433.rb +12 -3
  378. data/lib/pwn/sdr/decoder/rtty.rb +8 -5
  379. data/lib/pwn/sdr/decoder/wifi.rb +12 -3
  380. data/lib/pwn/sdr/decoder/zigbee.rb +12 -3
  381. data/lib/pwn/sdr/decoder.rb +9 -0
  382. data/lib/pwn/sdr/flipper_zero.rb +17 -10
  383. data/lib/pwn/sdr/frequency_allocation.rb +4 -1
  384. data/lib/pwn/sdr/gqrx.rb +178 -119
  385. data/lib/pwn/sdr/rfidler.rb +4 -1
  386. data/lib/pwn/sdr/son_micro_rfid.rb +37 -24
  387. data/lib/pwn/sdr.rb +14 -0
  388. data/lib/pwn/sessions.rb +86 -16
  389. data/lib/pwn/setup.rb +94 -37
  390. data/lib/pwn/version.rb +1 -1
  391. data/lib/pwn/www/app_cobalt_io.rb +11 -5
  392. data/lib/pwn/www/bing.rb +10 -5
  393. data/lib/pwn/www/bug_crowd.rb +11 -5
  394. data/lib/pwn/www/checkip.rb +8 -4
  395. data/lib/pwn/www/coinbase_pro.rb +11 -5
  396. data/lib/pwn/www/duckduckgo.rb +12 -6
  397. data/lib/pwn/www/facebook.rb +11 -5
  398. data/lib/pwn/www/github.rb +11 -5
  399. data/lib/pwn/www/google.rb +11 -5
  400. data/lib/pwn/www/hacker_one.rb +20 -9
  401. data/lib/pwn/www/linkedin.rb +11 -5
  402. data/lib/pwn/www/pandora.rb +11 -5
  403. data/lib/pwn/www/pastebin.rb +9 -4
  404. data/lib/pwn/www/paypal.rb +19 -11
  405. data/lib/pwn/www/synack.rb +11 -5
  406. data/lib/pwn/www/torch.rb +13 -8
  407. data/lib/pwn/www/trading_view.rb +11 -5
  408. data/lib/pwn/www/twitter.rb +11 -5
  409. data/lib/pwn/www/uber.rb +11 -5
  410. data/lib/pwn/www/upwork.rb +11 -5
  411. data/lib/pwn/www/wayback_machine.rb +12 -6
  412. data/lib/pwn/www/youtube.rb +10 -5
  413. data/lib/pwn/www.rb +4 -0
  414. data/spec/conventions_spec.rb +118 -2
  415. data/spec/lib/pwn/ai/agent/reward_spec.rb +9 -0
  416. data/spec/lib/pwn/plugins/aflplusplus_spec.rb +13 -0
  417. data/spec/lib/pwn/plugins/artifact_registry_spec.rb +13 -0
  418. data/spec/lib/pwn/plugins/binary_parser_spec.rb +21 -0
  419. data/spec/lib/pwn/plugins/credential_attack_spec.rb +13 -0
  420. data/spec/lib/pwn/plugins/doctor_spec.rb +23 -0
  421. data/spec/lib/pwn/plugins/exploit_dev_spec.rb +23 -0
  422. data/spec/lib/pwn/plugins/frida_spec.rb +13 -0
  423. data/spec/lib/pwn/plugins/gdb_spec.rb +13 -0
  424. data/spec/lib/pwn/plugins/jobs_spec.rb +13 -0
  425. data/spec/lib/pwn/plugins/nuclei_spec.rb +13 -0
  426. data/spec/lib/pwn/plugins/process_tube_spec.rb +13 -0
  427. data/spec/lib/pwn/plugins/radare2_spec.rb +13 -0
  428. data/spec/lib/pwn/plugins/recon_spec.rb +26 -0
  429. data/spec/lib/pwn/plugins/sqlmap_spec.rb +13 -0
  430. data/spec/lib/pwn/plugins/volatility_spec.rb +13 -0
  431. data/third_party/pwn_rdoc.jsonl +126 -5
  432. metadata +47 -3
  433. data/etc/default_skills/pwn/memory_index/references/urls.md +0 -4
  434. data/etc/default_skills/pwn/plugins/transparent_browser/references/urls.md +0 -3
@@ -163,10 +163,24 @@ module PWN
163
163
 
164
164
  public_class_method def self.help
165
165
  puts "USAGE:
166
- spin = #{self}.start
167
- #{self}.stop(spin: spin)
166
+ # Run start and return its result
167
+ #{self}.start(
168
+ format: 'optional - TTY::Spinner format (defaults to :dots)',
169
+ output: 'optional - IO to draw on (defaults to $stderr)'
170
+ )
171
+
172
+ # Run stop and return its result
173
+ #{self}.stop(
174
+ spin: 'optional - TTY::Spinner from #start (no-op if nil)'
175
+ )
176
+
177
+ # Run halt all and return its result
168
178
  #{self}.halt_all!
179
+
180
+ # Print the AUTHOR(S) string for this module.
181
+ #{self}.authors
169
182
  "
183
+ constants.sort
170
184
  end
171
185
  end
172
186
  end
@@ -134,17 +134,21 @@ module PWN
134
134
 
135
135
  public_class_method def self.help
136
136
  puts "USAGE:
137
- bearer_token = #{self}.app_only_login(
137
+ # Run app only login and return its result
138
+ #{self}.app_only_login(
138
139
  consumer_key: 'required - consumer key for app-only authentication',
139
140
  consumer_secret: 'optional - consumer secret (will prompt if nil)'
140
141
  )
141
142
 
143
+ # Run app only logout and return its result
142
144
  #{self}.app_only_logout(
143
- bearer_token: 'required bearer_token returned from #app_only_login method'
145
+ bearer_token: 'required - required bearer_token returned from #app_only_login method'
144
146
  )
145
147
 
148
+ # Print the AUTHOR(S) string for this module.
146
149
  #{self}.authors
147
150
  "
151
+ constants.sort
148
152
  end
149
153
  end
150
154
  end
@@ -318,10 +318,13 @@ module PWN
318
318
 
319
319
  public_class_method def self.help
320
320
  puts "USAGE:
321
- uri_scheme_arr = #{self}.list_all_known
321
+ # Run list all known and return its result
322
+ #{self}.list_all_known
322
323
 
324
+ # Print the AUTHOR(S) string for this module.
323
325
  #{self}.authors
324
326
  "
327
+ constants.sort
325
328
  end
326
329
  end
327
330
  end
@@ -256,49 +256,58 @@ module PWN
256
256
 
257
257
  public_class_method def self.help
258
258
  puts "USAGE:
259
+ # Run refresh encryption secrets and return its result
259
260
  #{self}.refresh_encryption_secrets(
260
261
  file: 'required - file to encrypt with new key and iv',
261
262
  key: 'required - key to decrypt',
262
263
  iv: 'required - iv to decrypt'
263
264
  )
264
265
 
266
+ # Run create and return its result
265
267
  #{self}.create(
266
- file: 'required - file to encrypt',
268
+ file: 'required - encrypted file to create',
267
269
  decryptor_file: 'optional - file to save the key && iv values'
268
270
  )
269
271
 
272
+ # Run decrypt and return its result
270
273
  #{self}.decrypt(
271
274
  file: 'required - file to decrypt',
272
275
  key: 'required - key to decrypt',
273
276
  iv: 'required - iv to decrypt'
274
277
  )
275
278
 
279
+ # Run dump and return its result
276
280
  #{self}.dump(
277
281
  file: 'required - file to dump',
278
282
  key: 'required - key to decrypt',
279
283
  iv: 'required - iv to decrypt',
280
- # search: 'optional - search for a specific string'
284
+ yaml: 'optional - dump as parsed yaml hash (default: true)'
281
285
  )
282
286
 
287
+ # Run edit and return its result
283
288
  #{self}.edit(
284
289
  file: 'required - file to edit',
285
290
  key: 'required - key to decrypt',
286
291
  iv: 'required - iv to decrypt',
287
- editor: 'optional - editor to use (default: \"/usr/bin/vim\")'
292
+ editor: 'optional - editor to use (default: /usr/bin/vim)'
288
293
  )
289
294
 
295
+ # Run encrypt and return its result
290
296
  #{self}.encrypt(
291
297
  file: 'required - file to encrypt',
292
298
  key: 'required - key to decrypt',
293
299
  iv: 'required - iv to decrypt'
294
300
  )
295
301
 
302
+ # Run file encrypted and return its result
296
303
  #{self}.file_encrypted?(
297
304
  file: 'required - file to check if encrypted'
298
305
  )
299
306
 
307
+ # Print the AUTHOR(S) string for this module.
300
308
  #{self}.authors
301
309
  "
310
+ constants.sort
302
311
  end
303
312
  end
304
313
  end
@@ -317,46 +317,58 @@ module PWN
317
317
  # Display Usage for this Module
318
318
  public_class_method def self.help
319
319
  puts "USAGE:
320
- manufacturers = #{self}.get_all_manufacturers
320
+ # Run get all manufacturers and return its result
321
+ #{self}.get_all_manufacturers
321
322
 
322
- makes = #{self}.get_all_makes
323
+ # Run get all makes and return its result
324
+ #{self}.get_all_makes
323
325
 
324
- wmis = #{self}.get_wmis_for_manufacturer(
326
+ # Run get wmis for manufacturer and return its result
327
+ #{self}.get_wmis_for_manufacturer(
325
328
  mfr: 'required - Mfr_CommonName returned from #get_all_manufacturers method'
326
329
  )
327
330
 
328
- models = #{self}.decode_wmi(
329
- wmi: 'required - WMI to decode (e.g. \"1FD\")'
331
+ # Run decode wmi and return its result
332
+ #{self}.decode_wmi(
333
+ wmi: 'required - WMI to decode (e.g. 1FD)'
330
334
  )
331
335
 
332
- models = #{self}.decode_vin(
336
+ # Run decode vin and return its result
337
+ #{self}.decode_vin(
333
338
  vin: 'required - 17 character VIN to decode'
334
339
  )
335
340
 
336
- models = #{self}.get_models_for_make(
341
+ # Run get models for make and return its result
342
+ #{self}.get_models_for_make(
337
343
  make: 'required - Make_Name returned from get_all_makes'
338
344
  )
339
345
 
340
- models = #{self}.get_models_for_make_year(
346
+ # Run get models for make year and return its result
347
+ #{self}.get_models_for_make_year(
341
348
  make: 'required - Make_Name returned from get_all_makes',
342
349
  year: 'optional - e.g. 2023 (defaults to current year)'
343
350
  )
344
351
 
345
- models = #{self}.get_vehicle_types_for_make(
352
+ # Run get vehicle types for make and return its result
353
+ #{self}.get_vehicle_types_for_make(
346
354
  make: 'required - Make_Name returned from get_all_makes'
347
355
  )
348
356
 
349
- details = #{self}.get_manufacturer_details(
357
+ # Run get manufacturer details and return its result
358
+ #{self}.get_manufacturer_details(
350
359
  mfr: 'required - Mfr_Name returned from get_all_manufacturers'
351
360
  )
352
361
 
353
- vin = #{self}.generate_vin(
354
- mfr: 'required - manufacturer name (e.g., Mfr_CommonName from get_all_manufacturers)',
362
+ # Run generate vin and return its result
363
+ #{self}.generate_vin(
364
+ mfr: 'required - manufacturer name (i.e. Mfr_CommonName from #get_all_manufacturers)',
355
365
  year: 'optional - year of the vehicle (defaults to current year)'
356
366
  )
357
367
 
368
+ # Print the AUTHOR(S) string for this module.
358
369
  #{self}.authors
359
370
  "
371
+ constants.sort
360
372
  end
361
373
  end
362
374
  end
@@ -119,26 +119,31 @@ module PWN
119
119
 
120
120
  public_class_method def self.help
121
121
  puts "USAGE:
122
+ # Run mutate and return its result
122
123
  #{self}.mutate(
123
124
  sox_path: 'optional - path to sox application (defaults to /usr/bin/sox)',
124
125
  pitch: 'optional - integer to alter voice input (defaults to -300)'
125
126
  )
126
127
 
127
- response = #{self}.speech_to_text(
128
+ # Run speech to text and return its result
129
+ #{self}.speech_to_text(
128
130
  audio_file_path: 'required - path to audio file',
129
131
  whisper_path: 'optional - path to OpenAI whisper application (defaults to /usr/local/bin/whisper)',
130
132
  model: 'optional - transcribe model to use (defaults to tiny)',
131
133
  output_dir: 'optional - directory to output results (defaults to .)'
132
134
  )
133
135
 
136
+ # Run text to speech and return its result
134
137
  #{self}.text_to_speech(
135
138
  text_path: 'required - path to text file to speak',
136
139
  festival_path: 'optional - path to festival (defaults to /usr/bin/festival)',
137
- voice: 'optional - voice to use (defaults to cmu_us_slt_arctic_hts)',
140
+ voice: 'optional - voice to use (defaults to cmu_us_slt_arctic_hts)'
138
141
  )
139
142
 
143
+ # Print the AUTHOR(S) string for this module.
140
144
  #{self}.authors
141
145
  "
146
+ constants.sort
142
147
  end
143
148
  end
144
149
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open3'
4
+
5
+ module PWN
6
+ module Plugins
7
+ # volatility3 wrapper.
8
+ module Volatility
9
+ public_class_method def self.required_bins
10
+ %w[vol]
11
+ end
12
+
13
+ public_class_method def self.run(opts = {})
14
+ bin = %w[vol volatility3 vol3].find { |b| PWN::Plugins::Doctor.bin?(name: b) }
15
+ raise PWN::Plugins::Doctor::MissingBinary, 'ERROR: volatility3 (vol) missing' unless bin
16
+
17
+ memory = opts[:memory] || opts[:file]
18
+ plugin = opts[:plugin] || 'windows.pslist'
19
+ raise 'ERROR: memory is required' if memory.to_s.empty?
20
+
21
+ stdout, stderr, status = Open3.capture3(bin, '-f', memory.to_s, plugin.to_s)
22
+ { stdout: stdout, stderr: stderr, exit: status.exitstatus }
23
+ end
24
+
25
+ public_class_method def self.authors
26
+ "AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
27
+ end
28
+
29
+ public_class_method def self.help
30
+ puts "USAGE:
31
+ # List host binaries this module expects to be installed.
32
+ #{self}.required_bins
33
+
34
+ # Run run and return its result
35
+ #{self}.run(
36
+ memory: 'required - memory value consumed by #run (defaults to opts[:file])',
37
+ file: 'optional - filesystem path',
38
+ plugin: 'required - plugin value consumed by #run (defaults to windows.pslist)'
39
+ )
40
+
41
+ # Print the AUTHOR(S) string for this module.
42
+ #{self}.authors
43
+ "
44
+ constants.sort
45
+ end
46
+ end
47
+ end
48
+ end
@@ -62,19 +62,23 @@ module PWN
62
62
 
63
63
  public_class_method def self.help
64
64
  puts "USAGE:
65
- vsphere_obj = #{self}.login(
65
+ # Run login and return its result
66
+ #{self}.login(
66
67
  host: 'required - vsphere host or ip',
67
- username: 'required - username',
68
+ username: 'required - username value consumed by #login',
68
69
  password: 'optional - password (will prompt if nil)',
69
- insecure: 'optional - ignore ssl checks (defaults to false)
70
+ insecure: 'optional - ignore ssl checks (defaults to false'
70
71
  )
71
72
 
72
- vsphere_obj = #{self}.logout(
73
- vsphere_obj: 'required vsphere_obj returned from #login method'
73
+ # Run logout and return its result
74
+ #{self}.logout(
75
+ vsphere_obj: 'required - required vsphere_obj returned from #login method'
74
76
  )
75
77
 
78
+ # Print the AUTHOR(S) string for this module.
76
79
  #{self}.authors
77
80
  "
81
+ constants.sort
78
82
  end
79
83
  end
80
84
  end
@@ -95,6 +95,7 @@ module PWN
95
95
  # start_addr: 'required - start address to evaluate',
96
96
  # target_addr: 'required - memory address to set breakpoint'
97
97
  # )
98
+ # Run calc addr offset and return its result
98
99
  # ^^^ Instructions for #{self}.calc_addr_offset:
99
100
  # This is useful for calculating address offsets of known functions in debuggers
100
101
  # to set breakpoints of instructions that are not known at runtime.
@@ -247,75 +248,43 @@ module PWN
247
248
 
248
249
  public_class_method def self.help
249
250
  puts "USAGE:
250
- hexdump = #{self}.dump(
251
+ # Run dump and return its result
252
+ #{self}.dump(
251
253
  file: 'required - path to binary file to dump',
252
254
  hashed: 'optional - return hexdump as hash instead of string (default: false)'
253
255
  )
254
256
 
255
- hexdump = #{self}.fill_range_w_byte(
257
+ # Run fill range w byte and return its result
258
+ #{self}.fill_range_w_byte(
256
259
  hexdump: 'required - hexdump returned from #dump method',
257
260
  start_addr: 'required - start address to fill with byte',
258
261
  end_addr: 'required - end address to fill with byte',
259
262
  byte: 'required - byte to fill range with'
260
263
  )
261
264
 
262
- hex_offset = #{self}.calc_addr_offset(
265
+ # Run calc addr offset and return its result
266
+ #{self}.calc_addr_offset(
263
267
  start_addr: 'required - start address to evaluate',
264
268
  target_addr: 'required - memory address to set breakpoint'
265
269
  )
266
270
 
267
- # ^^^ Instructions for #{self}.calc_addr_offset:
268
- # This is useful for calculating address offsets of known functions in debuggers
269
- # to set breakpoints of instructions that are not known at runtime.
270
- # 1. Set a breakpoint at main and record its address - this is the start_addr.
271
- # For example in r2:
272
- # ```
273
- # [0x00001050]> db main
274
- # [0x00001050]> ood
275
- # [0x7fd16122b360]> dc
276
- # INFO: hit breakpoint at: 0x562e8547d139
277
- # [0x562e8547d139]> db
278
- # ```
279
- # 2. Populate start_addr w/ address (i.e. '0x562e8547d139') of a known function (i.e. main)
280
- # 3. Step down to the instruction where you want to set a breakpoint. Record its address...
281
- # this is the target_addr.
282
- # ```
283
- # [0x562e8547d139]> v
284
- # <step through to the target instruction via F7/F8>
285
- # ```
286
- # 4. Get the hex offset value by calling #{self}.calc_addr_offset method
287
- # 5. Future breakpoints can be calculated by adding the hex offset to the
288
- # updated start_addr (which changes every time the binary is executed).
289
- # If the offset returned is `0x00000ec2`, a breakpoint for the target
290
- # instruction can be set in r2 via:
291
- # ```
292
- # [0x00001050]> ood
293
- # [0x7f1a45bea360]> db main
294
- # [0x7f1a45bea360]> db (main)+0x00000ec2
295
- # [0x7f1a45bea360]> db
296
- # 0x558eebd75139 - 0x558eebd7513a 1 --x sw break enabled valid ...
297
- # 0x558eebd75ffb - 0x558eebd75ffc 1 --x sw break enabled valid ...
298
- # [0x7f1a45bea360]> dc
299
- # INFO: hit breakpoint at: 0x55ee0a0e5139
300
- # [0x55ee0a0e5139]> dc
301
- # INFO: hit breakpoint at: 0x5558c3101ffb
302
- # [0x5558c3101ffb]> v
303
- # <step through via F7, F8, F9, etc. to get to desired instruction>
304
- # ```
305
-
271
+ # Run reverse hex string and return its result
306
272
  #{self}.reverse_hex_string(
307
- string: 'required - continuous hex string to reverse (i.e. \"68656c6f\")',
273
+ string: 'required - continuous hex string to reverse (i.e. 68656c6c6f)',
308
274
  file: 'required - path to binary file to dump'
309
275
  )
310
276
 
277
+ # Run reverse dump and return its result
311
278
  #{self}.reverse_dump(
312
279
  hexdump: 'required - hexdump returned from #dump method',
313
280
  file: 'required - path to binary file to dump',
314
281
  byte_chunks: 'optional - if set, will write n byte chunks of hexdump to multiple files'
315
282
  )
316
283
 
284
+ # Print the AUTHOR(S) string for this module.
317
285
  #{self}.authors
318
286
  "
287
+ constants.sort
319
288
  end
320
289
  end
321
290
  end
@@ -749,18 +749,18 @@ module PWN
749
749
 
750
750
  public_class_method def self.help
751
751
  puts "USAGE:
752
- zap_obj = #{self}.start(
752
+ # Run start and return its result
753
+ #{self}.start(
753
754
  api_key: 'required - api key for API authorization',
754
755
  zap_bin_path: 'optional - path to zap.sh file',
755
- headless: 'optional - run zap headless if set to true',
756
- proxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1:<Random 1024-65535>)'
757
- )
758
-
759
- #{self}.spider(
760
- zap_obj: 'required - zap_obj returned from #open method',
761
- target_url: 'required - url to spider'
756
+ headless: 'optional - run zap headless if set to true (defaults to false)',
757
+ browser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types',
758
+ proxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1:<Random 1024-65535>)',
759
+ zap_ip: 'optional - zap ip value consumed by #start',
760
+ zap_port: 'optional - zap port value consumed by #start'
762
761
  )
763
762
 
763
+ # Run import openapi to sitemap and return its result
764
764
  #{self}.import_openapi_to_sitemap(
765
765
  zap_obj: 'required - zap_obj returned from #open method',
766
766
  openapi_spec: 'required - path to OpenAPI JSON or YAML spec file',
@@ -768,52 +768,62 @@ module PWN
768
768
  target_regex: 'optional - url regex to inject additional_http_headers into (e.g. https://test.domain.local.*)'
769
769
  )
770
770
 
771
+ # Run get sitemap and return its result
771
772
  #{self}.get_sitemap(
772
773
  zap_obj: 'required - zap_obj returned from #open method',
773
774
  keyword: 'optional - string to search for in the sitemap entries (defaults to nil)',
774
775
  return_as: 'optional - :base64 or :har (defaults to :base64)'
775
776
  )
776
777
 
778
+ # Run add to scope and return its result
777
779
  #{self}.add_to_scope(
778
780
  zap_obj: 'required - zap_obj returned from #open method',
779
781
  target_regex: 'required - url regex to add to scope (e.g. https://test.domain.local.*)',
780
782
  context_name: 'optional - context name to add target_regex to (defaults to Default Context)'
781
783
  )
782
784
 
785
+ # Run requester and return its result
783
786
  #{self}.requester(
784
787
  zap_obj: 'required - zap_obj returned from #open method',
785
788
  har_entry: 'required - har entry (e.g. from #get_sitemap method method)',
786
- redirect: 'optional - follow redirects if set to true (defaults to true)'
789
+ redirect: 'optional - follow redirects if set to true (defaults to false)'
787
790
  )
788
791
 
789
- json_sitemap = #{self}.spider(
790
- zap_obj: 'required - zap_obj returned from #open method'
792
+ # Run spider and return its result
793
+ #{self}.spider(
794
+ zap_obj: 'required - zap_obj returned from #open method',
795
+ target_url: 'required - url to spider'
791
796
  )
792
797
 
798
+ # Run inject additional http headers and return its result
793
799
  #{self}.inject_additional_http_headers(
794
800
  zap_obj: 'required - zap_obj returned from #open method',
795
801
  target_regex: 'required - url regex to inject headers into (e.g. https://test.domain.local.*)',
796
802
  headers: 'required - hash of additional headers to inject into each request'
797
803
  )
798
804
 
805
+ # Run active scan and return its result
799
806
  #{self}.active_scan(
800
- zap_obj: 'required - zap_obj returned from #open method'
807
+ zap_obj: 'required - zap_obj returned from #open method',
801
808
  target_url: 'required - url to scan',
802
809
  exclude_paths: 'optional - array of paths to exclude from scan (default: [])',
803
810
  scan_policy: 'optional - scan policy to use (defaults to Default Policy)'
804
811
  )
805
812
 
806
- json_alerts = #{self}.get_alerts(
807
- zap_obj: 'required - zap_obj returned from #open method'
813
+ # Run get alerts and return its result
814
+ #{self}.get_alerts(
815
+ zap_obj: 'required - zap_obj returned from #open method',
808
816
  target_url: 'required - base url to return alerts'
809
817
  )
810
818
 
811
- report_path = #{self}.generate_scan_report(
819
+ # Run generate scan report and return its result
820
+ #{self}.generate_scan_report(
812
821
  zap_obj: 'required - zap_obj returned from #open method',
813
822
  output_dir: 'required - directory to save report',
814
823
  report_type: 'required - <:html|:markdown|:xml>'
815
824
  )
816
825
 
826
+ # Run breakpoint and return its result
817
827
  #{self}.breakpoint(
818
828
  zap_obj: 'required - zap_obj returned from #open method',
819
829
  regex_type: 'required - :url, :request_header, :request_body, :response_header or :response_body',
@@ -821,18 +831,22 @@ module PWN
821
831
  enabled: 'optional - boolean (defaults to true)'
822
832
  )
823
833
 
834
+ # Run tamper and return its result
824
835
  #{self}.tamper(
825
836
  zap_obj: 'required - zap_obj returned from #open method',
826
837
  domain: 'required - FQDN to tamper (e.g. test.domain.local)',
827
838
  enabled: 'optional - boolean (defaults to true)'
828
839
  )
829
840
 
841
+ # Run stop and return its result
830
842
  #{self}.stop(
831
- zap_obj: 'required - zap_obj returned from #start method'
843
+ zap_obj: 'required - zap_obj returned from #open method'
832
844
  )
833
845
 
846
+ # Print the AUTHOR(S) string for this module.
834
847
  #{self}.authors
835
848
  "
849
+ constants.sort
836
850
  end
837
851
  end
838
852
  end
data/lib/pwn/plugins.rb CHANGED
@@ -6,7 +6,10 @@ module PWN
6
6
  # http://www.rubyinside.com/ruby-techniques-revealed-autoload-1652.html
7
7
  module Plugins
8
8
  autoload :Android, 'pwn/plugins/android'
9
+ autoload :AFLplusplus, 'pwn/plugins/aflplusplus'
10
+ autoload :ArtifactRegistry, 'pwn/plugins/artifact_registry'
9
11
  autoload :Assembly, 'pwn/plugins/assembly'
12
+ autoload :BinaryParser, 'pwn/plugins/binary_parser'
10
13
  autoload :AuthenticationHelper, 'pwn/plugins/authentication_helper'
11
14
  autoload :BareSIP, 'pwn/plugins/baresip'
12
15
  autoload :BasicAuth, 'pwn/plugins/basic_auth'
@@ -16,6 +19,8 @@ module PWN
16
19
  autoload :BusPirate, 'pwn/plugins/bus_pirate'
17
20
  autoload :Char, 'pwn/plugins/char'
18
21
  autoload :CreditCard, 'pwn/plugins/credit_card'
22
+ autoload :CredentialAttack, 'pwn/plugins/credential_attack'
23
+ autoload :Doctor, 'pwn/plugins/doctor'
19
24
  autoload :PWNLogger, 'pwn/plugins/pwn_logger'
20
25
  autoload :DAOLDAP, 'pwn/plugins/dao_ldap'
21
26
  autoload :DAOMongo, 'pwn/plugins/dao_mongo'
@@ -26,7 +31,10 @@ module PWN
26
31
  autoload :EIN, 'pwn/plugins/ein'
27
32
  autoload :FileFu, 'pwn/plugins/file_fu'
28
33
  autoload :Fuzz, 'pwn/plugins/fuzz'
34
+ autoload :Frida, 'pwn/plugins/frida'
35
+ autoload :ExploitDev, 'pwn/plugins/exploit_dev'
29
36
  autoload :Git, 'pwn/plugins/git'
37
+ autoload :GDB, 'pwn/plugins/gdb'
30
38
  autoload :Github, 'pwn/plugins/github'
31
39
  autoload :GoogleWorkspace, 'pwn/plugins/google_workspace'
32
40
  autoload :HackerOne, 'pwn/plugins/hacker_one'
@@ -35,6 +43,7 @@ module PWN
35
43
  autoload :IRC, 'pwn/plugins/irc'
36
44
  autoload :Jenkins, 'pwn/plugins/jenkins'
37
45
  autoload :JiraDataCenter, 'pwn/plugins/jira_data_center'
46
+ autoload :Jobs, 'pwn/plugins/jobs'
38
47
  autoload :JSONPathify, 'pwn/plugins/json_pathify'
39
48
  autoload :Log, 'pwn/plugins/log'
40
49
  autoload :MailAgent, 'pwn/plugins/mail_agent'
@@ -44,6 +53,7 @@ module PWN
44
53
  autoload :NessusCloud, 'pwn/plugins/nessus_cloud'
45
54
  autoload :NexposeVulnScan, 'pwn/plugins/nexpose_vuln_scan'
46
55
  autoload :NmapIt, 'pwn/plugins/nmap_it'
56
+ autoload :Nuclei, 'pwn/plugins/nuclei'
47
57
  autoload :OAuth2, 'pwn/plugins/oauth2'
48
58
  autoload :OCR, 'pwn/plugins/ocr'
49
59
  autoload :OpenAPI, 'pwn/plugins/open_api'
@@ -52,7 +62,10 @@ module PWN
52
62
  autoload :PDFParse, 'pwn/plugins/pdf_parse'
53
63
  autoload :Pony, 'pwn/plugins/pony'
54
64
  autoload :PS, 'pwn/plugins/ps'
65
+ autoload :ProcessTube, 'pwn/plugins/process_tube'
55
66
  autoload :RabbitMQ, 'pwn/plugins/rabbit_mq'
67
+ autoload :Radare2, 'pwn/plugins/radare2'
68
+ autoload :Recon, 'pwn/plugins/recon'
56
69
  autoload :REPL, 'pwn/plugins/repl'
57
70
  autoload :ScannableCodes, 'pwn/plugins/scannable_codes'
58
71
  autoload :Serial, 'pwn/plugins/serial'
@@ -61,6 +74,7 @@ module PWN
61
74
  autoload :Sock, 'pwn/plugins/sock'
62
75
  autoload :Spider, 'pwn/plugins/spider'
63
76
  autoload :SSN, 'pwn/plugins/ssn'
77
+ autoload :Sqlmap, 'pwn/plugins/sqlmap'
64
78
  autoload :ThreadPool, 'pwn/plugins/thread_pool'
65
79
  autoload :Tor, 'pwn/plugins/tor'
66
80
  autoload :TransparentBrowser, 'pwn/plugins/transparent_browser'
@@ -70,6 +84,7 @@ module PWN
70
84
  autoload :Vault, 'pwn/plugins/vault'
71
85
  autoload :VIN, 'pwn/plugins/vin'
72
86
  autoload :Voice, 'pwn/plugins/voice'
87
+ autoload :Volatility, 'pwn/plugins/volatility'
73
88
  autoload :Vsphere, 'pwn/plugins/vsphere'
74
89
  autoload :XXD, 'pwn/plugins/xxd'
75
90
  autoload :Zaproxy, 'pwn/plugins/zaproxy'
@@ -83,6 +98,10 @@ module PWN
83
98
  end
84
99
 
85
100
  public_class_method def self.help
101
+ puts "USAGE:
102
+ # Display a List of Every PWN::Plugins Module
103
+ #{self}.authors
104
+ "
86
105
  constants.sort
87
106
  end
88
107
  end
@@ -415,13 +415,17 @@ module PWN
415
415
 
416
416
  public_class_method def self.help
417
417
  puts "USAGE:
418
+ # Run generate and return its result
418
419
  #{self}.generate(
419
- dir_path: dir_path,
420
- results_hash: results_hash
420
+ dir_path: 'optional - Directory path to save the report (defaults to .)',
421
+ results_hash: 'optional - Hash containing the results of the AI RedTeam analysis (defaults to empty hash structure)',
422
+ report_name: 'optional - Name of the report file (defaults to current directory name)'
421
423
  )
422
424
 
425
+ # Print the AUTHOR(S) string for this module.
423
426
  #{self}.authors
424
427
  "
428
+ constants.sort
425
429
  end
426
430
  end
427
431
  end
@@ -31,7 +31,14 @@ module PWN
31
31
  end
32
32
 
33
33
  public_class_method def self.help
34
- puts "USAGE:\n #{self}.generate(\n path: '/tmp/report.csv',\n results_hash: {}\n )\n\n #{self}.authors\n"
34
+ puts "USAGE:
35
+ # Run generate and return its result
36
+ #{self}.generate
37
+
38
+ # Print the AUTHOR(S) string for this module.
39
+ #{self}.authors
40
+ "
41
+ constants.sort
35
42
  end
36
43
  end
37
44
  end