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
@@ -72,20 +72,23 @@ module PWN
72
72
 
73
73
  public_class_method def self.help
74
74
  puts "USAGE:
75
- waf_regional_obj = #{self}.connect(
75
+ # Run connect and return its result
76
+ #{self}.connect(
76
77
  region: 'required - region name to connect (eu-west-1, ap-southeast-1, ap-southeast-2, eu-central-1, ap-northeast-2, ap-northeast-1, us-east-1, sa-east-1, us-west-1, us-west-2)',
77
78
  access_key_id: 'required - Use AWS STS for best privacy (i.e. temporary access key id)',
78
79
  secret_access_key: 'required - Use AWS STS for best privacy (i.e. temporary secret access key',
79
80
  sts_session_token: 'optional - Temporary token returned by STS client for best privacy'
80
81
  )
81
- puts waf_regional_obj.public_methods
82
82
 
83
+ # Run disconnect and return its result
83
84
  #{self}.disconnect(
84
85
  waf_regional_obj: 'required - waf_regional_obj returned from #connect method'
85
86
  )
86
87
 
88
+ # Print the AUTHOR(S) string for this module.
87
89
  #{self}.authors
88
90
  "
91
+ constants.sort
89
92
  end
90
93
  end
91
94
  end
@@ -72,20 +72,23 @@ module PWN
72
72
 
73
73
  public_class_method def self.help
74
74
  puts "USAGE:
75
- workspaces_obj = #{self}.connect(
75
+ # Run connect and return its result
76
+ #{self}.connect(
76
77
  region: 'required - region name to connect (eu-west-1, ap-southeast-1, ap-southeast-2, eu-central-1, ap-northeast-2, ap-northeast-1, us-east-1, sa-east-1, us-west-1, us-west-2)',
77
78
  access_key_id: 'required - Use AWS STS for best privacy (i.e. temporary access key id)',
78
79
  secret_access_key: 'required - Use AWS STS for best privacy (i.e. temporary secret access key',
79
80
  sts_session_token: 'optional - Temporary token returned by STS client for best privacy'
80
81
  )
81
- puts workspaces_obj.public_methods
82
82
 
83
+ # Run disconnect and return its result
83
84
  #{self}.disconnect(
84
85
  workspaces_obj: 'required - workspaces_obj returned from #connect method'
85
86
  )
86
87
 
88
+ # Print the AUTHOR(S) string for this module.
87
89
  #{self}.authors
88
90
  "
91
+ constants.sort
89
92
  end
90
93
  end
91
94
  end
data/lib/pwn/aws/x_ray.rb CHANGED
@@ -72,20 +72,23 @@ module PWN
72
72
 
73
73
  public_class_method def self.help
74
74
  puts "USAGE:
75
- x_ray_obj = #{self}.connect(
75
+ # Run connect and return its result
76
+ #{self}.connect(
76
77
  region: 'required - region name to connect (eu-west-1, ap-southeast-1, ap-southeast-2, eu-central-1, ap-northeast-2, ap-northeast-1, us-east-1, sa-east-1, us-west-1, us-west-2)',
77
78
  access_key_id: 'required - Use AWS STS for best privacy (i.e. temporary access key id)',
78
79
  secret_access_key: 'required - Use AWS STS for best privacy (i.e. temporary secret access key',
79
80
  sts_session_token: 'optional - Temporary token returned by STS client for best privacy'
80
81
  )
81
- puts x_ray_obj.public_methods
82
82
 
83
+ # Run disconnect and return its result
83
84
  #{self}.disconnect(
84
85
  x_ray_obj: 'required - x_ray_obj returned from #connect method'
85
86
  )
86
87
 
88
+ # Print the AUTHOR(S) string for this module.
87
89
  #{self}.authors
88
90
  "
91
+ constants.sort
89
92
  end
90
93
  end
91
94
  end
data/lib/pwn/aws.rb CHANGED
@@ -105,6 +105,10 @@ module PWN
105
105
  end
106
106
 
107
107
  public_class_method def self.help
108
+ puts "USAGE:
109
+ # Display a List of Every PWN::AWS Module
110
+ #{self}.authors
111
+ "
108
112
  constants.sort
109
113
  end
110
114
  end
@@ -40,10 +40,13 @@ module PWN
40
40
 
41
41
  public_class_method def self.help
42
42
  puts "USAGE:
43
+ # Run get and return its result
43
44
  #{self}.get
44
45
 
46
+ # Print the AUTHOR(S) string for this module.
45
47
  #{self}.authors
46
48
  "
49
+ constants.sort
47
50
  end
48
51
  end
49
52
  end
@@ -32,10 +32,13 @@ module PWN
32
32
 
33
33
  public_class_method def self.help
34
34
  puts "USAGE:
35
+ # Run get and return its result
35
36
  #{self}.get
36
37
 
38
+ # Print the AUTHOR(S) string for this module.
37
39
  #{self}.authors
38
40
  "
41
+ constants.sort
39
42
  end
40
43
  end
41
44
  end
@@ -48,10 +48,13 @@ module PWN
48
48
 
49
49
  public_class_method def self.help
50
50
  puts "USAGE:
51
+ # Run get and return its result
51
52
  #{self}.get
52
53
 
54
+ # Print the AUTHOR(S) string for this module.
53
55
  #{self}.authors
54
56
  "
57
+ constants.sort
55
58
  end
56
59
  end
57
60
  end
@@ -1025,10 +1025,13 @@ module PWN
1025
1025
 
1026
1026
  public_class_method def self.help
1027
1027
  puts "USAGE:
1028
+ # Run get and return its result
1028
1029
  #{self}.get
1029
1030
 
1031
+ # Print the AUTHOR(S) string for this module.
1030
1032
  #{self}.authors
1031
1033
  "
1034
+ constants.sort
1032
1035
  end
1033
1036
  end
1034
1037
  end
@@ -42,10 +42,13 @@ module PWN
42
42
 
43
43
  public_class_method def self.help
44
44
  puts "USAGE:
45
+ # Run get and return its result
45
46
  #{self}.get
46
47
 
48
+ # Print the AUTHOR(S) string for this module.
47
49
  #{self}.authors
48
50
  "
51
+ constants.sort
49
52
  end
50
53
  end
51
54
  end
@@ -50,10 +50,13 @@ module PWN
50
50
 
51
51
  public_class_method def self.help
52
52
  puts "USAGE:
53
+ # Run get and return its result
53
54
  #{self}.get
54
55
 
56
+ # Print the AUTHOR(S) string for this module.
55
57
  #{self}.authors
56
58
  "
59
+ constants.sort
57
60
  end
58
61
  end
59
62
  end
@@ -29,10 +29,13 @@ module PWN
29
29
 
30
30
  public_class_method def self.help
31
31
  puts "USAGE:
32
+ # Run get and return its result
32
33
  #{self}.get
33
34
 
35
+ # Print the AUTHOR(S) string for this module.
34
36
  #{self}.authors
35
37
  "
38
+ constants.sort
36
39
  end
37
40
  end
38
41
  end
@@ -34,10 +34,13 @@ module PWN
34
34
 
35
35
  public_class_method def self.help
36
36
  puts "USAGE:
37
+ # Run get and return its result
37
38
  #{self}.get
38
39
 
40
+ # Print the AUTHOR(S) string for this module.
39
41
  #{self}.authors
40
42
  "
43
+ constants.sort
41
44
  end
42
45
  end
43
46
  end
@@ -194,12 +194,16 @@ module PWN
194
194
 
195
195
  public_class_method def self.help
196
196
  puts "USAGE:
197
+ # Run get and return its result
197
198
  #{self}.get
198
199
 
199
- #{self}.has_you
200
+ # Run you and return its result
201
+ #{self}.you?
200
202
 
203
+ # Print the AUTHOR(S) string for this module.
201
204
  #{self}.authors
202
205
  "
206
+ constants.sort
203
207
  end
204
208
  end
205
209
  end
@@ -45,10 +45,13 @@ module PWN
45
45
 
46
46
  public_class_method def self.help
47
47
  puts "USAGE:
48
+ # Run get and return its result
48
49
  #{self}.get
49
50
 
51
+ # Print the AUTHOR(S) string for this module.
50
52
  #{self}.authors
51
53
  "
54
+ constants.sort
52
55
  end
53
56
  end
54
57
  end
@@ -63,10 +63,13 @@ module PWN
63
63
 
64
64
  public_class_method def self.help
65
65
  puts "USAGE:
66
+ # Run get and return its result
66
67
  #{self}.get
67
68
 
69
+ # Print the AUTHOR(S) string for this module.
68
70
  #{self}.authors
69
71
  "
72
+ constants.sort
70
73
  end
71
74
  end
72
75
  end
@@ -52,10 +52,13 @@ module PWN
52
52
 
53
53
  public_class_method def self.help
54
54
  puts "USAGE:
55
+ # Run get and return its result
55
56
  #{self}.get
56
57
 
58
+ # Print the AUTHOR(S) string for this module.
57
59
  #{self}.authors
58
60
  "
61
+ constants.sort
59
62
  end
60
63
  end
61
64
  end
@@ -31,10 +31,13 @@ module PWN
31
31
 
32
32
  public_class_method def self.help
33
33
  puts "USAGE:
34
+ # Run get and return its result
34
35
  #{self}.get
35
36
 
37
+ # Print the AUTHOR(S) string for this module.
36
38
  #{self}.authors
37
39
  "
40
+ constants.sort
38
41
  end
39
42
  end
40
43
  end
@@ -106,10 +106,13 @@ module PWN
106
106
 
107
107
  public_class_method def self.help
108
108
  puts "USAGE:
109
+ # Run get and return its result
109
110
  #{self}.get
110
111
 
112
+ # Print the AUTHOR(S) string for this module.
111
113
  #{self}.authors
112
114
  "
115
+ constants.sort
113
116
  end
114
117
  end
115
118
  end
@@ -45,10 +45,13 @@ module PWN
45
45
 
46
46
  public_class_method def self.help
47
47
  puts "USAGE:
48
+ # Run get and return its result
48
49
  #{self}.get
49
50
 
51
+ # Print the AUTHOR(S) string for this module.
50
52
  #{self}.authors
51
53
  "
54
+ constants.sort
52
55
  end
53
56
  end
54
57
  end
data/lib/pwn/banner.rb CHANGED
@@ -95,14 +95,18 @@ module PWN
95
95
 
96
96
  public_class_method def self.help
97
97
  puts "USAGE:
98
- banner = #{self}.get(
98
+ # Run get and return its result
99
+ #{self}.get(
99
100
  index: 'optional - defaults to random banner index'
100
101
  )
101
102
 
102
- banner = #{self}.welcome
103
+ # Run welcome and return its result
104
+ #{self}.welcome
103
105
 
106
+ # Print the AUTHOR(S) string for this module.
104
107
  #{self}.authors
105
108
  "
109
+ constants.sort
106
110
  end
107
111
  end
108
112
  end
@@ -261,19 +261,24 @@ module PWN
261
261
 
262
262
  public_class_method def self.help
263
263
  puts "USAGE:
264
- latest_block = #{self}.get_latest_block
264
+ # Run get latest block and return its result
265
+ #{self}.get_latest_block
265
266
 
266
- block_details = #{self}.get_block_details(
267
+ # Run get block details and return its result
268
+ #{self}.get_block_details(
267
269
  height: 'required - block height as an integer (0 for genesis block / Defaults to latest block)'
268
270
  )
269
271
 
270
- transactions = #{self}.get_transactions(
272
+ # Run get transactions and return its result
273
+ #{self}.get_transactions(
271
274
  from: 'required - start date in YYYY-MM-DD format',
272
275
  to: 'required - end date in YYYY-MM-DD format'
273
276
  )
274
277
 
278
+ # Print the AUTHOR(S) string for this module.
275
279
  #{self}.authors
276
280
  "
281
+ constants.sort
277
282
  end
278
283
  end
279
284
  end
@@ -142,14 +142,21 @@ module PWN
142
142
 
143
143
  public_class_method def self.help
144
144
  puts "USAGE:
145
- latest_block = #{self}.get_latest_block
145
+ # Run get latest block and return its result
146
+ #{self}.get_latest_block(
147
+ token: 'optional - API token for higher rate limits'
148
+ )
146
149
 
147
- block_details = #{self}.get_block_details(
148
- height: 'required - block height number'
150
+ # Run get block details and return its result
151
+ #{self}.get_block_details(
152
+ height: 'required - block height number',
153
+ token: 'optional - API token for higher rate limits'
149
154
  )
150
155
 
156
+ # Print the AUTHOR(S) string for this module.
151
157
  #{self}.authors
152
158
  "
159
+ constants.sort
153
160
  end
154
161
  end
155
162
  end
@@ -17,6 +17,10 @@ module PWN
17
17
  end
18
18
 
19
19
  public_class_method def self.help
20
+ puts "USAGE:
21
+ # Display a List of Every PWN::Blockchain Module
22
+ #{self}.authors
23
+ "
20
24
  constants.sort
21
25
  end
22
26
  end
@@ -248,33 +248,52 @@ module PWN
248
248
  # Display Usage Information
249
249
 
250
250
  public_class_method def self.help
251
- <<~HELP
252
- Usage:
253
- plan = PWN::Bounty::LifecycleAuthzReplay.load_plan(
254
- yaml_path: '/path/to/lifecycle_authz_replay.yaml'
255
- )
256
-
257
- run_obj = PWN::Bounty::LifecycleAuthzReplay.start_run(
258
- plan: plan,
259
- output_dir: '/tmp/evidence-bundles'
260
- )
261
-
262
- PWN::Bounty::LifecycleAuthzReplay.record_observation(
263
- run_obj: run_obj,
264
- checkpoint: 'post_change_t0',
265
- actor: 'revoked_user',
266
- surface: 'repo_settings_page',
267
- status: :accessible,
268
- request: { method: 'GET', path: '/org/repo/settings' },
269
- response: { http_status: 200 },
270
- notes: 'Still reachable after remove action',
271
- artifact_paths: ['/tmp/screenshot.png']
272
- )
273
-
274
- summary = PWN::Bounty::LifecycleAuthzReplay.finalize_run(
275
- run_obj: run_obj
276
- )
277
- HELP
251
+ puts "USAGE:
252
+ # Run load plan and return its result
253
+ #{self}.load_plan(
254
+ yaml_path: 'required - /path/to/lifecycle_authz_replay.yaml'
255
+ )
256
+
257
+ # Run start run and return its result
258
+ #{self}.start_run(
259
+ yaml_path: 'optional - /path/to/lifecycle_authz_replay.yaml',
260
+ output_dir: 'required - /tmp/evidence_bundle',
261
+ plan: 'required - normalized_plan_hash',
262
+ run_id: 'required - run id value consumed by #start_run'
263
+ )
264
+
265
+ # Run record observation and return its result
266
+ #{self}.record_observation(
267
+ run_obj: 'required - run obj value consumed by #record_observation',
268
+ checkpoint: 'required - checkpoint value consumed by #record_observation',
269
+ actor: 'required - actor value consumed by #record_observation',
270
+ surface: 'required - repo_settings_page',
271
+ status: 'required - status value consumed by #record_observation',
272
+ request: 'optional - { method: GET, path: /org/repo/settings }',
273
+ response: 'optional - { http_status: 200 }',
274
+ notes: 'optional - Still reachable after collaborator removal',
275
+ artifact_paths: 'optional - Array [/tmp/screen.png]'
276
+ )
277
+
278
+ # Run finalize run and return its result
279
+ #{self}.finalize_run(
280
+ run_obj: 'required - run obj value consumed by #finalize_run'
281
+ )
282
+
283
+ # Run normalize plan and return its result
284
+ #{self}.normalize_plan(
285
+ plan: 'optional - plan value consumed by #normalize_plan',
286
+ campaign: 'required - { id: acme-revoke }',
287
+ actors: 'optional - [owner, revoked_user]',
288
+ surfaces: 'optional - surfaces value consumed by #normalize_plan',
289
+ checkpoints: 'required - [pre_change, post_change_t0]',
290
+ plan_id_hint: 'required - plan id hint value consumed by #normalize_plan'
291
+ )
292
+
293
+ # Print the AUTHOR(S) string for this module.
294
+ #{self}.authors
295
+ "
296
+ constants.sort
278
297
  end
279
298
 
280
299
  private_class_method def self.find_stale_access_findings(opts = {})
data/lib/pwn/bounty.rb CHANGED
@@ -16,6 +16,10 @@ module PWN
16
16
  end
17
17
 
18
18
  public_class_method def self.help
19
+ puts "USAGE:
20
+ # Display a List of Every PWN::Bounty Module
21
+ #{self}.authors
22
+ "
19
23
  constants.sort
20
24
  end
21
25
  end
data/lib/pwn/config.rb CHANGED
@@ -1050,39 +1050,105 @@ module PWN
1050
1050
 
1051
1051
  public_class_method def self.help
1052
1052
  puts "USAGE:
1053
+ # Run env template and return its result
1054
+ #{self}.env_template
1055
+
1056
+ # Run default env and return its result
1053
1057
  #{self}.default_env(
1054
1058
  pwn_env_path: 'optional - Path to pwn.yaml file. Defaults to ~/.pwn/pwn.yaml'
1055
1059
  )
1056
1060
 
1061
+ # Run redact sensitive artifacts and return its result
1057
1062
  #{self}.redact_sensitive_artifacts(
1058
1063
  config: 'optional - Hash to redact sensitive artifacts from. Defaults to PWN::Env'
1059
1064
  )
1060
1065
 
1061
- #{self}.pwn_skills_path
1066
+ # Run init driver options and return its result
1067
+ #{self}.init_driver_options
1068
+
1069
+ # Run refresh env and return its result
1070
+ #{self}.refresh_env(
1071
+ pwn_env_path: 'required - pwn env path value consumed by #refresh_env',
1072
+ pwn_dec_path: 'required - pwn dec path value consumed by #refresh_env',
1073
+ key: 'optional - key value consumed by #refresh_env',
1074
+ iv: 'optional - iv value consumed by #refresh_env'
1075
+ )
1062
1076
 
1063
- #{self}.sanitize_skill_name(name: '...')
1077
+ # Run pwn skills path and return its result
1078
+ #{self}.pwn_skills_path(
1079
+ pwn_env_path: 'optional - Path to pwn.yaml file. Defaults to ~/.pwn/pwn.yaml'
1080
+ )
1064
1081
 
1082
+ # Run sanitize skill name and return its result
1083
+ #{self}.sanitize_skill_name(
1084
+ name: 'required - binary or identifier name'
1085
+ )
1086
+
1087
+ # Run parse skill frontmatter and return its result
1088
+ #{self}.parse_skill_frontmatter(
1089
+ content: 'optional - content value consumed by #parse_skill_frontmatter'
1090
+ )
1091
+
1092
+ # Run parse skill references and return its result
1093
+ #{self}.parse_skill_references(
1094
+ content: 'optional - content value consumed by #parse_skill_references'
1095
+ )
1096
+
1097
+ # Run write skill and return its result
1065
1098
  #{self}.write_skill(
1066
- name: 'required', content: 'required',
1067
- description: 'optional', references: 'optional Array',
1068
- license: 'optional', metadata: 'optional Hash',
1069
- allowed_tools: 'optional Array', pwn_skills_path: 'optional'
1099
+ name: 'required - free-form; sanitised to [a-z0-9-]',
1100
+ content: 'required - markdown body (WITHOUT frontmatter)',
1101
+ description: 'optional - 1..1024 chars; derived from body when omitted',
1102
+ references: 'optional - Array of URLs / CWE / CVE / ATT&CK / NIST ids',
1103
+ license: 'optional - SPDX id or free text',
1104
+ metadata: 'optional - Hash of arbitrary metadata',
1105
+ allowed_tools: 'optional - Array of toolset names',
1106
+ pwn_skills_path: 'optional - override skills root (defaults to pwn_skills_path)'
1070
1107
  )
1071
1108
 
1072
- #{self}.load_skills(pwn_skills_path: 'optional')
1109
+ # Run migrate legacy skills and return its result
1110
+ #{self}.migrate_legacy_skills(
1111
+ pwn_skills_path: 'optional - override skills root (defaults to pwn_skills_path)',
1112
+ delete_legacy: 'optional - remove flat file after migration (default true)'
1113
+ )
1073
1114
 
1074
- #{self}.migrate_legacy_skills(pwn_skills_path: 'optional', delete_legacy: true)
1115
+ # Run default skill names and return its result
1116
+ #{self}.default_skill_names(
1117
+ source: 'optional - source value consumed by #default_skill_names',
1118
+ root: 'optional - root value consumed by #default_skill_names'
1119
+ )
1075
1120
 
1076
- #{self}.install_default_skills(pwn_skills_path: 'optional')
1077
- #{self}.default_skill_names
1121
+ # Run default skills dir and return its result
1122
+ #{self}.default_skills_dir
1078
1123
 
1079
- #{self}.refresh_env(
1080
- pwn_env_path: 'optional - Path to pwn.yaml file. Defaults to ~/.pwn/pwn.yaml',
1081
- pwn_dec_path: 'optional - Path to pwn.yaml.decryptor file. Defaults to ~/.pwn/pwn.yaml.decryptor'
1124
+ # Seed bundled skills into ~/.pwn/skills (or pwn_skills_path:)
1125
+ #{self}.install_default_skills(
1126
+ pwn_skills_path: 'optional - pwn skills path value consumed by #install_default_skills',
1127
+ source: 'optional - source value consumed by #install_default_skills'
1128
+ )
1129
+
1130
+ # Run load skills and return its result
1131
+ #{self}.load_skills(
1132
+ pwn_skills_path: 'optional - Path to skills folder. Defaults to ~/.pwn/skills',
1133
+ references: 'optional - frontmatter:, loaded:?, error:? }'
1082
1134
  )
1083
1135
 
1136
+ # Run pwn memory path and return its result
1137
+ #{self}.pwn_memory_path
1138
+
1139
+ # Run load memory and return its result
1140
+ #{self}.load_memory
1141
+
1142
+ # Run pwn sessions path and return its result
1143
+ #{self}.pwn_sessions_path
1144
+
1145
+ # Run pwn cron path and return its result
1146
+ #{self}.pwn_cron_path
1147
+
1148
+ # Print the AUTHOR(S) string for this module.
1084
1149
  #{self}.authors
1085
1150
  "
1151
+ constants.sort
1086
1152
  end
1087
1153
  end
1088
1154
  end