ReDECTed Building an SDR based DECT sniffer May 27th, 2015 | HITB HAXPO | Marc Newlin What is a DECT sniffer? • DECT is the ubiquitous wireless protocol used by cordless phones • A DECT sniffer uses an SDR to decode packets from nearby DECT devices Why build a DECT sniffer? • DECT has a high adoption rate worldwide • Writing SDR protocol decoders is fun! • Hacking on a sniffer is a great way to learn a new protocol • Existing DECT sniffers rely on hardware that is no longer produced • SDRs are highly available Dedicated DECT hardware • COM-ON-AIR cards from DOSCH-AMAND • PCMCIA DECT transceiver • Can be used as a generic DECT device • No longer produced; increasingly difficult to find Prior DECT sniffer work • deDECTed • Released open source firmware/driver for COM-ON-AIR cards • Reverse engineered the DECT Standard Authentication Algorithm • Osmocom DECT • DECT stack for Linux • Works with COM-ON-AIR cards to function as a DECT handset or basestation Some Important Terms Acronym Meaning RFP Radio Fixed Part (basestation) PP Portable Part (handset) RFPI Radio Fixed Part Identifier (5octet globally unique identifier) C-plane Control Plane TDMA Time Division Multiple Access LSIG Link Signature PMID Portable MAC Identifier DECT Physical Layer • 1.152 MHz sample rate per channel • 1.728 MHz channel spacing • 5 channels (8.64 MHz) in North America, and 10 channels everywhere else (17.28 MHz) • DECT is called “DECT 6.0” in North America, but this is for strictly marketing reasons • Typically between 1880 MHz and 1930 MHz, but also found at 900 MHz, 2 GHz, and 2.4 GHz • GFSK modulation (required) • DQPSK, D8PSK, QAM16, QAM64 modulation (optional) • TDMA channel access Project goals • Build a DECT sniffer that works on both a Linux computer and an Android phone • Keep complexity to a minimum • Signal processing is computationally expensive • Lower complexity means lower power consumption • Future self is not smart (keep code simple and well documented!!) • Decode all 5 North American DECT channels simultaneously (requires a fancy SDR) • Support single channel decoding with an inexpensive SDR • Most importantly, learn something! SDR hardware USRP B210 $1100 USD 56 MHz bandwidth 70 MHz – 6 GHz 12-bit samples USB 3.0 RTL-SDR E400 $50 USD 3.2 MHz bandwidth 52 MHz – 2.2 GHz 8-bit samples USB 2.0 What do we need to build? Channelizer In the case of 5 DECT channels, this will take the 8.64 MHz input, and split it into 5x 1.728 MHz streams FM Demodulator Turns the output of each channelized stream into bits Frame / slot / packet recovery Take the demodulated bits, and figure out what the DECT hardware is doing Keep it simple • SDR doesn’t have to be complicated… Things requiring a Ph.D to understand Other things MS Word page formatting Software Defined Radio Host Environment Linux Host • • • • • Intel C Compiler Intel Performance Primitives Intel Thread Building Blocks AVX2 and SSE4 SIMD intrinsics Any Intel Core processor Android Host • • • • Android NDK Project Ne10 ARM NEON SIMD intrinsics Quad core ARMv7a processor Talking to the SDR • What is required to get I/Q samples from the SDR’s? USRP B210 • UHD • Boost • libusb RTL-SDR E4000 • librtlsdr • libusb PFB Channelizer 1. Generate low pass filter coefficients for one channel • For N channels, the number of filter coefficients must be an integer multiple of N 2. Low pass filter each channel • For N channels, each Nth sample belongs to the same channel • Each channel is filtered by every Nth coefficient • Given 5 channels, channel 2’s samples are 2, 7, 12, etc, which are filtered by coefficients 2, 7, 12, etc 3. Send the filtered samples through an N-bin FFT 4. Deinterleave the output (at which point each output stream contains samples from one channel) PFB Channelizer – Linux PFB Channelizer - Android FM Demodulator 1. Multiply a sample by the complex conjugate of the previous sample. 2. Compute the phase angle of the result. 3. Positive phase angle means bit 1, negative phase angle means bit 0. FM Demodulator - Linux FM Demodulator - Android Timing Recovery The DECT device clock and SDR clock will typically be offset by a small amount. We need to correct this offset in order to produce accurate bits. 1. With no offset, the phase angle representing a 1 bit will be the absolute value of the phase angle representing a 0 bit. 2. Use the offset (error value) to determine the clock difference between the DECT device and the SDR. 3. Interpolate the output value based on the error value. Timing Recovery – Linux Timing Recovery - Android DECT TDMA Frames and Slots • 1 frame = 24 time slots (10ms) • 1 slot = 480 symbols (480 samples/bits with GFSK modulation) • 12 downlink slots are followed by 12 uplink slots • Slots are used in pairs: [0, 12], [1, 13], etc • Full and double slots start at slot symbol offset 0 • Half slots start at symbol offset 0 or 240 Fixed Capacity Packets Packet Type P0 • 96 symbols • 1 timeslot Packet Type P32 • 420 or 424 symbols • 1 timeslot Packet Type P80 • 900 or 904 symbols • 2 timeslots Variable Capacity Packets Packet Type P00j • Variable length • Half slot, full slot, or double slot DECT TDMA Multiframe • 1 multiframe = 16 frames • RFP’s transmit a multiframe marker in frame 8 of each multiframe • Multiframes are used a unit of duration • Multiframes are numbered when encryption is enabled DECT Packet Structure Field Description S field preamble and sync word D field payload A field MAC header and tail, protected by a 16 bit CRC, unencrypted B field data (voice, control data, etc), can be encrypted X field 32 bit CRC computed over the B field Z field last 4 symbols from the D-field, used to detect interference from unsynchronized transmitters sliding into adjacent timeslots S-field Detector RFP S-field: AA-AA-E9-8A PP S-field: 55-55-16-75 • S-field begins with a preamble of alternating 1’s and 0’s, followed by a sync word • Preamble can be optionally extended by an additional 16 bits • The PP S-field is the inverse of the RFP S-field • Packet detector maintains a ring buffer of incoming bits and bytes • After each new bit, the ring buffer is checked against both the PP and RFP S- fields • When a match is found, the potential packet is passed up to the MAC layer S-field Detector A-field Validator • Detecting an S-field doesn’t mean we have a valid packet • A-field validator calculates the 16 bit CRC, and continues only if it matches • If we have a valid A-field, we proceed to determine the slot and frame indexes of this packet A-field Validator Recovering TDMA Timing • Not all packets contain unique identifiers • Must achieve TDMA sync to infer transceiver state • Multiframe markers transmit system information once per multiframe • There are 12 multiframe marker types, transmitted at periodic intervals C-plane Frames • Frames are fragmented and sent in multiple A-field tails • Protected by a 16-bit CRC • CRC is XOR’d with the LSIG (lower 16 bits of PMID) • Common single-fragment C-plane messages allow us to reverse the LSIG • Once we know the LSIG for a given connection (timeslot), we can CRC-validate and decode multiple fragment frames Reversing the LSIG Reassembling C-plane Frames Cleartext A-Field Data • Static System Information (RFP) • TDMA timing details • Supported frequencies • Number of transceivers • Supported and required encryption • Voice codecs • Lots of other fun stuff • MAC Control (RFP, PP) • Connection establishment • MAC layer encryption setup Paging Tail (RFP) ◦ Timeslot availability details ◦ Supported modulation types Identity Information (RFP) ◦ RFPI (globally unique identifier) ◦ Type of basestation (residential, enterprise, etc) Identity Information (PP) ◦ RFPI of the associated RFP C-plane (Control Plane) (RFP, PP) ◦ Call control management ◦ Caller ID details Conclusions • SDR’s are a viable platform for DECT research • A low complexity DECT sniffer can decode 5 channels simultaneously with a modern Android phone or Linux computer Join me next time for more adventures with SDR and DECT!
© Copyright 2024