pwn 0.5.54 → 0.5.57

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: 60eef74930533185419b5dbf2c7615322d773c7903976ceb024b5c253f9a0671
4
- data.tar.gz: 4106f259eac7b4900786364aa925da5129f4708becfd1a0c22567b5060fbcf08
3
+ metadata.gz: be55cd1ef6de2ead835c5559f1b03e415bc78373669732ac2733670836a823c4
4
+ data.tar.gz: ae9385cbe7ea8ec60ab8089e5820a9a77618d95db8489cfc34fd85f9b024e6a7
5
5
  SHA512:
6
- metadata.gz: 60882fc81a2a5d5fb051468b59b03363b930e9e13f3ec843663c726c7c57fc7e2fcc58fc578b9d40b3b5e7aa4fd93cf5245fa82e1fbc075371f5136cd81b900d
7
- data.tar.gz: 79e0900f4cd455674753db56441e2d87bef11f86a1d976f8a2a6424369e15636e883bb8ef18da4f5fabba6205289dabd7979886b0409f39a5fe17bd8fd44b35b
6
+ metadata.gz: f51818e4dec719633a3c5e69b1cd86d676d2e36d031a1666570ac3cf91ab34a9bdcedbbb248e157f5c51667cda1425e25b2e776c5303db050fd7484ff8bcc466
7
+ data.tar.gz: 0bf0d8c6aac40dc0859c4ffdca6509c1fdd349935bdeb24f1704c23351f7dc682bef3133456d9a0d570c0ffba6cdd7a406b1fca7186f5d19c508b8a67ceb31c5
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.54]:001 >>> PWN.help
40
+ pwn[v0.5.57]: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.54]:001 >>> PWN.help
55
+ pwn[v0.5.57]: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.54]:001 >>> PWN.help
65
+ pwn[v0.5.57]: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_gqrx_scanner CHANGED
@@ -31,7 +31,7 @@ OptionParser.new do |options|
31
31
  opts[:audio_gain_db] = a
32
32
  end
33
33
 
34
- options.on('-BHZ', '--bandwidth=HZ', '<Optional - Set Bandwidth (Defaults to 200.000)>') do |b|
34
+ options.on('-bHZ', '--bandwidth=HZ', '<Optional - Set Bandwidth 0.0 - SDR Bandwidth Limit, e.g. 20.000.000 (Defaults to 270.000)>') do |b|
35
35
  opts[:bandwidth] = b
36
36
  end
37
37
 
@@ -39,20 +39,32 @@ OptionParser.new do |options|
39
39
  opts[:demodulator_mode] = d
40
40
  end
41
41
 
42
- options.on('-LFLOAT', '--lock-freq-duration=FLOAT', '<Optional - Duration to lock onto Freqency when Strength < --strength value (Defaults to 3)>') do |l|
42
+ options.on('-PINT', '--precision=INT', '<Optional - Precision of Frequency 1-12 (Defaults to 5)>') do |p|
43
+ opts[:precision] = p
44
+ end
45
+
46
+ options.on('-SFLOAT', '--strength-lock=FLOAT', '<Optional - Strength to trigger lock on frequency (Defaults to -45.0)>') do |s|
47
+ opts[:strength_lock] = s
48
+ end
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|
43
51
  opts[:lock_on_freq_duration] = l
44
52
  end
45
53
 
46
- options.on('-QFLOAT', '--squelch=FLOAT', '<Optional - Squelch Threshold -150 to 0(Defaults to -63.0)>') do |q|
54
+ options.on('-QFLOAT', '--squelch=FLOAT', '<Optional - Squelch Threshold -150.0 to 0 (Defaults to -50.0)>') do |q|
47
55
  opts[:squelch] = q
48
56
  end
49
57
 
50
- options.on('-PINT', '--precision=INT', '<Optional - Precision of Frequency 1-12 (Defaults to 6)>') do |p|
51
- opts[:precision] = p
58
+ options.on('-RFLOAT', '--rf-gain=FLOAT', '<Optional - RF Gain 0.0-16.0(Defaults to 16.0)>') do |r|
59
+ opts[:rf_gain] = r
52
60
  end
53
61
 
54
- options.on('-SFLOAT', '--strength=FLOAT', '<Optional - Strength to trigger sleep (Defaults to -63.3)>') do |s|
55
- opts[:strength] = s
62
+ options.on('-IFLOAT', '--intermediate-gain=FLOAT', '<Optional - Intermediate Gain 0.0-40.0 (Defaults to 40.0)>') do |i|
63
+ opts[:intermediate_gain] = i
64
+ end
65
+
66
+ options.on('-BFLOAT', '--basedband-gain=FLOAT', '<Optional - Baseband Gain 0.0-62.0 (Defaults to 10.0)>') do |b|
67
+ opts[:baseband_gain] = b
56
68
  end
57
69
  end.parse!
58
70
 
@@ -142,7 +154,8 @@ def gqrx_cmd(opts = {})
142
154
  response = []
143
155
  got_freq = false
144
156
  # Read all responses from gqrx_sock.write
145
- timeout = 0.01 if timeout.nil?
157
+ timeout = 0.001 if timeout.nil?
158
+
146
159
  begin
147
160
  response.push(gqrx_sock.readline.chomp) while gqrx_sock.wait_readable(timeout)
148
161
  raise IOError if response.empty?
@@ -178,7 +191,7 @@ def init_freq(opts = {})
178
191
  bandwidth = opts[:bandwidth]
179
192
  this_freq = opts[:this_freq]
180
193
  lock_on_freq_duration = opts[:lock_on_freq_duration]
181
- strength = opts[:strength]
194
+ strength_lock = opts[:strength_lock]
182
195
 
183
196
  demod_n_passband = gqrx_cmd(
184
197
  gqrx_sock: gqrx_sock,
@@ -196,6 +209,11 @@ def init_freq(opts = {})
196
209
  cmd: 'f'
197
210
  )
198
211
 
212
+ audio_gain_db = gqrx_cmd(
213
+ gqrx_sock: gqrx_sock,
214
+ cmd: 'l AF'
215
+ ).to_f
216
+
199
217
  current_strength = gqrx_cmd(
200
218
  gqrx_sock: gqrx_sock,
201
219
  cmd: 'l STRENGTH'
@@ -206,9 +224,19 @@ def init_freq(opts = {})
206
224
  cmd: 'l SQL'
207
225
  ).to_f
208
226
 
209
- audio_gain_db = gqrx_cmd(
227
+ rf_gain = gqrx_cmd(
210
228
  gqrx_sock: gqrx_sock,
211
- cmd: 'l AF'
229
+ cmd: 'l RF_GAIN'
230
+ ).to_f
231
+
232
+ if_gain = gqrx_cmd(
233
+ gqrx_sock: gqrx_sock,
234
+ cmd: 'l IF_GAIN'
235
+ ).to_f
236
+
237
+ bb_gain = gqrx_cmd(
238
+ gqrx_sock: gqrx_sock,
239
+ cmd: 'l BB_GAIN'
212
240
  ).to_f
213
241
 
214
242
  init_freq_hash = {
@@ -216,12 +244,16 @@ def init_freq(opts = {})
216
244
  frequency: current_freq,
217
245
  audio_gain_db: audio_gain_db,
218
246
  squelch: current_squelch,
247
+ rf_gain: rf_gain,
248
+ if_gain: if_gain,
249
+ bb_gain: bb_gain,
219
250
  strength: current_strength,
220
- trigger_lock_on_freq_strength: strength
251
+ strength_trigger_lock_on_freq: strength_lock,
252
+ lock_on_freq_duration: lock_on_freq_duration
221
253
  }
222
254
  puts JSON.pretty_generate(init_freq_hash)
223
255
 
224
- sleep lock_on_freq_duration if current_strength < strength
256
+ sleep lock_on_freq_duration if current_strength > strength_lock
225
257
 
226
258
  init_freq_hash
227
259
  end
@@ -234,7 +266,7 @@ def scan_range(opts = {})
234
266
  target_freq = opts[:target_freq]
235
267
  precision = opts[:precision]
236
268
  lock_on_freq_duration = opts[:lock_on_freq_duration]
237
- strength = opts[:strength]
269
+ strength_lock = opts[:strength_lock]
238
270
 
239
271
  multiplier = 10**(precision - 1)
240
272
  if start_freq > target_freq
@@ -247,7 +279,7 @@ def scan_range(opts = {})
247
279
  bandwidth: bandwidth,
248
280
  this_freq: this_freq,
249
281
  lock_on_freq_duration: lock_on_freq_duration,
250
- strength: strength
282
+ strength_lock: strength_lock
251
283
  )
252
284
  end
253
285
  else
@@ -259,7 +291,7 @@ def scan_range(opts = {})
259
291
  bandwidth: bandwidth,
260
292
  this_freq: this_freq,
261
293
  lock_on_freq_duration: lock_on_freq_duration,
262
- strength: strength
294
+ strength_lock: strength_lock
263
295
  )
264
296
 
265
297
  this_freq += multiplier
@@ -291,7 +323,7 @@ begin
291
323
  demodulator_mode.upcase!
292
324
  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)
293
325
 
294
- bandwidth = opts[:bandwidth] ||= '200.000'
326
+ bandwidth = opts[:bandwidth] ||= '270.000'
295
327
 
296
328
  puts "Setting demodulator mode to #{demodulator_mode} and bandwidth to #{bandwidth}..."
297
329
  bandwidth = bandwidth.to_s.delete('.').to_i unless bandwidth.nil?
@@ -301,7 +333,15 @@ begin
301
333
  resp_ok: 'RPRT 0'
302
334
  )
303
335
 
304
- squelch = opts[:squelch] ||= -63.0
336
+ audio_gain_db = opts[:audio_gain_db] ||= 1.0
337
+ audio_gain_db = audio_gain_db.to_f
338
+ audio_gain_db_resp = gqrx_cmd(
339
+ gqrx_sock: gqrx_sock,
340
+ cmd: "L AF #{audio_gain_db}",
341
+ resp_ok: 'RPRT 0'
342
+ )
343
+
344
+ squelch = opts[:squelch] ||= -50.0
305
345
  squelch = squelch.to_f
306
346
  squelch_resp = gqrx_cmd(
307
347
  gqrx_sock: gqrx_sock,
@@ -309,21 +349,37 @@ begin
309
349
  resp_ok: 'RPRT 0'
310
350
  )
311
351
 
312
- precision = opts[:precision] ||= 6
352
+ precision = opts[:precision] ||= 5
313
353
  precision = precision.to_i
314
354
  raise "ERROR: Invalid precision: #{precision}" unless (1..12).include?(precision)
315
355
 
316
- lock_on_freq_duration = opts[:lock_on_freq_duration] ||= 3
356
+ lock_on_freq_duration = opts[:lock_on_freq_duration] ||= 0.25
317
357
  lock_on_freq_duration = lock_on_freq_duration.to_f
318
358
 
319
- strength = opts[:strength] ||= -63.3
320
- strength = strength.to_f
359
+ strength_lock = opts[:strength_lock] ||= -45.0
360
+ strength_lock = strength_lock.to_f
321
361
 
322
- audio_gain_db = opts[:audio_gain_db] ||= 1.0
323
- audio_gain_db = audio_gain_db.to_f
324
- audio_gain_db_resp = gqrx_cmd(
362
+ rf_gain = opts[:rf_gain] ||= 16.0
363
+ rf_gain = rf_gain.to_f
364
+ squelch_resp = gqrx_cmd(
325
365
  gqrx_sock: gqrx_sock,
326
- cmd: "L AF #{audio_gain_db}",
366
+ cmd: "L RF_GAIN #{rf_gain}",
367
+ resp_ok: 'RPRT 0'
368
+ )
369
+
370
+ intermediate_gain = opts[:intermediate_gain] ||= 40.0
371
+ intermediate_gain = intermediate_gain.to_f
372
+ squelch_resp = gqrx_cmd(
373
+ gqrx_sock: gqrx_sock,
374
+ cmd: "L IF_GAIN #{intermediate_gain}",
375
+ resp_ok: 'RPRT 0'
376
+ )
377
+
378
+ baseband_gain = opts[:baseband_gain] ||= 10.0
379
+ baseband_gain = baseband_gain.to_f
380
+ squelch_resp = gqrx_cmd(
381
+ gqrx_sock: gqrx_sock,
382
+ cmd: "L BB_GAIN #{baseband_gain}",
327
383
  resp_ok: 'RPRT 0'
328
384
  )
329
385
 
@@ -338,7 +394,7 @@ begin
338
394
  target_freq: target_freq,
339
395
  precision: precision,
340
396
  lock_on_freq_duration: lock_on_freq_duration,
341
- strength: strength,
397
+ strength_lock: strength_lock,
342
398
  squelch: squelch
343
399
  )
344
400
  puts 'Scan Complete.'
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.54'
4
+ VERSION = '0.5.57'
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.54
4
+ version: 0.5.57
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-17 00:00:00.000000000 Z
11
+ date: 2024-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport