pwn 0.5.57 → 0.5.59

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be55cd1ef6de2ead835c5559f1b03e415bc78373669732ac2733670836a823c4
4
- data.tar.gz: ae9385cbe7ea8ec60ab8089e5820a9a77618d95db8489cfc34fd85f9b024e6a7
3
+ metadata.gz: d514b15a63db15db79339971fcdef2bce732a73e37838618e839aefd47ce2af9
4
+ data.tar.gz: 23d5501f5810546f3348c31f8230e0620dc23a1dd6390b18062d8c8f05bc4e91
5
5
  SHA512:
6
- metadata.gz: f51818e4dec719633a3c5e69b1cd86d676d2e36d031a1666570ac3cf91ab34a9bdcedbbb248e157f5c51667cda1425e25b2e776c5303db050fd7484ff8bcc466
7
- data.tar.gz: 0bf0d8c6aac40dc0859c4ffdca6509c1fdd349935bdeb24f1704c23351f7dc682bef3133456d9a0d570c0ffba6cdd7a406b1fca7186f5d19c508b8a67ceb31c5
6
+ metadata.gz: fe9e53eb796c9abfc2c15ad603600420a7ad5a7500d26a319147ae1ffb852c6f4c7594c4fed061bab235464409f8990fea1eb7c8c2e19ff9b11bd2a08314a6a5
7
+ data.tar.gz: '02409ac5271f7483f4efcf3978298804f5425ae3062aeb670262a712bb769d97c6de7125b5daee150aea923aaa32156dee280f07b59b3b97cd8b4055b966520d'
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.57]:001 >>> PWN.help
40
+ pwn[v0.5.59]: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.3.0@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.5.57]:001 >>> PWN.help
55
+ pwn[v0.5.59]: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.3.0@pwn
62
62
  $ rvmsudo gem uninstall --all --executables pwn
63
63
  $ rvmsudo gem install --verbose pwn
64
64
  $ pwn
65
- pwn[v0.5.57]:001 >>> PWN.help
65
+ pwn[v0.5.59]:001 >>> PWN.help
66
66
  ```
67
67
 
68
68
  PWN periodically upgrades to the latest version of Ruby which is reflected in `/opt/pwn/.ruby-version`. The easiest way to upgrade to the latest version of Ruby from a previous PWN installation is to run the following script:
data/bin/pwn_bdba_scan CHANGED
@@ -183,6 +183,7 @@ begin
183
183
  rescue IO::TimeoutError,
184
184
  RestClient::BadGateway,
185
185
  RestClient::BadRequest,
186
+ RestClient::Conflict,
186
187
  RestClient::Exceptions::OpenTimeout,
187
188
  RestClient::Forbidden,
188
189
  RestClient::GatewayTimeout,
data/bin/pwn_gqrx_scanner CHANGED
@@ -47,8 +47,8 @@ OptionParser.new do |options|
47
47
  opts[:strength_lock] = s
48
48
  end
49
49
 
50
- options.on('-LFLOAT', '--lock-freq-duration=FLOAT', '<Optional - Duration to lock onto Freqency when Strength < --strength-lock value (Defaults to 0.25)>') do |l|
51
- opts[:lock_on_freq_duration] = l
50
+ options.on('-LFLOAT', '--lock-freq-duration=FLOAT', '<Optional - Duration to lock onto Freqency when Strength < --strength-lock value (Defaults to 0.5)>') do |l|
51
+ opts[:lock_freq_duration] = l
52
52
  end
53
53
 
54
54
  options.on('-QFLOAT', '--squelch=FLOAT', '<Optional - Squelch Threshold -150.0 to 0 (Defaults to -50.0)>') do |q|
@@ -190,7 +190,7 @@ def init_freq(opts = {})
190
190
  demodulator_mode = opts[:demodulator_mode]
191
191
  bandwidth = opts[:bandwidth]
192
192
  this_freq = opts[:this_freq]
193
- lock_on_freq_duration = opts[:lock_on_freq_duration]
193
+ lock_freq_duration = opts[:lock_freq_duration]
194
194
  strength_lock = opts[:strength_lock]
195
195
 
196
196
  demod_n_passband = gqrx_cmd(
@@ -242,6 +242,7 @@ def init_freq(opts = {})
242
242
  init_freq_hash = {
243
243
  demod_mode_n_passband: demod_n_passband,
244
244
  frequency: current_freq,
245
+ bandwidth: bandwidth,
245
246
  audio_gain_db: audio_gain_db,
246
247
  squelch: current_squelch,
247
248
  rf_gain: rf_gain,
@@ -249,11 +250,11 @@ def init_freq(opts = {})
249
250
  bb_gain: bb_gain,
250
251
  strength: current_strength,
251
252
  strength_trigger_lock_on_freq: strength_lock,
252
- lock_on_freq_duration: lock_on_freq_duration
253
+ lock_freq_duration: lock_freq_duration
253
254
  }
254
- puts JSON.pretty_generate(init_freq_hash)
255
255
 
256
- sleep lock_on_freq_duration if current_strength > strength_lock
256
+ print '.'
257
+ sleep lock_freq_duration if current_strength > strength_lock
257
258
 
258
259
  init_freq_hash
259
260
  end
@@ -265,10 +266,23 @@ def scan_range(opts = {})
265
266
  start_freq = opts[:start_freq]
266
267
  target_freq = opts[:target_freq]
267
268
  precision = opts[:precision]
268
- lock_on_freq_duration = opts[:lock_on_freq_duration]
269
+ lock_freq_duration = opts[:lock_freq_duration]
269
270
  strength_lock = opts[:strength_lock]
270
271
 
271
272
  multiplier = 10**(precision - 1)
273
+ prev_freq_hash = {
274
+ demod_mode_n_passband: demodulator_mode,
275
+ frequency: start_freq,
276
+ bandwidth: bandwidth,
277
+ audio_gain_db: 0.0,
278
+ squelch: 0.0,
279
+ rf_gain: 0.0,
280
+ if_gain: 0.0,
281
+ bb_gain: 0.0,
282
+ strength: 0.0,
283
+ strength_trigger_lock_on_freq: strength_lock,
284
+ lock_freq_duration: lock_freq_duration
285
+ }
272
286
  if start_freq > target_freq
273
287
  start_freq.downto(target_freq) do |this_freq|
274
288
  next unless (i % multiplier).zero?
@@ -278,9 +292,22 @@ def scan_range(opts = {})
278
292
  demodulator_mode: demodulator_mode,
279
293
  bandwidth: bandwidth,
280
294
  this_freq: this_freq,
281
- lock_on_freq_duration: lock_on_freq_duration,
295
+ lock_freq_duration: lock_freq_duration,
282
296
  strength_lock: strength_lock
283
297
  )
298
+
299
+ current_strength = init_freq_hash[:strength]
300
+ prev_strength = prev_freq_hash[:strength]
301
+ prev_freq = prev_freq_hash[:frequency]
302
+
303
+ approaching_detection = true if current_strength > prev_strength
304
+ if approaching_detection && current_strength < prev_strength
305
+ puts "**** Found a signal at ~ #{prev_freq} Hz ****"
306
+ puts JSON.pretty_generate(prev_freq_hash)
307
+ approaching_detection = false
308
+ end
309
+
310
+ prev_freq_hash = init_freq_hash
284
311
  end
285
312
  else
286
313
  this_freq = start_freq
@@ -290,10 +317,23 @@ def scan_range(opts = {})
290
317
  demodulator_mode: demodulator_mode,
291
318
  bandwidth: bandwidth,
292
319
  this_freq: this_freq,
293
- lock_on_freq_duration: lock_on_freq_duration,
320
+ lock_freq_duration: lock_freq_duration,
294
321
  strength_lock: strength_lock
295
322
  )
296
323
 
324
+ current_strength = init_freq_hash[:strength]
325
+ prev_strength = prev_freq_hash[:strength]
326
+ prev_freq = prev_freq_hash[:frequency]
327
+
328
+ approaching_detection = true if current_strength > prev_strength
329
+ if approaching_detection && current_strength < prev_strength
330
+ puts "\n**** Discovered a signal at #{prev_freq} Hz ****"
331
+ puts JSON.pretty_generate(prev_freq_hash)
332
+ approaching_detection = false
333
+ end
334
+
335
+ prev_freq_hash = init_freq_hash
336
+
297
337
  this_freq += multiplier
298
338
  end
299
339
  end
@@ -323,7 +363,7 @@ begin
323
363
  demodulator_mode.upcase!
324
364
  raise "ERROR: Invalid demodulator mode: #{demodulator_mode}" unless %w[OFF RAW AM FM WFM WFM_ST WFM_ST_OIRT LSB USB CW CWL CWU].include?(demodulator_mode)
325
365
 
326
- bandwidth = opts[:bandwidth] ||= '270.000'
366
+ bandwidth = opts[:bandwidth] ||= '200.000'
327
367
 
328
368
  puts "Setting demodulator mode to #{demodulator_mode} and bandwidth to #{bandwidth}..."
329
369
  bandwidth = bandwidth.to_s.delete('.').to_i unless bandwidth.nil?
@@ -341,7 +381,7 @@ begin
341
381
  resp_ok: 'RPRT 0'
342
382
  )
343
383
 
344
- squelch = opts[:squelch] ||= -50.0
384
+ squelch = opts[:squelch] ||= -63.0
345
385
  squelch = squelch.to_f
346
386
  squelch_resp = gqrx_cmd(
347
387
  gqrx_sock: gqrx_sock,
@@ -353,13 +393,13 @@ begin
353
393
  precision = precision.to_i
354
394
  raise "ERROR: Invalid precision: #{precision}" unless (1..12).include?(precision)
355
395
 
356
- lock_on_freq_duration = opts[:lock_on_freq_duration] ||= 0.25
357
- lock_on_freq_duration = lock_on_freq_duration.to_f
396
+ lock_freq_duration = opts[:lock_freq_duration] ||= 0.5
397
+ lock_freq_duration = lock_freq_duration.to_f
358
398
 
359
- strength_lock = opts[:strength_lock] ||= -45.0
399
+ strength_lock = opts[:strength_lock] ||= -60.0
360
400
  strength_lock = strength_lock.to_f
361
401
 
362
- rf_gain = opts[:rf_gain] ||= 16.0
402
+ rf_gain = opts[:rf_gain] ||= 0.0
363
403
  rf_gain = rf_gain.to_f
364
404
  squelch_resp = gqrx_cmd(
365
405
  gqrx_sock: gqrx_sock,
@@ -367,7 +407,7 @@ begin
367
407
  resp_ok: 'RPRT 0'
368
408
  )
369
409
 
370
- intermediate_gain = opts[:intermediate_gain] ||= 40.0
410
+ intermediate_gain = opts[:intermediate_gain] ||= 32.0
371
411
  intermediate_gain = intermediate_gain.to_f
372
412
  squelch_resp = gqrx_cmd(
373
413
  gqrx_sock: gqrx_sock,
@@ -385,15 +425,16 @@ begin
385
425
 
386
426
  s_freq_pretty = start_freq.to_s.chars.insert(-4, '.').insert(-8, '.').join
387
427
  t_freq_pretty = target_freq.to_s.chars.insert(-4, '.').insert(-8, '.').join
388
- puts "*** Scanning from #{s_freq_pretty} to #{t_freq_pretty}"
428
+ puts "*** Scanning from #{s_freq_pretty} to #{t_freq_pretty}\n\n\n"
389
429
 
390
430
  scan_range(
391
431
  gqrx_sock: gqrx_sock,
392
432
  demodulator_mode: demodulator_mode,
433
+ bandwidth: bandwidth,
393
434
  start_freq: start_freq,
394
435
  target_freq: target_freq,
395
436
  precision: precision,
396
- lock_on_freq_duration: lock_on_freq_duration,
437
+ lock_freq_duration: lock_freq_duration,
397
438
  strength_lock: strength_lock,
398
439
  squelch: squelch
399
440
  )
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.57'
4
+ VERSION = '0.5.59'
5
5
  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.5.57
4
+ version: 0.5.59
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-18 00:00:00.000000000 Z
11
+ date: 2024-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport