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
@@ -64,13 +64,19 @@ module PWN
64
64
 
65
65
  public_class_method def self.help
66
66
  puts "USAGE:
67
- sast_arr = #{self}.scan(
68
- dir_path: 'optional path to dir defaults to .',
69
- git_repo_root_uri: 'optional http uri of git repo scanned'
67
+ # Run scan and return its result
68
+ #{self}.scan(
69
+ dir_path: 'optional - optional path to dir defaults to .',
70
+ git_repo_root_uri: 'optional - optional http uri of git repo scanned'
70
71
  )
71
72
 
73
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
74
+ #{self}.security_references
75
+
76
+ # Print the AUTHOR(S) string for this module.
72
77
  #{self}.authors
73
78
  "
79
+ constants.sort
74
80
  end
75
81
  end
76
82
  end
@@ -69,13 +69,19 @@ module PWN
69
69
 
70
70
  public_class_method def self.help
71
71
  puts "USAGE:
72
- sast_arr = #{self}.scan(
73
- :dir_path => 'optional path to dir defaults to .',
74
- :git_repo_root_uri => 'optional http uri of git repo scanned'
72
+ # Run scan and return its result
73
+ #{self}.scan(
74
+ dir_path: 'optional - optional path to dir defaults to .',
75
+ git_repo_root_uri: 'optional - optional http uri of git repo scanned'
75
76
  )
76
77
 
78
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
79
+ #{self}.security_references
80
+
81
+ # Print the AUTHOR(S) string for this module.
77
82
  #{self}.authors
78
83
  "
84
+ constants.sort
79
85
  end
80
86
  end
81
87
  end
@@ -69,13 +69,19 @@ module PWN
69
69
 
70
70
  public_class_method def self.help
71
71
  puts "USAGE:
72
- sast_arr = #{self}.scan(
73
- :dir_path => 'optional path to dir defaults to .',
74
- :git_repo_root_uri => 'optional http uri of git repo scanned'
72
+ # :dir_path => optional path to dir defaults to .
73
+ #{self}.scan(
74
+ dir_path: 'optional - dir path value consumed by #scan',
75
+ git_repo_root_uri: 'optional - git repo root uri value consumed by #scan'
75
76
  )
76
77
 
78
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
79
+ #{self}.security_references
80
+
81
+ # Print the AUTHOR(S) string for this module.
77
82
  #{self}.authors
78
83
  "
84
+ constants.sort
79
85
  end
80
86
  end
81
87
  end
@@ -63,13 +63,19 @@ module PWN
63
63
 
64
64
  public_class_method def self.help
65
65
  puts "USAGE:
66
- sast_arr = #{self}.scan(
67
- dir_path: 'optional path to dir defaults to .',
68
- git_repo_root_uri: 'optional http uri of git repo scanned'
66
+ # Run scan and return its result
67
+ #{self}.scan(
68
+ dir_path: 'optional - optional path to dir defaults to .',
69
+ git_repo_root_uri: 'optional - optional http uri of git repo scanned'
69
70
  )
70
71
 
72
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
73
+ #{self}.security_references
74
+
75
+ # Print the AUTHOR(S) string for this module.
71
76
  #{self}.authors
72
77
  "
78
+ constants.sort
73
79
  end
74
80
  end
75
81
  end
@@ -62,13 +62,19 @@ module PWN
62
62
 
63
63
  public_class_method def self.help
64
64
  puts "USAGE:
65
- sast_arr = #{self}.scan(
66
- dir_path: 'optional path to dir defaults to .',
67
- git_repo_root_uri: 'optional http uri of git repo scanned'
65
+ # Run scan and return its result
66
+ #{self}.scan(
67
+ dir_path: 'optional - optional path to dir defaults to .',
68
+ git_repo_root_uri: 'optional - optional http uri of git repo scanned'
68
69
  )
69
70
 
71
+ # Used primarily to map NIST 800-53 Revision 4 Security Controls
72
+ #{self}.security_references
73
+
74
+ # Print the AUTHOR(S) string for this module.
70
75
  #{self}.authors
71
76
  "
77
+ constants.sort
72
78
  end
73
79
  end
74
80
  end
data/lib/pwn/sast.rb CHANGED
@@ -67,6 +67,10 @@ module PWN
67
67
  end
68
68
 
69
69
  public_class_method def self.help
70
+ puts "USAGE:
71
+ # Display a List of Every PWN::SAST Module
72
+ #{self}.authors
73
+ "
70
74
  constants.sort
71
75
  end
72
76
  end
@@ -252,18 +252,49 @@ module PWN
252
252
  # Display Usage for this Module
253
253
 
254
254
  public_class_method def self.help
255
- puts "USAGE (true-air I/Q via PWN::FFI + detector fallback):
255
+ puts "USAGE:
256
+ # Run crc24 and return its result
257
+ #{self}.crc24(
258
+ bits: 'optional - bits value consumed by #crc24 (defaults to [])'
259
+ )
260
+
261
+ # Run crc ok and return its result
262
+ #{self}.crc_ok?(
263
+ bits: 'optional - bits value consumed by #crc_ok? (defaults to [])'
264
+ )
265
+
266
+ # Run decode modes and return its result
267
+ #{self}.decode_modes(
268
+ bits: 'optional - bits value consumed by #decode_modes (defaults to [])'
269
+ )
270
+
271
+ # Run ais char and return its result
272
+ #{self}.ais_char(
273
+ code: 'optional - code value consumed by #ais_char'
274
+ )
275
+
276
+ # Run modes altitude and return its result
277
+ #{self}.modes_altitude(
278
+ bits12: 'optional - bits12 value consumed by #modes_altitude'
279
+ )
280
+
281
+ # Run decode and return its result
256
282
  #{self}.decode(
257
283
  freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
258
- source: 'optional - :auto|:rtlsdr|:adalm_pluto|:file',
259
- file: 'optional - .cu8/.cs16 capture at ≥2 Msps'
284
+ sample_rate: 'optional - sample rate value consumed by #decode',
285
+ source: 'optional - source value consumed by #decode',
286
+ file: 'optional - filesystem path'
260
287
  )
261
288
 
262
- #{self}.decode_modes(bits: [0,1,...]) # 56/112 Mode-S bits
263
- #{self}.parse_line(line: 'MSG,3,1,1,ABCDEF,1,...')
289
+ # Run parse line and return its result
290
+ #{self}.parse_line(
291
+ line: 'optional - line value consumed by #parse_line'
292
+ )
264
293
 
294
+ # Print the AUTHOR(S) string for this module.
265
295
  #{self}.authors
266
296
  "
297
+ constants.sort
267
298
  end
268
299
  end
269
300
  end
@@ -132,17 +132,20 @@ module PWN
132
132
  # Display Usage for this Module
133
133
 
134
134
  public_class_method def self.help
135
- puts "USAGE (ruby-native, no external binaries):
135
+ puts "USAGE:
136
+ # Run decode and return its result
136
137
  #{self}.decode(
137
- freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq'
138
+ freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
139
+ source: 'optional - source value consumed by #decode',
140
+ file: 'optional - filesystem path',
141
+ out_path: 'optional - out path value consumed by #decode',
142
+ sample_rate: 'optional - sample rate value consumed by #decode'
138
143
  )
139
144
 
140
- NOTE: Set GQRX to WFM (mono), ~34 kHz filter. Writes an 8-bit
141
- greyscale Netpbm P5 image to /tmp/apt_<ts>.pgm every 10 s
142
- of received pass. Both A/B channels are in one strip.
143
-
145
+ # Print the AUTHOR(S) string for this module.
144
146
  #{self}.authors
145
147
  "
148
+ constants.sort
146
149
  end
147
150
  end
148
151
  end
@@ -626,38 +626,90 @@ module PWN
626
626
  # Display Usage for this Module
627
627
 
628
628
  public_class_method def self.help
629
- puts "USAGE (100 % ruby-native — no external binaries):
629
+ puts "USAGE:
630
+ # Run run native and return its result
630
631
  #{self}.run_native(
631
- freq_obj: 'required - freq_obj from PWN::SDR::GQRX.init_freq',
632
- protocol: 'required - short protocol name',
633
- demod: 'required - object with #feed(samples,&emit)',
634
- rate: 'optional - UDP sample rate (default 48000)'
632
+ freq_obj: 'required - freq_obj Hash from PWN::SDR::GQRX.init_freq',
633
+ protocol: 'required - short name for banner / log filename (defaults to SIGNAL)',
634
+ demod: 'required - object responding to #feed(samples,&emit)',
635
+ rate: 'optional - assumed UDP sample rate (default 48000)'
635
636
  )
636
637
 
637
- #{self}.run_iq(
638
- freq_obj: 'required - freq_obj Hash',
639
- protocol: 'required - short protocol name',
640
- demod: 'required - #feed_iq(iq, rate:, &emit) or #feed',
641
- sample_rate: 'optional - Hz (default 2_048_000)',
642
- source: 'optional - :auto|:rtlsdr|:hackrf|:adalm_pluto|:soapy|:file',
643
- file: 'optional - .cu8/.cs16 capture path',
644
- fm_demod: 'optional - FM-demod then #feed (default false)',
645
- fallback: 'optional - :detector|:raise|:silent (default :detector)'
638
+ # Run run detector and return its result
639
+ #{self}.run_detector(
640
+ freq_obj: 'required - freq_obj Hash from PWN::SDR::GQRX.init_freq',
641
+ protocol: 'required - short name for banner / log filename (defaults to SIGNAL)',
642
+ note: 'optional - one-line explanation shown once',
643
+ threshold: 'optional - dBFS above rolling floor to call a burst (default 8.0)',
644
+ describe: 'optional - Proc.new { |burst_hash| Hash } extra fields'
646
645
  )
647
646
 
648
- #{self}.run_detector(
649
- freq_obj: 'required - freq_obj from PWN::SDR::GQRX.init_freq',
650
- protocol: 'required - short protocol name',
651
- note: 'optional - explanation shown to operator',
652
- threshold: 'optional - dB above floor for burst (default 8.0)',
653
- describe: 'optional - Proc { |burst| Hash } extra fields'
647
+ # Run match line and return its result
648
+ #{self}.match_line?(
649
+ line: 'optional - line value consumed by #match_line?',
650
+ matcher: 'optional - matcher value consumed by #match_line?'
651
+ )
652
+
653
+ # Run resolve iq source and return its result
654
+ #{self}.resolve_iq_source(
655
+ freq_obj: 'required - freq obj value consumed by #resolve_iq_source',
656
+ source: 'optional - :auto|:rtlsdr|:hackrf|:adalm_pluto|:soapy|:file',
657
+ sample_rate: 'optional - desired rate Hz',
658
+ file: 'optional - path to .cu8/.cs16/.iq capture (defaults to freq_obj[:iq_file])',
659
+ iq_format: 'optional - iq format value consumed by #resolve_iq_source (defaults to freq_obj[:iq_format])',
660
+ index: 'optional - index value consumed by #resolve_iq_source',
661
+ gain_db: 'optional - gain db value consumed by #resolve_iq_source (defaults to freq_obj[:gain_db])',
662
+ ppm: 'optional - ppm value consumed by #resolve_iq_source',
663
+ serial: 'optional - serial value consumed by #resolve_iq_source',
664
+ lna_gain: 'optional - lna gain value consumed by #resolve_iq_source (defaults to 16)',
665
+ vga_gain: 'optional - vga gain value consumed by #resolve_iq_source (defaults to 20)',
666
+ amp: 'optional - amp value consumed by #resolve_iq_source',
667
+ uri: 'optional - URI or URL string',
668
+ chunk_samples: 'optional - chunk samples value consumed by #resolve_iq_source',
669
+ soapy_args: 'optional - soapy args value consumed by #resolve_iq_source (defaults to freq_obj[:soapy_args])',
670
+ channel: 'optional - channel value consumed by #resolve_iq_source (defaults to 0)'
671
+ )
672
+
673
+ # Run read iq chunk and return its result
674
+ #{self}.read_iq_chunk(
675
+ source: 'required - source value consumed by #read_iq_chunk',
676
+ bytes: 'optional - bytes value consumed by #read_iq_chunk'
654
677
  )
655
678
 
656
- #{self}.resolve_iq_source(freq_obj:, source: :auto, sample_rate:, file:)
657
- #{self}.match_line?(line: str, matcher: Regexp|String|Array)
679
+ # Run unpack iq and return its result
680
+ #{self}.unpack_iq(
681
+ source: 'optional - source value consumed by #unpack_iq',
682
+ data: 'optional - data value consumed by #unpack_iq'
683
+ )
684
+
685
+ # Run close iq source and return its result
686
+ #{self}.close_iq_source(
687
+ source: 'optional - source value consumed by #close_iq_source'
688
+ )
689
+
690
+ # OR #feed(samples, &emit) when fm_demod:true,
691
+ #{self}.run_iq(
692
+ freq_obj: 'required - freq_obj Hash',
693
+ protocol: 'required - short name (defaults to SIGNAL)',
694
+ demod: 'required - object with #feed_iq(iq, rate:, &emit',
695
+ sample_rate: 'optional - Hz (default 2_048_000)',
696
+ source: 'optional - :auto|:rtlsdr|:hackrf|:adalm_pluto|:soapy|:file',
697
+ file: 'optional - path to capture',
698
+ fm_demod: 'optional - FM-demod I/Q→audio then #feed (default false)',
699
+ chunk_bytes: 'optional - bytes per read (default 262144)',
700
+ fallback: 'optional - :detector|:raise|:silent (default :detector)',
701
+ note: 'optional - shown once when falling back',
702
+ describe: 'optional - Proc for detector fallback',
703
+ gain_db: 'optional - gain db value consumed by #run_iq',
704
+ uri: 'optional - URI or URL string',
705
+ index: 'optional - index value consumed by #run_iq',
706
+ threshold: 'optional - threshold value consumed by #run_iq'
707
+ )
658
708
 
709
+ # Print the AUTHOR(S) string for this module.
659
710
  #{self}.authors
660
711
  "
712
+ constants.sort
661
713
  end
662
714
  end
663
715
  end
@@ -191,18 +191,30 @@ module PWN
191
191
  end
192
192
 
193
193
  public_class_method def self.help
194
- puts "USAGE (true-air I/Q via PWN::FFI + detector fallback):
194
+ puts "USAGE:
195
+ # Run ble crc24 and return its result
196
+ #{self}.ble_crc24(
197
+ bytes: 'optional - bytes value consumed by #ble_crc24 (defaults to [])'
198
+ )
199
+
200
+ # Run decode and return its result
195
201
  #{self}.decode(
196
202
  freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
197
- source: 'optional - :auto|:rtlsdr|:adalm_pluto|:file',
198
- file: 'optional - .cu8/.cs16 capture (≥2 Msps)',
199
- channel: 'optional - BLE adv channel 37|38|39 (default nearest to freq)'
203
+ channel: 'optional - channel value consumed by #decode',
204
+ sample_rate: 'optional - sample rate value consumed by #decode',
205
+ source: 'optional - source value consumed by #decode',
206
+ file: 'optional - filesystem path'
200
207
  )
201
208
 
202
- #{self}.ble_crc24(bytes: [..])
209
+ # Run parse line and return its result
210
+ #{self}.parse_line(
211
+ line: 'optional - line value consumed by #parse_line'
212
+ )
203
213
 
214
+ # Print the AUTHOR(S) string for this module.
204
215
  #{self}.authors
205
216
  "
217
+ constants.sort
206
218
  end
207
219
  end
208
220
  end
@@ -138,15 +138,24 @@ module PWN
138
138
  end
139
139
 
140
140
  public_class_method def self.help
141
- puts "USAGE (true-air I/Q via PWN::FFI + detector fallback):
141
+ puts "USAGE:
142
+ # Run decode and return its result
142
143
  #{self}.decode(
143
144
  freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
144
- source: 'optional - :auto|:rtlsdr|:adalm_pluto|:file',
145
- file: 'optional - .cu8/.cs16 capture (≥2.304 Msps)'
145
+ sample_rate: 'optional - sample rate value consumed by #decode',
146
+ source: 'optional - source value consumed by #decode',
147
+ file: 'optional - filesystem path'
146
148
  )
147
149
 
150
+ # Run parse line and return its result
151
+ #{self}.parse_line(
152
+ line: 'optional - line value consumed by #parse_line'
153
+ )
154
+
155
+ # Print the AUTHOR(S) string for this module.
148
156
  #{self}.authors
149
157
  "
158
+ constants.sort
150
159
  end
151
160
  end
152
161
  end