Brick by Brick
umasscybersec
Task: a raw UART-like CSV capture had to be interpreted as serial data. Solution: treat each sample as one 8N1 bit at about 33377 baud, decode the boot log, then hex-decode the recovered secretflag value.
Brick by Brick — umasscybersec
Description
Organizer description was not preserved in the local task files.
English summary: the challenge provided a code.csv file containing timestamp and logic-level samples from a UART-like signal. The goal was to reconstruct the serial stream and recover the embedded flag.
Analysis
The hints pointed to UART with 8N1 framing and suggested using PulseView. The CSV used a constant timestamp delta of about 2.9960751415645503e-05 seconds, so each row could be treated directly as one bit instead of resampling.
That implies an effective baud rate of about 1 / 2.9960751415645503e-05 = 33377 baud. Parsing the capture by looking for falling edges as start bits, then reading 1 start bit, 8 data bits LSB-first, and 1 stop bit cleanly decoded the stream into Linux boot logs.
Inside the output, the important line was:
secretflag: 554d4153537b553452375f31355f3768335f623335372c5f72316768373f7d
Hex-decoding that string produced the final flag.
Solution
- Open the CSV and note the fixed sampling interval.
- Use the challenge hints to assume UART 8N1 framing.
- Treat each sample as one bit and detect frames starting on falling edges.
- Decode bytes LSB-first and reconstruct the serial log.
- Extract the
secretflaghex string from the boot output. - Convert the hex string to ASCII to obtain the flag.
#!/usr/bin/env python3 from pathlib import Path CSV_PATH = Path("tasks/umasscybersec/Brick by Brick/code.csv") ...
Permission denied (requires auth)
Sign in to read this free writeup
This writeup is free — just sign in with GitHub to read it.
$ssh [email protected]