- Support for many standards-compliant and proprietary DVB-S2(X) IP packet encapsulation variants, including GSE, MPEG-TS, IP, and reverse encoding.
- Output showing packet counts for each parser
- Driver patch for Linux TBS DVB-S2(X) receiver that enables capturing proprietary IP encapsulation (i.e., non MPEG-TS).
First, install the required dependencies:
pip install -r requirements.txtRun all parsers (default):
python3 dontlookup.py capture_file.tsRun a specific parser:
python3 dontlookup.py capture_file.ts -p dvbs2-ipRun multiple specific parsers:
python3 dontlookup.py capture_file.ts -p dvbs2-ip -p dvbs2-mpegtsdvbs2-ip- DVBS2 -> IPdvbs2-rev-ip- DVBS2 -> Reverse -> IPdvbs2-mpegts- DVBS2 -> MPEG-TSdvbs2-mpegts-crc- DVBS2 -> MPEG-TS with Generic CRCdvbs2-mpegts-newtec- DVBS2 -> MPEG-TS with Newtec CRCdvbs2-gse-stdlen-split-ip- DVBS2 -> GSE (standard length, split frag ID) -> IPdvbs2-gse-stdlen-std-ip- DVBS2 -> GSE (standard length, standard frag ID) -> IPdvbs2-gse-len2-split-ip- DVBS2 -> GSE (hdrlen-2, split frag ID) -> IPdvbs2-gse-len2-std-ip- DVBS2 -> GSE (hdrlen-2, standard frag ID) -> IPall- Run all parsers
-p, --parser- Specify parser(s) to run (can be used multiple times)-v, --verbose- Increase logging verbosity- Default: INFO level
-v: HEADER level-vv: DEBUG level-vvv: PAYLOAD level (most verbose)
--no-progress- Disable progress bars-h, --help- Show help message
# Run all parsers with default settings
python3 dontlookup.py capture.ts -p all
# Run only IP-related parsers
python3 dontlookup.py capture.ts -p dvbs2-ip -p dvbs2-rev-ip
# Run GSE parsers with verbose output
python3 dontlookup.py capture.ts -p dvbs2-gse-stdlen-split-ip -p dvbs2-gse-len2-split-ip -v
# Run MPEG-TS parsers without progress bars
python3 dontlookup.py capture.ts -p dvbs2-mpegts -p dvbs2-mpegts-crc --no-progressThe tool will:
- Run each specified parser in sequence
- Display packet counts as each parser completes
- Generate a summary at the end showing all results
- Generate parsed files in the
output/directory - Generate log files in the
logs/directory
Each parser creates a chain of intermediate files by appending extensions. For example:
dvbs2-ip parser chain:
capture.ts.dvbs2- Raw BBFrame payloads (intermediate)capture.ts.dvbs2.ip- IP packets as PCAP (final)
dvbs2-gse-stdlen-split-ip parser chain:
capture.ts.dvbs2- Raw BBFrame payloads (intermediate)capture.ts.dvbs2.stdlen.split.gse- GSE PDU payloads (intermediate)capture.ts.dvbs2.stdlen.split.gse.ip- IP packets as PCAP (final)
dvbs2-mpegts parser chain:
capture.ts.dvbs2- Raw BBFrame payloads (intermediate)capture.ts.dvbs2.mpegts- MPEG-TS stream (final)
The output/ directory will contain many intermediate files, but you only need to examine the final output files:
- For IP packet analysis: Look at
.ip.pcapfiles - open these in Wireshark - For MPEG-TS analysis: Look at
.mpegtsfiles - open these in Wireshark/tshark
The intermediate files (.dvbs2, .gse, .rev, etc.) are kept for debugging but are not needed for normal analysis.
Processing capture file: capture.ts
Running 2 parser(s)...
=== Running: DVBS2 -> IP ===
BBFrames found: 1234
IP packets found: 567
=== Running: DVBS2 -> MPEG-TS ===
BBFrames found: 1234
MPEG-TS packets found: 890
======================================================================
SUMMARY OF ALL PARSERS
======================================================================
dvbs2-ip:
bbframes: 1234
ip_packets: 567
dvbs2-mpegts:
bbframes: 1234
mpegts_packets: 890
- Extracts BBFrames from DVB-S2 captures
- Reports number of frames and CRC-encoded frames
- Performs blind IP header search by checking for correct IP CRCs on all byte offsets (slow)
-
Four variants based on header length and fragment ID type:
Header Length Variants:
- Standard length: Uses standard GSE length field encoding (12 bits)
- hdrlen-2: Uses non-standard 2-byte header length field (some proprietary implementations)
Fragment ID Encoding Variants:
- Standard (std): Parses fragment ID as standard 8-bit field
- Split: Parses fragment ID using 6/2 bit split encoding (6 bits for fragment ID + 2 bits for counter)
The difference is in HOW they parse the fragment ID field from the GSE header. The "split" variant is for non-standard DVB-S2 implementations where the 8-bit fragment ID field is actually split into a 6-bit fragment ID and a 2-bit counter.
-
Reports whole PDUs, fragmented PDUs, and reassembled packets
- Three variants:
- Standard MPEG-TS
- Generic CRC-protected MPEG-TS
- Newtec CRC-protected MPEG-TS
- Reports transport packet counts
- Generates MPEGTS files that can be opened in Wireshark/tshark
- Extracts IPv4 packets
- Validates checksums
- Generates PCAP files that can be opened in Wireshark/tshark
- Swaps every pair of bytes (byte-swap 16-bit words)
- The tool does NOT perform heuristics to determine the best parser
- You need to open each output file in Wireshark to find the correctly parsed version
- All specified parsers are run independently
- Output files are organized by parser type in the
write/directory - Each parser run is logged separately in the
logs/directory