pwn 0.5.517 → 0.5.518
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 +3 -3
- data/lib/pwn/sdr/decoder/rds.rb +6 -6
- data/lib/pwn/sdr/gqrx.rb +9 -3
- 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: 4782a5ea26c616b61254cbc43ba1fa0fbee4f71890b48ac3b0197a0586965356
|
|
4
|
+
data.tar.gz: 987fdf3e321dd0790ca1f059c483a045bcee5239f63ba5f2bfbd065e5f85c24f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4417e4d4bbcffc1596d854c0d37eb2911b65456257c8d5520afeb1706bda670f1cb4881f312ca521951ae8d47eba063af98ac4f89d981c34b50f5e2acc052c7b
|
|
7
|
+
data.tar.gz: c989b552b031669fb6a2a96580d53ad4f240607d68f7ee2d4b9f65a9b0e48c6d1b5666613782a356a5edb11fb5d2178b30501a7e3bfa2fc6057eda39d3a70299
|
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.518]:001 >>> PWN.help
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.4.7@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.518]: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.4.7@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.518]: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/lib/pwn/sdr/decoder/rds.rb
CHANGED
|
@@ -11,17 +11,17 @@ module PWN
|
|
|
11
11
|
# )
|
|
12
12
|
|
|
13
13
|
# private_class_method def self.rds(opts = {})
|
|
14
|
-
public_class_method def self.
|
|
14
|
+
public_class_method def self.decode(opts = {})
|
|
15
15
|
gqrx_sock = opts[:gqrx_sock]
|
|
16
16
|
|
|
17
17
|
# We toggle RDS off and on to reset the decoder
|
|
18
|
-
rds_resp = gqrx_cmd(
|
|
18
|
+
rds_resp = PWN::SDR::GQRX.gqrx_cmd(
|
|
19
19
|
gqrx_sock: gqrx_sock,
|
|
20
20
|
cmd: 'U RDS 0',
|
|
21
21
|
resp_ok: 'RPRT 0'
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
-
rds_resp = gqrx_cmd(
|
|
24
|
+
rds_resp = PWN::SDR::GQRX.gqrx_cmd(
|
|
25
25
|
gqrx_sock: gqrx_sock,
|
|
26
26
|
cmd: 'U RDS 1',
|
|
27
27
|
resp_ok: 'RPRT 0'
|
|
@@ -34,9 +34,9 @@ module PWN
|
|
|
34
34
|
print 'INFO: Decoding FM radio RDS data (Press ENTER to skip)...'
|
|
35
35
|
max_attempts.times do
|
|
36
36
|
attempts += 1
|
|
37
|
-
rds_resp[:rds_pi] = gqrx_cmd(gqrx_sock: gqrx_sock, cmd: 'p RDS_PI')
|
|
38
|
-
rds_resp[:rds_ps_name] = gqrx_cmd(gqrx_sock: gqrx_sock, cmd: 'p RDS_PS_NAME')
|
|
39
|
-
rds_resp[:rds_radiotext] = gqrx_cmd(gqrx_sock: gqrx_sock, cmd: 'p RDS_RADIOTEXT')
|
|
37
|
+
rds_resp[:rds_pi] = PWN::SDR::GQRX.gqrx_cmd(gqrx_sock: gqrx_sock, cmd: 'p RDS_PI')
|
|
38
|
+
rds_resp[:rds_ps_name] = PWN::SDR::GQRX.gqrx_cmd(gqrx_sock: gqrx_sock, cmd: 'p RDS_PS_NAME')
|
|
39
|
+
rds_resp[:rds_radiotext] = PWN::SDR::GQRX.gqrx_cmd(gqrx_sock: gqrx_sock, cmd: 'p RDS_RADIOTEXT')
|
|
40
40
|
|
|
41
41
|
# Break if ENTER key pressed
|
|
42
42
|
# This is useful if no RDS data is available
|
data/lib/pwn/sdr/gqrx.rb
CHANGED
|
@@ -14,7 +14,7 @@ module PWN
|
|
|
14
14
|
# resp_ok: 'optional - Expected response from GQRX to indicate success'
|
|
15
15
|
# )
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
public_class_method def self.gqrx_cmd(opts = {})
|
|
18
18
|
gqrx_sock = opts[:gqrx_sock]
|
|
19
19
|
cmd = opts[:cmd]
|
|
20
20
|
resp_ok = opts[:resp_ok]
|
|
@@ -175,7 +175,7 @@ module PWN
|
|
|
175
175
|
unique_samples = samples.uniq
|
|
176
176
|
if unique_samples.length > 1
|
|
177
177
|
prev_strength_db = unique_samples[-2]
|
|
178
|
-
distance_between_unique_samples = (strength_db - prev_strength_db).abs
|
|
178
|
+
distance_between_unique_samples = (strength_db - prev_strength_db).abs.round(2)
|
|
179
179
|
strength_measured = true if distance_between_unique_samples.positive? && strength_lock > strength_db
|
|
180
180
|
end
|
|
181
181
|
strength_measured = true if distance_between_unique_samples.positive? && distance_between_unique_samples < 5
|
|
@@ -573,7 +573,7 @@ module PWN
|
|
|
573
573
|
)
|
|
574
574
|
|
|
575
575
|
rds_resp = nil
|
|
576
|
-
rds_resp = PWN::SDR::Decoder.
|
|
576
|
+
rds_resp = PWN::SDR::Decoder::RDS.decode(gqrx_sock: gqrx_sock) if rds
|
|
577
577
|
|
|
578
578
|
freq_obj[:audio_gain_db] = audio_gain_db
|
|
579
579
|
freq_obj[:demod_mode_n_passband] = demod_n_passband
|
|
@@ -948,6 +948,12 @@ module PWN
|
|
|
948
948
|
port: 'optional - GQRX target port (defaults to 7356)'
|
|
949
949
|
)
|
|
950
950
|
|
|
951
|
+
gqrx_resp = #{self}.gqrx_cmd(
|
|
952
|
+
gqrx_sock: 'required - GQRX socket object returned from #connect method',
|
|
953
|
+
cmd: 'required - GQRX command to send',
|
|
954
|
+
resp_ok: 'optional - Expected OK response (defaults to nil / no check)'
|
|
955
|
+
)
|
|
956
|
+
|
|
951
957
|
freq_obj = #{self}.init_freq(
|
|
952
958
|
gqrx_sock: 'required - GQRX socket object returned from #connect method',
|
|
953
959
|
freq: 'required - Frequency to set',
|
data/lib/pwn/version.rb
CHANGED