pwn 0.5.617 → 0.5.620
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 +2 -2
- data/README.md +101 -83
- data/bin/pwn_gqrx_scanner +25 -5
- data/documentation/AI-Integration.md +42 -26
- data/documentation/AWS.md +57 -0
- data/documentation/Agent-Tool-Registry.md +56 -0
- data/documentation/Banner.md +17 -0
- data/documentation/Blockchain.md +18 -0
- data/documentation/Bounty.md +21 -0
- data/documentation/BurpSuite.md +41 -16
- data/documentation/CLI-Drivers.md +58 -0
- data/documentation/Configuration.md +66 -0
- data/documentation/Contributing.md +33 -19
- data/documentation/Cron.md +47 -0
- data/documentation/Diagrams.md +6 -2
- data/documentation/Drivers.md +43 -16
- data/documentation/Extrospection.md +73 -0
- data/documentation/FFI.md +14 -0
- data/documentation/Fuzzing.md +36 -0
- data/documentation/Hardware.md +40 -0
- data/documentation/Home.md +5 -4
- data/documentation/How-PWN-Works.md +7 -4
- data/documentation/Metasploit.md +34 -0
- data/documentation/Mistakes.md +96 -0
- data/documentation/NmapIt.md +18 -12
- data/documentation/PWN.png +0 -0
- data/documentation/PWN_Contributors_and_Users.png +0 -0
- data/documentation/Persistence.md +40 -0
- data/documentation/Plugins.md +97 -47
- data/documentation/Reporting.md +25 -18
- data/documentation/SAST.md +39 -22
- data/documentation/SDR.md +58 -0
- data/documentation/Sessions.md +39 -0
- data/documentation/Skills-Memory-Learning.md +59 -29
- data/documentation/Swarm.md +71 -0
- data/documentation/Transparent-Browser.md +26 -22
- data/documentation/Troubleshooting.md +44 -25
- data/documentation/WWW.md +32 -0
- data/documentation/diagrams/agent-tool-registry.svg +286 -0
- data/documentation/diagrams/aws-cloud-security.svg +166 -0
- data/documentation/diagrams/cron-scheduling.svg +148 -0
- data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
- data/documentation/diagrams/dot/extrospection-world-awareness.dot +9 -7
- data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
- data/documentation/diagrams/dot/memory-skills-detailed.dot +12 -5
- data/documentation/diagrams/dot/mistakes-negative-feedback.dot +93 -0
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +7 -5
- data/documentation/diagrams/dot/persistence-filesystem.dot +30 -0
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +19 -7
- data/documentation/diagrams/dot/sdr-radio-flow.dot +13 -11
- data/documentation/diagrams/extrospection-world-awareness.svg +203 -0
- data/documentation/diagrams/hardware-hacking.svg +163 -0
- data/documentation/diagrams/memory-skills-detailed.svg +146 -97
- data/documentation/diagrams/mistakes-negative-feedback.svg +266 -0
- data/documentation/diagrams/overall-pwn-architecture.svg +184 -173
- data/documentation/diagrams/persistence-filesystem.svg +189 -0
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +217 -149
- data/documentation/diagrams/sdr-radio-flow.svg +166 -0
- data/documentation/diagrams/swarm-multi-agent.svg +225 -0
- data/documentation/fax-spectrogram.png +0 -0
- data/documentation/fax-waveform.png +0 -0
- data/documentation/pwn-REPL.md +40 -24
- data/documentation/pwn-ai-Agent.md +72 -30
- data/documentation/pwn_android_war_dialer_session.png +0 -0
- data/documentation/pwn_install.png +0 -0
- data/documentation/pwn_wallpaper.jpg +0 -0
- data/documentation/ringing-spectrogram.png +0 -0
- data/documentation/ringing-waveform.png +0 -0
- data/lib/pwn/ai/agent/extrospection.rb +65 -6
- data/lib/pwn/ai/agent/learning.rb +67 -7
- data/lib/pwn/ai/agent/loop.rb +72 -6
- data/lib/pwn/ai/agent/mistakes.rb +369 -0
- data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
- data/lib/pwn/ai/agent/tools/extrospection.rb +2 -2
- data/lib/pwn/ai/agent/tools/mistakes.rb +132 -0
- data/lib/pwn/ai/agent.rb +1 -0
- data/lib/pwn/plugins/jira_data_center.rb +2 -2
- data/lib/pwn/sdr/decoder/adsb.rb +101 -0
- data/lib/pwn/sdr/decoder/apt.rb +75 -0
- data/lib/pwn/sdr/decoder/bluetooth.rb +78 -0
- data/lib/pwn/sdr/decoder/dect.rb +84 -0
- data/lib/pwn/sdr/decoder/gps.rb +83 -0
- data/lib/pwn/sdr/decoder/gsm.rb +50 -29
- data/lib/pwn/sdr/decoder/iridium.rb +81 -0
- data/lib/pwn/sdr/decoder/lora.rb +87 -0
- data/lib/pwn/sdr/decoder/lte.rb +88 -0
- data/lib/pwn/sdr/decoder/morse.rb +64 -0
- data/lib/pwn/sdr/decoder/p25.rb +71 -0
- data/lib/pwn/sdr/decoder/pager.rb +77 -0
- data/lib/pwn/sdr/decoder/pocsag.rb +26 -11
- data/lib/pwn/sdr/decoder/rfid.rb +88 -0
- data/lib/pwn/sdr/decoder/rtl433.rb +95 -0
- data/lib/pwn/sdr/decoder/rtty.rb +66 -0
- data/lib/pwn/sdr/decoder/wifi.rb +98 -0
- data/lib/pwn/sdr/decoder/zigbee.rb +96 -0
- data/lib/pwn/sdr/decoder.rb +67 -7
- data/lib/pwn/sdr/frequency_allocation.rb +82 -41
- data/lib/pwn/sdr/gqrx.rb +186 -95
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/ai/agent/mistakes_spec.rb +36 -0
- data/spec/lib/pwn/ai/agent/tools/mistakes_spec.rb +12 -0
- data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/apt_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/dect_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/gps_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/lora_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/lte_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/morse_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/p25_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/pager_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +15 -0
- data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +15 -0
- data/third_party/pwn_rdoc.jsonl +114 -8
- metadata +81 -5
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'shellwords'
|
|
4
|
+
|
|
5
|
+
module PWN
|
|
6
|
+
module SDR
|
|
7
|
+
module Decoder
|
|
8
|
+
# 802.11 (WiFi) beacon/probe decoder for the 2.4 / 5 / 6 GHz bands.
|
|
9
|
+
#
|
|
10
|
+
# 20+ MHz OFDM cannot be recovered from a general-purpose SDR at
|
|
11
|
+
# bit-level in real time, so this module drives an existing monitor-mode
|
|
12
|
+
# NIC via `tshark` (or `airodump-ng`) instead — freq_obj[:mon_iface]
|
|
13
|
+
# selects the interface, freq_obj[:freq] is mapped to a WLAN channel.
|
|
14
|
+
module WiFi
|
|
15
|
+
TSHARK_FIELDS = %w[
|
|
16
|
+
frame.time_relative
|
|
17
|
+
wlan.fc.type_subtype
|
|
18
|
+
wlan.bssid
|
|
19
|
+
wlan.sa
|
|
20
|
+
wlan.da
|
|
21
|
+
wlan_radio.channel
|
|
22
|
+
wlan_radio.signal_dbm
|
|
23
|
+
wlan.ssid
|
|
24
|
+
].freeze
|
|
25
|
+
|
|
26
|
+
# Supported Method Parameters::
|
|
27
|
+
# PWN::SDR::Decoder::WiFi.decode(
|
|
28
|
+
# freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq'
|
|
29
|
+
# )
|
|
30
|
+
|
|
31
|
+
public_class_method def self.decode(opts = {})
|
|
32
|
+
freq_obj = opts[:freq_obj]
|
|
33
|
+
raise 'ERROR: :freq_obj is required' unless freq_obj.is_a?(Hash)
|
|
34
|
+
|
|
35
|
+
iface = (freq_obj[:mon_iface] || 'wlan0mon').to_s
|
|
36
|
+
hz = PWN::SDR.hz_to_i(freq: freq_obj[:freq])
|
|
37
|
+
mhz = (hz / 1_000_000.0).round
|
|
38
|
+
|
|
39
|
+
tshark = ['tshark', '-i', iface, '-I', '-l', '-n',
|
|
40
|
+
'-Y', 'wlan.fc.type == 0',
|
|
41
|
+
'-T', 'fields', '-E', 'separator=|']
|
|
42
|
+
TSHARK_FIELDS.each { |f| tshark.push('-e', f) }
|
|
43
|
+
|
|
44
|
+
inner = "iw dev #{Shellwords.escape(iface)} set freq #{mhz} 2>/dev/null; " \
|
|
45
|
+
"exec #{Shellwords.join(tshark)}"
|
|
46
|
+
direct_cmd = "bash -c #{Shellwords.escape(inner)}"
|
|
47
|
+
|
|
48
|
+
PWN::SDR::Decoder::Base.run_pipeline(
|
|
49
|
+
freq_obj: freq_obj,
|
|
50
|
+
protocol: 'WiFi-802.11',
|
|
51
|
+
required_bins: %w[tshark iw],
|
|
52
|
+
direct_cmd: direct_cmd,
|
|
53
|
+
line_match: /\S/,
|
|
54
|
+
parser: proc { |line| parse_line(line: line) }
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Supported Method Parameters::
|
|
59
|
+
# PWN::SDR::Decoder::WiFi.parse_line(line: 't|subtype|bssid|sa|da|ch|rssi|ssid')
|
|
60
|
+
|
|
61
|
+
public_class_method def self.parse_line(opts = {})
|
|
62
|
+
f = opts[:line].to_s.split('|', -1)
|
|
63
|
+
out = {
|
|
64
|
+
protocol: 'WiFi',
|
|
65
|
+
subtype: f[1], bssid: f[2], sa: f[3], da: f[4],
|
|
66
|
+
channel: f[5], rssi_dbm: f[6], ssid: f[7]
|
|
67
|
+
}.reject { |_, v| v.to_s.empty? }
|
|
68
|
+
out[:summary] = "WiFi ch#{out[:channel]} #{out[:bssid]} '#{out[:ssid]}' #{out[:rssi_dbm]}dBm"
|
|
69
|
+
out
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Author(s):: 0day Inc. <support@0dayinc.com>
|
|
73
|
+
|
|
74
|
+
public_class_method def self.authors
|
|
75
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Display Usage for this Module
|
|
79
|
+
|
|
80
|
+
public_class_method def self.help
|
|
81
|
+
puts "USAGE:
|
|
82
|
+
#{self}.decode(
|
|
83
|
+
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq'
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
NOTE: Requires a monitor-mode WLAN interface (freq_obj[:mon_iface],
|
|
87
|
+
default 'wlan0mon'), `iw`, and `tshark`. General SDRs cannot
|
|
88
|
+
demodulate 802.11 OFDM in real time.
|
|
89
|
+
|
|
90
|
+
#{self}.parse_line(line: '0.1|8|aa:bb:..|aa:bb:..|ff:ff:..|6|-42|linksys')
|
|
91
|
+
|
|
92
|
+
#{self}.authors
|
|
93
|
+
"
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'shellwords'
|
|
4
|
+
|
|
5
|
+
module PWN
|
|
6
|
+
module SDR
|
|
7
|
+
module Decoder
|
|
8
|
+
# IEEE 802.15.4 / ZigBee decoder for the 2.405–2.480 GHz allocation.
|
|
9
|
+
# 250 kbit/s O-QPSK requires raw I/Q; this drives KillerBee's `zbdump`
|
|
10
|
+
# (with any supported adapter — CC2531, ApiMote, RZUSB, HackRF via
|
|
11
|
+
# gr-ieee802-15-4) or falls back to `whsniff` piped through `tshark`
|
|
12
|
+
# for structured PAN/src/dst/cmd extraction.
|
|
13
|
+
module ZigBee
|
|
14
|
+
TSHARK_FIELDS = %w[
|
|
15
|
+
frame.time_relative
|
|
16
|
+
wpan.src16
|
|
17
|
+
wpan.dst16
|
|
18
|
+
wpan.src64
|
|
19
|
+
wpan.dst64
|
|
20
|
+
wpan.dst_pan
|
|
21
|
+
wpan.frame_type
|
|
22
|
+
zbee_nwk.cmd.id
|
|
23
|
+
wpan.seq_no
|
|
24
|
+
].freeze
|
|
25
|
+
|
|
26
|
+
# Supported Method Parameters::
|
|
27
|
+
# PWN::SDR::Decoder::ZigBee.decode(
|
|
28
|
+
# freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq'
|
|
29
|
+
# )
|
|
30
|
+
|
|
31
|
+
public_class_method def self.decode(opts = {})
|
|
32
|
+
freq_obj = opts[:freq_obj]
|
|
33
|
+
raise 'ERROR: :freq_obj is required' unless freq_obj.is_a?(Hash)
|
|
34
|
+
|
|
35
|
+
hz = PWN::SDR.hz_to_i(freq: freq_obj[:freq])
|
|
36
|
+
# 802.15.4 ch11..26 → 2405 + 5*(ch-11) MHz
|
|
37
|
+
ch = (((hz - 2_405_000_000) / 5_000_000.0).round + 11).clamp(11, 26)
|
|
38
|
+
|
|
39
|
+
tshark = ['tshark', '-r', '-', '-l', '-T', 'fields', '-E', 'separator=|']
|
|
40
|
+
TSHARK_FIELDS.each { |f| tshark.push('-e', f) }
|
|
41
|
+
|
|
42
|
+
inner = "whsniff -c #{ch} 2>/dev/null | #{Shellwords.join(tshark)}"
|
|
43
|
+
direct_cmd = "bash -c #{Shellwords.escape(inner)}"
|
|
44
|
+
|
|
45
|
+
PWN::SDR::Decoder::Base.run_pipeline(
|
|
46
|
+
freq_obj: freq_obj,
|
|
47
|
+
protocol: 'ZigBee',
|
|
48
|
+
required_bins: %w[whsniff tshark],
|
|
49
|
+
direct_cmd: direct_cmd,
|
|
50
|
+
line_match: /\S/,
|
|
51
|
+
parser: proc { |line| parse_line(line: line) }
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Supported Method Parameters::
|
|
56
|
+
# PWN::SDR::Decoder::ZigBee.parse_line(line: 't|src16|dst16|src64|dst64|pan|type|cmd|seq')
|
|
57
|
+
|
|
58
|
+
public_class_method def self.parse_line(opts = {})
|
|
59
|
+
f = opts[:line].to_s.split('|', -1)
|
|
60
|
+
out = {
|
|
61
|
+
protocol: 'ZigBee',
|
|
62
|
+
src16: f[1], dst16: f[2],
|
|
63
|
+
src64: f[3], dst64: f[4],
|
|
64
|
+
pan_id: f[5], frame_type: f[6],
|
|
65
|
+
nwk_cmd: f[7], seq: f[8]
|
|
66
|
+
}.reject { |_, v| v.to_s.empty? }
|
|
67
|
+
out[:summary] = "ZigBee PAN=#{out[:pan_id]} #{out[:src16] || out[:src64]}→#{out[:dst16] || out[:dst64]} type=#{out[:frame_type]}"
|
|
68
|
+
out
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Author(s):: 0day Inc. <support@0dayinc.com>
|
|
72
|
+
|
|
73
|
+
public_class_method def self.authors
|
|
74
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Display Usage for this Module
|
|
78
|
+
|
|
79
|
+
public_class_method def self.help
|
|
80
|
+
puts "USAGE:
|
|
81
|
+
#{self}.decode(
|
|
82
|
+
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq'
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
NOTE: Requires `whsniff` (CC2531) or KillerBee, plus `tshark`.
|
|
86
|
+
Channel is derived from freq_obj[:freq] (11–26).
|
|
87
|
+
|
|
88
|
+
#{self}.parse_line(line: '0.1|0x0001|0xffff||||0x01||42')
|
|
89
|
+
|
|
90
|
+
#{self}.authors
|
|
91
|
+
"
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
data/lib/pwn/sdr/decoder.rb
CHANGED
|
@@ -5,15 +5,73 @@ module PWN
|
|
|
5
5
|
# into memory only when they're needed. For more information, see:
|
|
6
6
|
# http://www.rubyinside.com/ruby-techniques-revealed-autoload-1652.html
|
|
7
7
|
module SDR
|
|
8
|
-
#
|
|
8
|
+
# Decoder namespace for SDR signals. Every child module exposes a
|
|
9
|
+
# uniform `.decode(freq_obj:)` entry point (see PWN::SDR::Decoder::Base)
|
|
10
|
+
# so PWN::SDR::GQRX can dispatch on a `decoder:` key from
|
|
11
|
+
# PWN::SDR::FrequencyAllocation.band_plans.
|
|
9
12
|
module Decoder
|
|
10
|
-
autoload :
|
|
11
|
-
autoload :
|
|
12
|
-
autoload :
|
|
13
|
-
autoload :
|
|
14
|
-
autoload :
|
|
13
|
+
autoload :ADSB, 'pwn/sdr/decoder/adsb'
|
|
14
|
+
autoload :APT, 'pwn/sdr/decoder/apt'
|
|
15
|
+
autoload :Base, 'pwn/sdr/decoder/base'
|
|
16
|
+
autoload :Bluetooth, 'pwn/sdr/decoder/bluetooth'
|
|
17
|
+
autoload :DECT, 'pwn/sdr/decoder/dect'
|
|
18
|
+
autoload :Flex, 'pwn/sdr/decoder/flex'
|
|
19
|
+
autoload :GPS, 'pwn/sdr/decoder/gps'
|
|
20
|
+
autoload :GSM, 'pwn/sdr/decoder/gsm'
|
|
21
|
+
autoload :Iridium, 'pwn/sdr/decoder/iridium'
|
|
22
|
+
autoload :LTE, 'pwn/sdr/decoder/lte'
|
|
23
|
+
autoload :LoRa, 'pwn/sdr/decoder/lora'
|
|
24
|
+
autoload :Morse, 'pwn/sdr/decoder/morse'
|
|
25
|
+
autoload :P25, 'pwn/sdr/decoder/p25'
|
|
26
|
+
autoload :POCSAG, 'pwn/sdr/decoder/pocsag'
|
|
27
|
+
autoload :Pager, 'pwn/sdr/decoder/pager'
|
|
28
|
+
autoload :RDS, 'pwn/sdr/decoder/rds'
|
|
29
|
+
autoload :RFID, 'pwn/sdr/decoder/rfid'
|
|
30
|
+
autoload :RTL433, 'pwn/sdr/decoder/rtl433'
|
|
31
|
+
autoload :RTTY, 'pwn/sdr/decoder/rtty'
|
|
32
|
+
autoload :WiFi, 'pwn/sdr/decoder/wifi'
|
|
33
|
+
autoload :ZigBee, 'pwn/sdr/decoder/zigbee'
|
|
15
34
|
|
|
16
|
-
#
|
|
35
|
+
# symbol → module map. Keys are what a band_plan's :decoder value (or
|
|
36
|
+
# PWN::SDR::GQRX.init_freq's decoder: kwarg) may be set to.
|
|
37
|
+
REGISTRY = {
|
|
38
|
+
adsb: :ADSB,
|
|
39
|
+
apt: :APT,
|
|
40
|
+
bluetooth: :Bluetooth,
|
|
41
|
+
dect: :DECT,
|
|
42
|
+
flex: :Flex,
|
|
43
|
+
gprs: :GSM,
|
|
44
|
+
gps: :GPS,
|
|
45
|
+
gsm: :GSM,
|
|
46
|
+
iridium: :Iridium,
|
|
47
|
+
ism: :RTL433,
|
|
48
|
+
keyfob: :RTL433,
|
|
49
|
+
lora: :LoRa,
|
|
50
|
+
lte: :LTE,
|
|
51
|
+
morse: :Morse,
|
|
52
|
+
p25: :P25,
|
|
53
|
+
pager: :Pager,
|
|
54
|
+
pocsag: :POCSAG,
|
|
55
|
+
rds: :RDS,
|
|
56
|
+
rfid: :RFID,
|
|
57
|
+
rtl433: :RTL433,
|
|
58
|
+
rtty: :RTTY,
|
|
59
|
+
wifi: :WiFi,
|
|
60
|
+
zigbee: :ZigBee
|
|
61
|
+
}.freeze
|
|
62
|
+
|
|
63
|
+
# Supported Method Parameters::
|
|
64
|
+
# mod = PWN::SDR::Decoder.resolve(
|
|
65
|
+
# decoder: 'required - Symbol/String key from REGISTRY (e.g. :pocsag)'
|
|
66
|
+
# )
|
|
67
|
+
|
|
68
|
+
public_class_method def self.resolve(opts = {})
|
|
69
|
+
key = opts[:decoder].to_s.downcase.to_sym
|
|
70
|
+
const = REGISTRY[key]
|
|
71
|
+
raise "ERROR: Unknown decoder key #{key.inspect}. Supported: #{REGISTRY.keys.sort.join(', ')}" unless const
|
|
72
|
+
|
|
73
|
+
const_get(const)
|
|
74
|
+
end
|
|
17
75
|
|
|
18
76
|
# Author(s):: 0day Inc. <support@0dayinc.com>
|
|
19
77
|
|
|
@@ -21,6 +79,8 @@ module PWN
|
|
|
21
79
|
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
22
80
|
end
|
|
23
81
|
|
|
82
|
+
# Display a List of Every PWN::SDR::Decoder Module
|
|
83
|
+
|
|
24
84
|
public_class_method def self.help
|
|
25
85
|
constants.sort
|
|
26
86
|
end
|
|
@@ -14,7 +14,8 @@ module PWN
|
|
|
14
14
|
],
|
|
15
15
|
demodulator_mode: :RAW,
|
|
16
16
|
bandwidth: '100.000',
|
|
17
|
-
precision: 5
|
|
17
|
+
precision: 5,
|
|
18
|
+
decoder: :adsb
|
|
18
19
|
},
|
|
19
20
|
ads_b1090: {
|
|
20
21
|
ranges: [
|
|
@@ -22,7 +23,8 @@ module PWN
|
|
|
22
23
|
],
|
|
23
24
|
demodulator_mode: :RAW,
|
|
24
25
|
bandwidth: '100.000',
|
|
25
|
-
precision: 5
|
|
26
|
+
precision: 5,
|
|
27
|
+
decoder: :adsb
|
|
26
28
|
},
|
|
27
29
|
aeronautical_lf: {
|
|
28
30
|
ranges: [
|
|
@@ -70,7 +72,8 @@ module PWN
|
|
|
70
72
|
],
|
|
71
73
|
demodulator_mode: :CW,
|
|
72
74
|
bandwidth: '150',
|
|
73
|
-
precision: 3
|
|
75
|
+
precision: 3,
|
|
76
|
+
decoder: :morse
|
|
74
77
|
},
|
|
75
78
|
amateur_60m: {
|
|
76
79
|
ranges: [
|
|
@@ -142,7 +145,8 @@ module PWN
|
|
|
142
145
|
],
|
|
143
146
|
demodulator_mode: :RAW,
|
|
144
147
|
bandwidth: '200.000',
|
|
145
|
-
precision: 6
|
|
148
|
+
precision: 6,
|
|
149
|
+
decoder: :lte
|
|
146
150
|
},
|
|
147
151
|
bluetooth: {
|
|
148
152
|
ranges: [
|
|
@@ -150,7 +154,8 @@ module PWN
|
|
|
150
154
|
],
|
|
151
155
|
demodulator_mode: :RAW,
|
|
152
156
|
bandwidth: '1.000.000',
|
|
153
|
-
precision: 5
|
|
157
|
+
precision: 5,
|
|
158
|
+
decoder: :bluetooth
|
|
154
159
|
},
|
|
155
160
|
cb: {
|
|
156
161
|
ranges: [
|
|
@@ -166,7 +171,8 @@ module PWN
|
|
|
166
171
|
],
|
|
167
172
|
demodulator_mode: :RAW,
|
|
168
173
|
bandwidth: '1.250.000',
|
|
169
|
-
precision: 6
|
|
174
|
+
precision: 6,
|
|
175
|
+
decoder: :lte
|
|
170
176
|
},
|
|
171
177
|
cw20: {
|
|
172
178
|
ranges: [
|
|
@@ -174,7 +180,8 @@ module PWN
|
|
|
174
180
|
],
|
|
175
181
|
demodulator_mode: :CW,
|
|
176
182
|
bandwidth: '150',
|
|
177
|
-
precision: 3
|
|
183
|
+
precision: 3,
|
|
184
|
+
decoder: :morse
|
|
178
185
|
},
|
|
179
186
|
cw40: {
|
|
180
187
|
ranges: [
|
|
@@ -182,7 +189,8 @@ module PWN
|
|
|
182
189
|
],
|
|
183
190
|
demodulator_mode: :CW,
|
|
184
191
|
bandwidth: '150',
|
|
185
|
-
precision: 3
|
|
192
|
+
precision: 3,
|
|
193
|
+
decoder: :morse
|
|
186
194
|
},
|
|
187
195
|
cw80: {
|
|
188
196
|
ranges: [
|
|
@@ -190,7 +198,8 @@ module PWN
|
|
|
190
198
|
],
|
|
191
199
|
demodulator_mode: :CW,
|
|
192
200
|
bandwidth: '150',
|
|
193
|
-
precision: 3
|
|
201
|
+
precision: 3,
|
|
202
|
+
decoder: :morse
|
|
194
203
|
},
|
|
195
204
|
dect: {
|
|
196
205
|
ranges: [
|
|
@@ -198,7 +207,8 @@ module PWN
|
|
|
198
207
|
],
|
|
199
208
|
demodulator_mode: :RAW,
|
|
200
209
|
bandwidth: '100.000',
|
|
201
|
-
precision: 5
|
|
210
|
+
precision: 5,
|
|
211
|
+
decoder: :dect
|
|
202
212
|
},
|
|
203
213
|
fm_radio: {
|
|
204
214
|
ranges: [
|
|
@@ -231,7 +241,8 @@ module PWN
|
|
|
231
241
|
],
|
|
232
242
|
demodulator_mode: :RAW,
|
|
233
243
|
bandwidth: '171.200',
|
|
234
|
-
precision: 4
|
|
244
|
+
precision: 4,
|
|
245
|
+
decoder: :gsm
|
|
235
246
|
},
|
|
236
247
|
gps_l1: {
|
|
237
248
|
ranges: [
|
|
@@ -239,7 +250,8 @@ module PWN
|
|
|
239
250
|
],
|
|
240
251
|
demodulator_mode: :RAW,
|
|
241
252
|
bandwidth: '30.000.000',
|
|
242
|
-
precision: 6
|
|
253
|
+
precision: 6,
|
|
254
|
+
decoder: :gps
|
|
243
255
|
},
|
|
244
256
|
gps_l2: {
|
|
245
257
|
ranges: [
|
|
@@ -247,7 +259,8 @@ module PWN
|
|
|
247
259
|
],
|
|
248
260
|
demodulator_mode: :RAW,
|
|
249
261
|
bandwidth: '11.000.000',
|
|
250
|
-
precision: 6
|
|
262
|
+
precision: 6,
|
|
263
|
+
decoder: :gps
|
|
251
264
|
},
|
|
252
265
|
gsm: {
|
|
253
266
|
ranges: [
|
|
@@ -255,7 +268,8 @@ module PWN
|
|
|
255
268
|
],
|
|
256
269
|
demodulator_mode: :RAW,
|
|
257
270
|
bandwidth: '200.000',
|
|
258
|
-
precision: 4
|
|
271
|
+
precision: 4,
|
|
272
|
+
decoder: :gsm
|
|
259
273
|
},
|
|
260
274
|
high_rfid: {
|
|
261
275
|
ranges: [
|
|
@@ -263,7 +277,8 @@ module PWN
|
|
|
263
277
|
],
|
|
264
278
|
demodulator_mode: :RAW,
|
|
265
279
|
bandwidth: '400.000',
|
|
266
|
-
precision: 3
|
|
280
|
+
precision: 3,
|
|
281
|
+
decoder: :rfid
|
|
267
282
|
},
|
|
268
283
|
iridium: {
|
|
269
284
|
ranges: [
|
|
@@ -271,7 +286,8 @@ module PWN
|
|
|
271
286
|
],
|
|
272
287
|
demodulator_mode: :RAW,
|
|
273
288
|
bandwidth: '704.000',
|
|
274
|
-
precision: 6
|
|
289
|
+
precision: 6,
|
|
290
|
+
decoder: :iridium
|
|
275
291
|
},
|
|
276
292
|
ism_5g: {
|
|
277
293
|
ranges: [
|
|
@@ -279,7 +295,8 @@ module PWN
|
|
|
279
295
|
],
|
|
280
296
|
demodulator_mode: :RAW,
|
|
281
297
|
bandwidth: '150.000.000',
|
|
282
|
-
precision: 7
|
|
298
|
+
precision: 7,
|
|
299
|
+
decoder: :rtl433
|
|
283
300
|
},
|
|
284
301
|
ism_902: {
|
|
285
302
|
ranges: [
|
|
@@ -287,7 +304,8 @@ module PWN
|
|
|
287
304
|
],
|
|
288
305
|
demodulator_mode: :RAW,
|
|
289
306
|
bandwidth: '26.000.000',
|
|
290
|
-
precision: 3
|
|
307
|
+
precision: 3,
|
|
308
|
+
decoder: :rtl433
|
|
291
309
|
},
|
|
292
310
|
keyfob300: {
|
|
293
311
|
ranges: [
|
|
@@ -295,7 +313,8 @@ module PWN
|
|
|
295
313
|
],
|
|
296
314
|
demodulator_mode: :RAW,
|
|
297
315
|
bandwidth: '50.000',
|
|
298
|
-
precision: 4
|
|
316
|
+
precision: 4,
|
|
317
|
+
decoder: :rtl433
|
|
299
318
|
},
|
|
300
319
|
keyfob310: {
|
|
301
320
|
ranges: [
|
|
@@ -303,7 +322,8 @@ module PWN
|
|
|
303
322
|
],
|
|
304
323
|
demodulator_mode: :RAW,
|
|
305
324
|
bandwidth: '50.000',
|
|
306
|
-
precision: 4
|
|
325
|
+
precision: 4,
|
|
326
|
+
decoder: :rtl433
|
|
307
327
|
},
|
|
308
328
|
keyfob315: {
|
|
309
329
|
ranges: [
|
|
@@ -311,7 +331,8 @@ module PWN
|
|
|
311
331
|
],
|
|
312
332
|
demodulator_mode: :RAW,
|
|
313
333
|
bandwidth: '50.000',
|
|
314
|
-
precision: 4
|
|
334
|
+
precision: 4,
|
|
335
|
+
decoder: :rtl433
|
|
315
336
|
},
|
|
316
337
|
keyfob390: {
|
|
317
338
|
ranges: [
|
|
@@ -319,7 +340,8 @@ module PWN
|
|
|
319
340
|
],
|
|
320
341
|
demodulator_mode: :RAW,
|
|
321
342
|
bandwidth: '50.000',
|
|
322
|
-
precision: 4
|
|
343
|
+
precision: 4,
|
|
344
|
+
decoder: :rtl433
|
|
323
345
|
},
|
|
324
346
|
keyfob433: {
|
|
325
347
|
ranges: [
|
|
@@ -327,7 +349,8 @@ module PWN
|
|
|
327
349
|
],
|
|
328
350
|
demodulator_mode: :RAW,
|
|
329
351
|
bandwidth: '50.000',
|
|
330
|
-
precision: 4
|
|
352
|
+
precision: 4,
|
|
353
|
+
decoder: :rtl433
|
|
331
354
|
},
|
|
332
355
|
keyfob868: {
|
|
333
356
|
ranges: [
|
|
@@ -335,7 +358,8 @@ module PWN
|
|
|
335
358
|
],
|
|
336
359
|
demodulator_mode: :RAW,
|
|
337
360
|
bandwidth: '50.000',
|
|
338
|
-
precision: 4
|
|
361
|
+
precision: 4,
|
|
362
|
+
decoder: :rtl433
|
|
339
363
|
},
|
|
340
364
|
land_mobile_uhf: {
|
|
341
365
|
ranges: [
|
|
@@ -367,7 +391,8 @@ module PWN
|
|
|
367
391
|
],
|
|
368
392
|
demodulator_mode: :RAW,
|
|
369
393
|
bandwidth: '500.000',
|
|
370
|
-
precision: 3
|
|
394
|
+
precision: 3,
|
|
395
|
+
decoder: :lora
|
|
371
396
|
},
|
|
372
397
|
lora8x: {
|
|
373
398
|
ranges: [
|
|
@@ -375,7 +400,8 @@ module PWN
|
|
|
375
400
|
],
|
|
376
401
|
demodulator_mode: :RAW,
|
|
377
402
|
bandwidth: '500.000',
|
|
378
|
-
precision: 3
|
|
403
|
+
precision: 3,
|
|
404
|
+
decoder: :lora
|
|
379
405
|
},
|
|
380
406
|
lora9x: {
|
|
381
407
|
ranges: [
|
|
@@ -383,7 +409,8 @@ module PWN
|
|
|
383
409
|
],
|
|
384
410
|
demodulator_mode: :RAW,
|
|
385
411
|
bandwidth: '500.000',
|
|
386
|
-
precision: 3
|
|
412
|
+
precision: 3,
|
|
413
|
+
decoder: :lora
|
|
387
414
|
},
|
|
388
415
|
low_rfid: {
|
|
389
416
|
ranges: [
|
|
@@ -391,7 +418,8 @@ module PWN
|
|
|
391
418
|
],
|
|
392
419
|
demodulator_mode: :RAW,
|
|
393
420
|
bandwidth: '40.000',
|
|
394
|
-
precision: 1
|
|
421
|
+
precision: 1,
|
|
422
|
+
decoder: :rfid
|
|
395
423
|
},
|
|
396
424
|
marine_vhf: {
|
|
397
425
|
ranges: [
|
|
@@ -449,7 +477,8 @@ module PWN
|
|
|
449
477
|
],
|
|
450
478
|
demodulator_mode: :FM,
|
|
451
479
|
bandwidth: '25.000',
|
|
452
|
-
precision: 4
|
|
480
|
+
precision: 4,
|
|
481
|
+
decoder: :pager
|
|
453
482
|
},
|
|
454
483
|
pager_flex: {
|
|
455
484
|
ranges: [
|
|
@@ -487,7 +516,8 @@ module PWN
|
|
|
487
516
|
],
|
|
488
517
|
demodulator_mode: :RAW,
|
|
489
518
|
bandwidth: '200.000',
|
|
490
|
-
precision: 6
|
|
519
|
+
precision: 6,
|
|
520
|
+
decoder: :lte
|
|
491
521
|
},
|
|
492
522
|
public_safety_700: {
|
|
493
523
|
ranges: [
|
|
@@ -495,7 +525,8 @@ module PWN
|
|
|
495
525
|
],
|
|
496
526
|
demodulator_mode: :FM,
|
|
497
527
|
bandwidth: '25.000',
|
|
498
|
-
precision: 4
|
|
528
|
+
precision: 4,
|
|
529
|
+
decoder: :p25
|
|
499
530
|
},
|
|
500
531
|
rtty20: {
|
|
501
532
|
ranges: [
|
|
@@ -503,7 +534,8 @@ module PWN
|
|
|
503
534
|
],
|
|
504
535
|
demodulator_mode: :FM,
|
|
505
536
|
bandwidth: '170',
|
|
506
|
-
precision: 3
|
|
537
|
+
precision: 3,
|
|
538
|
+
decoder: :rtty
|
|
507
539
|
},
|
|
508
540
|
rtty40: {
|
|
509
541
|
ranges: [
|
|
@@ -511,7 +543,8 @@ module PWN
|
|
|
511
543
|
],
|
|
512
544
|
demodulator_mode: :FM,
|
|
513
545
|
bandwidth: '170',
|
|
514
|
-
precision: 3
|
|
546
|
+
precision: 3,
|
|
547
|
+
decoder: :rtty
|
|
515
548
|
},
|
|
516
549
|
rtty80: {
|
|
517
550
|
ranges: [
|
|
@@ -519,7 +552,8 @@ module PWN
|
|
|
519
552
|
],
|
|
520
553
|
demodulator_mode: :FM,
|
|
521
554
|
bandwidth: '170',
|
|
522
|
-
precision: 3
|
|
555
|
+
precision: 3,
|
|
556
|
+
decoder: :rtty
|
|
523
557
|
},
|
|
524
558
|
shortwave1: {
|
|
525
559
|
ranges: [
|
|
@@ -671,7 +705,8 @@ module PWN
|
|
|
671
705
|
],
|
|
672
706
|
demodulator_mode: :RAW,
|
|
673
707
|
bandwidth: '400.000',
|
|
674
|
-
precision: 5
|
|
708
|
+
precision: 5,
|
|
709
|
+
decoder: :rfid
|
|
675
710
|
},
|
|
676
711
|
umts: {
|
|
677
712
|
ranges: [
|
|
@@ -679,7 +714,8 @@ module PWN
|
|
|
679
714
|
],
|
|
680
715
|
demodulator_mode: :RAW,
|
|
681
716
|
bandwidth: '5.000.000',
|
|
682
|
-
precision: 6
|
|
717
|
+
precision: 6,
|
|
718
|
+
decoder: :lte
|
|
683
719
|
},
|
|
684
720
|
weather_sat: {
|
|
685
721
|
ranges: [
|
|
@@ -687,7 +723,8 @@ module PWN
|
|
|
687
723
|
],
|
|
688
724
|
demodulator_mode: :FM,
|
|
689
725
|
bandwidth: '15.000',
|
|
690
|
-
precision: 5
|
|
726
|
+
precision: 5,
|
|
727
|
+
decoder: :apt
|
|
691
728
|
},
|
|
692
729
|
wifi24: {
|
|
693
730
|
ranges: [
|
|
@@ -695,7 +732,8 @@ module PWN
|
|
|
695
732
|
],
|
|
696
733
|
demodulator_mode: :RAW,
|
|
697
734
|
bandwidth: '20.000.000',
|
|
698
|
-
precision: 7
|
|
735
|
+
precision: 7,
|
|
736
|
+
decoder: :wifi
|
|
699
737
|
},
|
|
700
738
|
wifi5: {
|
|
701
739
|
ranges: [
|
|
@@ -703,7 +741,8 @@ module PWN
|
|
|
703
741
|
],
|
|
704
742
|
demodulator_mode: :RAW,
|
|
705
743
|
bandwidth: '20.000.000',
|
|
706
|
-
precision: 7
|
|
744
|
+
precision: 7,
|
|
745
|
+
decoder: :wifi
|
|
707
746
|
},
|
|
708
747
|
wifi6: {
|
|
709
748
|
ranges: [
|
|
@@ -711,7 +750,8 @@ module PWN
|
|
|
711
750
|
],
|
|
712
751
|
demodulator_mode: :RAW,
|
|
713
752
|
bandwidth: '20.000.000',
|
|
714
|
-
precision: 7
|
|
753
|
+
precision: 7,
|
|
754
|
+
decoder: :wifi
|
|
715
755
|
},
|
|
716
756
|
zigbee: {
|
|
717
757
|
ranges: [
|
|
@@ -719,7 +759,8 @@ module PWN
|
|
|
719
759
|
],
|
|
720
760
|
demodulator_mode: :RAW,
|
|
721
761
|
bandwidth: '2.000.000',
|
|
722
|
-
precision: 7
|
|
762
|
+
precision: 7,
|
|
763
|
+
decoder: :zigbee
|
|
723
764
|
}
|
|
724
765
|
}
|
|
725
766
|
rescue StandardError => e
|