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
data/lib/pwn/setup.rb CHANGED
@@ -236,6 +236,55 @@ module PWN
236
236
  'jq' => {
237
237
  apt: %w[jq], dnf: %w[jq], pacman: %w[jq], brew: %w[jq], port: %w[jq],
238
238
  plugins: %w[extro_osint]
239
+ },
240
+ 'gdb' => {
241
+ apt: %w[gdb], dnf: %w[gdb], pacman: %w[gdb], brew: %w[gdb], port: %w[gdb],
242
+ plugins: %w[PWN::Plugins::GDB]
243
+ },
244
+ 'r2' => {
245
+ apt: %w[radare2], dnf: %w[radare2], pacman: %w[radare2], brew: %w[radare2], port: %w[radare2],
246
+ plugins: %w[PWN::Plugins::Radare2]
247
+ },
248
+ 'checksec' => {
249
+ apt: %w[], dnf: %w[], pacman: %w[], brew: %w[], port: %w[],
250
+ plugins: %w[PWN::Plugins::GDB PWN::Plugins::ExploitDev]
251
+ },
252
+ 'ROPgadget' => {
253
+ apt: %w[], dnf: %w[], pacman: %w[], brew: %w[], port: %w[],
254
+ plugins: %w[PWN::Plugins::ExploitDev]
255
+ },
256
+ 'one_gadget' => {
257
+ apt: %w[], dnf: %w[], pacman: %w[], brew: %w[], port: %w[],
258
+ plugins: %w[PWN::Plugins::ExploitDev]
259
+ },
260
+ 'qemu-x86_64' => {
261
+ apt: %w[qemu-user-static], dnf: %w[qemu-user-static], pacman: %w[qemu-user-static],
262
+ brew: %w[], port: %w[],
263
+ plugins: %w[PWN::Plugins::GDB]
264
+ },
265
+ 'yara' => {
266
+ apt: %w[yara], dnf: %w[yara], pacman: %w[yara], brew: %w[yara], port: %w[yara],
267
+ plugins: %w[PWN::Plugins::Volatility]
268
+ },
269
+ 'frida' => {
270
+ apt: %w[], dnf: %w[], pacman: %w[], brew: %w[], port: %w[],
271
+ plugins: %w[PWN::Plugins::Frida]
272
+ },
273
+ 'apktool' => {
274
+ apt: %w[apktool], dnf: %w[], pacman: %w[apktool], brew: %w[apktool], port: %w[],
275
+ plugins: %w[PWN::Plugins::Android]
276
+ },
277
+ 'jadx' => {
278
+ apt: %w[jadx], dnf: %w[], pacman: %w[jadx], brew: %w[], port: %w[],
279
+ plugins: %w[PWN::Plugins::Android]
280
+ },
281
+ 'nuclei' => {
282
+ apt: %w[nuclei], dnf: %w[], pacman: %w[nuclei], brew: %w[nuclei], port: %w[],
283
+ plugins: %w[PWN::Plugins::Nuclei]
284
+ },
285
+ 'hydra' => {
286
+ apt: %w[hydra], dnf: %w[hydra], pacman: %w[hydra], brew: %w[thc-hydra], port: %w[],
287
+ plugins: %w[PWN::Plugins::CredentialAttack]
239
288
  }
240
289
  }.freeze
241
290
 
@@ -292,6 +341,11 @@ module PWN
292
341
  gems: %w[libusb],
293
342
  bins: %w[adb baresip]
294
343
  },
344
+ re: {
345
+ desc: 'Radare2 · GDB · ExploitDev · Frida · Android RE tier',
346
+ gems: %w[],
347
+ bins: %w[gdb r2 checksec ROPgadget one_gadget qemu-x86_64 yara frida apktool jadx]
348
+ },
295
349
  full: {
296
350
  desc: 'everything above',
297
351
  gems: NATIVE_GEMS.keys,
@@ -869,53 +923,56 @@ module PWN
869
923
 
870
924
  public_class_method def self.help
871
925
  puts "USAGE:
872
- # Read-only doctor which PWN capabilities are usable on this host?
873
- #{self}.check
926
+ # Run pkg manager and return its result
927
+ #{self}.pkg_manager
874
928
 
875
- # Install OS headers + rebuild native gems for a capability profile.
876
- # profile ∈ #{PROFILES.keys.inspect}
877
- #{self}.deps(
878
- profile: 'optional - capability profile (default :full)',
879
- yes: 'optional - assume yes (non-interactive)',
880
- dry_run: 'optional - print commands only'
929
+ # Run check and return its result
930
+ #{self}.check(
931
+ io: 'optional - IO to write the report to (default $stdout)',
932
+ profile: 'optional - profile value consumed by #check'
881
933
  )
882
934
 
935
+ # Run deps and return its result
936
+ #{self}.deps(
937
+ profile: 'optional - one of PROFILES.keys (default :full)',
938
+ yes: 'optional - non-interactive; assume yes to prompts (default false)',
939
+ dry_run: 'optional - print commands only, do not execute (default false)',
940
+ io: 'optional - IO to write to (default $stdout)'
941
+ )
883
942
 
884
- # Opt-in SHIFT+ENTER multi-line support (Terminator plugin + tmux.conf hints).
885
- #{self}.terminal(
886
- yes: 'optional - assume yes (non-interactive)',
887
- dry_run: 'optional - print what would happen'
888
- )
943
+ # Opt-in installer for SHIFT+ENTER multi-line support in the pwn-ai /
944
+ #{self}.terminal(
945
+ yes: 'optional - assume yes; non-interactive (default false)',
946
+ dry_run: 'optional - print what WOULD happen (default false)',
947
+ io: 'optional - IO to write to (default $stdout)'
948
+ )
889
949
 
890
- # List capability profiles.
891
- #{self}.list_profiles
950
+ # Run list profiles and return its result
951
+ #{self}.list_profiles(
952
+ io: 'optional - IO to write to (default $stdout)'
953
+ )
892
954
 
893
- # Detected package manager (:apt / :dnf / :pacman / :brew / :port).
894
- #{self}.pkg_manager
955
+ # Delegate to PWN::Migrate.run verify every ~/.pwn state file is
956
+ #{self}.migrate(
957
+ fix: 'optional - also autofix incompatible ~/.pwn files (default false)',
958
+ dry_run: 'optional - print what WOULD happen (default false)',
959
+ yes: 'optional - alias for fix:true (CI-friendly)',
960
+ io: 'optional - IO to write to (default $stdout)'
961
+ )
895
962
 
896
- # Data tables versioned with the gem:
897
- #{self}::NATIVE_GEMS # native ext → OS headers → PWN:: constants
898
- #{self}::TOOLCHAIN # external bin OS package PWN:: constants
899
- #{self}::PROFILES # capability profile gems + bins
900
-
901
- # From the shell:
902
- pwn setup # == check
903
- pwn setup --check
904
- pwn setup --deps # profile :full
905
- pwn setup --profile web
906
- pwn setup --profile sdr --yes
907
- pwn setup --terminal # opt-in SHIFT+ENTER multi-line (Terminator/tmux)
908
- pwn setup --list-profiles
909
- pwn setup --dry-run --profile net
910
- pwn setup --migrate # verify + upgrade ~/.pwn schema
911
- pwn setup --migrate --fix # also autofix incompatible files
912
- # Every non-dry-run `pwn setup` also seeds default jobs and starts
913
- # (or reuses) the background PWN::Cron worker, then persists it
914
- # via the OS-native scheduler (systemd --user / launchd / schtasks / crontab).
915
- # `pwn setup --no-cron` disables that persistence; `--cron` re-enables it.
963
+ # Seed default pwn-ai jobs (idempotent) and start the background
964
+ #{self}.ensure_cron(
965
+ restart: 'optional - replace a live worker (default false = reuse)',
966
+ dry_run: 'optional - do not spawn (default false)',
967
+ interval: 'optional - worker poll seconds (default PWN::Cron::DEFAULT_INTERVAL)',
968
+ io: 'optional - IO to write the status line to (default $stdout)',
969
+ enabled: 'optional - enabled value consumed by #ensure_cron'
970
+ )
916
971
 
972
+ # Print the AUTHOR(S) string for this module.
917
973
  #{self}.authors
918
974
  "
975
+ constants.sort
919
976
  end
920
977
  end
921
978
  end
data/lib/pwn/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.5.708'
4
+ VERSION = '0.5.709'
5
5
  end
@@ -111,28 +111,34 @@ module PWN
111
111
 
112
112
  public_class_method def self.help
113
113
  puts "USAGE:
114
- browser_obj = #{self}.open(
114
+ # Open a session or connection and return a handle.
115
+ #{self}.open(
115
116
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
116
117
  proxy: 'optional - scheme://proxy_host:port || tor'
117
118
  )
118
119
 
119
- browser_obj = #{self}.login(
120
+ # Run login and return its result
121
+ #{self}.login(
120
122
  browser_obj: 'required - browser_obj returned from #open method',
121
- username: 'required - username',
122
- password: 'optional - passwd (will prompt if blank),
123
+ username: 'required - username value consumed by #login',
124
+ password: 'optional - passwd (will prompt if blank)',
123
125
  mfa: 'optional - if true prompt for mfa token (defaults to false)'
124
126
  )
125
127
 
126
- browser_obj = #{self}.logout(
128
+ # Run logout and return its result
129
+ #{self}.logout(
127
130
  browser_obj: 'required - browser_obj returned from #open method'
128
131
  )
129
132
 
133
+ # Close a session previously returned by #open.
130
134
  #{self}.close(
131
135
  browser_obj: 'required - browser_obj returned from #open method'
132
136
  )
133
137
 
138
+ # Print the AUTHOR(S) string for this module.
134
139
  #{self}.authors
135
140
  "
141
+ constants.sort
136
142
  end
137
143
  end
138
144
  end
data/lib/pwn/www/bing.rb CHANGED
@@ -66,22 +66,27 @@ module PWN
66
66
 
67
67
  public_class_method def self.help
68
68
  puts "USAGE:
69
- browser_obj = #{self}.open(
70
- browser_type: 'optional :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
71
- proxy: 'optional scheme://proxy_host:port || tor'
69
+ # Open a session or connection and return a handle.
70
+ #{self}.open(
71
+ browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
72
+ proxy: 'optional - optional scheme://proxy_host:port || tor'
72
73
  )
73
74
 
74
- browser_obj = #{self}.search(
75
+ # Run a search using the open session.
76
+ #{self}.search(
75
77
  browser_obj: 'required - browser_obj returned from #open method',
76
78
  q: 'required - search string'
77
79
  )
78
80
 
79
- browser_obj = #{self}.close(
81
+ # Close a session previously returned by #open.
82
+ #{self}.close(
80
83
  browser_obj: 'required - browser_obj returned from #open method'
81
84
  )
82
85
 
86
+ # Print the AUTHOR(S) string for this module.
83
87
  #{self}.authors
84
88
  "
89
+ constants.sort
85
90
  end
86
91
  end
87
92
  end
@@ -108,28 +108,34 @@ module PWN
108
108
 
109
109
  public_class_method def self.help
110
110
  puts "USAGE:
111
- browser_obj = #{self}.open(
111
+ # Open a session or connection and return a handle.
112
+ #{self}.open(
112
113
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
113
114
  proxy: 'optional - scheme://proxy_host:port || tor'
114
115
  )
115
116
 
116
- browser_obj = #{self}.login(
117
+ # Run login and return its result
118
+ #{self}.login(
117
119
  browser_obj: 'required - browser_obj returned from #open method',
118
- username: 'required - username',
119
- password: 'optional - passwd (will prompt if blank),
120
+ username: 'required - username value consumed by #login',
121
+ password: 'optional - passwd (will prompt if blank)',
120
122
  mfa: 'optional - if true prompt for mfa token (defaults to false)'
121
123
  )
122
124
 
123
- browser_obj = #{self}.logout(
125
+ # Run logout and return its result
126
+ #{self}.logout(
124
127
  browser_obj: 'required - browser_obj returned from #open method'
125
128
  )
126
129
 
130
+ # Close a session previously returned by #open.
127
131
  #{self}.close(
128
132
  browser_obj: 'required - browser_obj returned from #open method'
129
133
  )
130
134
 
135
+ # Print the AUTHOR(S) string for this module.
131
136
  #{self}.authors
132
137
  "
138
+ constants.sort
133
139
  end
134
140
  end
135
141
  end
@@ -52,17 +52,21 @@ module PWN
52
52
 
53
53
  public_class_method def self.help
54
54
  puts "USAGE:
55
- browser_obj = #{self}.open(
56
- browser_type: 'optional :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
55
+ # Open a session or connection and return a handle.
56
+ #{self}.open(
57
+ browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
57
58
  proxy: 'optional - scheme://proxy_host:port || tor'
58
59
  )
59
60
 
60
- browser_obj = #{self}.close(
61
- browser_obj: 'required - browser_obj returned from #open method',
61
+ # Close a session previously returned by #open.
62
+ #{self}.close(
63
+ browser_obj: 'required - browser_obj returned from #open method'
62
64
  )
63
65
 
66
+ # Print the AUTHOR(S) string for this module.
64
67
  #{self}.authors
65
68
  "
69
+ constants.sort
66
70
  end
67
71
  end
68
72
  end
@@ -108,28 +108,34 @@ module PWN
108
108
 
109
109
  public_class_method def self.help
110
110
  puts "USAGE:
111
- browser_obj = #{self}.open(
111
+ # Open a session or connection and return a handle.
112
+ #{self}.open(
112
113
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
113
114
  proxy: 'optional - scheme://proxy_host:port || tor'
114
115
  )
115
116
 
116
- browser_obj = #{self}.login(
117
+ # Run login and return its result
118
+ #{self}.login(
117
119
  browser_obj: 'required - browser_obj returned from #open method',
118
- username: 'required - username',
119
- password: 'optional - passwd (will prompt if blank),
120
+ username: 'required - username value consumed by #login',
121
+ password: 'optional - passwd (will prompt if blank)',
120
122
  mfa: 'optional - if true prompt for mfa token (defaults to false)'
121
123
  )
122
124
 
123
- browser_obj = #{self}.logout(
125
+ # Run logout and return its result
126
+ #{self}.logout(
124
127
  browser_obj: 'required - browser_obj returned from #open method'
125
128
  )
126
129
 
130
+ # Close a session previously returned by #open.
127
131
  #{self}.close(
128
132
  browser_obj: 'required - browser_obj returned from #open method'
129
133
  )
130
134
 
135
+ # Print the AUTHOR(S) string for this module.
131
136
  #{self}.authors
132
137
  "
138
+ constants.sort
133
139
  end
134
140
  end
135
141
  end
@@ -88,26 +88,32 @@ module PWN
88
88
 
89
89
  public_class_method def self.help
90
90
  puts "USAGE:
91
- browser_obj = #{self}.open(
92
- browser_type: 'optional :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
91
+ # Open a session or connection and return a handle.
92
+ #{self}.open(
93
+ browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
93
94
  proxy: 'optional - scheme://proxy_host:port || tor'
94
95
  )
95
96
 
96
- browser_obj = #{self}.search(
97
+ # Run a search using the open session.
98
+ #{self}.search(
97
99
  browser_obj: 'required - browser_obj returned from #open method',
98
- q: 'required search string'
100
+ q: 'required - search string'
99
101
  )
100
102
 
101
- browser_obj = #{self}.onion(
103
+ # Run onion and return its result
104
+ #{self}.onion(
102
105
  browser_obj: 'required - browser_obj returned from #open method'
103
106
  )
104
107
 
105
- browser_obj = #{self}.close(
108
+ # Close a session previously returned by #open.
109
+ #{self}.close(
106
110
  browser_obj: 'required - browser_obj returned from #open method'
107
111
  )
108
112
 
113
+ # Print the AUTHOR(S) string for this module.
109
114
  #{self}.authors
110
115
  "
116
+ constants.sort
111
117
  end
112
118
  end
113
119
  end
@@ -97,27 +97,33 @@ module PWN
97
97
 
98
98
  public_class_method def self.help
99
99
  puts "USAGE:
100
- browser_obj = #{self}.open(
100
+ # Open a session or connection and return a handle.
101
+ #{self}.open(
101
102
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
102
103
  proxy: 'optional - scheme://proxy_host:port || tor'
103
104
  )
104
105
 
105
- browser_obj = #{self}.login(
106
+ # Run login and return its result
107
+ #{self}.login(
106
108
  browser_obj: 'required - browser_obj returned from #open method',
107
- username: 'required - username',
108
- password: 'optional - passwd (will prompt if blank),
109
+ username: 'required - username value consumed by #login',
110
+ password: 'optional - passwd (will prompt if blank)'
109
111
  )
110
112
 
111
- browser_obj = #{self}.logout(
113
+ # Run logout and return its result
114
+ #{self}.logout(
112
115
  browser_obj: 'required - browser_obj returned from #open method'
113
116
  )
114
117
 
118
+ # Close a session previously returned by #open.
115
119
  #{self}.close(
116
120
  browser_obj: 'required - browser_obj returned from #open method'
117
121
  )
118
122
 
123
+ # Print the AUTHOR(S) string for this module.
119
124
  #{self}.authors
120
125
  "
126
+ constants.sort
121
127
  end
122
128
  end
123
129
  end
@@ -145,29 +145,35 @@ module PWN
145
145
 
146
146
  public_class_method def self.help
147
147
  puts "USAGE:
148
- browser_obj = #{self}.open(
148
+ # Open a session or connection and return a handle.
149
+ #{self}.open(
149
150
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
150
151
  proxy: 'optional - scheme://proxy_host:port || tor'
151
152
  )
152
153
 
153
- browser_obj = #{self}.login(
154
+ # Run login and return its result
155
+ #{self}.login(
154
156
  browser_obj: 'required - browser_obj returned from #open method',
155
- username: 'required - username',
156
- password: 'optional - passwd (will prompt if blank),
157
+ username: 'required - username value consumed by #login',
158
+ password: 'optional - passwd (will prompt if blank)',
157
159
  mfa: 'optional - MFA / TOTP token string, or true to prompt (defaults to false)',
158
160
  mfa_token: 'optional - MFA / TOTP token used to reach a post-authenticated state'
159
161
  )
160
162
 
161
- browser_obj = #{self}.logout(
163
+ # Run logout and return its result
164
+ #{self}.logout(
162
165
  browser_obj: 'required - browser_obj returned from #open method'
163
166
  )
164
167
 
168
+ # Close a session previously returned by #open.
165
169
  #{self}.close(
166
170
  browser_obj: 'required - browser_obj returned from #open method'
167
171
  )
168
172
 
173
+ # Print the AUTHOR(S) string for this module.
169
174
  #{self}.authors
170
175
  "
176
+ constants.sort
171
177
  end
172
178
  end
173
179
  end
@@ -87,27 +87,33 @@ module PWN
87
87
 
88
88
  public_class_method def self.help
89
89
  puts "USAGE:
90
- browser_obj = #{self}.open(
91
- browser_type: 'optional :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
90
+ # Open a Watir browser on google.com and return browser_obj.
91
+ #{self}.open(
92
+ browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
92
93
  proxy: 'optional - scheme://proxy_host:port || tor'
93
94
  )
94
95
 
95
- browser_obj = #{self}.search(
96
+ # Type a query into Google Search and return browser_obj.
97
+ #{self}.search(
96
98
  browser_obj: 'required - browser_obj returned from #open method',
97
99
  q: 'required - search string'
98
100
  )
99
101
 
100
- browser_obj = #{self}.search_linkedin_for_employees_by_company(
102
+ # Search Google for LinkedIn employee profiles at a given company.
103
+ #{self}.search_linkedin_for_employees_by_company(
101
104
  browser_obj: 'required - browser_obj returned from #open method',
102
105
  company: 'required - company string'
103
106
  )
104
107
 
105
- browser_obj = #{self}.close(
108
+ # Close the browser_obj returned by #open.
109
+ #{self}.close(
106
110
  browser_obj: 'required - browser_obj returned from #open method'
107
111
  )
108
112
 
113
+ # Print the AUTHOR(S) string for this module.
109
114
  #{self}.authors
110
115
  "
116
+ constants.sort
111
117
  end
112
118
  end
113
119
  end
@@ -590,50 +590,61 @@ module PWN
590
590
 
591
591
  public_class_method def self.help
592
592
  puts "USAGE:
593
- browser_obj = #{self}.open(
593
+ # Open a session or connection and return a handle.
594
+ #{self}.open(
594
595
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
595
596
  proxy: 'optional - scheme://proxy_host:port || tor'
596
597
  )
597
598
 
598
- programs_arr = #{self}.get_bounty_programs(
599
+ # Run get bounty programs and return its result
600
+ #{self}.get_bounty_programs(
599
601
  min_payouts_enabled: 'optional - only display programs where payouts are > $0.00 (defaults to false)',
600
602
  suppress_progress: 'optional - suppress output (defaults to false)',
601
603
  proxy: 'optional - scheme://proxy_host:port || tor'
602
604
  )
603
605
 
604
- scope_details = #{self}.get_scope_details(
606
+ # Run get scope details and return its result
607
+ #{self}.get_scope_details(
605
608
  program_name: 'required - program name from #get_bounty_programs method',
606
609
  proxy: 'optional - scheme://proxy_host:port || tor'
607
610
  )
608
611
 
609
- hacktivity = #{self}.get_hacktivity(
612
+ # Run get hacktivity and return its result
613
+ #{self}.get_hacktivity(
610
614
  program_name: 'required - program name from #get_bounty_programs method',
611
615
  proxy: 'optional - scheme://proxy_host:port || tor'
612
616
  )
613
617
 
618
+ # Run save burp target config file and return its result
614
619
  #{self}.save_burp_target_config_file(
615
620
  programs_arr: 'required - array of hashes returned from #get_bounty_programs method',
616
621
  browser_opts: 'optional - opts supported by PWN::Plugins::TransparentBrowser.open method',
617
622
  name: 'optional - name of burp target config file (defaults to ALL)',
618
- root_dir: 'optional - directory to save burp target config files (defaults to \"./\"))'
623
+ root_dir: 'optional - directory to save burp target config files (defaults to ./))',
624
+ browser_type: 'optional - :firefox, :chrome, :ie, or :headless (defaults to :firefox)'
619
625
  )
620
626
 
621
- browser_obj = #{self}.login(
627
+ # Run login and return its result
628
+ #{self}.login(
622
629
  browser_obj: 'required - browser_obj returned from #open method',
623
- username: 'required - username',
624
- password: 'optional - passwd (will prompt if blank),
630
+ username: 'required - username value consumed by #login',
631
+ password: 'optional - passwd (will prompt if blank)'
625
632
  )
626
633
 
627
- browser_obj = #{self}.logout(
634
+ # Run logout and return its result
635
+ #{self}.logout(
628
636
  browser_obj: 'required - browser_obj returned from #open method'
629
637
  )
630
638
 
639
+ # Close a session previously returned by #open.
631
640
  #{self}.close(
632
641
  browser_obj: 'required - browser_obj returned from #open method'
633
642
  )
634
643
 
644
+ # Print the AUTHOR(S) string for this module.
635
645
  #{self}.authors
636
646
  "
647
+ constants.sort
637
648
  end
638
649
  end
639
650
  end
@@ -97,27 +97,33 @@ module PWN
97
97
 
98
98
  public_class_method def self.help
99
99
  puts "USAGE:
100
- browser_obj = #{self}.open(
100
+ # Open a session or connection and return a handle.
101
+ #{self}.open(
101
102
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
102
103
  proxy: 'optional - scheme://proxy_host:port || tor'
103
104
  )
104
105
 
105
- browser_obj = #{self}.login(
106
+ # Run login and return its result
107
+ #{self}.login(
106
108
  browser_obj: 'required - browser_obj returned from #open method',
107
- username: 'required - username',
108
- password: 'optional - passwd (will prompt if blank),
109
+ username: 'required - username value consumed by #login',
110
+ password: 'optional - passwd (will prompt if blank)'
109
111
  )
110
112
 
111
- browser_obj = #{self}.logout(
113
+ # Run logout and return its result
114
+ #{self}.logout(
112
115
  browser_obj: 'required - browser_obj returned from #open method'
113
116
  )
114
117
 
118
+ # Close a session previously returned by #open.
115
119
  #{self}.close(
116
120
  browser_obj: 'required - browser_obj returned from #open method'
117
121
  )
118
122
 
123
+ # Print the AUTHOR(S) string for this module.
119
124
  #{self}.authors
120
125
  "
126
+ constants.sort
121
127
  end
122
128
  end
123
129
  end