pwn 0.5.79 → 0.5.80
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -2
- data/README.md +3 -3
- data/bin/pwn_gqrx_scanner +21 -4
- data/lib/pwn/plugins/gqrx.rb +247 -1
- data/lib/pwn/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3923f535fc7ac63c41eaaaebaf15f02188e32a0778fcf27affde56ee0091e3f9
|
4
|
+
data.tar.gz: 8318c7472b97602a04eac191973dd16f3cf8d919d7b8dfc4ff209b1ada2a6d80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38311d9cf2164aefe9deaa6b73b74c060e02663706df322dfdcb447351a61c5467fbf59f9f8691e88777c2022cd4d2eaeeedb23e0412ccf0730db70dfdfdc54f
|
7
|
+
data.tar.gz: 01df4c1b51c6872fbf24dd0d9f52208736bb6cda8cccf32062298c870b62359a24c1ed998c37b70d9ab4b40eb6eaefa298011317ebcdeea6386372ca77c59b7d
|
data/Gemfile
CHANGED
@@ -34,11 +34,12 @@ gem 'gdb', '1.0.0'
|
|
34
34
|
gem 'gem-wrappers', '1.4.0'
|
35
35
|
gem 'gist', '6.0.0'
|
36
36
|
gem 'gruff', '0.24.0'
|
37
|
+
# gem 'hidapi', '0.1.9'
|
37
38
|
gem 'htmlentities', '4.3.4'
|
38
39
|
gem 'ipaddress', '0.8.3'
|
39
40
|
gem 'jenkins_api_client2', '1.9.0'
|
40
41
|
gem 'js-beautify', '0.1.8'
|
41
|
-
gem 'json', '2.7.
|
42
|
+
gem 'json', '2.7.2'
|
42
43
|
gem 'jsonpath', '1.1.5'
|
43
44
|
gem 'jwt', '2.8.1'
|
44
45
|
gem 'libusb', '0.6.4'
|
@@ -75,7 +76,7 @@ gem 'rspec', '3.13.0'
|
|
75
76
|
gem 'rtesseract', '3.1.3'
|
76
77
|
gem 'rubocop', '1.62.1'
|
77
78
|
gem 'rubocop-rake', '0.6.0'
|
78
|
-
gem 'rubocop-rspec', '2.
|
79
|
+
gem 'rubocop-rspec', '2.29.1'
|
79
80
|
gem 'ruby-audio', '1.6.1'
|
80
81
|
gem 'ruby-nmap', '1.0.3'
|
81
82
|
gem 'ruby-saml', '1.16.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.80]: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.
|
55
|
+
pwn[v0.5.80]: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.
|
65
|
+
pwn[v0.5.80]: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
@@ -11,7 +11,15 @@ OptionParser.new do |options|
|
|
11
11
|
#{$PROGRAM_NAME} [opts]
|
12
12
|
"
|
13
13
|
|
14
|
-
options.on('-
|
14
|
+
options.on('-aPROFILE', '--assume-profile=PROFILE', '<Required if "--target-freq" is Nil - Profile to assume for common radio protocols. Use "--list-profiles" to display supported protocols (Defaults to nil)') do |p|
|
15
|
+
opts[:profile] = p
|
16
|
+
end
|
17
|
+
|
18
|
+
options.on('-l', '--list-profiles', '<Optional - List supported profiles and exit>') do |l|
|
19
|
+
opts[:list_profiles] = l
|
20
|
+
end
|
21
|
+
|
22
|
+
options.on('-tFREQ', '--target-freq=FREQ', '<Required if "--assume-profile" is Nil - Frequency to Conclude Scanning (e.g. 900.000.000 == 900 mHz>') do |e|
|
15
23
|
opts[:target_freq] = e
|
16
24
|
end
|
17
25
|
|
@@ -35,7 +43,7 @@ OptionParser.new do |options|
|
|
35
43
|
opts[:bandwidth] = b
|
36
44
|
end
|
37
45
|
|
38
|
-
options.on('-DMODE', '--demodulator-mode=MODE', '<Optional - Set Demodulator
|
46
|
+
options.on('-DMODE', '--demodulator-mode=MODE', '<Optional - Set Demodulator Mode OFF | RAW | AM | FM | WFM | WFM_ST | WFM_ST_OIRT | LSB | USB | CW | CWL | CWU (Defaults to WFM_ST)>') do |d|
|
39
47
|
opts[:demodulator_mode] = d
|
40
48
|
end
|
41
49
|
|
@@ -77,10 +85,19 @@ begin
|
|
77
85
|
pwn_provider = 'ruby-gem'
|
78
86
|
pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.any? { |s| s == 'PWN_PROVIDER' }
|
79
87
|
|
88
|
+
list_profiles = opts[:list_profiles]
|
89
|
+
if list_profiles
|
90
|
+
pp PWN::Plugins::GQRX.list_profiles
|
91
|
+
exit 0
|
92
|
+
end
|
93
|
+
|
94
|
+
profile = opts[:profile]
|
95
|
+
opts = PWN::Plugins::GQRX.assume_profile(profile: profile) unless profile.nil?
|
96
|
+
|
80
97
|
target_freq = opts[:target_freq]
|
81
98
|
target_freq = target_freq.to_s.delete('.') unless target_freq.nil?
|
82
99
|
target_freq = target_freq.to_i
|
83
|
-
raise
|
100
|
+
raise 'ERROR: --assume-profile || --target-freq is required.' if target_freq.zero? && profile.nil?
|
84
101
|
|
85
102
|
host = opts[:host]
|
86
103
|
port = opts[:port]
|
@@ -178,5 +195,5 @@ rescue StandardError => e
|
|
178
195
|
rescue Interrupt, SystemExit
|
179
196
|
puts "\nGoodbye."
|
180
197
|
ensure
|
181
|
-
gqrx_sock = PWN::Plugins::GQRX.disconnect(gqrx_sock: gqrx_sock)
|
198
|
+
gqrx_sock = PWN::Plugins::GQRX.disconnect(gqrx_sock: gqrx_sock) unless gqrx_sock.nil?
|
182
199
|
end
|
data/lib/pwn/plugins/gqrx.rb
CHANGED
@@ -23,7 +23,7 @@ module PWN
|
|
23
23
|
# Supported Method Parameters::
|
24
24
|
# gqrx_resp = PWN::Plugins::GQRX.gqrx_cmd(
|
25
25
|
# gqrx_sock: 'required - GQRX socket object returned from #connect method',
|
26
|
-
# cmd: 'required - GQRX command to execute'
|
26
|
+
# cmd: 'required - GQRX command to execute',
|
27
27
|
# resp_ok: 'optional - Expected response from GQRX to indicate success'
|
28
28
|
# )
|
29
29
|
|
@@ -328,6 +328,212 @@ module PWN
|
|
328
328
|
end
|
329
329
|
end
|
330
330
|
|
331
|
+
# Supported Method Parameters::
|
332
|
+
# profiles = PWN::Plugins::GQRX.list_profiles
|
333
|
+
public_class_method def self.list_profiles
|
334
|
+
{
|
335
|
+
ads_b: 'ADS-B, 978mhz to 1090mhz, AM, 4.6mhz bandwidth',
|
336
|
+
analogue_tv: 'Analogue TV, 55.25mhz to 801.25mhz, WFM, 6mhz bandwidth',
|
337
|
+
am_radio: 'AM Radio, 540khz to 1600khz, AM, 6khz bandwidth',
|
338
|
+
bluetooth: 'Bluetooth, 2.4ghz to 2.5ghz, AM, 1mhz bandwidth',
|
339
|
+
cdma: 'CDMA, 824mhz to 849mhz, AM, 1.25mhz bandwidth',
|
340
|
+
cw20: 'CW 20m, 14mhz to 14.35mhz, CW, 150hz bandwidth',
|
341
|
+
cw40: 'CW 40m, 7mhz to 7.3mhz, CW, 150hz bandwidth',
|
342
|
+
cw80: 'CW 80m, 3.5mhz to 3.8mhz, CW, 150hz bandwidth',
|
343
|
+
gps: 'GPS, 1.57542ghz to 1.57545ghz, WFM, 9.6mhz bandwidth',
|
344
|
+
gsm: 'GSM, 935mhz to 960mhz, AM, 200khz bandwidth',
|
345
|
+
fm_radio: 'FM Radio, 88mhz to 108mhz, WFM, 200khz bandwidth',
|
346
|
+
lora433: 'LoRa 433mhz, 433mhz, AM, 125khz bandwidth',
|
347
|
+
lora915: 'LoRa 915mhz, 915mhz, AM, 125khz bandwidth',
|
348
|
+
lowrfid: 'Low RFID, 125khz, AM, 200khz bandwidth',
|
349
|
+
nfcrfid: 'NFC RFID, 13.56mhz, AM, 1mhz bandwidth',
|
350
|
+
radio_fob: 'Radio FOB, 315mhz, AM',
|
351
|
+
rtty20: 'RTTY 20m, 14mhz to 14.35mhz, RTTY, 170hz bandwidth',
|
352
|
+
rtty40: 'RTTY 40m, 7mhz to 7.3mhz, RTTY, 170hz bandwidth',
|
353
|
+
rtty80: 'RTTY 80m, 3.5mhz to 3.8mhz, RTTY, 170hz bandwidth',
|
354
|
+
ssb10: 'SSB 10m, 28mhz to 29.7mhz, USB, 2.7khz bandwidth',
|
355
|
+
ssb12: 'SSB 12m, 24.89mhz to 24.99mhz, USB, 2.7khz bandwidth',
|
356
|
+
ssb15: 'SSB 15m, 21mhz to 21.45mhz, USB, 2.7khz bandwidth',
|
357
|
+
ssb17: 'SSB 17m, 18.068mhz to 18.168mhz, USB, 2.7khz bandwidth',
|
358
|
+
ssb20: 'SSB 20m, 14mhz to 14.35mhz, USB, 2.7khz bandwidth',
|
359
|
+
ssb40: 'SSB 40m, 7mhz to 7.3mhz, LSB, 2.7khz bandwidth',
|
360
|
+
ssb80: 'SSB 80m, 3.5mhz to 3.8mhz, LSB, 2.7khz bandwidth',
|
361
|
+
ssb160: 'SSB 160m, 1.8mhz to 2mhz, LSB, 2.7khz bandwidth',
|
362
|
+
tempest: 'Tempest, 400mhz to 430mhz, AM, 200khz bandwidth',
|
363
|
+
wifi24: 'WiFi 2.4ghz, 2.4ghz to 2.5ghz, AM, 20mhz bandwidth',
|
364
|
+
zigbee: 'Zigbee, 2.405ghz to 2.485ghz, AM, 2mhz bandwidth'
|
365
|
+
}
|
366
|
+
rescue StandardError => e
|
367
|
+
raise e
|
368
|
+
end
|
369
|
+
|
370
|
+
# Supported Method Parameters::
|
371
|
+
# opts = PWN::Plugins::GQRX.assume_profile(
|
372
|
+
# profile: 'required - valid GQRX profile name returned from #list_profiles method'
|
373
|
+
# )
|
374
|
+
public_class_method def self.assume_profile(opts = {})
|
375
|
+
profile = opts[:profile].to_s.to_sym
|
376
|
+
|
377
|
+
opts = {}
|
378
|
+
case profile
|
379
|
+
when :ads_b
|
380
|
+
opts[:start_freq] = '978.000.000'
|
381
|
+
opts[:target_freq] = '1.090.000.000'
|
382
|
+
opts[:demodulator_mode] = 'AM'
|
383
|
+
opts[:bandwidth] = '4.600.000'
|
384
|
+
when :analogue_tv
|
385
|
+
opts[:start_freq] = '55.250.000'
|
386
|
+
opts[:target_freq] = '801.250.000'
|
387
|
+
opts[:demodulator_mode] = 'WFM'
|
388
|
+
opts[:bandwidth] = '6.000'
|
389
|
+
when :am_radio
|
390
|
+
opts[:start_freq] = '540.000'
|
391
|
+
opts[:target_freq] = '1.600.000'
|
392
|
+
opts[:demodulator_mode] = 'AM'
|
393
|
+
opts[:bandwidth] = '6.000'
|
394
|
+
when :bluetooth
|
395
|
+
opts[:start_freq] = '2.400.000.000'
|
396
|
+
opts[:target_freq] = '2.500.000.000'
|
397
|
+
opts[:demodulator_mode] = 'AM'
|
398
|
+
opts[:bandwidth] = '1.000.000'
|
399
|
+
when :cdma
|
400
|
+
opts[:start_freq] = '824.000.000'
|
401
|
+
opts[:target_freq] = '849.000.000'
|
402
|
+
opts[:demodulator_mode] = 'AM'
|
403
|
+
opts[:bandwidth] = '1.250.000'
|
404
|
+
when :cw20
|
405
|
+
opts[:start_freq] = '14.000.000'
|
406
|
+
opts[:target_freq] = '14.350.000'
|
407
|
+
opts[:demodulator_mode] = 'CW'
|
408
|
+
opts[:bandwidth] = '150'
|
409
|
+
when :cw40
|
410
|
+
opts[:start_freq] = '7.000.000'
|
411
|
+
opts[:target_freq] = '7.300.000'
|
412
|
+
opts[:demodulator_mode] = 'CW'
|
413
|
+
opts[:bandwidth] = '150'
|
414
|
+
when :cw80
|
415
|
+
opts[:start_freq] = '3.500.000'
|
416
|
+
opts[:target_freq] = '3.800.000'
|
417
|
+
opts[:demodulator_mode] = 'CW'
|
418
|
+
opts[:bandwidth] = '150'
|
419
|
+
when :gps
|
420
|
+
opts[:start_freq] = '1.575.420.000'
|
421
|
+
opts[:target_freq] = '1.575.450.000'
|
422
|
+
opts[:demodulator_mode] = 'WFM'
|
423
|
+
opts[:bandwidth] = '9.600.000'
|
424
|
+
when :gsm
|
425
|
+
opts[:start_freq] = '935.000.000'
|
426
|
+
opts[:target_freq] = '960.000.000'
|
427
|
+
opts[:demodulator_mode] = 'AM'
|
428
|
+
opts[:bandwidth] = '200.000'
|
429
|
+
when :fm_radio
|
430
|
+
opts[:start_freq] = '88.000.000'
|
431
|
+
opts[:target_freq] = '108.000.000'
|
432
|
+
opts[:demodulator_mode] = 'WFM'
|
433
|
+
opts[:bandwidth] = '200.000'
|
434
|
+
when :lora433
|
435
|
+
opts[:start_freq] = '433.000.000'
|
436
|
+
opts[:target_freq] = '433.000.000'
|
437
|
+
opts[:demodulator_mode] = 'AM'
|
438
|
+
opts[:bandwidth] = '125.000'
|
439
|
+
when :lora915
|
440
|
+
opts[:start_freq] = '915.000.000'
|
441
|
+
opts[:target_freq] = '915.000.000'
|
442
|
+
opts[:demodulator_mode] = 'AM'
|
443
|
+
opts[:bandwidth] = '125.000'
|
444
|
+
when :lowrfid
|
445
|
+
opts[:start_freq] = '125.000'
|
446
|
+
opts[:target_freq] = '125.000'
|
447
|
+
opts[:demodulator_mode] = 'AM'
|
448
|
+
opts[:bandwidth] = '200.000'
|
449
|
+
when :nfcrfid
|
450
|
+
opts[:start_freq] = '13.560.000'
|
451
|
+
opts[:target_freq] = '13.560.000'
|
452
|
+
opts[:demodulator_mode] = 'AM'
|
453
|
+
opts[:bandwidth] = '1.000.000'
|
454
|
+
when :radio_fob
|
455
|
+
opts[:start_freq] = '315.000.000'
|
456
|
+
opts[:target_freq] = '315.000.000'
|
457
|
+
opts[:demodulator_mode] = 'AM'
|
458
|
+
when :rtty20
|
459
|
+
opts[:start_freq] = '14.000.000'
|
460
|
+
opts[:target_freq] = '14.350.000'
|
461
|
+
opts[:demodulator_mode] = 'RTTY'
|
462
|
+
opts[:bandwidth] = '170'
|
463
|
+
when :rtty40
|
464
|
+
opts[:start_freq] = '7.000.000'
|
465
|
+
opts[:target_freq] = '7.300.000'
|
466
|
+
opts[:demodulator_mode] = 'RTTY'
|
467
|
+
opts[:bandwidth] = '170'
|
468
|
+
when :rtty80
|
469
|
+
opts[:start_freq] = '3.500.000'
|
470
|
+
opts[:target_freq] = '3.800.000'
|
471
|
+
opts[:demodulator_mode] = 'RTTY'
|
472
|
+
opts[:bandwidth] = '170'
|
473
|
+
when :ssb10
|
474
|
+
opts[:start_freq] = '28.000.000'
|
475
|
+
opts[:target_freq] = '29.700.000'
|
476
|
+
opts[:demodulator_mode] = 'USB'
|
477
|
+
opts[:bandwidth] = '2.700'
|
478
|
+
when :ssb12
|
479
|
+
opts[:start_freq] = '24.890.000'
|
480
|
+
opts[:target_freq] = '24.990.000'
|
481
|
+
opts[:demodulator_mode] = 'USB'
|
482
|
+
opts[:bandwidth] = '2.700'
|
483
|
+
when :ssb15
|
484
|
+
opts[:start_freq] = '21.000.000'
|
485
|
+
opts[:target_freq] = '21.450.000'
|
486
|
+
opts[:demodulator_mode] = 'USB'
|
487
|
+
opts[:bandwidth] = '2.700'
|
488
|
+
when :ssb17
|
489
|
+
opts[:start_freq] = '18.068.000'
|
490
|
+
opts[:target_freq] = '18.168.000'
|
491
|
+
opts[:demodulator_mode] = 'USB'
|
492
|
+
opts[:bandwidth] = '2.700'
|
493
|
+
when :ssb20
|
494
|
+
opts[:start_freq] = '14.000.000'
|
495
|
+
opts[:target_freq] = '14.350.000'
|
496
|
+
opts[:demodulator_mode] = 'USB'
|
497
|
+
opts[:bandwidth] = '2.700'
|
498
|
+
when :ssb40
|
499
|
+
opts[:start_freq] = '7.000.000'
|
500
|
+
opts[:target_freq] = '7.300.000'
|
501
|
+
opts[:demodulator_mode] = 'LSB'
|
502
|
+
opts[:bandwidth] = '2.700'
|
503
|
+
when :ssb80
|
504
|
+
opts[:start_freq] = '3.500.000'
|
505
|
+
opts[:target_freq] = '3.800.000'
|
506
|
+
opts[:demodulator_mode] = 'LSB'
|
507
|
+
opts[:bandwidth] = '2.700'
|
508
|
+
when :ssb160
|
509
|
+
opts[:start_freq] = '1.800.000'
|
510
|
+
opts[:target_freq] = '2.000.000'
|
511
|
+
opts[:demodulator_mode] = 'LSB'
|
512
|
+
opts[:bandwidth] = '2.700'
|
513
|
+
when :tempest
|
514
|
+
opts[:start_freq] = '400.000.000'
|
515
|
+
opts[:target_freq] = '430.000.000'
|
516
|
+
opts[:demodulator_mode] = 'AM'
|
517
|
+
opts[:bandwidth] = '200.000'
|
518
|
+
when :wifi24
|
519
|
+
opts[:start_freq] = '2.400.000.000'
|
520
|
+
opts[:target_freq] = '2.500.000.000'
|
521
|
+
opts[:demodulator_mode] = 'AM'
|
522
|
+
opts[:bandwidth] = '20.000.000'
|
523
|
+
when :zigbee
|
524
|
+
opts[:start_freq] = '2.405.000.000'
|
525
|
+
opts[:target_freq] = '2.485.000.000'
|
526
|
+
opts[:demodulator_mode] = 'AM'
|
527
|
+
opts[:bandwidth] = '2.000.000'
|
528
|
+
else
|
529
|
+
raise "ERROR: Invalid profile: #{profile}"
|
530
|
+
end
|
531
|
+
|
532
|
+
opts
|
533
|
+
rescue StandardError => e
|
534
|
+
raise e
|
535
|
+
end
|
536
|
+
|
331
537
|
# Supported Method Parameters::
|
332
538
|
# PWN::Plugins::GQRX.disconnect(
|
333
539
|
# gqrx_sock: 'required - GQRX socket object returned from #connect method'
|
@@ -352,6 +558,46 @@ module PWN
|
|
352
558
|
|
353
559
|
public_class_method def self.help
|
354
560
|
puts "USAGE:
|
561
|
+
gqrx_sock = #{self}.connect(
|
562
|
+
target: 'optional - GQRX target IP address (defaults to 127.0.0.1)',
|
563
|
+
port: 'optional - GQRX target port (defaults to 7356)'
|
564
|
+
)
|
565
|
+
|
566
|
+
#{self}.gqrx_cmd(
|
567
|
+
gqrx_sock: 'required - GQRX socket object returned from #connect method',
|
568
|
+
cmd: 'required - GQRX command to execute',
|
569
|
+
resp_ok: 'optional - Expected response from GQRX to indicate success'
|
570
|
+
)
|
571
|
+
|
572
|
+
#{self}.init_freq(
|
573
|
+
gqrx_sock: 'required - GQRX socket object returned from #connect method',
|
574
|
+
freq: 'required - Frequency to set',
|
575
|
+
demodulator_mode: 'optional - Demodulator mode (defaults to WFM)',
|
576
|
+
bandwidth: 'optional - Bandwidth (defaults to 200000)',
|
577
|
+
lock_freq_duration: 'optional - Lock frequency duration (defaults to 0.5)',
|
578
|
+
strength_lock: 'optional - Strength lock (defaults to -60.0)'
|
579
|
+
)
|
580
|
+
|
581
|
+
#{self}.scan_range(
|
582
|
+
gqrx_sock: 'required - GQRX socket object returned from #connect method',
|
583
|
+
demodulator_mode: 'required - Demodulator mode',
|
584
|
+
bandwidth: 'required - Bandwidth',
|
585
|
+
start_freq: 'required - Starting frequency',
|
586
|
+
target_freq: 'required - Target frequency',
|
587
|
+
precision: 'required - Precision',
|
588
|
+
lock_freq_duration: 'optional - Lock frequency duration (defaults to 0.5)',
|
589
|
+
strength_lock: 'optional - Strength lock (defaults to -60.0)'
|
590
|
+
)
|
591
|
+
|
592
|
+
profiles = #{self}.list_profiles
|
593
|
+
|
594
|
+
opts = #{self}.assume_profile(
|
595
|
+
profile: 'required - valid GQRX profile name returned from #list_profiles method'
|
596
|
+
)
|
597
|
+
|
598
|
+
#{self}.disconnect(
|
599
|
+
gqrx_sock: 'required - GQRX socket object returned from #connect method'
|
600
|
+
)
|
355
601
|
|
356
602
|
#{self}.authors
|
357
603
|
"
|
data/lib/pwn/version.rb
CHANGED
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.
|
4
|
+
version: 0.5.80
|
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-04-
|
11
|
+
date: 2024-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -380,14 +380,14 @@ dependencies:
|
|
380
380
|
requirements:
|
381
381
|
- - '='
|
382
382
|
- !ruby/object:Gem::Version
|
383
|
-
version: 2.7.
|
383
|
+
version: 2.7.2
|
384
384
|
type: :runtime
|
385
385
|
prerelease: false
|
386
386
|
version_requirements: !ruby/object:Gem::Requirement
|
387
387
|
requirements:
|
388
388
|
- - '='
|
389
389
|
- !ruby/object:Gem::Version
|
390
|
-
version: 2.7.
|
390
|
+
version: 2.7.2
|
391
391
|
- !ruby/object:Gem::Dependency
|
392
392
|
name: jsonpath
|
393
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -884,14 +884,14 @@ dependencies:
|
|
884
884
|
requirements:
|
885
885
|
- - '='
|
886
886
|
- !ruby/object:Gem::Version
|
887
|
-
version: 2.
|
887
|
+
version: 2.29.1
|
888
888
|
type: :runtime
|
889
889
|
prerelease: false
|
890
890
|
version_requirements: !ruby/object:Gem::Requirement
|
891
891
|
requirements:
|
892
892
|
- - '='
|
893
893
|
- !ruby/object:Gem::Version
|
894
|
-
version: 2.
|
894
|
+
version: 2.29.1
|
895
895
|
- !ruby/object:Gem::Dependency
|
896
896
|
name: ruby-audio
|
897
897
|
requirement: !ruby/object:Gem::Requirement
|