pwn 0.5.451 → 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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.rubocop_todo.yml +10 -5
  4. data/Gemfile +6 -11
  5. data/README.md +3 -3
  6. data/bin/pwn +4 -15
  7. data/bin/pwn_android_war_dialer +1 -10
  8. data/bin/pwn_aws_describe_resources +1 -10
  9. data/bin/pwn_bdba_groups +1 -10
  10. data/bin/pwn_bdba_scan +1 -10
  11. data/bin/pwn_burp_suite_pro_active_rest_api_scan +1 -10
  12. data/bin/pwn_burp_suite_pro_active_scan +1 -10
  13. data/bin/pwn_char_base64_encoding +1 -10
  14. data/bin/pwn_char_dec_encoding +1 -10
  15. data/bin/pwn_char_hex_escaped_encoding +1 -10
  16. data/bin/pwn_char_html_entity_encoding +1 -10
  17. data/bin/pwn_char_unicode_escaped_encoding +1 -10
  18. data/bin/pwn_char_url_encoding +1 -10
  19. data/bin/pwn_crt_sh +1 -10
  20. data/bin/pwn_defectdojo_engagement_create +1 -10
  21. data/bin/pwn_defectdojo_importscan +1 -10
  22. data/bin/pwn_defectdojo_reimportscan +1 -10
  23. data/bin/pwn_diff_csv_files_w_column_exclude +1 -6
  24. data/bin/pwn_domain_reversewhois +1 -10
  25. data/bin/pwn_fuzz_net_app_proto +1 -10
  26. data/bin/pwn_gqrx_scanner +1 -10
  27. data/bin/pwn_jenkins_create_job +1 -10
  28. data/bin/pwn_jenkins_create_view +1 -10
  29. data/bin/pwn_jenkins_install_plugin +1 -10
  30. data/bin/pwn_jenkins_thinBackup_aws_s3 +1 -10
  31. data/bin/pwn_jenkins_update_plugins +1 -10
  32. data/bin/pwn_jenkins_useradd +1 -10
  33. data/bin/pwn_mail_agent +1 -10
  34. data/bin/pwn_nessus_cloud_scan_crud +1 -10
  35. data/bin/pwn_nessus_cloud_vulnscan +1 -10
  36. data/bin/pwn_nexpose +1 -10
  37. data/bin/pwn_nmap_discover_tcp_udp +1 -10
  38. data/bin/pwn_openvas_vulnscan +1 -10
  39. data/bin/pwn_pastebin_sample_filter +1 -10
  40. data/bin/pwn_phone +1 -10
  41. data/bin/pwn_rdoc_to_jsonl +5 -7
  42. data/bin/pwn_sast +1 -25
  43. data/bin/pwn_serial_check_voicemail +1 -10
  44. data/bin/pwn_serial_msr206 +4 -6
  45. data/bin/pwn_serial_son_micro_sm132_rfid +4 -6
  46. data/bin/pwn_shodan_graphql_introspection +1 -6
  47. data/bin/pwn_shodan_search +1 -10
  48. data/bin/pwn_simple_http_server +4 -5
  49. data/bin/pwn_web_cache_deception +1 -10
  50. data/bin/pwn_www_checkip +7 -5
  51. data/bin/pwn_www_uri_buster +1 -10
  52. data/bin/pwn_xss_dom_vectors +1 -10
  53. data/bin/pwn_zaproxy_active_rest_api_scan +1 -10
  54. data/bin/pwn_zaproxy_active_scan +1 -10
  55. data/find_latest_gem_versions_per_Gemfile.sh +3 -0
  56. data/lib/pwn/ai/grok.rb +20 -38
  57. data/lib/pwn/ai/introspection.rb +44 -44
  58. data/lib/pwn/ai/ollama.rb +21 -38
  59. data/lib/pwn/ai/open_ai.rb +20 -149
  60. data/lib/pwn/blockchain/btc.rb +4 -4
  61. data/lib/pwn/config.rb +90 -43
  62. data/lib/pwn/driver.rb +85 -0
  63. data/lib/pwn/plugins/assembly.rb +14 -3
  64. data/lib/pwn/plugins/repl.rb +15 -77
  65. data/lib/pwn/plugins/transparent_browser.rb +320 -141
  66. data/lib/pwn/reports/sast.rb +1 -54
  67. data/lib/pwn/sast/pom_version.rb +8 -14
  68. data/lib/pwn/sast/test_case_engine.rb +8 -15
  69. data/lib/pwn/version.rb +1 -1
  70. data/lib/pwn.rb +5 -4
  71. data/spec/lib/pwn/driver_spec.rb +15 -0
  72. data/third_party/pwn_rdoc.jsonl +29 -25
  73. metadata +41 -13
  74. data/etc/pwn.decryptor.yaml.EXAMPLE +0 -5
  75. data/etc/pwn.yaml.EXAMPLE +0 -70
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83807b57b3001c59c409d5d38968615691afda19769a3d4e862b4a3b3262dabf
4
- data.tar.gz: 0fc622109134323b10483427cbfe6a25d55f809a01bb4a57e69280ecfed559c5
3
+ metadata.gz: aed16afd310606181c270f790e5d0ca4f01dc445079567529e6e97ca0af76a36
4
+ data.tar.gz: 0b8dbd25d99f28c387197b1277a5b38fdd2b4057630de4871dac0dff9d0fc3fd
5
5
  SHA512:
6
- metadata.gz: 6db3dfa4103b3f1b19a4c77b967c37f77e1186dac9c1fb6f7a7d4478e576999e7698a25d95c18a7c2be9a9e34166055d3f415604a504f3f06ba32778e5665852
7
- data.tar.gz: 97b8f02a6e85f088f9c04bfc766f4290740145f33bbcfed1d714e69a02483f0e6fab1cfe6e2ea849cba88983016935bd33cffbd8124eb725127e73de3be127ed
6
+ metadata.gz: 8366e85a05f0ca4bac9f0e437475ebe1b940c0ba989fad3de6456c852f55bee610420bdcb62cebe8d8554f28e000fb40ffa2a0b75e59e6b389b5fb51a9518b5b
7
+ data.tar.gz: 4ba3401047fd228b509cf3c51392de3f32b4102cd229ee88d8b5dc244889a20b379f37db9eafcf754d5c0537b36218f7a9ba542eda0436df08fef193380d59ff
data/.rubocop.yml CHANGED
@@ -18,7 +18,7 @@ Metrics/CyclomaticComplexity:
18
18
  Metrics/MethodLength:
19
19
  Max: 564
20
20
  Metrics/ModuleLength:
21
- Max: 1107
21
+ Max: 1116
22
22
  Metrics/PerceivedComplexity:
23
23
  Max: 156
24
24
  Style/HashEachMethods:
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-08 21:02:36 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: 276
33
+ # Offense count: 287
34
34
  # This cop supports safe autocorrection (--autocorrect).
35
35
  Lint/UselessAssignment:
36
36
  Enabled: false
@@ -60,15 +60,19 @@ Metrics/MethodLength:
60
60
  Exclude:
61
61
  - 'lib/pwn/banner/code_cave.rb'
62
62
 
63
- # Offense count: 1
63
+ # Offense count: 2
64
64
  # Configuration parameters: CountComments, Max, CountAsOne.
65
65
  Metrics/ModuleLength:
66
66
  Exclude:
67
67
  - 'lib/pwn/plugins/android.rb'
68
+ - 'lib/pwn/plugins/transparent_browser.rb'
68
69
 
69
- # Offense count: 3
70
+ # Offense count: 6
70
71
  Naming/AccessorMethodName:
71
72
  Exclude:
73
+ - 'lib/pwn/ai/grok.rb'
74
+ - 'lib/pwn/ai/ollama.rb'
75
+ - 'lib/pwn/ai/open_ai.rb'
72
76
  - 'lib/pwn/blockchain/btc.rb'
73
77
  - 'lib/pwn/plugins/vin.rb'
74
78
 
@@ -97,11 +101,12 @@ Style/ExplicitBlockArgument:
97
101
  Exclude:
98
102
  - 'lib/pwn/plugins/nmap_it.rb'
99
103
 
100
- # Offense count: 1
104
+ # Offense count: 2
101
105
  # This cop supports safe autocorrection (--autocorrect).
102
106
  # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
103
107
  Style/GuardClause:
104
108
  Exclude:
109
+ - 'lib/pwn/driver.rb'
105
110
  - 'lib/pwn/plugins/monkey_patch.rb'
106
111
 
107
112
  # Offense count: 1
data/Gemfile CHANGED
@@ -15,17 +15,17 @@ gem 'activesupport', '8.0.3'
15
15
  gem 'anemone', '0.7.2'
16
16
  gem 'authy', '3.0.1'
17
17
  gem 'aws-sdk', '3.3.0'
18
- # gem 'bettercap', '1.6.2'
19
18
  gem 'barby', '0.7.0'
20
19
  gem 'base32', '0.3.4'
21
20
  gem 'bitcoin-ruby', '0.0.20'
22
21
  gem 'brakeman', '7.1.0'
23
- gem 'bson', '5.1.1'
22
+ gem 'bson', '5.2.0'
24
23
  gem 'bundler', '>=2.7.2'
25
24
  gem 'bundler-audit', '0.9.2'
26
25
  gem 'bunny', '2.24.0'
27
26
  gem 'colorize', '1.1.0'
28
27
  gem 'credit_card_validations', '7.0.0'
28
+ gem 'diffy', '3.4.4'
29
29
  gem 'eventmachine', '1.2.7'
30
30
  gem 'executable-hooks', '1.7.1'
31
31
  gem 'faker', '3.5.2'
@@ -37,17 +37,16 @@ gem 'gem-wrappers', '1.4.0'
37
37
  gem 'geocoder', '1.8.6'
38
38
  gem 'gist', '6.0.0'
39
39
  gem 'gruff', '0.29.0'
40
- # gem 'hidapi', '0.1.9'
41
40
  gem 'htmlentities', '4.3.4'
42
41
  gem 'ipaddress', '0.8.3'
43
42
  gem 'jenkins_api_client2', '1.9.0'
44
43
  gem 'js-beautify', '0.1.8'
45
- gem 'json', '2.15.1'
44
+ gem 'json', '>=2.13.2'
46
45
  gem 'jsonpath', '1.1.5'
47
46
  gem 'json_schemer', '2.4.0'
48
47
  gem 'jwt', '3.1.2'
49
48
  gem 'libusb', '0.7.2'
50
- gem 'luhn', '2.0.0'
49
+ gem 'luhn', '3.0.0'
51
50
  gem 'mail', '2.8.1'
52
51
  gem 'meshtastic', '0.0.126'
53
52
  gem 'metasm', '1.0.5'
@@ -60,11 +59,8 @@ gem 'net-smtp', '0.5.1'
60
59
  gem 'nexpose', '7.3.0'
61
60
  gem 'nokogiri', '1.18.10'
62
61
  gem 'nokogiri-diff', '0.3.0'
63
- # gem 'oauth2', '2.0.9'
64
62
  gem 'oily_png', '1.2.1'
65
63
  gem 'open3', '0.2.1'
66
- # Relies on cargo, which is not available in OpenBSD via pkg_add atm.
67
- # gem 'openapi3_parser', '0.10.1'
68
64
  gem 'os', '1.1.4'
69
65
  gem 'ostruct', '0.6.3'
70
66
  gem 'packetfu', '2.0.0'
@@ -92,8 +88,7 @@ gem 'ruby-saml', '1.18.1'
92
88
  gem 'rvm', '1.11.3.9'
93
89
  gem 'savon', '2.15.1'
94
90
  gem 'selenium-devtools', '0.140.0'
95
- # gem 'serialport', '1.3.2'
96
- # gem 'sinatra', '4.0.0'
91
+ gem 'selenium-webdriver', '4.36.0'
97
92
  gem 'slack-ruby-client', '3.0.0'
98
93
  gem 'socksify', '1.8.1'
99
94
  gem 'spreadsheet', '1.3.4'
@@ -105,7 +100,7 @@ gem 'uart', '1.0.0'
105
100
  gem 'watir', '7.3.0'
106
101
  gem 'waveform', '0.1.3'
107
102
  gem 'webrick', '1.9.1'
108
- gem 'whois', '6.0.2'
103
+ gem 'whois', '6.0.3'
109
104
  gem 'whois-parser', '2.0.0'
110
105
  gem 'wicked_pdf', '2.8.2'
111
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.451]: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.451]: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.451]: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' }