$ cat writeup.md…
$ cat writeup.md…
hackthebox
A satellite dish debugging interface captured a serial signal during boot. We need to decode the UART signal to find the flag.
A satellite dish debugging interface captured a serial signal during boot. We need to decode the UART signal to find the flag.
Files provided:
hw_debug.sal - Saleae Logic 2 capture file (ZIP archive containing digital-0.bin, digital-1.bin, meta.json)The .sal file is a Saleae Logic 2 capture format. Despite appearing as a single file, it's actually a ZIP archive containing:
digital-0.bin - TX channel datadigital-1.bin - RX channel datameta.json - Capture metadata (sample rate: 25 MHz)The challenge involves decoding UART (Universal Asynchronous Receiver-Transmitter) serial communication captured from a satellite dish debugging interface during boot.
For Saleae Logic 2 captures, using the official software is the most reliable approach. The proprietary format is best handled by the native application.
brew install --cask saleae-logic
hw_debug.sal in Saleae Logic 2 GUIExport analyzer results to CSV, then convert hex values to ASCII:
#!/usr/bin/env python3 """ Parse Saleae Logic 2 UART export CSV and convert to ASCII text. """ import csv with open('115200.csv', 'r') as f: reader = csv.reader(f) next(reader) # Skip header data = [] for row in reader: if len(row) >= 3 and row[2].startswith('0x'): data.append(int(row[2], 16)) text = bytes(data).decode('latin-1') print(text)
The decoded output revealed a complete boot log from an embedded device (ARM TrustZone bootloader, U-Boot, Linux kernel). The flag was split across warning messages in the boot sequence:
WARNING: The deep space observatory is offline HTB{
INFO: Communication systems are offline reference code: 547311173_
WARNING: Unauthorized subroutines detected! reference code: n37w02k_
WARNING: The satellite dish can not sync with the swarm. reference code: c0mp20m153d}
| Parameter | Value |
|---|---|
| Baud Rate | 115200 |
| Data Bits | 8 |
| Stop Bits | 1 |
| Parity | None |
| Bit Order | LSB first |
The captured boot sequence showed:
When encountering unknown UART signals, try these standard rates:
Tip: Framing errors indicate wrong baud rate - adjust and retry.
Use this technique when you see:
.sal files (Saleae Logic captures)$ cat /etc/motd
Liked this one?
Pro unlocks every writeup, every flag, and API access. $9/mo.
$ cat pricing.md$ grep --similar