- Remove undeployed challenges: Phantom_Byte, Cr4cK_w1f1, Lain_Br34kC0r3 V1, Lain_VS_Knights, Lets_All_Love_UART, AETHER_NET, Last_Train_451, Web3/ - Sync 24 solve/ files from main CTF-Espilon repo - Update all READMEs with real CTFd final scores at freeze - Add git-header.png banner - Rewrite README: scoreboard top 10, edition stats (1410 users, 264 boards, 1344 solves), correct freeze date March 26 2026
58 lines
1.5 KiB
Markdown
58 lines
1.5 KiB
Markdown
# Signal Tap Lain — Solution
|
||
|
||
## Overview
|
||
|
||
A logic analyzer capture is streamed with 3 channels. Channel 1 (ch1) contains
|
||
UART data at 9600 baud, 8N1 format. The player must identify the protocol from
|
||
signal timing and decode the ASCII message.
|
||
|
||
## Steps
|
||
|
||
1. Connect and capture the data:
|
||
|
||
```bash
|
||
nc <host> 3800 > capture.csv
|
||
```
|
||
|
||
Wait for `--- END OF CAPTURE ---`.
|
||
|
||
1. Analyze the capture. Use `info` command for metadata:
|
||
|
||
```text
|
||
info
|
||
```
|
||
|
||
Shows 3 channels: ch0 (reference), ch1 (data), ch2 (noise).
|
||
|
||
1. Focus on ch1. Look for patterns:
|
||
|
||
- Idle state is HIGH (1)
|
||
- Periodic falling edges = start bits
|
||
- Measure time between start bits to find character period
|
||
|
||
1. Calculate baud rate:
|
||
|
||
- Bit period ≈ 104.17 μs → 9600 baud
|
||
- Character frame = 10 bits (1 start + 8 data + 1 stop) = ~1041.67 μs
|
||
|
||
1. Decode UART 8N1:
|
||
|
||
- Start bit: falling edge (HIGH → LOW)
|
||
- Sample data bits at center of each bit period (1.5 × bit_period after start)
|
||
- 8 data bits, LSB first
|
||
- Stop bit: HIGH
|
||
|
||
1. Script or manually decode the ch1 data to ASCII. The message contains the flag
|
||
repeated 3 times.
|
||
|
||
## Key Concepts
|
||
|
||
- **Logic analysis**: Reading digital signals and identifying protocols from timing patterns
|
||
- **UART 8N1**: Universal Asynchronous Receiver/Transmitter — start bit, 8 data bits LSB-first, no parity, 1 stop bit
|
||
- **Baud rate detection**: Measuring the shortest pulse width gives the bit period → baud rate
|
||
- **Signal separation**: In a multi-channel capture, identifying which channel carries useful data
|
||
|
||
## Flag
|
||
|
||
`ESPILON{s1gn4l_t4p_l41n}`
|