pwn 0.4.675 → 0.4.677
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/README.md +2 -2
- data/bin/pwn_nmap_discover_tcp_udp +57 -24
- data/lib/pwn/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b08c03bca8748c1673aeaa0a8b30acda7dbe487a82bf560d9aa571838fd702b
|
4
|
+
data.tar.gz: d0113d2805a39025ebd803b8cc0e9495d9aa6056fb32d4d6320aa9d8bd8b7d78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c40a210871e71d7ebca31526807bc03094d87ecb2792da9df14b221efaa8dcbafb13e87a0696d60a85b86dd1620bdd05baca612950ac0eb0e3049debd340b171
|
7
|
+
data.tar.gz: eeba9b20072682b6101fd80dab9376bc95fc0d4093d3b83765a378acb106e7f043352ae2d21ba983ed0ce1b10a0024a3f9fc63560b5a14da99a58380bdf97b8a
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.2.2@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.677]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.2.2@pwn
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
53
53
|
$ gem install --verbose pwn
|
54
54
|
$ pwn
|
55
|
-
pwn[v0.4.
|
55
|
+
pwn[v0.4.677]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
@@ -35,6 +35,7 @@ end
|
|
35
35
|
|
36
36
|
ftimestr = '%Y-%m-%d %H:%M:%S.%N%z'
|
37
37
|
started_at = Time.now.strftime(ftimestr)
|
38
|
+
started_at_parse = Time.parse(started_at)
|
38
39
|
banner = '-' * 64
|
39
40
|
puts "\n\n\n#{banner}"
|
40
41
|
puts "- STARTED: #{started_at} "
|
@@ -153,25 +154,28 @@ begin
|
|
153
154
|
puts "\n\n\n#{banner}"
|
154
155
|
puts '- PHASE 1: Target Discovery'
|
155
156
|
PWN::Plugins::NmapIt.port_scan do |nmap|
|
157
|
+
if with_tor
|
158
|
+
nmap.proxies = proxy
|
159
|
+
nmap.syn_discovery = discovery_tcp_ports.values
|
160
|
+
nmap.ack_discovery = discovery_tcp_ports.values
|
161
|
+
else
|
162
|
+
nmap.ping = true
|
163
|
+
nmap.arp_ping = true
|
164
|
+
nmap.icmp_echo_discovery = true
|
165
|
+
nmap.icmp_timestamp_discovery = true
|
166
|
+
nmap.udp_discovery = discovery_udp_ports.values
|
167
|
+
nmap.sctp_init_ping = discovery_sctp_ports.values
|
168
|
+
end
|
156
169
|
nmap.verbose = true
|
157
170
|
nmap.exclude_file = exclude_file
|
158
171
|
nmap.interface = interface
|
159
172
|
nmap.insane_timing = true
|
160
|
-
nmap.ping = true
|
161
|
-
nmap.arp_ping = true
|
162
|
-
nmap.icmp_echo_discovery = true
|
163
|
-
nmap.icmp_timestamp_discovery = true
|
164
|
-
nmap.syn_discovery = discovery_tcp_ports.values
|
165
|
-
nmap.ack_discovery = discovery_tcp_ports.values
|
166
|
-
nmap.udp_discovery = discovery_udp_ports.values
|
167
|
-
nmap.sctp_init_ping = discovery_sctp_ports.values
|
168
173
|
nmap.output_xml = latest_discovery_results
|
169
174
|
nmap.targets = target_range
|
170
175
|
nmap.randomize_hosts = true
|
171
176
|
nmap.min_parallelism = 36
|
172
177
|
nmap.max_retries = 3
|
173
178
|
nmap.max_scan_delay = 3
|
174
|
-
nmap.proxies = proxy if with_tor
|
175
179
|
end
|
176
180
|
|
177
181
|
# Generate targets.txt from discovery above
|
@@ -181,7 +185,8 @@ begin
|
|
181
185
|
xml_file: latest_discovery_results
|
182
186
|
) do |xml|
|
183
187
|
xml.each_host do |host|
|
184
|
-
next
|
188
|
+
next if File.read(exclude_file).include?(host.ip) ||
|
189
|
+
host.status.state != :up
|
185
190
|
|
186
191
|
hosts_arr = host.hostnames.map { |h| h[:name] }
|
187
192
|
f.print host.ip
|
@@ -194,9 +199,22 @@ begin
|
|
194
199
|
sorted_targets = File.readlines(target_file).sort.join
|
195
200
|
File.write(target_file, sorted_targets)
|
196
201
|
|
202
|
+
phase1_ended_at = Time.now.strftime(ftimestr)
|
203
|
+
phase1_ended_at_parse = Time.parse(phase1_ended_at)
|
204
|
+
elapsed_in_seconds = (phase1_ended_at_parse - started_at_parse).to_f
|
205
|
+
fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
|
206
|
+
puts "\n#{banner}"
|
207
|
+
puts "- DISCOVERY COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
|
208
|
+
puts banner
|
209
|
+
|
210
|
+
puts "\n\n\n#{banner}"
|
211
|
+
puts '- PHASE 2: TCP Port Scanning'
|
212
|
+
puts banner
|
213
|
+
phase2_started_at = Time.now.strftime(ftimestr)
|
214
|
+
phase2_started_at_parse = Time.parse(phase2_started_at)
|
215
|
+
|
197
216
|
# Switch Tor Exit Node if with_tor
|
198
217
|
if with_tor
|
199
|
-
puts "\n\n\n#{banner}"
|
200
218
|
puts '- INFO: Switching to Clean Tor Circuit...'
|
201
219
|
PWN::Plugins::Tor.switch_exit_node(tor_obj: tor_obj)
|
202
220
|
end
|
@@ -204,9 +222,8 @@ begin
|
|
204
222
|
# TCP Scan
|
205
223
|
# Using -T5 template to reduce number of
|
206
224
|
# retransmission attempts on filtered ports.
|
207
|
-
puts "\n\n\n#{banner}"
|
208
|
-
puts '- PHASE 2: TCP Port Scanning'
|
209
225
|
PWN::Plugins::NmapIt.port_scan do |nmap|
|
226
|
+
nmap.proxies = proxy if with_tor
|
210
227
|
nmap.verbose = true
|
211
228
|
nmap.target_file = target_file
|
212
229
|
nmap.randomize_hosts = true
|
@@ -225,13 +242,24 @@ begin
|
|
225
242
|
nmap.min_parallelism = 36
|
226
243
|
nmap.max_retries = 3
|
227
244
|
nmap.max_scan_delay = 3
|
228
|
-
nmap.proxies = proxy if with_tor
|
229
245
|
end
|
230
246
|
FileUtils.cp("#{latest_tcp_results}.nmap", "#{latest_tcp_results}.txt")
|
247
|
+
phase2_ended_at = Time.now.strftime(ftimestr)
|
248
|
+
phase2_ended_at_parse = Time.parse(phase2_ended_at)
|
249
|
+
elapsed_in_seconds = (phase2_ended_at_parse - phase2_started_at).to_f
|
250
|
+
fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
|
251
|
+
puts "\n#{banner}"
|
252
|
+
puts "- TCP SCAN COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
|
253
|
+
puts banner
|
254
|
+
|
255
|
+
puts "\n\n\n#{banner}"
|
256
|
+
puts '- PHASE 3: UDP Port Scanning'
|
257
|
+
puts banner
|
258
|
+
phase3_started_at = Time.now.strftime(ftimestr)
|
259
|
+
phase3_started_at_parse = Time.parse(phase3_started_at)
|
231
260
|
|
232
261
|
# Switch Tor Exit Node if with_tor
|
233
262
|
if with_tor
|
234
|
-
puts "\n\n\n#{banner}"
|
235
263
|
puts '- INFO: Switching to Clean Tor Circuit...'
|
236
264
|
PWN::Plugins::Tor.switch_exit_node(tor_obj: tor_obj)
|
237
265
|
end
|
@@ -239,9 +267,13 @@ begin
|
|
239
267
|
# UDP Scan
|
240
268
|
# Using -T5 template to reduce number of
|
241
269
|
# retransmission attempts on filtered ports.
|
242
|
-
puts "\n\n\n#{banner}"
|
243
|
-
puts '- PHASE 3: UDP Port Scanning'
|
244
270
|
PWN::Plugins::NmapIt.port_scan do |nmap|
|
271
|
+
if with_tor
|
272
|
+
nmap.proxies = proxy
|
273
|
+
else with_tor
|
274
|
+
nmap.default_script = true
|
275
|
+
nmap.update_scriptdb = true
|
276
|
+
end
|
245
277
|
nmap.verbose = true
|
246
278
|
nmap.target_file = target_file
|
247
279
|
nmap.fast = true
|
@@ -254,16 +286,20 @@ begin
|
|
254
286
|
nmap.insane_timing = true
|
255
287
|
nmap.skip_discovery = true
|
256
288
|
nmap.udp_scan = true
|
257
|
-
nmap.default_script = true unless with_tor
|
258
|
-
nmap.update_scriptdb = true unless with_tor
|
259
289
|
nmap.output_all = latest_udp_results
|
260
290
|
nmap.min_parallelism = 36
|
261
291
|
nmap.max_retries = 0
|
262
292
|
nmap.max_scan_delay = 3
|
263
293
|
nmap.data_length = Random.rand(1..256)
|
264
|
-
nmap.proxies = proxy if with_tor
|
265
294
|
end
|
266
295
|
FileUtils.cp("#{latest_udp_results}.nmap", "#{latest_udp_results}.txt")
|
296
|
+
phase3_ended_at = Time.now.strftime(ftimestr)
|
297
|
+
phase3_ended_at_parse = Time.parse(phase3_ended_at)
|
298
|
+
elapsed_in_seconds = (phase3_ended_at_parse - phase3_started_at).to_f
|
299
|
+
fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
|
300
|
+
puts "\n#{banner}"
|
301
|
+
puts "- UDP SCAN COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
|
302
|
+
puts banner
|
267
303
|
rescue SystemExit, Interrupt
|
268
304
|
puts "\nGoodbye."
|
269
305
|
rescue StandardError => e
|
@@ -271,14 +307,11 @@ rescue StandardError => e
|
|
271
307
|
ensure
|
272
308
|
tor_obj = PWN::Plugins::Tor.stop(tor_obj: tor_obj) if with_tor
|
273
309
|
ended_at = Time.now.strftime(ftimestr)
|
274
|
-
puts "\n\n\n#{banner}"
|
275
|
-
puts "- ENDED: #{ended_at}"
|
276
|
-
|
277
|
-
started_at_parse = Time.parse(started_at)
|
278
310
|
ended_at_parse = Time.parse(ended_at)
|
279
311
|
elapsed_in_seconds = (ended_at_parse - started_at_parse).to_f
|
280
312
|
fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
|
281
313
|
puts "\n\n\n#{banner}"
|
314
|
+
puts "- ENDED: #{ended_at}"
|
282
315
|
puts "- SCAN COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
|
283
316
|
puts banner
|
284
317
|
end
|
data/lib/pwn/version.rb
CHANGED