pwn 0.5.277 → 0.5.279

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a939c762b76285c336ba213639392f042fd9d75b061b1a98b8705822d8ae3580
4
- data.tar.gz: 51114917e82a5f9729f86697125c3df92769cb486368557287968dd56f101fbf
3
+ metadata.gz: c1305b14cb06bf37af02be9bae67675548ee58b5027584e9075f40edc6fbdcdb
4
+ data.tar.gz: f01c6b1e804c971930662e6aa6d8f7d9c5b8eb6c2a0bab4dcff9956d11e1a2cf
5
5
  SHA512:
6
- metadata.gz: 0c90fee64a8a6c0555fb91a0fe7576947ebb8f409492a754a293597ecd0aa1b58a3f26244c28755a0ebb52163a0b3ce81ee1a2e26d9150432299a660a4dbfa5e
7
- data.tar.gz: 9c4da35280b5a6596156f458c49c184042b158d52c127c359d23bb9b18aaf359a6e7eff7766ff0986597e52647c3606bede41d505f943aa85974ba5c767a42d0
6
+ metadata.gz: d0bc62a5e5e0d50d49656c47c2070b57d9a1e5fcea44ae1666c73815729431d98820d895bd437f860f138028b3fa823bea7074af6dcdb887c2b1c863bd33a018
7
+ data.tar.gz: 2ceb90153b66ca777cb6a452eda80a743f313a18497a21e21a607b8a7036156d18ae18e5b3d6b10c1dfc4003c6d988217a15328795ffa37b64d5e56e3ea67e08
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-05-01 15:57:20 UTC using RuboCop version 1.75.4.
3
+ # on 2025-05-30 23:04:07 UTC using RuboCop version 1.75.8.
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
@@ -50,7 +50,7 @@ Lint/RedundantTypeConversion:
50
50
  - 'lib/pwn/plugins/jenkins.rb'
51
51
  - 'lib/pwn/plugins/repl.rb'
52
52
 
53
- # Offense count: 304
53
+ # Offense count: 307
54
54
  # This cop supports safe autocorrection (--autocorrect).
55
55
  # Configuration parameters: AutoCorrect.
56
56
  Lint/UselessAssignment:
@@ -116,6 +116,11 @@ Metrics/ModuleLength:
116
116
  - 'lib/pwn/plugins/son_micro_rfid.rb'
117
117
  - 'lib/pwn/plugins/transparent_browser.rb'
118
118
 
119
+ # Offense count: 2
120
+ Naming/AccessorMethodName:
121
+ Exclude:
122
+ - 'lib/pwn/plugins/vin.rb'
123
+
119
124
  # Offense count: 1
120
125
  # This cop supports safe autocorrection (--autocorrect).
121
126
  # Configuration parameters: EnforcedStyle.
@@ -148,7 +153,7 @@ Style/IfUnlessModifier:
148
153
  - 'lib/pwn/plugins/baresip.rb'
149
154
  - 'lib/pwn/plugins/mail_agent.rb'
150
155
 
151
- # Offense count: 10
156
+ # Offense count: 9
152
157
  # This cop supports unsafe autocorrection (--autocorrect-all).
153
158
  Style/MapIntoArray:
154
159
  Exclude:
@@ -158,7 +163,6 @@ Style/MapIntoArray:
158
163
  - 'bin/pwn_jenkins_thinBackup_aws_s3'
159
164
  - 'bin/pwn_www_uri_buster'
160
165
  - 'lib/pwn/plugins/char.rb'
161
- - 'lib/pwn/plugins/credit_card.rb'
162
166
  - 'lib/pwn/plugins/nexpose_vuln_scan.rb'
163
167
 
164
168
  # Offense count: 9
@@ -218,7 +222,7 @@ Style/RedundantStringEscape:
218
222
  - 'lib/pwn/sast/redos.rb'
219
223
  - 'vagrant/provisioners/kali_customize.rb'
220
224
 
221
- # Offense count: 57
225
+ # Offense count: 58
222
226
  # This cop supports unsafe autocorrection (--autocorrect-all).
223
227
  Style/SlicingWithRange:
224
228
  Enabled: false
data/Gemfile CHANGED
@@ -14,12 +14,12 @@ gemspec
14
14
  gem 'activesupport', '8.0.2'
15
15
  gem 'anemone', '0.7.2'
16
16
  gem 'authy', '3.0.1'
17
- gem 'aws-sdk', '3.2.0'
17
+ gem 'aws-sdk', '3.3.0'
18
18
  # gem 'bettercap', '1.6.2'
19
19
  gem 'barby', '0.7.0'
20
20
  gem 'base32', '0.3.4'
21
21
  gem 'brakeman', '7.0.2'
22
- gem 'bson', '5.0.2'
22
+ gem 'bson', '5.1.1'
23
23
  gem 'bundler', '>=2.6.9'
24
24
  gem 'bundler-audit', '0.9.2'
25
25
  gem 'bunny', '2.24.0'
@@ -43,7 +43,7 @@ gem 'jenkins_api_client2', '1.9.0'
43
43
  gem 'js-beautify', '0.1.8'
44
44
  gem 'json', '2.12.2'
45
45
  gem 'jsonpath', '1.1.5'
46
- gem 'jwt', '2.10.1'
46
+ gem 'jwt', '3.1.1'
47
47
  gem 'libusb', '0.7.2'
48
48
  gem 'luhn', '1.0.2'
49
49
  gem 'mail', '2.8.1'
@@ -62,24 +62,24 @@ gem 'nokogiri-diff', '0.3.0'
62
62
  gem 'oily_png', '1.2.1'
63
63
  gem 'open3', '0.2.1'
64
64
  gem 'os', '1.1.4'
65
- gem 'ostruct', '0.6.1'
65
+ gem 'ostruct', '0.6.2'
66
66
  gem 'packetfu', '2.0.0'
67
67
  gem 'packetgen', '4.1.0'
68
68
  gem 'pdf-reader', '2.14.1'
69
69
  gem 'pg', '1.5.9'
70
70
  gem 'pry', '0.15.2'
71
71
  gem 'pry-doc', '1.6.0'
72
- gem 'rake', '13.2.1'
72
+ gem 'rake', '13.3.0'
73
73
  gem 'rb-readline', '0.5.5'
74
74
  gem 'rbvmomi2', '3.8.0'
75
- gem 'rdoc', '6.14.0'
75
+ gem 'rdoc', '6.14.1'
76
76
  gem 'rest-client', '2.1.0'
77
77
  gem 'rex', '2.0.13'
78
78
  gem 'rmagick', '6.1.1'
79
79
  gem 'rqrcode', '3.1.0'
80
80
  gem 'rspec', '3.13.1'
81
81
  gem 'rtesseract', '3.1.4'
82
- gem 'rubocop', '1.75.8'
82
+ gem 'rubocop', '1.77.0'
83
83
  gem 'rubocop-rake', '0.7.1'
84
84
  gem 'rubocop-rspec', '3.6.0'
85
85
  gem 'ruby-audio', '1.6.1'
@@ -93,8 +93,8 @@ gem 'selenium-devtools', '0.137.0'
93
93
  gem 'slack-ruby-client', '2.6.0'
94
94
  gem 'socksify', '1.7.1'
95
95
  gem 'spreadsheet', '1.3.4'
96
- gem 'sqlite3', '2.6.0'
97
- gem 'thin', '1.8.2'
96
+ gem 'sqlite3', '2.7.0'
97
+ gem 'thin', '2.0.1'
98
98
  gem 'tty-prompt', '0.23.1'
99
99
  gem 'tty-spinner', '0.9.3'
100
100
  gem 'uart', '1.0.0'
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.277]:001 >>> PWN.help
40
+ pwn[v0.5.279]: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.277]:001 >>> PWN.help
55
+ pwn[v0.5.279]: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.277]:001 >>> PWN.help
65
+ pwn[v0.5.279]: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:
@@ -88,6 +88,8 @@ module PWN
88
88
  response
89
89
  rescue RestClient::ExceptionWithResponse => e
90
90
  if e.response
91
+ puts "HTTP BASE URI: #{base_bd_bin_analysis_api_uri}"
92
+ puts "HTTP PATH: #{rest_call}"
91
93
  puts "HTTP RESPONSE CODE: #{e.response.code}"
92
94
  puts "HTTP RESPONSE HEADERS:\n#{e.response.headers}"
93
95
  puts "HTTP RESPONSE BODY:\n#{e.response.body.inspect}\n\n\n"
@@ -107,12 +109,7 @@ module PWN
107
109
 
108
110
  retry
109
111
  rescue StandardError => e
110
- case e.message
111
- when '400 Bad Request', '404 Resource Not Found'
112
- "#{e.message}: #{e.response}"
113
- else
114
- raise e
115
- end
112
+ raise e
116
113
  ensure
117
114
  spinner.stop unless spinner.nil?
118
115
  end
@@ -7,20 +7,50 @@ module PWN
7
7
  module Plugins
8
8
  # This plugin provides useful credit card capabilities
9
9
  module CreditCard
10
+ # Supported Method Parameters::
11
+ # PWN::Plugins::CreditCard.list_types
12
+
13
+ public_class_method def self.list_types
14
+ %i[
15
+ amex
16
+ unionpay
17
+ dankort
18
+ diners
19
+ elo
20
+ discover
21
+ hipercard
22
+ jcb
23
+ maestro
24
+ mastercard
25
+ mir
26
+ rupay
27
+ solo
28
+ switch
29
+ visa
30
+ ]
31
+ rescue StandardError => e
32
+ raise e
33
+ end
34
+
10
35
  # Supported Method Parameters::
11
36
  # PWN::Plugins::CreditCard.generate(
12
- # type: 'required - card to generate :amex|:unionpay|:dankort|:diners|:elo|:discover|:hipercard|:jcb|:maestro|:mastercard|:mir|:rupay|:solo|:switch|:visa',
37
+ # type: 'optional - card type from #list_types method to generate (defaults to :random)',
13
38
  # count: 'optional - number of numbers to generate (defaults to 1)'
14
39
  # )
15
40
 
16
41
  public_class_method def self.generate(opts = {})
17
- type = opts[:type].to_s.scrub.strip.chomp.to_sym
42
+ type = opts[:type] ||= :random
43
+ type = type.to_s.strip.scrub.chomp.downcase.to_sym
44
+
18
45
  count = opts[:count].to_i
19
46
  count = 1 if count.zero?
20
47
 
21
48
  cc_result_arr = []
22
49
  (1..count).each do
23
- cc_result_arr.push(CreditCardValidations::Factory.random(type))
50
+ gen_type = list_types.sample if type == :random
51
+ gen_type = type unless type == :random
52
+ cc_hash = type(cc: CreditCardValidations::Factory.random(gen_type))
53
+ cc_result_arr.push(cc_hash)
24
54
  end
25
55
 
26
56
  cc_result_arr
@@ -35,7 +65,11 @@ module PWN
35
65
 
36
66
  public_class_method def self.type(opts = {})
37
67
  cc = opts[:cc].to_s.scrub.strip.chomp
38
- cc.credit_card_brand
68
+ cc_hash = {}
69
+ cc_hash[:number] = cc
70
+ cc_hash[:type] = cc.credit_card_brand
71
+
72
+ cc_hash
39
73
  rescue StandardError => e
40
74
  raise e
41
75
  end
@@ -52,8 +86,10 @@ module PWN
52
86
 
53
87
  public_class_method def self.help
54
88
  puts "USAGE:
89
+ #{self}.list_types
90
+
55
91
  #{self}.generate(
56
- type: 'required - card to generate :amex|:unionpay|:dankort|:diners|:elo|:discover|:hipercard|:jcb|:maestro|:mastercard|:mir|:rupay|:solo|:switch|:visa',
92
+ type: 'required - card to generate from #list_types method to generate',
57
93
  count: 'optional - number of numbers to generate (defaults to 1)'
58
94
  )
59
95
 
@@ -72,7 +72,7 @@ module PWN
72
72
  end
73
73
 
74
74
  JSON.parse(response, symbolize_names: true)
75
- rescue ExceptionWithResponse => e
75
+ rescue RestClient::ExceptionWithResponse => e
76
76
  case e.message
77
77
  when '400 Bad Request', '404 Resource Not Found'
78
78
  "#{e.message}: #{e.response}"
@@ -165,6 +165,10 @@ module PWN
165
165
  path: 'required - API path to call, without beginning forward slash'
166
166
  )
167
167
 
168
+ **********************************************************************
169
+ * For more information on the Jira Server REST API, see:
170
+ * https://developer.atlassian.com/server/jira/platform/rest-apis/
171
+
168
172
  #{self}.authors
169
173
  "
170
174
  end
@@ -0,0 +1,361 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cgi'
4
+ require 'json'
5
+
6
+ module PWN
7
+ module Plugins
8
+ # This plugin provides useful VIN generation and decoding capabilities using the NHTSA vPIC API
9
+ module VIN
10
+ # Constants for VIN generation
11
+ WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2].freeze
12
+ LETTER_VALUES = {
13
+ 'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8,
14
+ 'J' => 1, 'K' => 2, 'L' => 3, 'M' => 4, 'N' => 5, 'P' => 7, 'R' => 9,
15
+ 'S' => 2, 'T' => 3, 'U' => 4, 'V' => 5, 'W' => 6, 'X' => 7, 'Y' => 8, 'Z' => 9
16
+ }.freeze
17
+ YEAR_CODES = %w[A B C D E F G H J K L M N P R S T V W X Y 1 2 3 4 5 6 7 8 9].freeze
18
+
19
+ # Supported Method Parameters:
20
+ # vin_rest_call(
21
+ # http_method: 'optional - e.g. :get, :post (defaults to :get)',
22
+ # rest_call: 'required - rest call to make per the schema',
23
+ # params: 'optional - params passed in the URI or HTTP Headers',
24
+ # http_headers: 'optional - HTTP Headers to pass in the request'
25
+ # )
26
+ private_class_method def self.vin_rest_call(opts = {})
27
+ http_method = opts[:http_method] || :get
28
+ rest_call = opts[:rest_call]
29
+ params = opts[:params] ||= {}
30
+ headers = opts[:http_headers] ||= {
31
+ content_type: 'application/json; charset=utf-8'
32
+ }
33
+
34
+ base_url = 'https://vpic.nhtsa.dot.gov/api/'
35
+ browser_obj = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)
36
+ rest_client = browser_obj[:browser]::Request
37
+
38
+ case http_method
39
+ when :get
40
+ headers[:params] = params
41
+ response = rest_client.execute(
42
+ method: http_method,
43
+ url: "#{base_url}#{rest_call}",
44
+ headers: headers,
45
+ verify_ssl: false,
46
+ timeout: 5400
47
+ )
48
+ else
49
+ raise ArgumentError, "Unsupported HTTP method: #{http_method}"
50
+ end
51
+
52
+ response
53
+ rescue RestClient::ExceptionWithResponse => e
54
+ if e.response
55
+ puts "HTTP BASE URL: #{base_url}"
56
+ puts "HTTP PATH: #{rest_call}"
57
+ puts "HTTP RESPONSE CODE: #{e.response.code}"
58
+ puts "HTTP RESPONSE HEADERS:\n#{e.response.headers}"
59
+ puts "HTTP RESPONSE BODY:\n#{e.response.body.inspect}\n\n\n"
60
+ end
61
+ rescue StandardError => e
62
+ puts e.backtrace.join("\n")
63
+ raise e
64
+ end
65
+
66
+ # Supported Method Parameters:
67
+ # manufacturers = PWN::Plugins::VIN.get_all_manufacturers
68
+ public_class_method def self.get_all_manufacturers
69
+ rest_call = 'vehicles/getallmanufacturers'
70
+ page = 1
71
+
72
+ all_manufacturers = []
73
+ loop do
74
+ params = {
75
+ format: 'json',
76
+ page: page
77
+ }
78
+ response = vin_rest_call(
79
+ rest_call: rest_call,
80
+ params: params
81
+ )
82
+ json_resp = JSON.parse(response, symbolize_names: true)
83
+ print '.'
84
+ break if json_resp[:Results].empty?
85
+
86
+ page += 1
87
+ all_manufacturers.concat(json_resp[:Results])
88
+ end
89
+
90
+ all_manufacturers
91
+ rescue StandardError => e
92
+ raise e
93
+ end
94
+
95
+ # Supported Method Parameters:
96
+ # makes = PWN::Plugins::VIN.get_all_makes
97
+ public_class_method def self.get_all_makes
98
+ rest_call = 'vehicles/getallmakes'
99
+ params = { format: 'json' }
100
+ response = vin_rest_call(
101
+ rest_call: rest_call,
102
+ params: params
103
+ )
104
+ JSON.parse(response, symbolize_names: true)
105
+ rescue StandardError => e
106
+ raise e
107
+ end
108
+
109
+ # Supported Method Parameters:
110
+ # wmis = PWN::Plugins::VIN.get_wmis_for_manufacturer(
111
+ # mfr: 'required - Mfr_CommonName returned from #get_all_manufacturers method'
112
+ # )
113
+ public_class_method def self.get_wmis_for_manufacturer(opts = {})
114
+ mfr = opts[:mfr]
115
+ raise "Invalid manufacturer: #{mfr}" unless mfr.is_a?(String)
116
+
117
+ uri_encoded_mfr = CGI.escape_uri_component(mfr)
118
+ rest_call = "vehicles/GetWMIsForManufacturer/#{uri_encoded_mfr}"
119
+ params = { format: 'json' }
120
+ response = vin_rest_call(
121
+ rest_call: rest_call,
122
+ params: params
123
+ )
124
+ JSON.parse(response, symbolize_names: true)
125
+ rescue StandardError => e
126
+ raise e
127
+ end
128
+
129
+ # Supported Method Parameters:
130
+ # models = PWN::Plugins::VIN.decode_wmi(
131
+ # wmi: 'required - WMI to decode (e.g. "1FD")'
132
+ # )
133
+ public_class_method def self.decode_wmi(opts = {})
134
+ wmi = opts[:wmi]
135
+ raise "Invalid WMI: #{wmi}" unless wmi.is_a?(String) && wmi.length == 3
136
+
137
+ rest_call = "vehicles/decodewmi/#{wmi}"
138
+ params = { format: 'json' }
139
+ response = vin_rest_call(
140
+ rest_call: rest_call,
141
+ params: params
142
+ )
143
+ JSON.parse(response, symbolize_names: true)
144
+ rescue StandardError => e
145
+ raise e
146
+ end
147
+
148
+ # Supported Method Parameters:
149
+ # models = PWN::Plugins::VIN.decode_vin(
150
+ # vin: 'required - 17 character VIN to decode'
151
+ # )
152
+ public_class_method def self.decode_vin(opts = {})
153
+ vin = opts[:vin]
154
+ raise "Invalid VIN: #{vin}" unless vin.is_a?(String) && vin.length == 17
155
+
156
+ rest_call = "vehicles/decodevin/#{vin}"
157
+ params = { format: 'json' }
158
+ response = vin_rest_call(
159
+ rest_call: rest_call,
160
+ params: params
161
+ )
162
+ JSON.parse(response, symbolize_names: true)
163
+ rescue StandardError => e
164
+ raise e
165
+ end
166
+
167
+ # Supported Method Parameters:
168
+ # models = PWN::Plugins::VIN.get_models_for_make(
169
+ # make: 'required - Make_Name returned from get_all_makes'
170
+ # )
171
+ public_class_method def self.get_models_for_make(opts = {})
172
+ make = opts[:make]
173
+ valid_makes = get_all_makes[:Results].map { |m| m[:Make_Name] }
174
+ raise "Invalid make: #{make}" unless valid_makes.include?(make.to_s.upcase)
175
+
176
+ uri_encoded_make = CGI.escape_uri_component(make)
177
+ rest_call = "vehicles/getmodelsformake/#{uri_encoded_make}"
178
+ params = { format: 'json' }
179
+ response = vin_rest_call(
180
+ rest_call: rest_call,
181
+ params: params
182
+ )
183
+ json_resp = JSON.parse(response, symbolize_names: true)
184
+ rescue StandardError => e
185
+ raise e
186
+ end
187
+
188
+ # Supported Method Parameters:
189
+ # models = PWN::Plugins::VIN.get_models_for_make_year(
190
+ # make: 'required - Make_Name returned from get_all_makes',
191
+ # year: 'optional - e.g. 2023 (defaults to current year)'
192
+ # )
193
+ public_class_method def self.get_models_for_make_year(opts = {})
194
+ make = opts[:make]
195
+ valid_makes = get_all_makes[:Results].map { |m| m[:Make_Name] }
196
+ raise "Invalid make: #{make}" unless valid_makes.include?(make.to_s.upcase)
197
+
198
+ year = opts[:year] || Time.now.year
199
+
200
+ uri_encoded_make = CGI.escape_uri_component(make)
201
+ rest_call = "vehicles/getmodelsformakeyear/make/#{uri_encoded_make}/modelyear/#{year}"
202
+ params = { format: 'json' }
203
+ response = vin_rest_call(
204
+ rest_call: rest_call,
205
+ params: params
206
+ )
207
+ json_resp = JSON.parse(response, symbolize_names: true)
208
+ rescue StandardError => e
209
+ raise e
210
+ end
211
+
212
+ # Supported Method Parameters:
213
+ # models = PWN::Plugins::VIN.get_vehicle_types_for_make(
214
+ # make: 'required - Make_Name returned from get_all_makes'
215
+ # )
216
+ public_class_method def self.get_vehicle_types_for_make(opts = {})
217
+ make = opts[:make]
218
+ valid_makes = get_all_makes[:Results].map { |m| m[:Make_Name] }
219
+ raise "Invalid make: #{make}" unless valid_makes.include?(make.to_s.upcase)
220
+
221
+ uri_encoded_make = CGI.escape_uri_component(make)
222
+ rest_call = "vehicles/GetVehicleTypesForMake/#{uri_encoded_make}"
223
+ params = { format: 'json' }
224
+ response = vin_rest_call(
225
+ rest_call: rest_call,
226
+ params: params
227
+ )
228
+ json_resp = JSON.parse(response, symbolize_names: true)
229
+ rescue StandardError => e
230
+ raise e
231
+ end
232
+
233
+ # Supported Method Parameters:
234
+ # models = PWN::Plugins::VIN.get_manufacturer_details(
235
+ # mfr: 'required - Mfr_Name returned from get_all_manufacturers'
236
+ # )
237
+ public_class_method def self.get_manufacturer_details(opts = {})
238
+ mfr = opts[:mfr]
239
+
240
+ uri_encoded_mfr = CGI.escape_uri_component(mfr)
241
+ rest_call = "vehicles/getmanufacturerdetails/#{uri_encoded_mfr}"
242
+ params = { format: 'json' }
243
+ response = vin_rest_call(
244
+ rest_call: rest_call,
245
+ params: params
246
+ )
247
+ json_resp = JSON.parse(response, symbolize_names: true)
248
+ rescue StandardError => e
249
+ raise e
250
+ end
251
+
252
+ # Supported Method Parameters:
253
+ # vin = PWN::Plugins::VIN.generate_vin(
254
+ # mfr: 'required - manufacturer name (i.e. Mfr_CommonName from #get_all_manufacturers)',
255
+ # year: 'optional - year of the vehicle (defaults to current year)'
256
+ # )
257
+ public_class_method def self.generate_vin(opts = {})
258
+ mfr = opts[:mfr]
259
+ year = opts[:year] || Time.now.year
260
+
261
+ raise ArgumentError, 'Manufacturer is required' unless mfr
262
+
263
+ wmis = get_wmis_for_manufacturer(mfr: mfr)
264
+ raise "No WMIs found for manufacturer: #{mfr}" if wmis[:Results].empty?
265
+
266
+ wmi = wmis[:Results].first[:WMI]
267
+ raise "Invalid WMI: #{wmi}" unless wmi.is_a?(String) && wmi.length == 3
268
+
269
+ # Fixed VDS for simplicity
270
+ vds = '12345'
271
+ year_code = get_year_code(year)
272
+ plant_code = 'A'
273
+ serial = format('%06d', rand(1_000_000))
274
+
275
+ vin = "#{wmi}#{vds}0#{year_code}#{plant_code}#{serial}"
276
+ check_digit = calculate_check_digit(vin)
277
+ vin[8] = check_digit
278
+ vin
279
+ end
280
+
281
+ # Helper method to get the year code for a given year
282
+ private_class_method def self.get_year_code(year)
283
+ index = (year - 1980) % 30
284
+ YEAR_CODES[index]
285
+ end
286
+
287
+ # Helper method to calculate the check digit for a VIN
288
+ private_class_method def self.calculate_check_digit(vin)
289
+ raise "Invalid VIN length: #{vin.length}" unless vin.length == 17
290
+
291
+ total = 0
292
+ vin.each_char.with_index do |char, i|
293
+ # Skip check digit position
294
+ next if i == 8
295
+
296
+ value = if char =~ /\d/
297
+ char.to_i
298
+ else
299
+ LETTER_VALUES[char.upcase] || raise("Invalid character in VIN: #{char}")
300
+ end
301
+ total += value * WEIGHTS[i]
302
+ end
303
+ check_digit = total % 11
304
+ check_digit = 'X' if check_digit == 10
305
+ check_digit.to_s
306
+ end
307
+
308
+ # Author(s):: 0day Inc. <support@0dayinc.com>
309
+ public_class_method def self.authors
310
+ "AUTHOR(S):
311
+ 0day Inc. <support@0dayinc.com>
312
+ "
313
+ end
314
+
315
+ # Display Usage for this Module
316
+ public_class_method def self.help
317
+ puts "USAGE:
318
+ manufacturers = #{self}.get_all_manufacturers
319
+
320
+ makes = #{self}.get_all_makes
321
+
322
+ wmis = #{self}.get_wmis_for_manufacturer(
323
+ mfr: 'required - Mfr_CommonName returned from #get_all_manufacturers method'
324
+ )
325
+
326
+ models = #{self}.decode_wmi(
327
+ wmi: 'required - WMI to decode (e.g. \"1FD\")'
328
+ )
329
+
330
+ models = #{self}.decode_vin(
331
+ vin: 'required - 17 character VIN to decode'
332
+ )
333
+
334
+ models = #{self}.get_models_for_make(
335
+ make: 'required - Make_Name returned from get_all_makes'
336
+ )
337
+
338
+ models = #{self}.get_models_for_make_year(
339
+ make: 'required - Make_Name returned from get_all_makes',
340
+ year: 'optional - e.g. 2023 (defaults to current year)'
341
+ )
342
+
343
+ models = #{self}.get_vehicle_types_for_make(
344
+ make: 'required - Make_Name returned from get_all_makes'
345
+ )
346
+
347
+ details = #{self}.get_manufacturer_details(
348
+ mfr: 'required - Mfr_Name returned from get_all_manufacturers'
349
+ )
350
+
351
+ vin = #{self}.generate_vin(
352
+ mfr: 'required - manufacturer name (e.g., Mfr_CommonName from get_all_manufacturers)',
353
+ year: 'optional - year of the vehicle (defaults to current year)'
354
+ )
355
+
356
+ #{self}.authors
357
+ "
358
+ end
359
+ end
360
+ end
361
+ end
data/lib/pwn/plugins.rb CHANGED
@@ -72,6 +72,7 @@ module PWN
72
72
  autoload :TwitterAPI, 'pwn/plugins/twitter_api'
73
73
  autoload :URIScheme, 'pwn/plugins/uri_scheme'
74
74
  autoload :Vault, 'pwn/plugins/vault'
75
+ autoload :VIN, 'pwn/plugins/vin'
75
76
  autoload :Voice, 'pwn/plugins/voice'
76
77
  autoload :Vsphere, 'pwn/plugins/vsphere'
77
78
  autoload :XXD, 'pwn/plugins/xxd'
data/lib/pwn/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.5.277'
4
+ VERSION = '0.5.279'
5
5
  end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PWN
4
+ module WWW
5
+ # This plugin supports Wayback Machine actions.
6
+ module WaybackMachine
7
+ # Supported Method Parameters::
8
+ # browser_obj = PWN::WWW::WaybackMachine.open(
9
+ # browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
10
+ # proxy: 'optional - scheme://proxy_host:port || tor'
11
+ # )
12
+
13
+ public_class_method def self.open(opts = {})
14
+ browser_obj = PWN::Plugins::TransparentBrowser.open(opts)
15
+
16
+ browser = browser_obj[:browser]
17
+ browser.goto('https://web.archive.org')
18
+
19
+ browser_obj
20
+ rescue StandardError => e
21
+ raise e
22
+ end
23
+
24
+ # Supported Method Parameters::
25
+ # browser_obj = PWN::WWW::WaybackMachine.search(
26
+ # browser_obj: 'required - browser_obj returned from #open method',
27
+ # q: 'required - search string'
28
+ # )
29
+
30
+ public_class_method def self.search(opts = {})
31
+ browser_obj = opts[:browser_obj]
32
+ q = opts[:q].to_s
33
+
34
+ browser = browser_obj[:browser]
35
+ browser.text_field(name: 'query').wait_until(&:present?).set(q).submit
36
+
37
+ browser_obj
38
+ rescue StandardError => e
39
+ raise e
40
+ end
41
+
42
+ # Supported Method Parameters::
43
+ # browser_obj = PWN::WWW::WaybackMachine.timetravel(
44
+ # browser_obj: 'required - browser_obj returned from #open method',
45
+ # uri: 'required - URI (e.g. https://example.com)',
46
+ # date: 'optional - date in YYYYMMDD format (Defaults to today)'
47
+ # )
48
+
49
+ public_class_method def self.timetravel(opts = {})
50
+ browser_obj = opts[:browser_obj]
51
+ uri = opts[:uri].to_s
52
+ date = opts[:date] ||= Time.now.strftime('%Y%m%d')
53
+
54
+ browser = browser_obj[:browser]
55
+ browser.goto("https://web.archive.org/web/#{date}/#{uri}")
56
+
57
+ browser_obj
58
+ rescue StandardError => e
59
+ raise e
60
+ end
61
+
62
+ # Supported Method Parameters::
63
+ # browser_obj = PWN::WWW::WaybackMachine.close(
64
+ # browser_obj: 'required - browser_obj returned from #open method'
65
+ # )
66
+
67
+ public_class_method def self.close(opts = {})
68
+ browser_obj = opts[:browser_obj]
69
+ PWN::Plugins::TransparentBrowser.close(
70
+ browser_obj: browser_obj
71
+ )
72
+ rescue StandardError => e
73
+ raise e
74
+ end
75
+
76
+ # Author(s):: 0day Inc. <support@0dayinc.com>
77
+
78
+ public_class_method def self.authors
79
+ "AUTHOR(S):
80
+ 0day Inc. <support@0dayinc.com>
81
+ "
82
+ end
83
+
84
+ # Display Usage for this Module
85
+
86
+ public_class_method def self.help
87
+ puts "USAGE:
88
+ browser_obj = #{self}.open(
89
+ browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
90
+ proxy: 'optional - scheme://proxy_host:port || tor'
91
+ )
92
+
93
+ browser_obj = #{self}.search(
94
+ browser_obj: 'required - browser_obj returned from #open method',
95
+ q: 'required search string'
96
+ )
97
+
98
+ browser_obj = #{self}.timetravel(
99
+ browser_obj: 'required - browser_obj returned from #open method',
100
+ uri: 'required - URI (e.g. https://example.com)',
101
+ date: 'optional - date in YYYYMMDD format (Defaults to today)'
102
+ )
103
+
104
+ browser_obj = #{self}.close(
105
+ browser_obj: 'required - browser_obj returned from #open method',
106
+ )
107
+
108
+ #{self}.authors
109
+ "
110
+ end
111
+ end
112
+ end
113
+ end
@@ -66,17 +66,17 @@ module PWN
66
66
 
67
67
  public_class_method def self.help
68
68
  puts "USAGE:
69
- browser_obj =#{self}.open(
69
+ browser_obj = #{self}.open(
70
70
  browser_type: 'optional - :firefox|:chrome|:ie|:headless (Defaults to :firefox)',
71
71
  proxy: 'optional - scheme://proxy_host:port || tor'
72
72
  )
73
73
 
74
- browser_obj =#{self}.search(
74
+ browser_obj = #{self}.search(
75
75
  browser_obj: 'required - browser_obj returned from #open method',
76
76
  q: 'required search string'
77
77
  )
78
78
 
79
- browser_obj =#{self}.close(
79
+ browser_obj = #{self}.close(
80
80
  browser_obj: 'required - browser_obj returned from #open method',
81
81
  )
82
82
 
data/lib/pwn/www.rb CHANGED
@@ -24,6 +24,7 @@ module PWN
24
24
  autoload :Twitter, 'pwn/www/twitter'
25
25
  autoload :Uber, 'pwn/www/uber'
26
26
  autoload :Upwork, 'pwn/www/upwork'
27
+ autoload :WaybackMachine, 'pwn/www/wayback_machine'
27
28
  autoload :Youtube, 'pwn/www/youtube'
28
29
 
29
30
  # Display a List of Every PWN::WWW Module
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::Plugins::VIN do
6
+ it 'should display information for authors' do
7
+ authors_response = PWN::Plugins::VIN
8
+ expect(authors_response).to respond_to :authors
9
+ end
10
+
11
+ it 'should display information for existing help method' do
12
+ help_response = PWN::Plugins::VIN
13
+ expect(help_response).to respond_to :help
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::WWW::WaybackMachine do
6
+ it 'should display information for authors' do
7
+ authors_response = PWN::WWW::WaybackMachine
8
+ expect(authors_response).to respond_to :authors
9
+ end
10
+
11
+ it 'should display information for existing help method' do
12
+ help_response = PWN::WWW::WaybackMachine
13
+ expect(help_response).to respond_to :help
14
+ end
15
+ end
@@ -472,7 +472,7 @@
472
472
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.bd_bin_analysis_rest_call Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.bd_bin_analysis_rest_call`: Supported Method Parameters\n\nbd_bin_analysis_rest_call(\n\ntoken: 'required - Black Duck Binary Analysis API token',\nhttp_method: 'optional HTTP method (defaults to GET)\nrest_call: 'required rest call to make per the schema',\nparams: 'optional params passed in the URI or HTTP Headers',\nhttp_headers: 'optional HTTP headers sent in HTTP methods that support it e.g. POST'\nhttp_body: 'optional HTTP body sent in HTTP methods that support it e.g. POST'\n\n)\n"}]}
473
473
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.create_group Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.create_group`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.create_group(\n\ntoken: 'required - Bearer token',\nname: 'required - group name',\ndesc: 'optional - group description',\nparent_id: 'optional - parent group id',\ndelete_binary: 'optional - delete binary after analysis C|Y|N (Default: C== company default)',\nbinary_cleanup_age: 'optional - after how long the binary will be deleted in seconds (Default: 2_592_000 / 30 days)',\nproduct_cleanup_age: 'optional - after how long the product will be deleted in seconds (Default: 2_592_000 / 30 days)',\nfile_download_enabled: 'optional - allow download of uploaded binaries from group (Default: false),\nlow_risk_tolerance: 'optional - low risk tolerance nil|true|false (Default: nil == company default)',\ninclude_historical_vulns: 'optional - include historical vulns nil|true|false (Default: nil == company default)',\ncvss3_fallback: 'optional - cvss3 fallback nil|true|false (Default: nil == company default)',\nassume_unknown_version_as_latest: 'optional - assume unknown version as latest nil|true|false (Default: nil == company default)',\ncustom_data: 'optional - custom data hash (Default: {}, see group metadata for details)',\nscan_infoleak: 'optional - scan infoleak nil|true|false (Default: nil == company default)',\ncode_analysis: 'optional - code analysis nil|true|false (Default: nil == company default)',\nscan_code_similarity: 'optional - scan code similarity nil|true|false (Default: nil == company default)'\n\n)\n"}]}
474
474
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.delete_group Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.delete_group`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.delete_group(\n\ntoken: 'required - Bearer token',\ngroup_id: 'required - group id'\n\n)\n"}]}
475
- {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.generate_product_report Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.generate_product_report`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.generate_product_report(\n\ntoken: 'required - Bearer token',\nproduct_id: 'required - product id',\noutput_path: 'required - path to output file',\ntype: 'optional - report type csv_libs||csv_vulns|pdf (Defaults to csv_vulns)'\n\n)\n"}]}
475
+ {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.generate_product_report Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.generate_product_report`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.generate_product_report(\n\ntoken: 'required - Bearer token',\nproduct_id: 'required - product id',\noutput_path: 'required - path to output file',\ntype: 'optional - report type csv_libs||csv_vulns|pdf|spdx (Defaults to csv_vulns)'\n\n)\n"}]}
476
476
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.get_apps Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.get_apps`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.get_apps(\n\ntoken: 'required - Bearer token'\n\n)\n"}]}
477
477
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.get_apps_by_group Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.get_apps_by_group`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.get_apps_by_group(\n\ntoken: 'required - Bearer token',\ngroup_id: 'required - group id'\n\n)\n"}]}
478
478
  {"messages":[{"role":"user","content":"PWN::Plugins::BlackDuckBinaryAnalysis.get_audit_trail Usage"},{"role":"assistant","content":"`PWN::Plugins::BlackDuckBinaryAnalysis.get_audit_trail`: Supported Method Parameters\n\nresponse = PWN::Plugins::BlackDuckBinaryAnalysis.get_audit_trail(\n\ntoken: 'required - Bearer token'\n\n)\n"}]}
@@ -536,8 +536,9 @@
536
536
  {"messages":[{"role":"user","content":"PWN::Plugins::Char.punctuation Usage"},{"role":"assistant","content":"`PWN::Plugins::Char.punctuation`: Supported Method Parameters\n\nPWN::Plugins::Char.punctuation\n"}]}
537
537
  {"messages":[{"role":"user","content":"PWN::Plugins::Char.spacing_modifiers Usage"},{"role":"assistant","content":"`PWN::Plugins::Char.spacing_modifiers`: Supported Method Parameters\n\nPWN::Plugins::Char.spacing_modifiers\n"}]}
538
538
  {"messages":[{"role":"user","content":"PWN::Plugins::CreditCard.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::CreditCard.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
539
- {"messages":[{"role":"user","content":"PWN::Plugins::CreditCard.generate Usage"},{"role":"assistant","content":"`PWN::Plugins::CreditCard.generate`: Supported Method Parameters\n\nPWN::Plugins::CreditCard.generate(\n\ntype: 'required - card to generate :amex|:unionpay|:dankort|:diners|:elo|:discover|:hipercard|:jcb|:maestro|:mastercard|:mir|:rupay|:solo|:switch|:visa',\ncount: 'optional - number of numbers to generate (defaults to 1)'\n\n)\n"}]}
539
+ {"messages":[{"role":"user","content":"PWN::Plugins::CreditCard.generate Usage"},{"role":"assistant","content":"`PWN::Plugins::CreditCard.generate`: Supported Method Parameters\n\nPWN::Plugins::CreditCard.generate(\n\ntype: 'optional - card type from #list_types method to generate (defaults to :random)',\ncount: 'optional - number of numbers to generate (defaults to 1)'\n\n)\n"}]}
540
540
  {"messages":[{"role":"user","content":"PWN::Plugins::CreditCard.help Usage"},{"role":"assistant","content":"`PWN::Plugins::CreditCard.help`: "}]}
541
+ {"messages":[{"role":"user","content":"PWN::Plugins::CreditCard.list_types Usage"},{"role":"assistant","content":"`PWN::Plugins::CreditCard.list_types`: Supported Method Parameters\n\nPWN::Plugins::CreditCard.list_types\n"}]}
541
542
  {"messages":[{"role":"user","content":"PWN::Plugins::CreditCard.type Usage"},{"role":"assistant","content":"`PWN::Plugins::CreditCard.type`: Supported Method Parameters\n\nPWN::Plugins::CreditCard.type(\n\ncc: 'required - e.g. XXXX XXXX XXXX XXXX'\n\n)\n"}]}
542
543
  {"messages":[{"role":"user","content":"PWN::Plugins::DAOLDAP.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::DAOLDAP.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
543
544
  {"messages":[{"role":"user","content":"PWN::Plugins::DAOLDAP.connect Usage"},{"role":"assistant","content":"`PWN::Plugins::DAOLDAP.connect`: Supported Method Parameters\n\nPWN::Plugins::DAOLDAP.connect(\n\nhost: 'required host or IP',\nport: 'optional port (defaults to 636)',\nbase: 'required ldap base to search from (e.g. dc=domain,dc=com)'\nencryption: 'optional parameter to protect communication in transit, :simple_tls OR :start_tls'\nauth_method: 'required ldap auth bind method, :simple, :sasl, OR :gss_spnego'\nusername: 'required username (e.g. support@0dayinc.com)',\npassword: 'optional (prompts if left blank)',\n\n)\n"}]}
@@ -963,6 +964,21 @@
963
964
  {"messages":[{"role":"user","content":"PWN::Plugins::URIScheme.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::URIScheme.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
964
965
  {"messages":[{"role":"user","content":"PWN::Plugins::URIScheme.help Usage"},{"role":"assistant","content":"`PWN::Plugins::URIScheme.help`: "}]}
965
966
  {"messages":[{"role":"user","content":"PWN::Plugins::URIScheme.list_all_known Usage"},{"role":"assistant","content":"`PWN::Plugins::URIScheme.list_all_known`: Supported Method Parameters\n\nuri_scheme_arr = PWN::Plugins::URIScheme.list_all_known\n"}]}
967
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
968
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.calculate_check_digit Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.calculate_check_digit`: "}]}
969
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.decode_vin Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.decode_vin`: "}]}
970
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.decode_wmi Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.decode_wmi`: "}]}
971
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.generate_vin Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.generate_vin`: "}]}
972
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_all_makes Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_all_makes`: "}]}
973
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_all_manufacturers Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_all_manufacturers`: "}]}
974
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_manufacturer_details Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_manufacturer_details`: "}]}
975
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_models_for_make Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_models_for_make`: "}]}
976
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_models_for_make_year Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_models_for_make_year`: "}]}
977
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_vehicle_types_for_make Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_vehicle_types_for_make`: "}]}
978
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_wmis_for_manufacturer Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_wmis_for_manufacturer`: "}]}
979
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.get_year_code Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.get_year_code`: "}]}
980
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.help Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.help`: "}]}
981
+ {"messages":[{"role":"user","content":"PWN::Plugins::VIN.vin_rest_call Usage"},{"role":"assistant","content":"`PWN::Plugins::VIN.vin_rest_call`: "}]}
966
982
  {"messages":[{"role":"user","content":"PWN::Plugins::Vault.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
967
983
  {"messages":[{"role":"user","content":"PWN::Plugins::Vault.create Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.create`: Supported Method Parameters\n\nPWN::Plugins::Vault.create(\n\nfile: 'required - encrypted file to create'\n\n)\n"}]}
968
984
  {"messages":[{"role":"user","content":"PWN::Plugins::Vault.decrypt Usage"},{"role":"assistant","content":"`PWN::Plugins::Vault.decrypt`: Supported Method Parameters\n\nPWN::Plugins::Vault.decrypt(\n\nfile: 'required - file to decrypt',\nkey: 'required - key to decrypt',\niv: 'required - iv to decrypt'\n\n)\n"}]}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.277
4
+ version: 0.5.279
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - '='
59
59
  - !ruby/object:Gem::Version
60
- version: 3.2.0
60
+ version: 3.3.0
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - '='
66
66
  - !ruby/object:Gem::Version
67
- version: 3.2.0
67
+ version: 3.3.0
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: barby
70
70
  requirement: !ruby/object:Gem::Requirement
@@ -113,14 +113,14 @@ dependencies:
113
113
  requirements:
114
114
  - - '='
115
115
  - !ruby/object:Gem::Version
116
- version: 5.0.2
116
+ version: 5.1.1
117
117
  type: :runtime
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - '='
122
122
  - !ruby/object:Gem::Version
123
- version: 5.0.2
123
+ version: 5.1.1
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: bundler
126
126
  requirement: !ruby/object:Gem::Requirement
@@ -435,14 +435,14 @@ dependencies:
435
435
  requirements:
436
436
  - - '='
437
437
  - !ruby/object:Gem::Version
438
- version: 2.10.1
438
+ version: 3.1.1
439
439
  type: :runtime
440
440
  prerelease: false
441
441
  version_requirements: !ruby/object:Gem::Requirement
442
442
  requirements:
443
443
  - - '='
444
444
  - !ruby/object:Gem::Version
445
- version: 2.10.1
445
+ version: 3.1.1
446
446
  - !ruby/object:Gem::Dependency
447
447
  name: libusb
448
448
  requirement: !ruby/object:Gem::Requirement
@@ -687,14 +687,14 @@ dependencies:
687
687
  requirements:
688
688
  - - '='
689
689
  - !ruby/object:Gem::Version
690
- version: 0.6.1
690
+ version: 0.6.2
691
691
  type: :runtime
692
692
  prerelease: false
693
693
  version_requirements: !ruby/object:Gem::Requirement
694
694
  requirements:
695
695
  - - '='
696
696
  - !ruby/object:Gem::Version
697
- version: 0.6.1
697
+ version: 0.6.2
698
698
  - !ruby/object:Gem::Dependency
699
699
  name: packetfu
700
700
  requirement: !ruby/object:Gem::Requirement
@@ -785,14 +785,14 @@ dependencies:
785
785
  requirements:
786
786
  - - '='
787
787
  - !ruby/object:Gem::Version
788
- version: 13.2.1
788
+ version: 13.3.0
789
789
  type: :development
790
790
  prerelease: false
791
791
  version_requirements: !ruby/object:Gem::Requirement
792
792
  requirements:
793
793
  - - '='
794
794
  - !ruby/object:Gem::Version
795
- version: 13.2.1
795
+ version: 13.3.0
796
796
  - !ruby/object:Gem::Dependency
797
797
  name: rb-readline
798
798
  requirement: !ruby/object:Gem::Requirement
@@ -827,14 +827,14 @@ dependencies:
827
827
  requirements:
828
828
  - - '='
829
829
  - !ruby/object:Gem::Version
830
- version: 6.14.0
830
+ version: 6.14.1
831
831
  type: :development
832
832
  prerelease: false
833
833
  version_requirements: !ruby/object:Gem::Requirement
834
834
  requirements:
835
835
  - - '='
836
836
  - !ruby/object:Gem::Version
837
- version: 6.14.0
837
+ version: 6.14.1
838
838
  - !ruby/object:Gem::Dependency
839
839
  name: rest-client
840
840
  requirement: !ruby/object:Gem::Requirement
@@ -925,14 +925,14 @@ dependencies:
925
925
  requirements:
926
926
  - - '='
927
927
  - !ruby/object:Gem::Version
928
- version: 1.75.8
928
+ version: 1.77.0
929
929
  type: :runtime
930
930
  prerelease: false
931
931
  version_requirements: !ruby/object:Gem::Requirement
932
932
  requirements:
933
933
  - - '='
934
934
  - !ruby/object:Gem::Version
935
- version: 1.75.8
935
+ version: 1.77.0
936
936
  - !ruby/object:Gem::Dependency
937
937
  name: rubocop-rake
938
938
  requirement: !ruby/object:Gem::Requirement
@@ -1093,28 +1093,28 @@ dependencies:
1093
1093
  requirements:
1094
1094
  - - '='
1095
1095
  - !ruby/object:Gem::Version
1096
- version: 2.6.0
1096
+ version: 2.7.0
1097
1097
  type: :runtime
1098
1098
  prerelease: false
1099
1099
  version_requirements: !ruby/object:Gem::Requirement
1100
1100
  requirements:
1101
1101
  - - '='
1102
1102
  - !ruby/object:Gem::Version
1103
- version: 2.6.0
1103
+ version: 2.7.0
1104
1104
  - !ruby/object:Gem::Dependency
1105
1105
  name: thin
1106
1106
  requirement: !ruby/object:Gem::Requirement
1107
1107
  requirements:
1108
1108
  - - '='
1109
1109
  - !ruby/object:Gem::Version
1110
- version: 1.8.2
1110
+ version: 2.0.1
1111
1111
  type: :runtime
1112
1112
  prerelease: false
1113
1113
  version_requirements: !ruby/object:Gem::Requirement
1114
1114
  requirements:
1115
1115
  - - '='
1116
1116
  - !ruby/object:Gem::Version
1117
- version: 1.8.2
1117
+ version: 2.0.1
1118
1118
  - !ruby/object:Gem::Dependency
1119
1119
  name: tty-prompt
1120
1120
  requirement: !ruby/object:Gem::Requirement
@@ -1877,6 +1877,7 @@ files:
1877
1877
  - lib/pwn/plugins/twitter_api.rb
1878
1878
  - lib/pwn/plugins/uri_scheme.rb
1879
1879
  - lib/pwn/plugins/vault.rb
1880
+ - lib/pwn/plugins/vin.rb
1880
1881
  - lib/pwn/plugins/voice.rb
1881
1882
  - lib/pwn/plugins/vsphere.rb
1882
1883
  - lib/pwn/plugins/xxd.rb
@@ -1952,6 +1953,7 @@ files:
1952
1953
  - lib/pwn/www/twitter.rb
1953
1954
  - lib/pwn/www/uber.rb
1954
1955
  - lib/pwn/www/upwork.rb
1956
+ - lib/pwn/www/wayback_machine.rb
1955
1957
  - lib/pwn/www/youtube.rb
1956
1958
  - packer/daemons/msfrpcd.rb
1957
1959
  - packer/daemons/openvas.rb
@@ -2214,6 +2216,7 @@ files:
2214
2216
  - spec/lib/pwn/plugins/twitter_api_spec.rb
2215
2217
  - spec/lib/pwn/plugins/uri_scheme_spec.rb
2216
2218
  - spec/lib/pwn/plugins/vault_spec.rb
2219
+ - spec/lib/pwn/plugins/vin_spec.rb
2217
2220
  - spec/lib/pwn/plugins/voice_spec.rb
2218
2221
  - spec/lib/pwn/plugins/vsphere_spec.rb
2219
2222
  - spec/lib/pwn/plugins/xxd_spec.rb
@@ -2289,6 +2292,7 @@ files:
2289
2292
  - spec/lib/pwn/www/twitter_spec.rb
2290
2293
  - spec/lib/pwn/www/uber_spec.rb
2291
2294
  - spec/lib/pwn/www/upwork_spec.rb
2295
+ - spec/lib/pwn/www/wayback_machine_spec.rb
2292
2296
  - spec/lib/pwn/www/youtube_spec.rb
2293
2297
  - spec/lib/pwn/www_spec.rb
2294
2298
  - spec/lib/pwn_spec.rb