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
@@ -266,46 +266,56 @@ module PWN
266
266
 
267
267
  public_class_method def self.help
268
268
  puts "USAGE:
269
- beef_obj = #{self}.login(
270
- beef_ip: 'required host/ip of Nexpose Console (server)',
269
+ # Run login and return its result
270
+ #{self}.login(
271
+ beef_ip: 'required - host/ip of BeEF Server',
271
272
  beef_port: 'optional - port of BeEF server (defaults to 3000)',
272
- username: 'required username',
273
- password: 'optional password (will prompt if nil)'
273
+ username: 'required - username value consumed by #login',
274
+ password: 'optional - password (will prompt if nil)'
274
275
  )
275
276
 
276
- hooks = #{self}.hooks(
277
- beef_obj: 'required beef_obj returned from #login method'
277
+ # Run hooks and return its result
278
+ #{self}.hooks(
279
+ beef_obj: 'required - required beef_obj returned from #login method'
278
280
  )
279
281
 
280
- hooked_browser_info = #{self}.hooked_browser_info(
281
- beef_obj: 'required beef_obj returned from #login method',
282
+ # Run hooked browser info and return its result
283
+ #{self}.hooked_browser_info(
284
+ beef_obj: 'required - required beef_obj returned from #login method',
282
285
  browser_session: 'required - browser session id returned from #hooks method'
283
286
  )
284
287
 
285
- logs = #{self}.logs(
286
- beef_obj: 'required beef_obj returned from #login method'
288
+ # Run logs and return its result
289
+ #{self}.logs(
290
+ beef_obj: 'required - required beef_obj returned from #login method'
287
291
  )
288
292
 
289
- hooked_browser_logs = #{self}.hooked_browser_logs(
290
- beef_obj: 'required beef_obj returned from #login method',
293
+ # Run hooked browser logs and return its result
294
+ #{self}.hooked_browser_logs(
295
+ beef_obj: 'required - required beef_obj returned from #login method',
291
296
  browser_session: 'required - browser session id returned from #hooks method'
292
297
  )
293
298
 
294
- modules = #{self}.modules(
295
- beef_obj: 'required beef_obj returned from #login method'
299
+ # Run modules and return its result
300
+ #{self}.modules(
301
+ beef_obj: 'required - required beef_obj returned from #login method'
296
302
  )
297
303
 
298
- module_info = #{self}.module_info(
299
- beef_obj: 'required beef_obj returned from #login method',
304
+ # Run module info and return its result
305
+ #{self}.module_info(
306
+ beef_obj: 'required - required beef_obj returned from #login method',
300
307
  module_id: 'required - module id returned from #modules method'
301
308
  )
302
309
 
303
- beef_obj = #{self}.logout(
304
- beef_obj: 'required beef_obj returned from #login method'
310
+ # Run logout and return its result
311
+ #{self}.logout(
312
+ beef_obj: 'required - required beef_obj returned from #login method'
305
313
  )
306
314
 
315
+ # Print the AUTHOR(S) string for this module.
307
316
  #{self}.authors
308
317
  "
318
+ constants.sort
309
319
  end
310
320
  end
311
321
  end
@@ -0,0 +1,133 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'metasm'
4
+
5
+ module PWN
6
+ module Plugins
7
+ # ELF/PE/Mach-O headers, sections, symbols, imports/exports, relocations
8
+ # via Metasm loaders.
9
+ module BinaryParser
10
+ public_class_method def self.required_bins
11
+ []
12
+ end
13
+
14
+ public_class_method def self.load_exe(opts = {})
15
+ path = opts[:path].to_s
16
+ raise 'ERROR: path is required' if path.empty?
17
+ raise "ERROR: file not found: #{path}" unless File.file?(path)
18
+
19
+ Metasm::AutoExe.decode_file(path)
20
+ end
21
+
22
+ public_class_method def self.info(opts = {})
23
+ exe = load_exe(opts)
24
+ {
25
+ class: exe.class.name,
26
+ cpu: exe.cpu.class.name,
27
+ entrypoint: (exe.optheader.entrypoint if exe.respond_to?(:optheader) && exe.optheader.respond_to?(:entrypoint)),
28
+ format: format_name(exe: exe)
29
+ }
30
+ end
31
+
32
+ public_class_method def self.sections(opts = {})
33
+ exe = load_exe(opts)
34
+ Array(exe.sections).map do |sec|
35
+ {
36
+ name: (sec.name if sec.respond_to?(:name)),
37
+ size: (sec.size if sec.respond_to?(:size)),
38
+ virtaddr: (sec.virtaddr if sec.respond_to?(:virtaddr))
39
+ }
40
+ end
41
+ end
42
+
43
+ public_class_method def self.symbols(opts = {})
44
+ exe = load_exe(opts)
45
+ return [] unless exe.respond_to?(:symbols)
46
+
47
+ Array(exe.symbols).first((opts[:limit] || 200).to_i).map do |sym|
48
+ { name: (sym.name if sym.respond_to?(:name)), value: (sym.value if sym.respond_to?(:value)) }
49
+ end
50
+ end
51
+
52
+ public_class_method def self.imports(opts = {})
53
+ exe = load_exe(opts)
54
+ if exe.respond_to?(:imports)
55
+ Array(exe.imports).map(&:to_s)
56
+ else
57
+ symbols(opts).map { |s| s[:name].to_s }.grep(/plt|imp/i).first(100)
58
+ end
59
+ end
60
+
61
+ public_class_method def self.exports(opts = {})
62
+ exe = load_exe(opts)
63
+ if exe.respond_to?(:export)
64
+ Array(exe.export&.exports).map { |e| e.respond_to?(:name) ? e.name : e.to_s }
65
+ else
66
+ []
67
+ end
68
+ rescue StandardError
69
+ []
70
+ end
71
+
72
+ public_class_method def self.relocations(opts = {})
73
+ exe = load_exe(opts)
74
+ return [] unless exe.respond_to?(:relocations)
75
+
76
+ Array(exe.relocations).first((opts[:limit] || 100).to_i).map(&:to_s)
77
+ rescue StandardError
78
+ []
79
+ end
80
+
81
+ public_class_method def self.authors
82
+ "AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
83
+ end
84
+
85
+ public_class_method def self.help
86
+ puts "USAGE:
87
+ # List host binaries this module expects to be installed.
88
+ #{self}.required_bins
89
+
90
+ # Run load exe and return its result
91
+ #{self}.load_exe(
92
+ path: 'required - filesystem path to read or write'
93
+ )
94
+
95
+ # Run info and return its result
96
+ #{self}.info
97
+
98
+ # Run sections and return its result
99
+ #{self}.sections
100
+
101
+ # Run symbols and return its result
102
+ #{self}.symbols(
103
+ limit: 'optional - limit value consumed by #symbols'
104
+ )
105
+
106
+ # Run imports and return its result
107
+ #{self}.imports
108
+
109
+ # Run exports and return its result
110
+ #{self}.exports
111
+
112
+ # Run relocations and return its result
113
+ #{self}.relocations(
114
+ limit: 'optional - limit value consumed by #relocations'
115
+ )
116
+
117
+ # Print the AUTHOR(S) string for this module.
118
+ #{self}.authors
119
+ "
120
+ constants.sort
121
+ end
122
+
123
+ private_class_method def self.format_name(opts = {})
124
+ exe = opts[:exe]
125
+ return 'elf' if exe.class.name.to_s.include?('ELF')
126
+ return 'pe' if exe.class.name.to_s.include?('PE')
127
+ return 'macho' if exe.class.name.to_s.include?('MachO') || exe.class.name.to_s.include?('Mach')
128
+
129
+ exe.class.name
130
+ end
131
+ end
132
+ end
133
+ end
@@ -658,63 +658,72 @@ module PWN
658
658
 
659
659
  public_class_method def self.help
660
660
  puts "USAGE:
661
- response = #{self}.get_apps(
661
+ # Run get apps and return its result
662
+ #{self}.get_apps(
662
663
  token: 'required - Bearer token'
663
664
  )
664
665
 
665
- response = PWN::Plugins::BlackDuckBinaryAnalysis.upload_file(
666
+ # Run get apps by group and return its result
667
+ #{self}.get_apps_by_group(
668
+ token: 'required - Bearer token',
669
+ group_id: 'required - group id value consumed by #get_apps_by_group'
670
+ )
671
+
672
+ # Run upload file and return its result
673
+ #{self}.upload_file(
666
674
  token: 'required - Bearer token',
667
675
  file: 'required - path of file to upload',
668
- group_id: 'optional - group id',
676
+ group_id: 'optional - group id value consumed by #upload_file',
669
677
  delete_binary: 'optional - delete binary after upload (defaults to false)',
670
678
  force_scan: 'optional - force scan (defaults to false)',
671
- callback_url: 'optional - callback url',
679
+ callback_url: 'optional - callback url value consumed by #upload_file',
672
680
  scan_infoleak: 'optional - scan infoleak (defaults to true)',
673
681
  code_analysis: 'optional - code analysis (defaults to true)',
674
- scan_code_familiarity: 'optional - scan code familiarity (defaults to true)',
675
- version: 'optional - version',
676
- product_id: 'optional - product id'
682
+ scan_code_familiarity: 'optional - scan code familiarity (defaults to false)',
683
+ version: 'optional - version value consumed by #upload_file',
684
+ product_id: 'optional - product id value consumed by #upload_file'
677
685
  )
678
686
 
679
- response = #{self}.get_product(
687
+ # Run get product and return its result
688
+ #{self}.get_product(
680
689
  token: 'required - Bearer token',
681
- product_id: 'required - product id'
690
+ product_id: 'required - product id value consumed by #get_product'
682
691
  )
683
692
 
684
- response = #{self}.abort_product_scan(
693
+ # Run abort product scan and return its result
694
+ #{self}.abort_product_scan(
685
695
  token: 'required - Bearer token',
686
- product_id: 'required - product id'
696
+ product_id: 'required - product id value consumed by #abort_product_scan'
687
697
  )
688
698
 
689
- response = #{self}.generate_product_report(
699
+ # Run generate product report and return its result
700
+ #{self}.generate_product_report(
690
701
  token: 'required - Bearer token',
691
- product_id: 'required - product id',
702
+ product_id: 'required - product id value consumed by #generate_product_report',
692
703
  output_path: 'required - path to output file',
693
704
  type: 'optional - report type csv_libs||csv_vulns|pdf|spdx (Defaults to csv_vulns)'
694
705
  )
695
706
 
696
- response = #{self}.get_tasks(
707
+ # Run get tasks and return its result
708
+ #{self}.get_tasks(
697
709
  token: 'required - Bearer token'
698
710
  )
699
711
 
700
- response = #{self}.get_apps_by_group(
701
- token: 'required - Bearer token',
702
- group_id: 'required - group id'
703
- )
704
-
705
- response = #{self}.get_groups(
712
+ # Run get groups and return its result
713
+ #{self}.get_groups(
706
714
  token: 'required - Bearer token'
707
715
  )
708
716
 
709
- response = #{self}.create_group(
717
+ # Run create group and return its result
718
+ #{self}.create_group(
710
719
  token: 'required - Bearer token',
711
720
  name: 'required - group name',
712
721
  desc: 'optional - group description',
713
- parent_id: 'optional - parent_id group id',
722
+ parent_id: 'optional - parent group id',
714
723
  delete_binary: 'optional - delete binary after analysis C|Y|N (Default: C== company default)',
715
724
  binary_cleanup_age: 'optional - after how long the binary will be deleted in seconds (Default: 2_592_000 / 30 days)',
716
725
  product_cleanup_age: 'optional - after how long the product will be deleted in seconds (Default: 2_592_000 / 30 days)',
717
- file_download_enabled: 'optional - allow download of uploaded binaries from group (Default: false),
726
+ file_download_enabled: 'optional - allow download of uploaded binaries from group (Default: false',
718
727
  low_risk_tolerance: 'optional - low risk tolerance nil|true|false (Default: nil == company default)',
719
728
  include_historical_vulns: 'optional - include historical vulns nil|true|false (Default: nil == company default)',
720
729
  cvss3_fallback: 'optional - cvss3 fallback nil|true|false (Default: nil == company default)',
@@ -725,63 +734,78 @@ module PWN
725
734
  scan_code_similarity: 'optional - scan code similarity nil|true|false (Default: nil == company default)'
726
735
  )
727
736
 
728
- response = #{self}.get_group_details(
737
+ # Run get group details and return its result
738
+ #{self}.get_group_details(
729
739
  token: 'required - Bearer token',
730
- group_id: 'required - group id'
740
+ group_id: 'required - group id value consumed by #get_group_details'
731
741
  )
732
742
 
733
- response = #{self}.get_group_statistics(
743
+ # Run get group statistics and return its result
744
+ #{self}.get_group_statistics(
734
745
  token: 'required - Bearer token',
735
- group_id: 'required - group id'
746
+ group_id: 'required - group id value consumed by #get_group_statistics'
736
747
  )
737
748
 
738
- response = #{self}.delete_group(
749
+ # Run delete group and return its result
750
+ #{self}.delete_group(
739
751
  token: 'required - Bearer token',
740
- group_id: 'required - group id'
752
+ group_id: 'required - group id value consumed by #delete_group'
741
753
  )
742
754
 
743
- response = #{self}.get_licenses(
755
+ # Run get licenses and return its result
756
+ #{self}.get_licenses(
744
757
  token: 'required - Bearer token'
745
758
  )
746
759
 
747
- response = #{self}.get_component_licenses(
760
+ # Run get component licenses and return its result
761
+ #{self}.get_component_licenses(
748
762
  token: 'required - Bearer token'
749
763
  )
750
764
 
751
- response = #{self}.get_tags(
765
+ # Run get tags and return its result
766
+ #{self}.get_tags(
752
767
  token: 'required - Bearer token'
753
768
  )
754
769
 
755
- response = #{self}.get_vulnerabilities(
770
+ # Run get vulnerabilities and return its result
771
+ #{self}.get_vulnerabilities(
756
772
  token: 'required - Bearer token'
757
773
  )
758
774
 
759
- response = #{self}.get_components(
775
+ # Run get components and return its result
776
+ #{self}.get_components(
760
777
  token: 'required - Bearer token'
761
778
  )
762
779
 
763
- response = #{self}.get_vendor_vulns(
780
+ # Run get vendor vulns and return its result
781
+ #{self}.get_vendor_vulns(
764
782
  token: 'required - Bearer token'
765
783
  )
766
784
 
767
- response = #{self}.get_audit_trail(
785
+ # Run get audit trail and return its result
786
+ #{self}.get_audit_trail(
768
787
  token: 'required - Bearer token'
769
788
  )
770
789
 
771
- response = #{self}.get_status(
790
+ # Run get status and return its result
791
+ #{self}.get_status(
772
792
  token: 'required - Bearer token'
773
793
  )
774
794
 
775
- response = #{self}.get_service_info(
795
+ # Run get service info and return its result
796
+ #{self}.get_service_info(
776
797
  token: 'required - Bearer token'
777
798
  )
778
799
 
779
- response = #{self}.get_service_version(
800
+ # Run get service version and return its result
801
+ #{self}.get_service_version(
780
802
  token: 'required - Bearer token'
781
803
  )
782
804
 
805
+ # Print the AUTHOR(S) string for this module.
783
806
  #{self}.authors
784
807
  "
808
+ constants.sort
785
809
  end
786
810
  end
787
811
  end