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 +4 -4
- data/.rubocop_todo.yml +9 -5
- data/Gemfile +9 -9
- data/README.md +3 -3
- data/lib/pwn/plugins/black_duck_binary_analysis.rb +3 -6
- data/lib/pwn/plugins/credit_card.rb +41 -5
- data/lib/pwn/plugins/jira_server.rb +5 -1
- data/lib/pwn/plugins/vin.rb +361 -0
- data/lib/pwn/plugins.rb +1 -0
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn/www/wayback_machine.rb +113 -0
- data/lib/pwn/www/youtube.rb +3 -3
- data/lib/pwn/www.rb +1 -0
- data/spec/lib/pwn/plugins/vin_spec.rb +15 -0
- data/spec/lib/pwn/www/wayback_machine_spec.rb +15 -0
- data/third_party/pwn_rdoc.jsonl +18 -2
- metadata +23 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1305b14cb06bf37af02be9bae67675548ee58b5027584e9075f40edc6fbdcdb
|
4
|
+
data.tar.gz: f01c6b1e804c971930662e6aa6d8f7d9c5b8eb6c2a0bab4dcff9956d11e1a2cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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-
|
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:
|
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:
|
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:
|
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.
|
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.
|
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', '
|
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.
|
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.
|
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.
|
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.
|
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.
|
97
|
-
gem 'thin', '
|
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.
|
40
|
+
pwn[v0.5.279]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](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.
|
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.
|
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
|
-
|
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: '
|
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]
|
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
|
-
|
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
|
-
|
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
|
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
@@ -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
|
data/lib/pwn/www/youtube.rb
CHANGED
@@ -66,17 +66,17 @@ module PWN
|
|
66
66
|
|
67
67
|
public_class_method def self.help
|
68
68
|
puts "USAGE:
|
69
|
-
browser_obj
|
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
|
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
|
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
|
data/third_party/pwn_rdoc.jsonl
CHANGED
@@ -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: '
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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
|