pwn 0.4.501 → 0.4.504

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: 9e546fad9868b6dbd8cb95ee377ea94503ed000612051e617eb09951123861ef
4
- data.tar.gz: c995ad6e341e84efbf5f303843a606d8552f8c7490f99c12b99f70f02e60ac46
3
+ metadata.gz: 253136ca915fe42e666099b83268b49fad33ea66e55360bd89bd660948c5263b
4
+ data.tar.gz: 85369110544b7c21a2e86e27c4b4794a52c91952ba8e59b9be3ce0a3e94c601f
5
5
  SHA512:
6
- metadata.gz: 517fdf2e2127a4816bbfd048632fde8716f1bd2c956c1018577d20a0178c356a163c3070881bc7b1607f69ec38b8bb3974ff8001024373f3ec324400270f90ad
7
- data.tar.gz: ff2f7661ff166161d4087d3b0c72bb64534eaa0faee1cb7981a49cde5b38ba9f466f19f8e9ddb5411a30d9db672d19b64264f7d91d4284428f158d1d48712d84
6
+ metadata.gz: 611767de224ab03d45bebb1111366de7a8209ba56ba94165198cffa0ba42ff8d22807f9f43ecff0f9cf641ab80095ff9e284508aa3739dbda5a4d2127201a2d7
7
+ data.tar.gz: 21cc9be2adca3389ad131b461b31d6f4bb8cac59f179edf7f0e8f823c3e0997a3c2c1f80fdad7689ed0fbcd138be2a5bd6e9cdab9eef316c82e6f60296b5a15c
data/Gemfile CHANGED
@@ -18,7 +18,7 @@ gem 'aws-sdk', '3.1.0'
18
18
  gem 'bettercap', '1.6.2'
19
19
  gem 'brakeman', '5.2.3'
20
20
  gem 'bson', '4.15.0'
21
- gem 'bundler', '>=2.3.16'
21
+ gem 'bundler', '>=2.3.17'
22
22
  gem 'bundler-audit', '0.9.1'
23
23
  gem 'bunny', '2.19.0'
24
24
  gem 'colorize', '0.8.1'
@@ -47,7 +47,7 @@ gem 'oily_png', '1.2.1'
47
47
  gem 'os', '1.1.4'
48
48
  gem 'packetfu', '1.1.13'
49
49
  gem 'pdf-reader', '2.10.0'
50
- gem 'pg', '1.3.5'
50
+ gem 'pg', '1.4.1'
51
51
  gem 'pry', '0.14.1'
52
52
  gem 'pry-doc', '1.3.0'
53
53
  gem 'rake', '13.0.6'
@@ -59,15 +59,15 @@ gem 'rex', '2.0.13'
59
59
  gem 'rmagick', '4.2.5'
60
60
  gem 'rspec', '3.11.0'
61
61
  gem 'rtesseract', '3.1.2'
62
- gem 'rubocop', '1.30.1'
62
+ gem 'rubocop', '1.31.2'
63
63
  gem 'rubocop-rake', '0.6.0'
64
- gem 'rubocop-rspec', '2.11.1'
64
+ gem 'rubocop-rspec', '2.12.1'
65
65
  gem 'ruby-audio', '1.6.1'
66
66
  gem 'ruby-nmap', '0.10.0'
67
67
  gem 'ruby-saml', '1.14.0'
68
68
  gem 'rvm', '1.11.3.9'
69
69
  gem 'savon', '2.12.1'
70
- gem 'selenium-devtools', '0.102.0'
70
+ gem 'selenium-devtools', '0.103.0'
71
71
  gem 'serialport', '1.3.2'
72
72
  gem 'sinatra', '2.2.0'
73
73
  gem 'slack-ruby-client', '1.1.0'
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.2@pwn
37
37
  $ rvm list gemsets
38
38
  $ gem install --verbose pwn
39
39
  $ pwn
40
- pwn[v0.4.501]:001 >>> PWN.help
40
+ pwn[v0.4.504]: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.1.2@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.4.501]:001 >>> PWN.help
55
+ pwn[v0.4.504]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -91,11 +91,18 @@ begin
91
91
  # Record Call
92
92
  pid_to_kill = 0
93
93
  wav_file = "#{wav_archive}/#{target_num}-#{start_timestamp}.wav"
94
- sox_params = "-d #{wav_file} trim 0 #{seconds_to_record}"
95
94
 
96
95
  puts red
97
96
  puts "Recording Duration: #{seconds_to_record}s"
98
- system(sox_bin, sox_params)
97
+ system(
98
+ sox_bin,
99
+ '-d',
100
+ wav_file,
101
+ 'trim',
102
+ '0',
103
+ seconds_to_record.to_s
104
+ )
105
+
99
106
  puts 'Complete.'
100
107
  puts end_of_color
101
108
 
@@ -109,11 +116,27 @@ begin
109
116
 
110
117
  puts cayan
111
118
  puts 'Generating Audio Spectrogram...'
112
- sox_params = "#{wav_file} -n spectrogram -o #{wav_file}-spectrogram.png -d #{seconds_to_record}"
113
- system(sox_bin, sox_params)
119
+ system(
120
+ sox_bin,
121
+ wav_file,
122
+ '-n',
123
+ 'spectrogram',
124
+ '-o',
125
+ "#{wav_file}-spectrogram.png",
126
+ '-d',
127
+ seconds_to_record.to_s
128
+ )
129
+
114
130
  puts 'Generating Audio Waveform...'
115
- waveform_params = "-c '#FF0000' -b '#000000' -F #{wav_file} #{wav_file}-waveform.png"
116
- system(waveform_bin, waveform_params)
131
+ system(
132
+ waveform_bin,
133
+ '-c',
134
+ '#FF0000',
135
+ '-b',
136
+ '#000000',
137
+ '-F',
138
+ "#{wav_file} #{wav_file}-waveform.png"
139
+ )
117
140
  puts 'Complete.'
118
141
  puts end_of_color
119
142
 
data/bin/pwn_arachni CHANGED
@@ -117,14 +117,39 @@ begin
117
117
  end
118
118
 
119
119
  # Kick off scan as defined by pwn_arachni flags
120
- system("sudo /bin/bash --login -c \"#{arachni_cmd_str}\"")
120
+ system(
121
+ 'sudo',
122
+ '/bin/bash',
123
+ '--login',
124
+ '-c',
125
+ arachni_cmd_str
126
+ )
121
127
 
122
128
  # Report Scan Results
123
- system("sudo /bin/bash --login -c \"arachni_reporter #{output_dir}/arachni_results.afr --reporter=html:outfile=#{output_dir}/arachni_results.html.zip\"")
124
- system("sudo /bin/bash --login -c \"arachni_reporter #{output_dir}/arachni_results.afr --reporter=json:outfile=#{output_dir}/arachni_results.json\"")
129
+ system(
130
+ 'sudo',
131
+ '/bin/bash',
132
+ '--login',
133
+ '-c',
134
+ "arachni_reporter #{output_dir}/arachni_results.afr --reporter=html:outfile=#{output_dir}/arachni_results.html.zip"
135
+ )
136
+
137
+ system(
138
+ 'sudo',
139
+ '/bin/bash',
140
+ '--login',
141
+ '-c',
142
+ "arachni_reporter #{output_dir}/arachni_results.afr --reporter=json:outfile=#{output_dir}/arachni_results.json"
143
+ )
125
144
 
126
145
  # Unzip Results in Output Dir
127
- system("sudo /bin/bash --login -c \"cd #{output_dir} && unzip -o arachni_results.html.zip\"")
146
+ system(
147
+ 'sudo',
148
+ '/bin/bash',
149
+ '--login',
150
+ '-c',
151
+ "cd #{output_dir} && unzip -o arachni_results.html.zip"
152
+ )
128
153
  rescue StandardError, SystemExit, Interrupt => e
129
154
  raise e
130
155
  ensure
@@ -145,5 +145,12 @@ if start_reporting_server
145
145
  end
146
146
  puts "For Scan Results Navigate to: http://127.0.0.1:#{listen_port}/pwn_fuzz_net_app_proto.html"
147
147
  simple_http_server_params = "-i #{listen_ip} -p #{listen_port}"
148
- system("cd #{dir_path} && pwn_simple_http_server #{simple_http_server_params}")
148
+ Dir.chdir(dir_path)
149
+ system(
150
+ 'pwn_simple_http_server',
151
+ '-i',
152
+ listen_ip,
153
+ '-p',
154
+ listen_port.to_s
155
+ )
149
156
  end
@@ -218,7 +218,15 @@ unless nmap_path == ''
218
218
  # Eyewitness Nmap XML Results
219
219
  unless eyewitness_path == ''
220
220
  print "#{@green}Eyewitness Nmap XML Results...#{@end_of_color}"
221
- system("#{eyewitness_path} -x '#{nmap_xml_results}' -d '#{output_dir}/#{nmap_target}-#{@runtime_timestamp}' --no-prompt --all-protocols")
221
+ system(
222
+ eyewitness_path,
223
+ '-x',
224
+ nmap_xml_results,
225
+ '-d',
226
+ "#{output_dir}/#{nmap_target}-#{@runtime_timestamp}",
227
+ '--no-prompt',
228
+ '--all-protocols'
229
+ )
222
230
  end
223
231
 
224
232
  PWN::Plugins::NmapIt.parse_xml_results(xml_file: nmap_xml_results) do |xml|
data/bin/pwn_sast CHANGED
@@ -147,7 +147,7 @@ begin
147
147
 
148
148
  # Start Simple HTTP Server (If Requested)
149
149
  if start_reporting_server
150
- listen_port = Random.rand(1_025..65_535)
150
+ listen_port = Random.rand(1_025..65_535).to_s
151
151
 
152
152
  if pwn_provider == 'docker'
153
153
  listen_ip = '0.0.0.0'
@@ -156,7 +156,14 @@ begin
156
156
  end
157
157
 
158
158
  puts "For Scan Results Navigate to: http://127.0.0.1:#{listen_port}/pwn_scan_git_source.html"
159
- system("cd #{dir_path} && pwn_simple_http_server -i #{listen_ip} -p #{listen_port}")
159
+ Dir.chdir(dir_path)
160
+ system(
161
+ 'pwn_simple_http_server',
162
+ '-i',
163
+ listen_ip,
164
+ '-p',
165
+ listen_port
166
+ )
160
167
  end
161
168
  rescue SystemExit, Interrupt
162
169
  puts "\nGoodbye."
@@ -35,7 +35,17 @@ else
35
35
  end
36
36
 
37
37
  begin
38
- system("thin start --adapter file --address #{bind_ip} --port #{port} --threaded --debug")
38
+ system(
39
+ 'thin',
40
+ 'start',
41
+ '--adapter file',
42
+ '--address',
43
+ bind_ip,
44
+ '--port',
45
+ port.to_s,
46
+ '--threaded',
47
+ '--debug'
48
+ )
39
49
  rescue RuntimeError
40
50
  puts "WARNING: Service Already Listening on TCP #{port}..."
41
51
  port = Random.rand(1_025..65_535)
@@ -8,7 +8,6 @@ module PWN
8
8
  module BusPirate
9
9
  # Supported Method Parameters::
10
10
  # PWN::Plugins::BusPirate.connect_via_screen(
11
- # screen_bin: 'optional - defaults to /usr/bin/screen'
12
11
  # block_dev: 'optional - serial block device path (defaults to /dev/ttyUSB0)'
13
12
  # )
14
13
 
@@ -17,19 +16,19 @@ module PWN
17
16
  opts[:block_dev].to_s
18
17
  )
19
18
 
20
- block_dev = '/dev/ttyUSB0' if opts[:block_dev].nil?
21
-
22
- if opts[:screen_bin].nil?
23
- screen_bin = '/usr/bin/screen'
24
- else
25
- screen_bin = opts[:screen_bin].to_s.strip.chomp.scrub
26
- end
19
+ block_dev ||= '/dev/ttyUSB0'
27
20
 
21
+ screen_bin = '/usr/bin/screen'
28
22
  raise "ERROR: #{screen_bin} not found." unless File.exist?(screen_bin)
29
23
 
30
- screen_params = "#{block_dev} 115200 8 N 1"
31
- screen_cmd = "#{screen_bin} #{screen_params}"
32
- system(screen_cmd)
24
+ system(
25
+ screen_bin,
26
+ block_dev,
27
+ '115200',
28
+ '8',
29
+ 'N',
30
+ '1'
31
+ )
33
32
  rescue StandardError => e
34
33
  raise e
35
34
  end
@@ -120,7 +119,6 @@ module PWN
120
119
  public_class_method def self.help
121
120
  puts "USAGE:
122
121
  #{self}.connect_via_screen(
123
- screen_bin: 'optional - defaults to /usr/bin/screen'
124
122
  block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)'
125
123
  )
126
124
 
@@ -0,0 +1,136 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module PWN
6
+ module Plugins
7
+ # This plugin is used for interacting w/ Github's REST API using
8
+ # the 'rest' browser type of PWN::Plugins::TransparentBrowser.
9
+ module Github
10
+ @@logger = PWN::Plugins::PWNLogger.create
11
+
12
+ # Supported Method Parameters::
13
+ # github_rest_call(
14
+ # http_method: 'optional HTTP method (defaults to GET)
15
+ # rest_call: 'required rest call to make per the schema',
16
+ # params: 'optional params passed in the URI or HTTP Headers',
17
+ # http_body: 'optional HTTP body sent in HTTP methods that support it e.g. POST'
18
+ # )
19
+
20
+ private_class_method def self.github_rest_call(opts = {})
21
+ http_method = if opts[:http_method].nil?
22
+ :get
23
+ else
24
+ opts[:http_method].to_s.scrub.to_sym
25
+ end
26
+ rest_call = opts[:rest_call].to_s.scrub
27
+ params = opts[:params]
28
+ http_body = opts[:http_body].to_s.scrub
29
+ base_gist_api_uri = 'https://api.github.com'
30
+
31
+ rest_client = PWN::Plugins::TransparentBrowser.open(browser_type: :rest)::Request
32
+
33
+ case http_method
34
+ when :get
35
+ response = rest_client.execute(
36
+ method: :get,
37
+ url: "#{base_gist_api_uri}/#{rest_call}",
38
+ headers: {
39
+ content_type: 'application/json; charset=UTF-8',
40
+ params: params
41
+ },
42
+ verify_ssl: false
43
+ )
44
+
45
+ when :post
46
+ response = rest_client.execute(
47
+ method: :post,
48
+ url: "#{base_gist_api_uri}/#{rest_call}",
49
+ headers: {
50
+ content_type: 'application/json; charset=UTF-8',
51
+ params: params
52
+ },
53
+ payload: http_body,
54
+ verify_ssl: false
55
+ )
56
+
57
+ else
58
+ raise @@logger.error("Unsupported HTTP Method #{http_method} for #{self} Plugin")
59
+ end
60
+
61
+ response
62
+ rescue RestClient::Forbidden
63
+ raise response
64
+ rescue RestClient::BadRequest, RestClient::NotFound, StandardError => e
65
+ raise
66
+ end
67
+
68
+ # Supported Method Parameters::
69
+ # response_json = PWN::Plugins::Github.download_all_gists(
70
+ # username: 'required - username of gists to backup',
71
+ # target_dir: 'required - target directory to save respective gists'
72
+ # )
73
+
74
+ public_class_method def self.download_all_gists(opts = {})
75
+ username = opts[:username].to_s.scrub
76
+ target_dir = opts[:target_dir].to_s.scrub
77
+
78
+ raise "ERROR: #{target_dir} Does Not Exist." unless Dir.exist?(target_dir)
79
+
80
+ params = {}
81
+ page = 1
82
+ response_json = [{}]
83
+ while response_json.any?
84
+ params[:page] = page
85
+ response_body = github_rest_call(
86
+ rest_call: "users/#{username}/gists",
87
+ params: params
88
+ ).body
89
+
90
+ Dir.chdir(target_dir)
91
+ response_json = JSON.parse(response_body, symbolize_names: true)
92
+ response_json.each do |gist_hash|
93
+ clone_dir = gist_hash[:id]
94
+ clone_uri = gist_hash[:git_pull_url]
95
+ next if Dir.exist?(clone_dir)
96
+
97
+ print "Cloning: #{clone_uri}..."
98
+ system(
99
+ 'git',
100
+ 'clone',
101
+ clone_uri
102
+ )
103
+ puts 'complete.'
104
+ end
105
+
106
+ page += 1
107
+ end
108
+
109
+ response_json
110
+ rescue StandardError => e
111
+ raise e
112
+ end
113
+
114
+ # Author(s):: 0day Inc. <request.pentest@0dayinc.com>
115
+
116
+ public_class_method def self.authors
117
+ "AUTHOR(S):
118
+ 0day Inc. <request.pentest@0dayinc.com>
119
+ "
120
+ end
121
+
122
+ # Display Usage for this Module
123
+
124
+ public_class_method def self.help
125
+ puts "USAGE:
126
+ response_json = #{self}.download_all_gists(
127
+ username: 'required - username of gists to download',
128
+ target_dir: 'required - target directory to save respective gists'
129
+ )
130
+
131
+ #{self}.authors
132
+ "
133
+ end
134
+ end
135
+ end
136
+ end
@@ -1107,31 +1107,73 @@ module PWN
1107
1107
  my_os = PWN::Plugins::DetectOS.type
1108
1108
  case my_os
1109
1109
  when :linux
1110
- ipfilter = 'sudo iptables'
1111
- chain_action = '-C'
1112
- ipfilter_rule = "OUTPUT --protocol tcp --source #{pkt.ip_saddr} --destination #{pkt.ip_daddr} --destination-port #{pkt.tcp_dst} --tcp-flags RST RST -j DROP"
1113
-
1114
- ipfilter_cmd = "#{ipfilter} #{chain_action} #{ipfilter_rule}"
1115
-
1116
- unless system(ipfilter_cmd, out: File::NULL, err: File::NULL)
1117
- chain_action = '-A'
1118
- ipfilter_cmd = "#{ipfilter} #{chain_action} #{ipfilter_rule}"
1119
-
1110
+ system_resp = system(
1111
+ 'sudo',
1112
+ 'iptables',
1113
+ '-C',
1114
+ 'OUTPUT',
1115
+ '--protocol',
1116
+ 'tcp',
1117
+ '--source',
1118
+ pkt.ip_saddr,
1119
+ '--destination',
1120
+ pkt.ip_daddr,
1121
+ '--destination-port',
1122
+ pkt.tcp_dst.to_s,
1123
+ '--tcp-flags',
1124
+ 'RST',
1125
+ 'RST',
1126
+ '-j',
1127
+ 'DROP',
1128
+ out: File::NULL,
1129
+ err: File::NULL
1130
+ )
1131
+
1132
+ unless system_resp
1120
1133
  puts 'Preventing kernel from misbehaving when manipulating packets.'
1121
- puts 'Creating the following iptables rule:'
1122
- puts ipfilter_cmd
1123
- system(ipfilter_cmd)
1124
-
1125
- puts "Be sure to delete iptables rule, once completed. Here's how:"
1126
- chain_action = '-D'
1127
- ipfilter_cmd = "#{ipfilter} #{chain_action} #{ipfilter_rule}"
1128
- puts ipfilter_cmd
1134
+ system(
1135
+ 'sudo',
1136
+ 'iptables',
1137
+ '-A',
1138
+ 'OUTPUT',
1139
+ '--protocol',
1140
+ 'tcp',
1141
+ '--source',
1142
+ pkt.ip_saddr,
1143
+ '--destination',
1144
+ pkt.ip_daddr,
1145
+ '--destination-port',
1146
+ pkt.tcp_dst.to_s,
1147
+ '--tcp-flags',
1148
+ 'RST',
1149
+ 'RST',
1150
+ '-j',
1151
+ 'DROP'
1152
+ )
1129
1153
  end
1130
1154
 
1131
1155
  pkt.recalc
1132
1156
  pkt.to_w(iface)
1133
1157
 
1134
- system(ipfilter, "-D #{ipfilter_rule}")
1158
+ system(
1159
+ 'sudo',
1160
+ 'iptables',
1161
+ '-D',
1162
+ 'OUTPUT',
1163
+ '--protocol',
1164
+ 'tcp',
1165
+ '--source',
1166
+ pkt.ip_saddr,
1167
+ '--destination',
1168
+ pkt.ip_daddr,
1169
+ '--destination-port',
1170
+ pkt.tcp_dst.to_s,
1171
+ '--tcp-flags',
1172
+ 'RST',
1173
+ 'RST',
1174
+ '-j',
1175
+ 'DROP'
1176
+ )
1135
1177
  # when :osx
1136
1178
  # ipfilter = 'pfctl'
1137
1179
  # ipfilter_rule = "block out proto tcp from #{pkt.ip_saddr} to #{pkt.ip_daddr} port #{pkt.tcp_dst} flags R"
@@ -7,7 +7,6 @@ module PWN
7
7
  module RFIDler
8
8
  # Supported Method Parameters::
9
9
  # PWN::Plugins::RFIDler.connect_via_screen(
10
- # screen_bin: 'optional - defaults to /usr/bin/screen'
11
10
  # block_dev: 'optional - serial block device path (defaults to /dev/ttyUSB0)'
12
11
  # )
13
12
 
@@ -17,18 +16,18 @@ module PWN
17
16
  )
18
17
 
19
18
  block_dev = '/dev/ttyUSB0' if opts[:block_dev].nil?
20
-
21
- if opts[:screen_bin].nil?
22
- screen_bin = '/usr/bin/screen'
23
- else
24
- screen_bin = opts[:screen_bin].to_s.strip.chomp.scrub
25
- end
19
+ screen_bin = '/usr/bin/screen'
26
20
 
27
21
  raise "ERROR: #{screen_bin} not found." unless File.exist?(screen_bin)
28
22
 
29
- screen_params = "#{block_dev} 9600 8 N 1"
30
- screen_cmd = "#{screen_bin} #{screen_params}"
31
- system(screen_cmd)
23
+ system(
24
+ screen_bin,
25
+ block_dev,
26
+ '9600',
27
+ '8',
28
+ 'N',
29
+ '1'
30
+ )
32
31
  rescue StandardError => e
33
32
  raise e
34
33
  end
@@ -46,7 +45,6 @@ module PWN
46
45
  public_class_method def self.help
47
46
  puts "USAGE:
48
47
  #{self}.connect_via_screen(
49
- screen_bin: 'optional - defaults to /usr/bin/screen'
50
48
  block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)'
51
49
  )
52
50
 
data/lib/pwn/plugins.rb CHANGED
@@ -25,6 +25,7 @@ module PWN
25
25
  autoload :FileFu, 'pwn/plugins/file_fu'
26
26
  autoload :Fuzz, 'pwn/plugins/fuzz'
27
27
  autoload :Git, 'pwn/plugins/git'
28
+ autoload :Github, 'pwn/plugins/github'
28
29
  autoload :HackerOne, 'pwn/plugins/hacker_one'
29
30
  autoload :IBMAppscan, 'pwn/plugins/ibm_appscan'
30
31
  autoload :IPInfo, 'pwn/plugins/ip_info'
@@ -25,7 +25,11 @@ module PWN
25
25
 
26
26
  # JSON object Completion
27
27
  File.open("#{dir_path}/pwn_fuzz_net_app_proto.json", "w:#{char_encoding}") do |f|
28
- f.print(results_hash.to_json.force_encoding(char_encoding))
28
+ f.print(
29
+ JSON.pretty_generate(
30
+ results_hash.to_json.force_encoding(char_encoding)
31
+ )
32
+ )
29
33
  end
30
34
 
31
35
  # Report All the Bugs!!! \o/
@@ -22,9 +22,13 @@ module PWN
22
22
  results_hash = opts[:results_hash]
23
23
 
24
24
  # JSON object Completion
25
- File.open("#{dir_path}/pwn_scan_git_source.json", 'w') do |f|
26
- f.print(results_hash.to_json)
27
- end
25
+ # File.open("#{dir_path}/pwn_scan_git_source.json", 'w') do |f|
26
+ # f.print(results_hash.to_json)
27
+ # end
28
+ File.write(
29
+ "#{dir_path}/pwn_scan_git_source.json",
30
+ JSON.pretty_generate(results_hash.to_json)
31
+ )
28
32
 
29
33
  html_report = %q{<!DOCTYPE HTML>
30
34
  <html>
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.4.501'
4
+ VERSION = '0.4.504'
5
5
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::Plugins::Github do
6
+ it 'should display information for authors' do
7
+ authors_response = PWN::Plugins::Github
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::Github
13
+ expect(help_response).to respond_to :help
14
+ end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.501
4
+ version: 0.4.504
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-16 00:00:00.000000000 Z
11
+ date: 2022-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 2.3.16
117
+ version: 2.3.17
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 2.3.16
124
+ version: 2.3.17
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: bundler-audit
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -506,14 +506,14 @@ dependencies:
506
506
  requirements:
507
507
  - - '='
508
508
  - !ruby/object:Gem::Version
509
- version: 1.3.5
509
+ version: 1.4.1
510
510
  type: :runtime
511
511
  prerelease: false
512
512
  version_requirements: !ruby/object:Gem::Requirement
513
513
  requirements:
514
514
  - - '='
515
515
  - !ruby/object:Gem::Version
516
- version: 1.3.5
516
+ version: 1.4.1
517
517
  - !ruby/object:Gem::Dependency
518
518
  name: pry
519
519
  requirement: !ruby/object:Gem::Requirement
@@ -674,14 +674,14 @@ dependencies:
674
674
  requirements:
675
675
  - - '='
676
676
  - !ruby/object:Gem::Version
677
- version: 1.30.1
677
+ version: 1.31.2
678
678
  type: :runtime
679
679
  prerelease: false
680
680
  version_requirements: !ruby/object:Gem::Requirement
681
681
  requirements:
682
682
  - - '='
683
683
  - !ruby/object:Gem::Version
684
- version: 1.30.1
684
+ version: 1.31.2
685
685
  - !ruby/object:Gem::Dependency
686
686
  name: rubocop-rake
687
687
  requirement: !ruby/object:Gem::Requirement
@@ -702,14 +702,14 @@ dependencies:
702
702
  requirements:
703
703
  - - '='
704
704
  - !ruby/object:Gem::Version
705
- version: 2.11.1
705
+ version: 2.12.1
706
706
  type: :runtime
707
707
  prerelease: false
708
708
  version_requirements: !ruby/object:Gem::Requirement
709
709
  requirements:
710
710
  - - '='
711
711
  - !ruby/object:Gem::Version
712
- version: 2.11.1
712
+ version: 2.12.1
713
713
  - !ruby/object:Gem::Dependency
714
714
  name: ruby-audio
715
715
  requirement: !ruby/object:Gem::Requirement
@@ -786,14 +786,14 @@ dependencies:
786
786
  requirements:
787
787
  - - '='
788
788
  - !ruby/object:Gem::Version
789
- version: 0.102.0
789
+ version: 0.103.0
790
790
  type: :runtime
791
791
  prerelease: false
792
792
  version_requirements: !ruby/object:Gem::Requirement
793
793
  requirements:
794
794
  - - '='
795
795
  - !ruby/object:Gem::Version
796
- version: 0.102.0
796
+ version: 0.103.0
797
797
  - !ruby/object:Gem::Dependency
798
798
  name: serialport
799
799
  requirement: !ruby/object:Gem::Requirement
@@ -1558,6 +1558,7 @@ files:
1558
1558
  - lib/pwn/plugins/file_fu.rb
1559
1559
  - lib/pwn/plugins/fuzz.rb
1560
1560
  - lib/pwn/plugins/git.rb
1561
+ - lib/pwn/plugins/github.rb
1561
1562
  - lib/pwn/plugins/hacker_one.rb
1562
1563
  - lib/pwn/plugins/http_intercept_helper.rb
1563
1564
  - lib/pwn/plugins/ibm_appscan.rb
@@ -1856,6 +1857,7 @@ files:
1856
1857
  - spec/lib/pwn/plugins/file_fu_spec.rb
1857
1858
  - spec/lib/pwn/plugins/fuzz_spec.rb
1858
1859
  - spec/lib/pwn/plugins/git_spec.rb
1860
+ - spec/lib/pwn/plugins/github_spec.rb
1859
1861
  - spec/lib/pwn/plugins/hacker_one_spec.rb
1860
1862
  - spec/lib/pwn/plugins/ibm_appscan_spec.rb
1861
1863
  - spec/lib/pwn/plugins/ip_info_spec.rb
@@ -2005,7 +2007,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2005
2007
  - !ruby/object:Gem::Version
2006
2008
  version: '0'
2007
2009
  requirements: []
2008
- rubygems_version: 3.3.16
2010
+ rubygems_version: 3.3.17
2009
2011
  signing_key:
2010
2012
  specification_version: 4
2011
2013
  summary: Automated Security Testing for CI/CD Pipelines & Beyond