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
@@ -743,55 +743,87 @@ module PWN
743
743
 
744
744
  public_class_method def self.help
745
745
  puts "USAGE:
746
- nessus_obj = #{self}.login(
746
+ # Run login and return its result
747
+ #{self}.login(
747
748
  access_key: 'required - API access key (will prompt if blank)',
748
749
  secret_key: 'required - API secret key (will prompt if blank)'
749
750
  )
750
751
 
752
+ # Run get canned scan templates and return its result
751
753
  #{self}.get_canned_scan_templates(
752
754
  nessus_obj: 'required - nessus_obj returned from #login method',
753
755
  name: 'optional - name of scan template'
754
756
  )
755
757
 
758
+ # Run get policies and return its result
756
759
  #{self}.get_policies(
757
760
  nessus_obj: 'required - nessus_obj returned from #login method',
758
761
  name: 'optional - name of policy (i.e. user-defined template)'
759
762
  )
760
763
 
764
+ # Run get folders and return its result
761
765
  #{self}.get_folders(
762
766
  nessus_obj: 'required - nessus_obj returned from #login method',
763
767
  name: 'optional - name of folder'
764
768
  )
765
769
 
770
+ # Run get scanners and return its result
766
771
  #{self}.get_scanners(
767
772
  nessus_obj: 'required - nessus_obj returned from #login method',
768
773
  name: 'optional - name of scanner'
769
774
  )
770
775
 
776
+ # Run get target networks and return its result
771
777
  #{self}.get_target_networks(
772
778
  nessus_obj: 'required - nessus_obj returned from #login method',
773
779
  name: 'optional - name of target network'
774
780
  )
775
781
 
782
+ # Run get timezones and return its result
776
783
  #{self}.get_timezones(
777
784
  nessus_obj: 'required - nessus_obj returned from #login method',
778
785
  name: 'optional - name of timezone'
779
786
  )
780
787
 
788
+ # Run get target groups and return its result
781
789
  #{self}.get_target_groups(
782
790
  nessus_obj: 'required - nessus_obj returned from #login method',
783
791
  name: 'optional - name of target group'
784
792
  )
785
793
 
794
+ # Run get tag values and return its result
786
795
  #{self}.get_tag_values(
787
796
  nessus_obj: 'required - nessus_obj returned from #login method',
788
797
  name: 'optional - name of tag value'
789
798
  )
790
799
 
800
+ # Run get assets and return its result
801
+ #{self}.get_assets(
802
+ nessus_obj: 'required - nessus_obj returned from #login method',
803
+ name: 'optional - name of asset'
804
+ )
805
+
806
+ # Run add tag to assets and return its result
807
+ #{self}.add_tag_to_assets(
808
+ nessus_obj: 'required - nessus_obj returned from #login method',
809
+ targets: 'required - comma-delimited list of targets to tag',
810
+ tag_uuids: 'required - array of tag UUIDS to tag against targets'
811
+ )
812
+
813
+ # Run get credential types and return its result
814
+ #{self}.get_credential_types(
815
+ nessus_obj: 'required - nessus_obj returned from #login method',
816
+ category: 'optional - category of credential type (Defaults to Host)',
817
+ name: 'optional - name of credential type (Defaults to SSH)'
818
+ )
819
+
820
+ # Run get scans and return its result
791
821
  #{self}.get_scans(
792
- nessus_obj: 'required - nessus_obj returned from #login method'
822
+ nessus_obj: 'required - nessus_obj returned from #login method',
823
+ name: 'optional - binary or identifier name'
793
824
  )
794
825
 
826
+ # Run create scan and return its result
795
827
  #{self}.create_scan(
796
828
  nessus_obj: 'required - nessus_obj returned from #login method',
797
829
  scan_template_uuid: 'required - the UUID for the Tenable-provided scan template to use. Run #get_canned_scan_templates for a list of UUIDs',
@@ -800,6 +832,7 @@ module PWN
800
832
  plugins: 'optional - plugins object as defined by https://developer.tenable.com/reference/scans-create (Defaults to {})'
801
833
  )
802
834
 
835
+ # Run update scan and return its result
803
836
  #{self}.update_scan(
804
837
  nessus_obj: 'required - nessus_obj returned from #login method',
805
838
  scan_id: 'required - the scan id to update. Run #get_scans for a list',
@@ -809,16 +842,19 @@ module PWN
809
842
  plugins: 'optional - plugins object as defined by https://developer.tenable.com/reference/scans-create (Defaults to {})'
810
843
  )
811
844
 
845
+ # Run launch scan and return its result
812
846
  #{self}.launch_scan(
813
847
  nessus_obj: 'required - nessus_obj returned from #login method',
814
848
  scan_id: 'required - scan uuid to launch'
815
849
  )
816
850
 
851
+ # Run get scan status and return its result
817
852
  #{self}.get_scan_status(
818
853
  nessus_obj: 'required - nessus_obj returned from #login method',
819
854
  scan_id: 'required - scan uuid to retrieve status'
820
855
  )
821
856
 
857
+ # Run create tag and return its result
822
858
  #{self}.create_tag(
823
859
  nessus_obj: 'required - nessus_obj returned from #login method',
824
860
  category: 'required - category name to create or use',
@@ -826,21 +862,25 @@ module PWN
826
862
  desc: 'optional - tag value description'
827
863
  )
828
864
 
865
+ # Run get scan history and return its result
829
866
  #{self}.get_scan_history(
830
- nessus_obj: 'required - nessus_obj returned from #login method'
867
+ nessus_obj: 'required - nessus_obj returned from #login method',
831
868
  scan_id: 'required - scan uuid to launch'
832
869
  )
833
870
 
871
+ # Run export scan results and return its result
834
872
  #{self}.export_scan_results(
835
873
  nessus_obj: 'required - nessus_obj returned from #login method',
836
874
  scan_id: 'required - scan uuid to export',
837
875
  path_to_export: 'required - filename to export results',
838
876
  history_id: 'optional - defaults to last scan',
839
- format: 'optional - :csv|:db|:html|:nessus|:pdf (defaults to :csv')
877
+ format: 'optional - :csv|:db|:html|:nessus|:pdf (defaults to :csv'
840
878
  )
841
879
 
880
+ # Print the AUTHOR(S) string for this module.
842
881
  #{self}.authors
843
882
  "
883
+ constants.sort
844
884
  end
845
885
  end
846
886
  end
@@ -310,46 +310,62 @@ module PWN
310
310
 
311
311
  public_class_method def self.help
312
312
  puts "USAGE:
313
- nsc_obj = #{self}.login(
314
- console_ip: 'required host/ip of Nexpose Console (server)',
315
- username: 'required username',
316
- password: 'optional password (will prompt if nil)'
313
+ # Run login and return its result
314
+ #{self}.login(
315
+ console_ip: 'required - required host/ip of Nexpose Console (server)',
316
+ username: 'required - required username',
317
+ password: 'optional - optional password (will prompt if nil)'
317
318
  )
318
- puts nsc_obj.public_methods
319
319
 
320
- all_individual_site_assets_arr = #{self}.list_all_individual_site_assets(
321
- nsc_obj: 'required nsc_obj returned from login method',
322
- site_name: 'required Nexpose site name to update (case-sensitive)'
320
+ # Run list all individual site assets and return its result
321
+ #{self}.list_all_individual_site_assets(
322
+ nsc_obj: 'required - required nsc_obj returned from login method',
323
+ site_name: 'required - required Nexpose site name to update (case-sensitive)'
323
324
  )
324
325
 
325
- nsc_obj = #{self}.update_site_assets(
326
- nsc_obj: 'required nsc_obj returned from login method',
327
- site_name: 'required Nexpose site name to update (case-sensitive),
328
- assets: 'required array of hashes containing called :ip => values being IP address (All IPs not included in the :assets parameter will be removed from Nexpose)'
326
+ # Run update site assets and return its result
327
+ #{self}.update_site_assets(
328
+ nsc_obj: 'required - required nsc_obj returned from login method',
329
+ site_name: 'required - required Nexpose site name to update (case-sensitive',
330
+ assets: 'required - required array of hashes containing called :ip => values being IP address (All IPs not included in the :assets parameter will be removed from Nexpose)'
329
331
  )
330
332
 
331
- nsc_obj = #{self}.delete_site_assets_older_than(
332
- nsc_obj: 'required nsc_obj returned from login method',
333
- site_name: 'required Nexpose site name to update (case-sensitive),
334
- days: 'required assets to remove older than number of days in this parameter'
333
+ # Run delete site assets older than and return its result
334
+ #{self}.delete_site_assets_older_than(
335
+ nsc_obj: 'required - required nsc_obj returned from login method',
336
+ site_name: 'required - required Nexpose site name to update (case-sensitive',
337
+ days: 'required - required assets to remove older than number of days in this parameter'
335
338
  )
336
339
 
337
- nsc_obj = #{self}.scan_site_by_name(
338
- nsc_obj: 'required nsc_obj returned from login method',
339
- site_name: 'required Nexpose site name to scan (case-sensitive),
340
- poll_interval: 'optional poll interval to check the completion status of the scan (defaults to 60 seconds)
340
+ # Run scan site by name and return its result
341
+ #{self}.scan_site_by_name(
342
+ nsc_obj: 'required - required nsc_obj returned from login method',
343
+ site_name: 'required - required Nexpose site name to scan (case-sensitive',
344
+ poll_interval: 'optional - optional poll interval to check the completion status of the scan (defaults to 3 minutes'
341
345
  )
342
346
 
347
+ # Run generate report via existing config and return its result
348
+ #{self}.generate_report_via_existing_config(
349
+ nsc_obj: 'required - required nsc_obj returned from login method',
350
+ config_id: 'optional - relevant r.config_id returned when invoking the block nsc_obj.reports.each {|r| puts \#{r.name} => \#{r.config_id}}'
351
+ )
352
+
353
+ # Run download recurring report and return its result
343
354
  #{self}.download_recurring_report(
344
- nsc_obj: 'required nsc_obj returned from login method',
345
- report_names: 'required array of report name/types to generate e.g. ['report.html', 'report.pdf', 'report.xml']',
346
- poll_interval: 'optional poll interval to check the completion status of report generation (defaults to 60 seconds)
355
+ nsc_obj: 'required - required nsc_obj returned from login method',
356
+ report_names: 'required - required array of report name/types to generate e.g. [report.html, report.pdf, report.xml]',
357
+ poll_interval: 'optional - optional poll interval to check the completion status of report generation (defaults to 60 seconds'
347
358
  )
348
359
 
349
- #{self}.logout(nsc_obj: 'required nsc_obj returned from login method')
360
+ # Run logout and return its result
361
+ #{self}.logout(
362
+ nsc_obj: 'required - required nsc_obj returned from login method'
363
+ )
350
364
 
365
+ # Print the AUTHOR(S) string for this module.
351
366
  #{self}.authors
352
367
  "
368
+ constants.sort
353
369
  end
354
370
  end
355
371
  end
@@ -127,52 +127,32 @@ module PWN
127
127
 
128
128
  public_class_method def self.help
129
129
  puts "USAGE:
130
- #{self}.port_scan do |nmap|
131
- puts nmap.public_methods
132
- nmap.connect_scan = true
133
- nmap.service_scan = true
134
- nmap.verbose = true
135
- nmap.ports = [1..1024,1337]
136
- nmap.targets = '127.0.0.1'
137
- nmap.xml = '/tmp/nmap_port_scan_res.xml'
138
- end
139
-
130
+ # nmap.connect_scan = true
140
131
  #{self}.port_scan(
141
- targets: '127.0.0.1',
142
- ports: '1-65535',
143
- connect_scan: true,
144
- service_scan: true,
145
- script: 'vuln,safe',
146
- xml: '/tmp/nmap_port_scan_res.xml'
132
+ targets: 'optional - hostname, IP, CIDR, or list of targets',
133
+ ports: 'optional - port, list, or range (e.g. 22,80,443 or 1-1024)',
134
+ connect_scan: 'optional - connect scan value consumed by #port_scan',
135
+ service_scan: 'optional - service scan value consumed by #port_scan',
136
+ script: 'optional - script value consumed by #port_scan',
137
+ xml: 'optional - /tmp/nmap_port_scan_res.xml'
147
138
  )
148
139
 
149
- #{self}.parse_xml_results(:xml_file => 'required - path to nmap xml results') do |xml|
150
- xml.each_host do |host|
151
- puts host.ip
152
-
153
- host.scripts.each do |name,output|
154
- output.each_line { |line| puts line }
155
- end
156
-
157
- host.each_port do |port|
158
- puts port
159
-
160
- port.scripts.each do |name,output|
161
- puts name
162
- output.each_line { |line| puts line }
163
- end
164
- end
165
- end
166
- end
140
+ # xml.each_host do |host|
141
+ #{self}.parse_xml_results(
142
+ xml_file: 'optional - xml file value consumed by #parse_xml_results'
143
+ )
167
144
 
145
+ # Run diff xml results and return its result
168
146
  #{self}.diff_xml_results(
169
147
  xml_a: 'required - path to nmap xml results',
170
148
  xml_b: 'required - path to nmap xml results',
171
149
  diff: 'required - path to nmap xml results diff'
172
150
  )
173
151
 
152
+ # Print the AUTHOR(S) string for this module.
174
153
  #{self}.authors
175
154
  "
155
+ constants.sort
176
156
  end
177
157
  end
178
158
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'open3'
5
+
6
+ module PWN
7
+ module Plugins
8
+ # nuclei wrapper: template/severity, JSONL findings.
9
+ module Nuclei
10
+ public_class_method def self.required_bins
11
+ %w[nuclei]
12
+ end
13
+
14
+ public_class_method def self.scan(opts = {})
15
+ PWN::Plugins::Doctor.require_bin!(name: 'nuclei')
16
+ target = opts[:target] || opts[:url]
17
+ raise 'ERROR: target is required' if target.to_s.empty?
18
+
19
+ cmd = ['nuclei', '-u', target.to_s, '-jsonl', '-silent']
20
+ cmd += ['-severity', opts[:severity].to_s] if opts[:severity]
21
+ cmd += ['-t', opts[:templates].to_s] if opts[:templates]
22
+ cmd += ['-rate-limit', opts[:rate_limit].to_s] if opts[:rate_limit]
23
+ stdout, stderr, status = Open3.capture3(*cmd)
24
+ findings = stdout.each_line.filter_map do |ln|
25
+ JSON.parse(ln)
26
+ rescue JSON::ParserError
27
+ nil
28
+ end
29
+ { findings: findings, stderr: stderr, exit: status.exitstatus }
30
+ end
31
+
32
+ public_class_method def self.authors
33
+ "AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
34
+ end
35
+
36
+ public_class_method def self.help
37
+ puts "USAGE:
38
+ # List host binaries this module expects to be installed.
39
+ #{self}.required_bins
40
+
41
+ # Run scan and return its result
42
+ #{self}.scan(
43
+ target: 'required - hostname, IP, or CIDR to scan (defaults to opts[:url])',
44
+ url: 'optional - HTTP(S) URL',
45
+ severity: 'optional - severity value consumed by #scan',
46
+ templates: 'optional - templates value consumed by #scan',
47
+ rate_limit: 'optional - rate limit value consumed by #scan'
48
+ )
49
+
50
+ # Print the AUTHOR(S) string for this module.
51
+ #{self}.authors
52
+ "
53
+ constants.sort
54
+ end
55
+ end
56
+ end
57
+ end
@@ -51,16 +51,22 @@ module PWN
51
51
  # Display Usage for this Module
52
52
 
53
53
  public_class_method def self.help
54
- puts %{USAGE:
55
- #{self}.decode(oauth2_token: 'required oauth2 token')"
54
+ puts "USAGE:
55
+ # Run decode and return its result
56
+ #{self}.decode(
57
+ oauth2_token: 'required - required oauth2 token'
58
+ )
56
59
 
60
+ # Run get value by key and return its result
57
61
  #{self}.get_value_by_key(
58
- oauth2_token: 'required oauth2 token',
59
- key: 'required oauth2 token key name located within the Base64 encoded token as symbol, e.g. :company_id'
62
+ oauth2_token: 'required - required oauth2 token',
63
+ key: 'required - required oauth2 token key name located within the Base64 encoded token as symbol, e.g. :company_id'
60
64
  )
61
65
 
66
+ # Print the AUTHOR(S) string for this module.
62
67
  #{self}.authors
63
- }
68
+ "
69
+ constants.sort
64
70
  end
65
71
  end
66
72
  end
@@ -31,12 +31,15 @@ module PWN
31
31
 
32
32
  public_class_method def self.help
33
33
  puts "USAGE:
34
+ # Run process and return its result
34
35
  #{self}.process(
35
36
  file: 'required - path to image file'
36
37
  )
37
38
 
39
+ # Print the AUTHOR(S) string for this module.
38
40
  #{self}.authors
39
41
  "
42
+ constants.sort
40
43
  end
41
44
  end
42
45
  end
@@ -897,16 +897,19 @@ module PWN
897
897
 
898
898
  public_class_method def self.help
899
899
  puts "USAGE:
900
- openapi_spec = #{self}.generate_spec(
900
+ # Run generate spec and return its result
901
+ #{self}.generate_spec(
901
902
  spec_paths: 'required - array of OpenAPI file paths to merge',
902
903
  base_url: 'required - base URL for OpenAPI endpoints (e.g., http://fqdn.com)',
903
- output_json_path: 'required - path to save the merged OpenAPI JSON file',
904
+ output_json_path: 'optional - path to save the merged OpenAPI JSON file',
904
905
  target_version: 'optional - target OpenAPI version (default: 3.0.3)',
905
906
  debug: 'optional - boolean to enable debug logging (default: false)'
906
907
  )
907
908
 
909
+ # Print the AUTHOR(S) string for this module.
908
910
  #{self}.authors
909
911
  "
912
+ constants.sort
910
913
  end
911
914
  end
912
915
  end
@@ -268,46 +268,54 @@ module PWN
268
268
 
269
269
  public_class_method def self.help
270
270
  puts "USAGE:
271
- task_xml_resp = #{self}.get_task_id(
272
- task_name: 'required task name to start',
273
- username: 'required username',
274
- password: 'optional password (will prompt if nil)'
271
+ # Run get task id and return its result
272
+ #{self}.get_task_id(
273
+ task_name: 'required - required task name to start',
274
+ username: 'required - required username',
275
+ password: 'optional - optional password (will prompt if nil)'
275
276
  )
276
277
 
277
- start_task_xml_resp = #{self}.start_task(
278
- task_name: 'required task name to start',
279
- username: 'required username',
280
- password: 'optional password (will prompt if nil)'
278
+ # Run start task and return its result
279
+ #{self}.start_task(
280
+ task_name: 'required - required task name to start',
281
+ username: 'required - required username',
282
+ password: 'optional - optional password (will prompt if nil)'
281
283
  )
282
284
 
283
- task_status = #{self}.get_task_status(
284
- task_name: 'required task name to start',
285
- username: 'required username',
286
- password: 'optional password (will prompt if nil)'
285
+ # Run get task status and return its result
286
+ #{self}.get_task_status(
287
+ task_name: 'required - required task name to start',
288
+ username: 'required - required username',
289
+ password: 'optional - optional password (will prompt if nil)'
287
290
  )
288
291
 
289
- last_report_id = #{self}.last_report_id(
290
- task_name: 'required task name to start',
291
- username: 'required username',
292
- password: 'optional password (will prompt if nil)'
292
+ # Run last report id and return its result
293
+ #{self}.last_report_id(
294
+ task_name: 'required - required task name to start',
295
+ username: 'required - required username',
296
+ password: 'optional - optional password (will prompt if nil)'
293
297
  )
294
298
 
299
+ # Run save report and return its result
295
300
  #{self}.save_report(
296
- report_type: 'required report type (csv|itg|pdf|txt|xml)',
297
- report_id: 'required report id to save',
298
- report_dir: 'required directory to save report',
299
- username: 'required username',
300
- password: 'optional password (will prompt if nil)',
301
- report_filter: 'optional - results filter (Default: \"apply_overrides=0 levels=hml rows=1000 min_qod=70 first=1 sort-reverse=severity\")
301
+ report_type: 'required - required report type (csv|itg|pdf|txt|xml)',
302
+ report_id: 'required - required report id to save',
303
+ report_dir: 'required - required directory to save report',
304
+ username: 'required - required username',
305
+ password: 'optional - optional password (will prompt if nil)',
306
+ report_filter: 'optional - results filter (Default: apply_overrides=0 levels=hml rows=1000 min_qod=70 first=1 sort-reverse=severity'
302
307
  )
303
308
 
304
- report_types = #{self}.get_report_types(
305
- username: 'required username',
306
- password: 'optional password (will prompt if nil)'
309
+ # Run get report types and return its result
310
+ #{self}.get_report_types(
311
+ username: 'required - required username',
312
+ password: 'optional - optional password (will prompt if nil)'
307
313
  )
308
314
 
315
+ # Print the AUTHOR(S) string for this module.
309
316
  #{self}.authors
310
317
  "
318
+ constants.sort
311
319
  end
312
320
  end
313
321
  end