Module: PWN::SDR::Decoder
- Defined in:
- lib/pwn/sdr/decoder.rb,
lib/pwn/sdr/decoder/apt.rb,
lib/pwn/sdr/decoder/dsp.rb,
lib/pwn/sdr/decoder/gps.rb,
lib/pwn/sdr/decoder/gsm.rb,
lib/pwn/sdr/decoder/lte.rb,
lib/pwn/sdr/decoder/p25.rb,
lib/pwn/sdr/decoder/rds.rb,
lib/pwn/sdr/decoder/adsb.rb,
lib/pwn/sdr/decoder/base.rb,
lib/pwn/sdr/decoder/dect.rb,
lib/pwn/sdr/decoder/flex.rb,
lib/pwn/sdr/decoder/lora.rb,
lib/pwn/sdr/decoder/rfid.rb,
lib/pwn/sdr/decoder/rtty.rb,
lib/pwn/sdr/decoder/wifi.rb,
lib/pwn/sdr/decoder/morse.rb,
lib/pwn/sdr/decoder/pager.rb,
lib/pwn/sdr/decoder/pocsag.rb,
lib/pwn/sdr/decoder/rtl433.rb,
lib/pwn/sdr/decoder/zigbee.rb,
lib/pwn/sdr/decoder/iridium.rb,
lib/pwn/sdr/decoder/bluetooth.rb
Overview
Decoder namespace for SDR signals. Every child module exposes a
uniform .decode(freq_obj:) entry point (see PWN::SDR::Decoder::Base)
so PWN::SDR::GQRX can dispatch on a decoder: key from
PWN::SDR::FrequencyAllocation.band_plans.
100 % ruby-native — no decoder in this namespace shells out to an external binary. Audio-rate protocols (POCSAG, FLEX, Morse, RTTY, APT, Pager) are fully demodulated in Ruby via PWN::SDR::Decoder::DSP; wideband/I/Q-only protocols (ADS-B, GSM, LTE, GPS, LoRa, WiFi, DECT, ZigBee, Bluetooth, Iridium, P25, RFID, RTL433) run a native burst/energy characteriser (see Base.run_detector).
Defined Under Namespace
Modules: ADSB, APT, Base, Bluetooth, DECT, DSP, Flex, GPS, GSM, Iridium, LTE, LoRa, Morse, P25, POCSAG, Pager, RDS, RFID, RTL433, RTTY, WiFi, ZigBee
Constant Summary collapse
- REGISTRY =
symbol → module map. Keys are what a band_plan's :decoder value (or PWN::SDR::GQRX.init_freq's decoder: kwarg) may be set to.
{ adsb: :ADSB, apt: :APT, bluetooth: :Bluetooth, dect: :DECT, flex: :Flex, gprs: :GSM, gps: :GPS, gsm: :GSM, iridium: :Iridium, ism: :RTL433, keyfob: :RTL433, lora: :LoRa, lte: :LTE, morse: :Morse, p25: :P25, pager: :Pager, pocsag: :POCSAG, rds: :RDS, rfid: :RFID, rtl433: :RTL433, rtty: :RTTY, wifi: :WiFi, zigbee: :ZigBee }.freeze
Class Method Summary collapse
-
.authors ⇒ Object
- Author(s)
0day Inc.
-
.help ⇒ Object
Display a List of Every PWN::SDR::Decoder Module.
-
.resolve(opts = {}) ⇒ Object
- Supported Method Parameters
mod = PWN::SDR::Decoder.resolve( decoder: 'required - Symbol/String key from REGISTRY (e.g. :pocsag)' ).
Class Method Details
.authors ⇒ Object
- Author(s)
0day Inc. support@0dayinc.com
86 87 88 |
# File 'lib/pwn/sdr/decoder.rb', line 86 public_class_method def self. "AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n" end |
.help ⇒ Object
Display a List of Every PWN::SDR::Decoder Module
92 93 94 |
# File 'lib/pwn/sdr/decoder.rb', line 92 public_class_method def self.help constants.sort end |
.resolve(opts = {}) ⇒ Object
- Supported Method Parameters
mod = PWN::SDR::Decoder.resolve( decoder: 'required - Symbol/String key from REGISTRY (e.g. :pocsag)' )
76 77 78 79 80 81 82 |
# File 'lib/pwn/sdr/decoder.rb', line 76 public_class_method def self.resolve(opts = {}) key = opts[:decoder].to_s.downcase.to_sym const = REGISTRY[key] raise "ERROR: Unknown decoder key #{key.inspect}. Supported: #{REGISTRY.keys.sort.join(', ')}" unless const const_get(const) end |