pwn 0.5.453 → 0.5.454

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +4 -3
  3. data/Gemfile +2 -2
  4. data/README.md +3 -3
  5. data/bin/pwn +4 -15
  6. data/bin/pwn_android_war_dialer +1 -10
  7. data/bin/pwn_aws_describe_resources +1 -10
  8. data/bin/pwn_bdba_groups +1 -10
  9. data/bin/pwn_bdba_scan +1 -10
  10. data/bin/pwn_burp_suite_pro_active_rest_api_scan +1 -10
  11. data/bin/pwn_burp_suite_pro_active_scan +1 -10
  12. data/bin/pwn_char_base64_encoding +1 -10
  13. data/bin/pwn_char_dec_encoding +1 -10
  14. data/bin/pwn_char_hex_escaped_encoding +1 -10
  15. data/bin/pwn_char_html_entity_encoding +1 -10
  16. data/bin/pwn_char_unicode_escaped_encoding +1 -10
  17. data/bin/pwn_char_url_encoding +1 -10
  18. data/bin/pwn_crt_sh +1 -10
  19. data/bin/pwn_defectdojo_engagement_create +1 -10
  20. data/bin/pwn_defectdojo_importscan +1 -10
  21. data/bin/pwn_defectdojo_reimportscan +1 -10
  22. data/bin/pwn_diff_csv_files_w_column_exclude +1 -6
  23. data/bin/pwn_domain_reversewhois +1 -10
  24. data/bin/pwn_fuzz_net_app_proto +1 -10
  25. data/bin/pwn_gqrx_scanner +1 -10
  26. data/bin/pwn_jenkins_create_job +1 -10
  27. data/bin/pwn_jenkins_create_view +1 -10
  28. data/bin/pwn_jenkins_install_plugin +1 -10
  29. data/bin/pwn_jenkins_thinBackup_aws_s3 +1 -10
  30. data/bin/pwn_jenkins_update_plugins +1 -10
  31. data/bin/pwn_jenkins_useradd +1 -10
  32. data/bin/pwn_mail_agent +1 -10
  33. data/bin/pwn_nessus_cloud_scan_crud +1 -10
  34. data/bin/pwn_nessus_cloud_vulnscan +1 -10
  35. data/bin/pwn_nexpose +1 -10
  36. data/bin/pwn_nmap_discover_tcp_udp +1 -10
  37. data/bin/pwn_openvas_vulnscan +1 -10
  38. data/bin/pwn_pastebin_sample_filter +1 -10
  39. data/bin/pwn_phone +1 -10
  40. data/bin/pwn_rdoc_to_jsonl +5 -7
  41. data/bin/pwn_sast +1 -25
  42. data/bin/pwn_serial_check_voicemail +1 -10
  43. data/bin/pwn_serial_msr206 +4 -6
  44. data/bin/pwn_serial_son_micro_sm132_rfid +4 -6
  45. data/bin/pwn_shodan_graphql_introspection +1 -6
  46. data/bin/pwn_shodan_search +1 -10
  47. data/bin/pwn_simple_http_server +4 -5
  48. data/bin/pwn_web_cache_deception +1 -10
  49. data/bin/pwn_www_checkip +7 -5
  50. data/bin/pwn_www_uri_buster +1 -10
  51. data/bin/pwn_xss_dom_vectors +1 -10
  52. data/bin/pwn_zaproxy_active_rest_api_scan +1 -10
  53. data/bin/pwn_zaproxy_active_scan +1 -10
  54. data/lib/pwn/ai/introspection.rb +3 -1
  55. data/lib/pwn/config.rb +70 -25
  56. data/lib/pwn/driver.rb +85 -0
  57. data/lib/pwn/plugins/repl.rb +7 -10
  58. data/lib/pwn/version.rb +1 -1
  59. data/lib/pwn.rb +5 -4
  60. data/spec/lib/pwn/driver_spec.rb +15 -0
  61. metadata +7 -7
  62. data/etc/pwn.decryptor.yaml.EXAMPLE +0 -5
  63. data/etc/pwn.yaml.EXAMPLE +0 -71
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
13
9
 
14
10
  options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
@@ -36,11 +32,6 @@ OptionParser.new do |options|
36
32
  end
37
33
  end.parse!
38
34
 
39
- if opts.empty?
40
- puts `#{File.basename($PROGRAM_NAME)} --help`
41
- exit 1
42
- end
43
-
44
35
  begin
45
36
  ip = opts[:ip].to_s.scrub
46
37
  port = opts[:port].to_i
@@ -5,11 +5,7 @@ require 'aws-sdk'
5
5
  require 'pwn'
6
6
 
7
7
  opts = PWN::Env[:driver_opts]
8
- OptionParser.new do |options|
9
- options.banner = "USAGE:
10
- #{File.basename($PROGRAM_NAME)} [opts]
11
- "
12
-
8
+ PWN::Driver::Parser.new do |options|
13
9
  options.on('-rREGION', '--region=REGION', "<Optional - AWS STS Region (Defaults to 'us-west-1')>") do |sts_region|
14
10
  opts[:sts_region] = sts_region
15
11
  end
@@ -37,11 +33,6 @@ OptionParser.new do |options|
37
33
  end
38
34
  end.parse!
39
35
 
40
- if opts.empty?
41
- puts `#{File.basename($PROGRAM_NAME)} --help`
42
- exit 1
43
- end
44
-
45
36
  sts_region = if opts[:sts_region].nil?
46
37
  'us-west-1'
47
38
  else
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
13
9
 
14
10
  options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
@@ -36,11 +32,6 @@ OptionParser.new do |options|
36
32
  end
37
33
  end.parse!
38
34
 
39
- if opts.empty?
40
- puts `#{File.basename($PROGRAM_NAME)} --help`
41
- exit 1
42
- end
43
-
44
35
  ip = opts[:ip].to_s.scrub
45
36
  port = opts[:port].to_i
46
37
  username = opts[:username]
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
13
9
 
14
10
  options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
@@ -40,11 +36,6 @@ OptionParser.new do |options|
40
36
  end
41
37
  end.parse!
42
38
 
43
- if opts.empty?
44
- puts `#{File.basename($PROGRAM_NAME)} --help`
45
- exit 1
46
- end
47
-
48
39
  ip = opts[:ip].to_s.scrub
49
40
  port = opts[:port].to_i
50
41
 
data/bin/pwn_mail_agent CHANGED
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-aTYPE', '--agent-type=TYPE', '<Required - Mail Agent Type office365|gmail|hotmail_n_live|yahoo|manual>') do |a|
13
9
  opts[:agent_type] = a
14
10
  end
@@ -22,11 +18,6 @@ OptionParser.new do |options|
22
18
  end
23
19
  end.parse!
24
20
 
25
- if opts.empty?
26
- puts `#{File.basename($PROGRAM_NAME)} --help`
27
- exit 1
28
- end
29
-
30
21
  private_methods def initiate_action
31
22
  puts @list_agent_opts
32
23
  if @list_agent_opts
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-cYPATH', '--yaml-config=YPATH', '<Required - YAML Config Containing Access & Secret Keys for Authentication, Including Credential Information for Scan Creation (https://developer.tenable.com/docs/determine-settings-for-credential-type)>') do |c|
13
9
  opts[:yaml_config] = c
14
10
  end
@@ -86,11 +82,6 @@ OptionParser.new do |options|
86
82
  end
87
83
  end.parse!
88
84
 
89
- if opts.empty?
90
- puts `#{File.basename($PROGRAM_NAME)} --help`
91
- exit 1
92
- end
93
-
94
85
  begin
95
86
  # Get Options Passed to pwn_nessus_cloud_create_scan
96
87
  # Required Arguments
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-cYPATH', '--yaml-config=YPATH', '<Required - YAML Config Containing Access & Secret Keys for Authentication>') do |c|
13
9
  opts[:yaml_config] = c
14
10
  end
@@ -26,11 +22,6 @@ OptionParser.new do |options|
26
22
  end
27
23
  end.parse!
28
24
 
29
- if opts.empty?
30
- puts `#{File.basename($PROGRAM_NAME)} --help`
31
- exit 1
32
- end
33
-
34
25
  begin
35
26
  yaml_config = opts[:yaml_config]
36
27
 
data/bin/pwn_nexpose CHANGED
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  # Nexpose Flags
13
9
  options.on('-CIP', '--console_ip=IP', '<Required - Nexpose Console IP>') { |c| opts[:console_ip] = c }
14
10
  options.on('-UCUSER', '--console_username=CUSER', '<Required - Nexpose Console Username>') { |cu| opts[:console_username] = cu }
@@ -17,11 +13,6 @@ OptionParser.new do |options|
17
13
  options.on('-RREPORTS', '--report_names=REPORTS', '<Required - Comma Delimited String of Report Names>') { |r| opts[:report_names] = r }
18
14
  end.parse!
19
15
 
20
- if opts.empty?
21
- puts `#{File.basename($PROGRAM_NAME)} --help`
22
- exit 1
23
- end
24
-
25
16
  # Nexpose
26
17
  console_ip = opts[:console_ip].to_s.scrub
27
18
  console_username = opts[:console_username].to_s.scrub
@@ -7,11 +7,7 @@ require 'pwn'
7
7
  require 'time'
8
8
 
9
9
  opts = PWN::Env[:driver_opts]
10
- OptionParser.new do |options|
11
- options.banner = "USAGE:
12
- #{File.basename($PROGRAM_NAME)} [opts]
13
- "
14
-
10
+ PWN::Driver::Parser.new do |options|
15
11
  options.on('-fFILE', '--target-file=FILE', '<Required if --target-range excluded - File containing one supported nmap target / line e.g. foo.bar, 10.1.1.1, 192.168.1.1-20, 192.168.1.0/24, etc>') do |f|
16
12
  opts[:target_file] = f
17
13
  end
@@ -41,11 +37,6 @@ OptionParser.new do |options|
41
37
  end
42
38
  end.parse!
43
39
 
44
- if opts.empty?
45
- puts `#{File.basename($PROGRAM_NAME)} --help`
46
- exit 1
47
- end
48
-
49
40
  ftimestr = '%Y-%m-%d %H:%M:%S.%N%z'
50
41
  started_at = Time.now.strftime(ftimestr)
51
42
  started_at_parse = Time.parse(started_at)
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-cYPATH', '--yaml-config=YPATH', '<Required - YAML Config Containing Username & Password for Authentication>') do |c|
13
9
  opts[:yaml_config] = c
14
10
  end
@@ -26,11 +22,6 @@ OptionParser.new do |options|
26
22
  end
27
23
  end.parse!
28
24
 
29
- if opts.empty?
30
- puts `#{File.basename($PROGRAM_NAME)} --help`
31
- exit 1
32
- end
33
-
34
25
  task_name = opts[:task_name]
35
26
 
36
27
  report_dir = opts[:report_dir].to_s.scrub
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-rPATTERN', '--regex=PATTERN', "<Required - Regex Pattern for Interesting Pastes ('.*' for All)>") do |r|
13
9
  opts[:regex] = r
14
10
  end
@@ -18,11 +14,6 @@ OptionParser.new do |options|
18
14
  end
19
15
  end.parse!
20
16
 
21
- if opts.empty?
22
- puts `#{File.basename($PROGRAM_NAME)} --help`
23
- exit 1
24
- end
25
-
26
17
  proxy = opts[:proxy]
27
18
  regex = opts[:regex]
28
19
 
data/bin/pwn_phone CHANGED
@@ -8,11 +8,7 @@ require 'ruby-audio'
8
8
  require 'waveform'
9
9
 
10
10
  opts = PWN::Env[:driver_opts]
11
- OptionParser.new do |options|
12
- options.banner = "USAGE:
13
- #{File.basename($PROGRAM_NAME)} [opts]
14
- "
15
-
11
+ PWN::Driver::Parser.new do |options|
16
12
  options.on('-tPATH', '--target-file=PATH', '<Required - File Containing List of Targets to Dial>') do |t|
17
13
  opts[:target_file] = t
18
14
  end
@@ -62,11 +58,6 @@ OptionParser.new do |options|
62
58
  # TODO: Append results to pwn_phone_results.json as things are running #save_memory.
63
59
  end.parse!
64
60
 
65
- if opts.empty?
66
- puts `#{File.basename($PROGRAM_NAME)} --help`
67
- exit 1
68
- end
69
-
70
61
  begin
71
62
  pwn_provider = 'ruby-gem'
72
63
  # pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.select { |s| s == 'PWN_PROVIDER' }.any?
@@ -6,19 +6,17 @@ require 'pwn'
6
6
 
7
7
  # Set the path to your project directory
8
8
  opts = PWN::Env[:driver_opts]
9
- OptionParser.new do |options|
10
- options.banner = "USAGE:
11
- #{File.basename($PROGRAM_NAME)} [opts]
12
- "
13
-
9
+ pwn_driver = PWN::Driver::Parser.new do |options|
14
10
  options.on('-rPATH', '--rdoc-root-dir=PATH', '<Optional - RDoc root directory (Default: "/opt/pwn/rdoc/PWN")>') do |r|
15
11
  opts[:rdoc_root] = r
16
12
  end
17
13
 
18
- options.on('-jPATH', '--jsonl-results=PATH', '<Optional - Path to save JSONL file (Default: "/tmp/RDoc_Parent_Basename-TIMESTAMP.jsonl">') do |j|
14
+ options.on('-jPATH', '--jsonl-results=PATH', '<Optional - Path to save JSONL file (Default: "/tmp/PWN-[TIMESTAMP].jsonl">') do |j|
19
15
  opts[:jsonl_results] = j
20
16
  end
21
- end.parse!
17
+ end
18
+ pwn_driver.auto_opts_help = false
19
+ pwn_driver.parse!
22
20
 
23
21
  begin
24
22
  rdoc_root = opts[:rdoc_root] ||= '/opt/pwn/rdoc/PWN'
data/bin/pwn_sast CHANGED
@@ -5,20 +5,7 @@ require 'htmlentities'
5
5
  require 'pwn'
6
6
 
7
7
  opts = PWN::Env[:driver_opts]
8
- OptionParser.new do |options|
9
- options.banner = "USAGE:
10
- #{File.basename($PROGRAM_NAME)} [opts]
11
- "
12
-
13
- # TODO: HOW TO LOAD THE pwn.yaml CONFIGURATION FILE FOR EVERYTHING UNLESS OVERRIDDEN???
14
- options.on('-YPATH', '--pwn-env=PATH', '<Optional - PWN YAML File>') do |p|
15
- opts[:pwn_env_path] = p
16
- end
17
-
18
- options.on('-ZPATH', '--pwn-dec=PATH', '<Optional - Out-of-Band YAML File with :key && :iv>') do |d|
19
- opts[:pwn_dec_path] = d
20
- end
21
-
8
+ PWN::Driver::Parser.new do |options|
22
9
  options.on('-uGITURI', '--uri-source-root=GITURI', '<Required - HTTP URI of Git Repo Scanned e.g. https://github.com/0dayInc/pwn/tree/master>') do |u|
23
10
  opts[:uri_source_root] = u
24
11
  end
@@ -48,22 +35,11 @@ OptionParser.new do |options|
48
35
  end
49
36
  end.parse!
50
37
 
51
- if opts.empty?
52
- puts `#{File.basename($PROGRAM_NAME)} --help`
53
- exit 1
54
- end
55
-
56
38
  begin
57
39
  timestamp = Time.now.strftime('%Y-%m-%d_%H:%M:%S%z')
58
40
 
59
41
  pwn_env_path = opts[:pwn_env_path]
60
42
  pwn_dec_path = opts[:pwn_dec_path]
61
- if pwn_env_path
62
- PWN::Config.refresh_env(
63
- pwn_env_path: pwn_env_path,
64
- pwn_dec_path: pwn_dec_path
65
- )
66
- end
67
43
 
68
44
  previous_dir = Dir.pwd
69
45
 
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-vNUM', '--voicemail_num=num', '<Required - Number to Voicemail Service>') do |num|
13
9
  opts[:voicemail_num] = num
14
10
  end
@@ -17,11 +13,6 @@ OptionParser.new do |options|
17
13
  end
18
14
  end.parse!
19
15
 
20
- if opts.empty?
21
- puts `#{File.basename($PROGRAM_NAME)} --help`
22
- exit 1
23
- end
24
-
25
16
  voicemail_num = opts[:voicemail_num].to_s.scrub.strip.chomp.delete('-').delete('.').to_i
26
17
 
27
18
  if opts[:voicemail_pin].nil?
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ pwn_driver = PWN::Driver::Parser.new do |options|
12
8
  options.on('-dDEV', '--block-dev=DEV', '<Optional - MSR206 block device path (defaults to /dev/ttyUSB0)>') do |d|
13
9
  opts[:block_dev] = d
14
10
  end
@@ -32,7 +28,9 @@ OptionParser.new do |options|
32
28
  options.on('-fFLOWCTRL', '--flow-control=FLOWCTRL', '<Optional - none||hard||soft (defaults to soft)>') do |f|
33
29
  opts[:flow_control] = f
34
30
  end
35
- end.parse!
31
+ end
32
+ pwn_driver.auto_opts_help = false
33
+ pwn_driver.parse!
36
34
 
37
35
  begin
38
36
  block_dev = opts[:block_dev]
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ pwn_driver = PWN::Driver::Parser.new do |options|
12
8
  options.on('-dDEV', '--block-dev=DEV', '<Optional - SonMicroRFID block device path (defaults to /dev/ttyUSB0)>') do |d|
13
9
  opts[:block_dev] = d
14
10
  end
@@ -36,7 +32,9 @@ OptionParser.new do |options|
36
32
  options.on('-v', '--verbose', '<Optional - Enable verbose output>') do
37
33
  opts[:verbose] = true
38
34
  end
39
- end.parse!
35
+ end
36
+ pwn_driver.auto_opts_help = false
37
+ pwn_driver.parse!
40
38
 
41
39
  begin
42
40
  block_dev = opts[:block_dev] if opts[:block_dev] && File.exist?(opts[:block_dev])
@@ -5,17 +5,12 @@ require 'faker'
5
5
  require 'pwn'
6
6
 
7
7
  opts = PWN::Env[:driver_opts]
8
- OptionParser.new do |options|
8
+ PWN::Driver::Parser.new do |options|
9
9
  options.on('-jFILE', '--json-results=FILE', 'Required - JSON results file from pwn_shodan_search driver') do |j|
10
10
  opts[:json_results] = j
11
11
  end
12
12
  end.parse!
13
13
 
14
- if opts.empty?
15
- puts `#{File.basename($PROGRAM_NAME)} --help`
16
- exit 1
17
- end
18
-
19
14
  json_results_path = opts[:json_results]
20
15
  raise "ERROR: Shodan JSON Results File #{json_results_path} Does Not Exist." unless File.exist?(json_results_path)
21
16
 
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-cYAML', '--config-yaml=YAML', '<Required - YAML config containing api_key from Shodan.io>') do |y|
13
9
  opts[:yaml] = y
14
10
  end
@@ -26,11 +22,6 @@ OptionParser.new do |options|
26
22
  end
27
23
  end.parse!
28
24
 
29
- if opts.empty?
30
- puts `#{File.basename($PROGRAM_NAME)} --help`
31
- exit 1
32
- end
33
-
34
25
  begin
35
26
  yaml_file = opts[:yaml].to_s
36
27
  raise "ERROR: #{yaml_file} does not exist." unless File.exist?(yaml_file)
@@ -4,10 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
7
+ pwn_driver = PWN::Driver::Parser.new do |options|
11
8
  options.on('-iIP', '--bind-ip=IP', '<Optional - HTTP Bind IP to Listen> (Defaults to Localhost)') do |i|
12
9
  opts[:bind_ip] = i
13
10
  end
@@ -15,7 +12,9 @@ OptionParser.new do |options|
15
12
  options.on('-pPORT', '--port=PORT', '<Optional - HTTP Port to Listen (Defaults to 3333)>') do |p|
16
13
  opts[:port] = p
17
14
  end
18
- end.parse!
15
+ end
16
+ pwn_driver.auto_opts_help = false
17
+ pwn_driver.parse!
19
18
 
20
19
  bind_ip = opts[:bind_ip] ||= '127.0.0.1'
21
20
 
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-tURL', '--target-url=URL', '<Required - URL to Target>') do |t|
13
9
  opts[:target_url] = t
14
10
  end
@@ -42,11 +38,6 @@ OptionParser.new do |options|
42
38
  end
43
39
  end.parse!
44
40
 
45
- if opts.empty?
46
- puts `#{File.basename($PROGRAM_NAME)} --help`
47
- exit 1
48
- end
49
-
50
41
  # Colors!
51
42
  @dark_red = "\e[1m\e[31m"
52
43
  @green = "\e[32m"
data/bin/pwn_www_checkip CHANGED
@@ -4,10 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
7
+ pwn_driver = PWN::Driver::Parser.new do |options|
11
8
  options.on('-tIP_HOST', '--target=IP_HOST', '<Optional - IP or Host to Check (Default - Your Public IP)>') do |t|
12
9
  opts[:target] = t
13
10
  end
@@ -23,7 +20,12 @@ OptionParser.new do |options|
23
20
  options.on('-pPROXY', '--proxy=PROXY', '<Optional - HTTP or Socks Proxy || tor>') do |p|
24
21
  opts[:proxy] = p
25
22
  end
26
- end.parse!
23
+ end
24
+ pwn_driver.auto_opts_help = false
25
+ pwn_driver.parse!
26
+
27
+ pwn_env_path = opts[:pwn_env_path]
28
+ pwn_dec_path = opts[:pwn_dec_path]
27
29
 
28
30
  target = opts[:target]
29
31
  tls_port = opts[:tls_port]
@@ -9,11 +9,7 @@ require 'time'
9
9
  require 'uri'
10
10
 
11
11
  opts = PWN::Env[:driver_opts]
12
- OptionParser.new do |options|
13
- options.banner = "USAGE:
14
- #{File.basename($PROGRAM_NAME)} [opts]
15
- "
16
-
12
+ PWN::Driver::Parser.new do |options|
17
13
  options.on('-uURL', '--target-url=URL', '<Required - Target URL)>') do |t|
18
14
  opts[:target_url] = t
19
15
  end
@@ -67,11 +63,6 @@ OptionParser.new do |options|
67
63
  end
68
64
  end.parse!
69
65
 
70
- if opts.empty?
71
- puts `#{File.basename($PROGRAM_NAME)} --help`
72
- exit 1
73
- end
74
-
75
66
  def request_path(opts = {})
76
67
  target_url = opts[:target_url]
77
68
  proxy = opts[:proxy]
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-tFQDN', '--target-fqdn=FQDN', '<Required - FQDN to Target>') do |t|
13
9
  opts[:target_fqdn] = t
14
10
  end
@@ -34,11 +30,6 @@ OptionParser.new do |options|
34
30
  end
35
31
  end.parse!
36
32
 
37
- if opts.empty?
38
- puts `#{File.basename($PROGRAM_NAME)} --help`
39
- exit 1
40
- end
41
-
42
33
  # Required Flag Variables
43
34
  target_fqdn = opts[:target_fqdn].to_s.scrub.strip.chomp
44
35
  output_dir = opts[:output_dir].to_s.scrub.strip.chomp if Dir.exist?(opts[:output_dir].to_s.scrub.strip.chomp)
@@ -6,11 +6,7 @@ require 'pwn'
6
6
  require 'uri'
7
7
 
8
8
  opts = PWN::Env[:driver_opts]
9
- OptionParser.new do |options|
10
- options.banner = "USAGE:
11
- #{File.basename($PROGRAM_NAME)} [opts]
12
- "
13
-
9
+ PWN::Driver::Parser.new do |options|
14
10
  options.on('-aAPIKEY', '--api_key=APIKEY', '<Required - OWASP Zap API Key (Tools>Options>API)>') do |a|
15
11
  opts[:api_key] = a
16
12
  end
@@ -60,11 +56,6 @@ OptionParser.new do |options|
60
56
  end
61
57
  end.parse!
62
58
 
63
- if opts.empty?
64
- puts `#{File.basename($PROGRAM_NAME)} --help`
65
- exit 1
66
- end
67
-
68
59
  begin
69
60
  timestamp = Time.now.strftime('%Y-%m-%d_%H-%M-%S%Z')
70
61
  logger = PWN::Plugins::PWNLogger.create
@@ -4,11 +4,7 @@
4
4
  require 'pwn'
5
5
 
6
6
  opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
7
+ PWN::Driver::Parser.new do |options|
12
8
  options.on('-aAPIKEY', '--api_key=APIKEY', '<Required - OWASP Zap API Key (Tools>Options>API)>') do |a|
13
9
  opts[:api_key] = a
14
10
  end
@@ -50,11 +46,6 @@ OptionParser.new do |options|
50
46
  end
51
47
  end.parse!
52
48
 
53
- if opts.empty?
54
- puts `#{File.basename($PROGRAM_NAME)} --help`
55
- exit 1
56
- end
57
-
58
49
  begin
59
50
  logger = PWN::Plugins::PWNLogger.create
60
51
 
@@ -45,7 +45,9 @@ module PWN
45
45
  system_role_content: system_role_content,
46
46
  spinner: false
47
47
  )
48
- puts response
48
+ response = response[:choices].last[:content] if response.is_a?(Hash) &&
49
+ response.key?(:choices) &&
50
+ response[:choices].last.keys.include?(:content)
49
51
  when :openai
50
52
  response = PWN::AI::OpenAI.chat(
51
53
  request: request.chomp,