pwn 0.5.78 → 0.5.80
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/Gemfile +3 -2
- data/README.md +3 -3
- data/bin/pwn_gqrx_scanner +21 -4
- data/lib/pwn/plugins/defect_dojo.rb +1 -1
- 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
|
[](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
|