Amateur SIGINT

RTL-SDR 기반 전파 신호 감시 및 이상치 탐지 시스템

왜 만들었나?

  • 자살드론 디텍팅
  • 강남 부근 비정상 주파수 감지
  • 항공기 탐지

* 전파는 그냥 듣기만 하는 거라 합법임

프로젝트 개요

RTL-SDR 동글을 활용한 실시간 전파 스펙트럼 모니터링 시스템이다. 24MHz~1766MHz 대역의 전파 신호를 스캔하고, 머신러닝 기반 이상치 탐지 알고리즘으로 비정상적인 신호 패턴을 자동으로 감지한다.

RTL-SDR 동글 V3신호 모니터링 시스템

기술 스택

  • Hardware: RTL-SDR 동글 (RTL2832U 칩셋, 아마존에서 구매)
  • Backend: Python 3.x, Polars (데이터 처리), rtl_power (신호 스캔)
  • Frontend: Next.js 14, TypeScript, Recharts (시각화)
  • Algorithm: 피크 탐지, Z-Score 기반 통계적 이상치 탐지

ADS-B 신호 스펙트럼 모니터링

모니터링 원리

1090MHz 대역에서 ADS-B(Automatic Dependent Surveillance-Broadcast) 신호의 전력 스펙트럼을 실시간으로 측정한다. 항공기는 1090MHz 단일 주파수로 위치, 속도, 고도 정보를 브로드캐스트하며, 이 대역의 신호 강도 변화를 추적하여 ADS-B 활동을 모니터링한다.

스펙트럼 피크 탐지

// FFT 기반 피크 탐지
const threshold = -18; // dB
const minDistance = 0.5; // MHz

for (let i = 2; i < data.length - 2; i++) {
  if (
    current.power_db > threshold &&
    current.power_db > prev1.power_db &&
    current.power_db > prev2.power_db &&
    current.power_db > next1.power_db &&
    current.power_db > next2.power_db
  ) {
    // 스펙트럼 피크 감지
    detectPeak(current.freq_mhz, current.power_db);
  }
}

rtl_power를 사용한 FFT 기반 스펙트럼 분석으로 -18dB 이상의 국소 최대값(피크)을 탐지한다. 이 피크들은 1090MHz 대역의 전력 분포를 나타내며, ADS-B 신호 활동의 지표가 된다.

스캔 데이터 분석

2025-12-06 02:20:38 - Spectrum Analysis
Freq: 1097.5 MHz | Power: -13.19 dB | Peak Detected
Freq: 1098.2 MHz | Power: -13.53 dB | Peak Detected
Freq: 1099.1 MHz | Power: -13.06 dB | Peak Detected
─────────────────────────────────────────
Spectrum Peaks: 3
Scan Duration: 768ms
Frequency Range: 1080-1100 MHz

2025년 12월 6일 오전 2시 20분... 40분간 수집한 데이터에서 1097-1099MHz 대역에 강한 신호가 지속적으로 감지되었다. 이는 해당 시간대에 활발한 ADS-B 활동이 있었음을 나타낸다!!!

항공기 감지 순간

스캔 데이터 다운로드 (CSV)

1080-1100MHz ADS-B 대역 스펙트럼 데이터 (19,905 rows)

웹 대시보드 시각화

감지된 스펙트럼 피크는 실시간 차트에 시각화되며, 신호 강도에 따라 색상과 애니메이션이 적용된다. 2초마다 자동 업데이트되어 시간에 따른 스펙트럼 변화를 추적한다.

실시간 스펙트럼 대시보드

실시간 스펙트럼 그래프

점이 4개인 이유는 FFT를 4조각(bin)으로만 나누도록 설정했기 때문이다. 실제 전파가 4개가 아니라, 그래프가 4개 점만 보여주도록 되어 있어서 그렇게 보인다. 그래서 스펙트럼이 4개의 점 + 곡선 형태로 나타나는 것. 신호 감지 자체는 정상이며, 단순히 해상도가 낮은 상태일 뿐이다. bin 수를 늘리면 점이 많아지고 더 정밀한 스펙트럼이 보인다.

시계열 그래프

시계열은 시간마다 평균 dB와 최대 dB를 기록한 그래프다. ADS-B는 펄스 신호라 평균(8 dB) < 최대(12 dB) 형태가 정상적이다. 지금은 데이터가 1개만 있어서 점 1개처럼 보인다. 시간이 지나면 점이 여러 개 생기며 선 그래프처럼 이어진다. 값도 형태도 모두 정상이고, 신호가 잘 잡히고 있다는 증거다.

대시보드 URL

기술적 제약사항

현재 시스템의 정확한 수준

이 시스템은 1090MHz 대역의 전력 스펙트럼을 모니터링하는 입문/학습용 프로젝트다. RTL-SDR과 FFT 기반 분석의 기술적 한계를 이해하는 것이 중요하다.

가능한 것

  • 1080-1100 MHz 대역 전력 측정
  • FFT 기반 주파수 분석
  • 시간별 신호 강도 변화 추적
  • Z-score 기반 급등 감지 및 알림
  • 실시간 웹 대시보드 시각화
  • CSV 데이터 로깅

불가능한 것

1. 개별 항공기 식별

ADS-B는 정확히 1090MHz 단일 주파수를 사용한다. 스펙트럼 분석에서 보이는 여러 피크는 RTL-SDR의 주파수 오차, FFT bin 분산, 다중경로 전파 등에 의한 것으로 항공기 개수와는 무관하다. 개별 항공기를 식별하려면 dump1090 같은 Mode-S 디코더로 ICAO 24-bit 주소를 추출해야 한다.

2. ADS-B 패킷 디코딩

rtl_power는 FFT 기반 전력 측정만 수행한다. 120µs 길이의 ADS-B 펄스를 제대로 포착하지 못하며, 콜사인, 고도, 위치 같은 정보를 얻으려면... Raw IQ 샘플링과 Mode-S demodulation이 필요하다.

3. 드론 신호 감지

RTL-SDR은 24-1766MHz 범위만 수신 가능하므로 2.4GHz/5.8GHz 대역의 드론 신호는 감지할 수 없다. HackRF, USRP 같은 별도 장비가 필요하며, Wi-Fi와 드론 신호를 구분하는 패턴 분석 알고리즘도 필요하다.

Rigol S1220 스펙트럼 분석기

Rigol S1220 스펙트럼 분석기

데이터 해석

본 시스템은 1090MHz 대역의 전력 스펙트럼을 FFT 기반으로 분석하여 신호 피크를 탐지한다. 감지된 피크는 해당 대역의 전파 활동 지표이며, 개별 송신원을 식별하지는 않는다.

  • 스펙트럼 피크: FFT 분석에서 국소 최대값으로 탐지된 주파수 지점
  • 신호 강도: 해당 주파수 대역의 수신 전력 (dB 단위)
  • ADS-B 활동: 1090MHz 대역의 전반적인 신호 세기 변화 패턴

개선 방향

단기 (현재 장비)

  • 정확한 용어 사용 (신호 피크, 스펙트럼 분석)
  • 제약사항 명시 (개별 식별 불가)
  • 데이터 시각화 개선

장기 (추가 장비/소프트웨어)

  • dump1090 연동 → 실제 ICAO, 콜사인, 고도
  • IQ 레코딩 → 정확한 패킷 디코딩
  • HackRF/USRP → 2.4GHz 드론 신호 수신

다음 프로젝트

이 프로젝트에서 발전시켜 dump1090 기반 실시간 항공기 추적 시스템을 만들 예정이다. ICAO 주소, 콜사인, 고도, 위치 정보를 디코딩하고 지도에 시각화하는 웹 애플리케이션으로 확장한다.