RF & SDR
Software Defined Radio (SDR) ทำให้วิเคราะห์และโจมตีสัญญาณวิทยุของอุปกรณ์ IoT ได้ด้วย software — remote, sensor, key fob, อุปกรณ์ ISM band บทนี้ลงลึกพื้นฐาน SDR (RTL-SDR vs HackRF), การ capture/ดู spectrum, การ decode (rtl_433), modulation, capture-replay attack และข้อกฎหมาย (เนื้อหาเพื่อฝึกใน lab/CTF/ระบบที่ได้รับอนุญาต)
1. SDR คืออะไร (RTL-SDR vs HackRF)
SDR คือวิทยุที่ประมวลผลสัญญาณด้วย software แทน hardware เฉพาะ — รับ/ส่งคลื่นความถี่กว้างได้ด้วยอุปกรณ์เดียว ใช้วิเคราะห์อุปกรณ์ IoT ที่สื่อสารด้วยคลื่นวิทยุ: รีโมท, เซ็นเซอร์ไร้สาย, key fob, สัญญาณ ISM band (433/315/868/915 MHz)
| RTL-SDR | HackRF One | |
|---|---|---|
| ราคา | ถูกมาก (~500฿) | แพงกว่า (~หลายพัน) |
| รับ (RX) | ได้ (~24-1700 MHz) | ได้ (1 MHz-6 GHz) |
| ส่ง (TX) | ไม่ได้ (RX only) | ได้ (half-duplex) |
| ใช้ | ฟัง/วิเคราะห์/decode | replay/transmit/วิเคราะห์ |
RTL-SDR (RX เท่านั้น) พอสำหรับฟัง/วิเคราะห์/decode; ถ้าต้อง ส่งสัญญาณ (replay/transmit) ต้อง HackRF หรือ device ที่ TX ได้
2. ดู spectrum + capture
# ทดสอบ RTL-SDR
rtl_test # เช็คว่า device ทำงาน
# GQRX — ดู waterfall/spectrum (GUI) หาความถี่ที่อุปกรณ์ส่ง
gqrx
# ตั้งความถี่ใกล้ที่สงสัย (เช่น 433.92 MHz สำหรับ remote ISM)
# กดปุ่มรีโมท → เห็น spike บน waterfall = ความถี่ที่ใช้
# capture raw IQ ที่ความถี่หนึ่ง (เก็บไว้วิเคราะห์/replay)
rtl_sdr -f 433920000 -s 2048000 -g 40 capture.iq
# -f ความถี่, -s sample rate, -g gain
# ความถี่ ISM ที่พบบ่อย: 315MHz (US), 433.92MHz (ทั่วไป), 868MHz (EU), 915MHz3. Decode สัญญาณ (rtl_433 / URH)
# rtl_433 — decode อุปกรณ์ ISM สำเร็จรูป (sensor, remote, weather station)
rtl_433 # auto-decode ทุกอย่างที่ 433MHz
rtl_433 -f 868M # ความถี่อื่น
rtl_433 -A # analyze mode (สัญญาณที่ decode ไม่ได้)
# รองรับอุปกรณ์หลายร้อยรุ่น — sensor อุณหภูมิ, TPMS, remote ฯลฯ
# Universal Radio Hacker (URH) — วิเคราะห์/demodulate/decode signal เอง (GUI)
urh
# 1. Record สัญญาณ (กดรีโมท)
# 2. ดู waveform → demodulate (ASK/OOK/FSK) → ได้ bit
# 3. วิเคราะห์ protocol (preamble, address, command, checksum)
# 4. สร้าง/แก้ signal เพื่อ replay4. Modulation พื้นฐาน
| modulation | หลักการ | พบใน |
|---|---|---|
| ASK / OOK | เปิด-ปิดคลื่น (amplitude) = 1/0 | remote ราคาถูก, key fob เก่า |
| FSK | เปลี่ยนความถี่ = 1/0 | sensor, อุปกรณ์ใหม่กว่า |
| GFSK | FSK + Gaussian filter | BLE, อุปกรณ์สมัยใหม่ |
| PSK | เปลี่ยน phase | ระบบซับซ้อน |
ส่วนใหญ่ใน IoT ราคาถูกเป็น OOK/ASK (ง่ายสุด) หรือ FSK — URH ช่วย demodulate; เมื่อได้ bit stream แล้ววิเคราะห์โครงสร้าง (preamble + address + command + checksum) เพื่อเข้าใจ/ปลอม
5. Capture-Replay attack
การโจมตีพื้นฐานสุดคือ capture แล้ว replay — บันทึกสัญญาณ (เช่นกดรีโมทเปิดประตู) แล้วส่งซ้ำ ได้ผลกับอุปกรณ์ที่ไม่มี rolling code (ใช้ fixed code) ต้องมี device ที่ TX ได้ (HackRF)
# === capture (กดรีโมท/trigger สัญญาณ) ===
hackrf_transfer -r capture.iq -f 433920000 -s 8000000 -l 40 -g 20
# -r บันทึก, -f ความถี่, -s sample rate
# === replay (ส่งสัญญาณที่บันทึกซ้ำ) ===
hackrf_transfer -t capture.iq -f 433920000 -s 8000000 -x 40
# -t ส่ง (transmit), -x TX gain
# ถ้าอุปกรณ์ใช้ fixed code → replay สำเร็จ (เช่นเปิดประตู/รีโมท)
# URH ก็ replay ได้ (Send tab) + แก้ payload ก่อนส่ง
# *** fixed code = replay ได้; rolling code (KeeLoq ฯลฯ) = replay ไม่ได้ ***- fixed code (อ่อน): code เดิมทุกครั้ง → replay ได้เลย (รีโมทถูกๆ, ประตู/กริ่งเก่า)
- rolling code (KeeLoq ฯลฯ): code เปลี่ยนทุกครั้ง → replay ตรงๆ ไม่ได้ (ต้องเทคนิคขั้นสูง เช่น RollJam ที่ jam+capture)
- เป้าหมายที่พบใน CTF/วิจัย: remote, doorbell, weather sensor, TPMS, garage (ISM band)
6. Quick Reference
- SDR = วิทยุด้วย software; RTL-SDR (RX ถูก) / HackRF (TX ได้)
- spectrum: GQRX (waterfall หาความถี่); capture: rtl_sdr -f 433.92M
- decode: rtl_433 (อุปกรณ์ ISM สำเร็จรูป); URH (วิเคราะห์เอง)
- modulation: OOK/ASK (ถูก), FSK; ISM 315/433/868/915 MHz
- replay: hackrf_transfer -r capture → -t replay (fixed code เท่านั้น)
- TX ผิดกฎหมายถ้าไม่ได้รับอนุญาต — ทำใน lab/CTF/อุปกรณ์ตัวเองเท่านั้น
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติโจทย์ CTF ให้ RTL-SDR/HackRF มา พร้อมรีโมทหรืออุปกรณ์ ISM ตัวหนึ่ง มีแค่เครื่อง Kali — ทำตามนี้ทีละขั้น ตั้งแต่หาความถี่ไปจนถอด/replay สัญญาณ
- 1ทดสอบว่า SDR device ทำงาน:
rtl_test— ควรเห็นข้อความว่าเจอ device - 2เปิด GQRX ดู waterfall:
gqrx— ตั้งความถี่ใกล้ค่า ISM มาตรฐาน (433.92 MHz) แล้วกดปุ่มรีโมท ดูว่ามี spike ขึ้นไหม - 3ถ้าไม่เจอที่ 433 MHz ให้กวาดความถี่ ISM อื่น (315/868/915 MHz) ทีละตัว
- 4เมื่อเจอความถี่แล้ว capture raw IQ เก็บไว้:
rtl_sdr -f 433920000 -s 2048000 -g 40 capture.iq - 5ลอง auto-decode ก่อนด้วย
rtl_433 -f 433M— ถ้ารู้จัก protocol จะ decode ให้เลย - 6ถ้า rtl_433 ไม่รู้จัก ให้เปิด
urh(Universal Radio Hacker) → Record สัญญาณ → demodulate (ลอง ASK/OOK ก่อน FSK) → ดู bit stream - 7วิเคราะห์โครงสร้าง bit ที่ได้: หา preamble, address, command, checksum — ดูว่าค่าเปลี่ยนทุกครั้งที่กดไหม
- 8ถ้าค่าเดิมทุกครั้ง (fixed code) → replay ได้เลยด้วย
hackrf_transfer -t capture.iq -f 433920000 -s 8000000 -x 40 - 9ถ้าค่าเปลี่ยนทุกครั้ง (rolling code) → replay ตรงๆ ไม่ได้ ต้องใช้เทคนิคขั้นสูงกว่านี้ (นอกเหนือ scope พื้นฐาน)
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| ทดสอบ SDR device | rtl_test | - | - |
| ดู spectrum/waterfall หาความถี่ | gqrx | - | sigidwiki.com (ฐานข้อมูล signal identification) |
| capture raw IQ | rtl_sdr, hackrf_transfer | - | - |
| decode อุปกรณ์ ISM สำเร็จรูป | rtl_433 | - | - |
| วิเคราะห์/demodulate เอง | - | apt install urh (Universal Radio Hacker) | - |
| replay สัญญาณ (ต้อง TX) | hackrf_transfer | ต้องมี HackRF (RTL-SDR ส่งไม่ได้) | - |
| เทียบ modulation/protocol ที่ไม่รู้จัก | - | - | sigidwiki.com |
หัวข้อที่เชื่อมโยง
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้