write-up: IoT/Lets_All_Love_UART/README.md

This commit is contained in:
Eun0us 2026-03-26 17:33:35 +00:00
parent 95c0b63bfb
commit 239f8af9a8

View File

@ -1,17 +1,46 @@
# Let's All Love UART — Solution
# Let's All Love UART
**Difficulty:** Easy | **Category:** IoT | **Flag:** `ESPILON{LAIN_TrUsT_U4RT}`
| Field | Value |
|-------|-------|
| Category | IoT |
| Difficulty | Easy |
| Points | 500 |
| Author | Eun0us |
| CTF | Espilon 2026 |
## Overview
---
The challenge emulates a split UART interface on a Lain router:
## Description
- **TX (port 1111)**: Read only — device output
- **RX (port 2222)**: Write only — send commands
This challenge emulates a UART interface on a Lain router.
Open both connections, interact as if it was real hardware.
## Steps
- **TX**: Read only
- **RX**: Write only
1. Open two terminals:
**Let's All Love Lain!**
---
## TL;DR
Open the TX and RX ports simultaneously. Send `flag` on the RX (write) port.
The flag is immediately printed on the TX (read) port.
---
## Tools
| Tool | Purpose |
|------|---------|
| `nc` | Split UART connection |
| Python 3 | Automated solver script |
---
## Solution
### Step 1 — Open both channels
```bash
# Terminal 1 — read device output
@ -21,19 +50,27 @@ nc <host> 1111
nc <host> 2222
```
1. On the RX terminal, send the `flag` command:
> 📸 `[screenshot: two terminal windows open, TX showing the device banner]`
### Step 2 — Request the flag
In Terminal 2 (RX):
```text
flag
```
1. The flag prints on the TX terminal:
### Step 3 — Read the flag
```text
In Terminal 1 (TX):
```
ESPILON{LAIN_TrUsT_U4RT}
```
## Solver Script
> 📸 `[screenshot: TX terminal printing the flag immediately after the flag command is sent]`
### Automated solver
```python
#!/usr/bin/env python3
@ -64,10 +101,8 @@ with socket.create_connection((HOST, RX_PORT)) as s:
tx_thread.join()
```
---
## Flag
`ESPILON{LAIN_TrUsT_U4RT}`
## Author
Eun0us