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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f982dbb3d13b5265962550f36483fc05a2dede69703bcab6280220e3d9e5236a
4
- data.tar.gz: d60195b0c4cc4da80e7bda578eb075068fba641199ca7e6a542f01bf894713d0
3
+ metadata.gz: aed16afd310606181c270f790e5d0ca4f01dc445079567529e6e97ca0af76a36
4
+ data.tar.gz: 0b8dbd25d99f28c387197b1277a5b38fdd2b4057630de4871dac0dff9d0fc3fd
5
5
  SHA512:
6
- metadata.gz: 0ff8680a5ad5e6cfb9334c118d0f6e3c5075b838456e6506125f0bbb1e8be76aeba5e434207da773fdc938513b0ccc972e9e9536004c363bf6dddbb8ae8f0f24
7
- data.tar.gz: 79383331c61866288d3121c6a79f66436b2c0ad63569f44a742467bf77885be15be16368a956bbccdb72778bf7ac0b7c0451dd875762e2f6f2a3f22c0e05ee37
6
+ metadata.gz: 8366e85a05f0ca4bac9f0e437475ebe1b940c0ba989fad3de6456c852f55bee610420bdcb62cebe8d8554f28e000fb40ffa2a0b75e59e6b389b5fb51a9518b5b
7
+ data.tar.gz: 4ba3401047fd228b509cf3c51392de3f32b4102cd229ee88d8b5dc244889a20b379f37db9eafcf754d5c0537b36218f7a9ba542eda0436df08fef193380d59ff
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2025-10-14 20:09:17 UTC using RuboCop version 1.81.1.
3
+ # on 2025-10-16 16:52:19 UTC using RuboCop version 1.81.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -30,7 +30,7 @@ Lint/RedundantTypeConversion:
30
30
  - 'lib/pwn/plugins/jenkins.rb'
31
31
  - 'lib/pwn/plugins/repl.rb'
32
32
 
33
- # Offense count: 283
33
+ # Offense count: 287
34
34
  # This cop supports safe autocorrection (--autocorrect).
35
35
  Lint/UselessAssignment:
36
36
  Enabled: false
@@ -101,11 +101,12 @@ Style/ExplicitBlockArgument:
101
101
  Exclude:
102
102
  - 'lib/pwn/plugins/nmap_it.rb'
103
103
 
104
- # Offense count: 1
104
+ # Offense count: 2
105
105
  # This cop supports safe autocorrection (--autocorrect).
106
106
  # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
107
107
  Style/GuardClause:
108
108
  Exclude:
109
+ - 'lib/pwn/driver.rb'
109
110
  - 'lib/pwn/plugins/monkey_patch.rb'
110
111
 
111
112
  # Offense count: 1
data/Gemfile CHANGED
@@ -19,7 +19,7 @@ gem 'barby', '0.7.0'
19
19
  gem 'base32', '0.3.4'
20
20
  gem 'bitcoin-ruby', '0.0.20'
21
21
  gem 'brakeman', '7.1.0'
22
- gem 'bson', '5.1.1'
22
+ gem 'bson', '5.2.0'
23
23
  gem 'bundler', '>=2.7.2'
24
24
  gem 'bundler-audit', '0.9.2'
25
25
  gem 'bunny', '2.24.0'
@@ -100,7 +100,7 @@ gem 'uart', '1.0.0'
100
100
  gem 'watir', '7.3.0'
101
101
  gem 'waveform', '0.1.3'
102
102
  gem 'webrick', '1.9.1'
103
- gem 'whois', '6.0.2'
103
+ gem 'whois', '6.0.3'
104
104
  gem 'whois-parser', '2.0.0'
105
105
  gem 'wicked_pdf', '2.8.2'
106
106
  gem 'yard', '0.9.37'
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ cd /opt/pwn
37
37
  $ ./install.sh
38
38
  $ ./install.sh ruby-gem
39
39
  $ pwn
40
- pwn[v0.5.453]:001 >>> PWN.help
40
+ pwn[v0.5.454]:001 >>> PWN.help
41
41
  ```
42
42
 
43
43
  [![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](https://youtu.be/G7iLUY4FzsI)
@@ -52,7 +52,7 @@ $ rvm use ruby-3.4.4@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.5.453]:001 >>> PWN.help
55
+ pwn[v0.5.454]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
  If you're using a multi-user install of RVM do:
@@ -62,7 +62,7 @@ $ rvm use ruby-3.4.4@pwn
62
62
  $ rvmsudo gem uninstall --all --executables pwn
63
63
  $ rvmsudo gem install --verbose pwn
64
64
  $ pwn
65
- pwn[v0.5.453]:001 >>> PWN.help
65
+ pwn[v0.5.454]:001 >>> PWN.help
66
66
  ```
67
67
 
68
68
  PWN periodically upgrades to the latest version of Ruby which is reflected in `/opt/pwn/.ruby-version`. The easiest way to upgrade to the latest version of Ruby from a previous PWN installation is to run the following script:
data/bin/pwn CHANGED
@@ -3,24 +3,13 @@
3
3
 
4
4
  require 'pwn'
5
5
 
6
- opts = PWN::Env[:driver_opts]
7
- OptionParser.new do |options|
8
- options.banner = "USAGE:
9
- #{File.basename($PROGRAM_NAME)} [opts]
10
- "
11
-
12
- options.on('-YPATH', '--pwn-env=PATH', '<Optional - PWN YAML File>') do |p|
13
- opts[:pwn_env_path] = p
14
- end
15
-
16
- options.on('-ZPATH', '--pwn-dec=PATH', '<Optional - Out-of-Band YAML File with :key && :iv>') do |d|
17
- opts[:pwn_dec_path] = d
18
- end
19
- end.parse!
6
+ pwn_driver = PWN::Driver::Parser.new
7
+ pwn_driver.auto_opts_help = false
8
+ pwn_driver.parse!
20
9
 
21
10
  begin
22
11
  pwn_pid = Process.pid
23
- PWN::Plugins::REPL.start(opts)
12
+ PWN::Plugins::REPL.start
24
13
  rescue StandardError => e
25
14
  raise e
26
15
  ensure
@@ -5,11 +5,7 @@ require 'pwn'
5
5
  require 'waveform'
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('-fFROM', '--from=FROM', '<Required - Dial Range from (Beginning Number)>') do |f|
14
10
  opts[:from_num] = f
15
11
  end
@@ -43,11 +39,6 @@ OptionParser.new do |options|
43
39
  end
44
40
  end.parse!
45
41
 
46
- if opts.empty?
47
- puts `#{File.basename($PROGRAM_NAME)} --help`
48
- exit 1
49
- end
50
-
51
42
  # Required Flag Variables
52
43
  from_num = opts[:from_num].to_s.scrub.strip.chomp.delete('(').delete(')').delete('-').delete('.').delete('+').to_i
53
44
  to_num = opts[:to_num].to_s.scrub.strip.chomp.delete('(').delete(')').delete('-').delete('.').delete('+').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', '<Required - Region to Describe>') do |region|
14
10
  opts[:region] = region
15
11
  end
@@ -39,11 +35,6 @@ OptionParser.new do |options|
39
35
  end
40
36
  end.parse!
41
37
 
42
- if opts.empty?
43
- puts `#{File.basename($PROGRAM_NAME)} --help`
44
- exit 1
45
- end
46
-
47
38
  logger = PWN::Plugins::PWNLogger.create
48
39
 
49
40
  if opts[:yaml]
data/bin/pwn_bdba_groups 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('-cCONFIG', '--config=CONFIG', '<Required - Black Duck Binary Analysis YAML config>') do |c|
13
9
  opts[:config] = c
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
  begin
43
34
  pwn_provider = 'ruby-gem'
44
35
  pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.any? { |s| s == 'PWN_PROVIDER' }
data/bin/pwn_bdba_scan CHANGED
@@ -5,11 +5,7 @@ require 'cgi'
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('-cCONFIG', '--config=CONFG', '<Required - Black Duck Binary Analysis YAML config>') do |g|
14
10
  opts[:config] = g
15
11
  end
@@ -51,11 +47,6 @@ OptionParser.new do |options|
51
47
  end
52
48
  end.parse!
53
49
 
54
- if opts.empty?
55
- puts `#{File.basename($PROGRAM_NAME)} --help`
56
- exit 1
57
- end
58
-
59
50
  abort_total = 1
60
51
  begin
61
52
  pwn_provider = 'ruby-gem'
@@ -5,11 +5,7 @@ require 'pwn'
5
5
  require 'uri'
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('-tTARGET', '--target_url=TARGET', '<Required - Target URI to Scan>') do |t|
14
10
  opts[:target_url] = t
15
11
  end
@@ -63,11 +59,6 @@ OptionParser.new do |options|
63
59
  end
64
60
  end.parse!
65
61
 
66
- if opts.empty?
67
- puts `#{File.basename($PROGRAM_NAME)} --help`
68
- exit 1
69
- end
70
-
71
62
  begin
72
63
  timestamp = Time.now.strftime('%Y-%m-%d_%H-%M-%S%Z')
73
64
  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('-tTARGET', '--target_url=TARGET', '<Required - Target URI to Scan>') do |t|
13
9
  opts[:target_url] = t
14
10
  end
@@ -46,11 +42,6 @@ OptionParser.new do |options|
46
42
  end
47
43
  end.parse!
48
44
 
49
- if opts.empty?
50
- puts `#{File.basename($PROGRAM_NAME)} --help`
51
- exit 1
52
- end
53
-
54
45
  begin
55
46
  logger = PWN::Plugins::PWNLogger.create
56
47
 
@@ -5,20 +5,11 @@ require 'base64'
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('-pSTRING', '--payload=STRING', '<Required - String to Encode>') do |p|
14
10
  opts[:payload] = p
15
11
  end
16
12
  end.parse!
17
13
 
18
- if opts.empty?
19
- puts `#{File.basename($PROGRAM_NAME)} --help`
20
- exit 1
21
- end
22
-
23
14
  payload = opts[:payload].to_s.scrub
24
15
  puts Base64.strict_encode64(payload)
@@ -4,20 +4,11 @@
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('-pSTRING', '--payload=STRING', '<Required - String to Encode>') do |p|
13
9
  opts[:payload] = p
14
10
  end
15
11
  end.parse!
16
12
 
17
- if opts.empty?
18
- puts `#{File.basename($PROGRAM_NAME)} --help`
19
- exit 1
20
- end
21
-
22
13
  payload = opts[:payload].to_s.scrub
23
14
  puts payload.unpack('C*')
@@ -4,21 +4,12 @@
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('-pSTRING', '--payload=STRING', '<Required - String to Encode>') do |p|
13
9
  opts[:payload] = p
14
10
  end
15
11
  end.parse!
16
12
 
17
- if opts.empty?
18
- puts `#{File.basename($PROGRAM_NAME)} --help`
19
- exit 1
20
- end
21
-
22
13
  payload = opts[:payload].to_s.scrub
23
14
  payload.each_char do |char|
24
15
  print "\\x#{char.to_s.unpack1('H*')}"
@@ -5,20 +5,11 @@ require 'cgi'
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('-pSTRING', '--payload=STRING', '<Required - String to Encode>') do |p|
14
10
  opts[:payload] = p
15
11
  end
16
12
  end.parse!
17
13
 
18
- if opts.empty?
19
- puts `#{File.basename($PROGRAM_NAME)} --help`
20
- exit 1
21
- end
22
-
23
14
  payload = opts[:payload].to_s.scrub
24
15
  puts CGI.escapeHTML(payload)
@@ -4,20 +4,11 @@
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('-pSTRING', '--payload=STRING', '<Required - String to Encode>') do |p|
13
9
  opts[:payload] = p
14
10
  end
15
11
  end.parse!
16
12
 
17
- if opts.empty?
18
- puts `#{File.basename($PROGRAM_NAME)} --help`
19
- exit 1
20
- end
21
-
22
13
  payload = opts[:payload].to_s.scrub
23
14
  puts payload.unpack('U*').map { |i| "\\u#{i.to_s(16).rjust(4, '0')}" }.join
@@ -5,20 +5,11 @@ require 'cgi'
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('-pSTRING', '--payload=STRING', '<Required - String to Encode>') do |p|
14
10
  opts[:payload] = p
15
11
  end
16
12
  end.parse!
17
13
 
18
- if opts.empty?
19
- puts `#{File.basename($PROGRAM_NAME)} --help`
20
- exit 1
21
- end
22
-
23
14
  payload = opts[:payload].to_s.scrub
24
15
  puts CGI.escape(payload)
data/bin/pwn_crt_sh CHANGED
@@ -5,11 +5,7 @@ require 'nokogiri'
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('-tDOMAIN', '--target-domain=DOMAIN', '<Required - Target Domain>') do |t|
14
10
  opts[:target_domain] = t
15
11
  end
@@ -23,11 +19,6 @@ OptionParser.new do |options|
23
19
  end
24
20
  end.parse!
25
21
 
26
- if opts.empty?
27
- puts `#{File.basename($PROGRAM_NAME)} --help`
28
- exit 1
29
- end
30
-
31
22
  begin
32
23
  target_domain = opts[:target_domain]
33
24
  raise 'No target domain provided' if target_domain.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::Parser.new do |options|
12
8
  options.on('-uURL', '--url=URL', '<Required - DefectDojo URL>') do |u|
13
9
  opts[:url] = u
14
10
  end
@@ -94,11 +90,6 @@ OptionParser.new do |options|
94
90
  end
95
91
  end.parse!
96
92
 
97
- if opts.empty?
98
- puts `#{File.basename($PROGRAM_NAME)} --help`
99
- exit 1
100
- end
101
-
102
93
  # Construct AuthN Args
103
94
  url = opts[:url]
104
95
  api_version = opts[:api_version]
@@ -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('-uURL', '--url=URL', '<Required - DefectDojo URL>') do |u|
13
9
  opts[:url] = u
14
10
  end
@@ -82,11 +78,6 @@ OptionParser.new do |options|
82
78
  end
83
79
  end.parse!
84
80
 
85
- if opts.empty?
86
- puts `#{File.basename($PROGRAM_NAME)} --help`
87
- exit 1
88
- end
89
-
90
81
  # Construct AuthN Args
91
82
  url = opts[:url]
92
83
  api_version = opts[:api_version]
@@ -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('-uURL', '--url=URL', '<Required - DefectDojo URL>') do |u|
13
9
  opts[:url] = u
14
10
  end
@@ -74,11 +70,6 @@ OptionParser.new do |options|
74
70
  end
75
71
  end.parse!
76
72
 
77
- if opts.empty?
78
- puts `#{File.basename($PROGRAM_NAME)} --help`
79
- exit 1
80
- end
81
-
82
73
  # Construct AuthN Args
83
74
  url = opts[:url]
84
75
  api_version = opts[:api_version]
@@ -5,7 +5,7 @@ require 'csv'
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.banner = "USAGE:
10
10
  #{File.basename($PROGRAM_NAME)} [opts]
11
11
  EXAMPLE w/ Tenable Nessus Results:
@@ -44,11 +44,6 @@ OptionParser.new do |options|
44
44
  end
45
45
  end.parse!
46
46
 
47
- if opts.empty?
48
- puts `#{File.basename($PROGRAM_NAME)} --help`
49
- exit 1
50
- end
51
-
52
47
  def ommit_columns_by_index(opts = {})
53
48
  csv = opts[:csv]
54
49
  columns_index_arr = opts[:columns_index_arr]
@@ -6,11 +6,7 @@ require 'nokogiri'
6
6
  require 'pwn'
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('-sRFILTER', '--registrant-filter=RFILTER', '<Required - Registrant Name or Email Address>') do |s|
15
11
  opts[:registrant_filter] = s
16
12
  end
@@ -24,11 +20,6 @@ OptionParser.new do |options|
24
20
  end
25
21
  end.parse!
26
22
 
27
- if opts.empty?
28
- puts `#{File.basename($PROGRAM_NAME)} --help`
29
- exit 1
30
- end
31
-
32
23
  registrant_filter = opts[:registrant_filter].to_s.strip.chomp.scrub
33
24
  output_results = opts[:output_results].to_s.strip.chomp.scrub
34
25
  proxy = opts[:proxy].to_s.scrub.strip.chomp unless opts[:proxy].nil?
@@ -5,11 +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
-
8
+ PWN::Driver::Parser.new do |options|
13
9
  options.on('-dDIR', '--dir-path=DIR', '<Required - Report Output Directory>') do |d|
14
10
  opts[:dir_path] = d
15
11
  end
@@ -75,11 +71,6 @@ OptionParser.new do |options|
75
71
  end
76
72
  end.parse!
77
73
 
78
- if opts.empty?
79
- puts `#{File.basename($PROGRAM_NAME)} --help`
80
- exit 1
81
- end
82
-
83
74
  pwn_provider = 'ruby-gem'
84
75
  # pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.select { |s| s == 'PWN_PROVIDER' }.any?
85
76
  pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.any? { |s| s == 'PWN_PROVIDER' }
data/bin/pwn_gqrx_scanner 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('-aPROFILE', '--assume-profile=PROFILE', '<Required if "--target-freq" is Nil - Profile to assume for common radio protocols. Use "--list-profiles" to display supported protocols (Defaults to nil)') do |p|
13
9
  opts[:profile] = p
14
10
  end
@@ -74,11 +70,6 @@ OptionParser.new do |options|
74
70
  end
75
71
  end.parse!
76
72
 
77
- if opts.empty?
78
- puts `#{File.basename($PROGRAM_NAME)} --help`
79
- exit 1
80
- end
81
-
82
73
  begin
83
74
  pwn_provider = 'ruby-gem'
84
75
  pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.any? { |s| s == 'PWN_PROVIDER' }
@@ -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|
@@ -32,11 +28,6 @@ OptionParser.new do |options|
32
28
  end
33
29
  end.parse!
34
30
 
35
- if opts.empty?
36
- puts `#{File.basename($PROGRAM_NAME)} --help`
37
- exit 1
38
- end
39
-
40
31
  ip = opts[:ip].to_s.scrub
41
32
  port = opts[:port].to_i
42
33
  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|
@@ -32,11 +28,6 @@ OptionParser.new do |options|
32
28
  end
33
29
  end.parse!
34
30
 
35
- if opts.empty?
36
- puts `#{File.basename($PROGRAM_NAME)} --help`
37
- exit 1
38
- end
39
-
40
31
  ip = opts[:ip].to_s.scrub
41
32
  port = opts[:port].to_i
42
33
  username = opts[:username]