
iNTERCEPT, 최고의 신호 정보 도구를 단일하고 접근 가능한 인터페이스로 통합하는 무료 오픈 소스 플랫폼.
<p align="center"> <img src="https://raw.githubusercontent.com/smittix/intercept/HEAD/static/images/readme-banner.svg" alt="iNTERCEPT — 신호 정보 플랫폼" width="100%"> </p> <p align="center"> <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"> <img src="https://img.shields.io/badge/license-Apache--2.0-green.svg" alt="Apache 2.0 라이선스"> <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey.svg" alt="플랫폼"> </p> <p align="center"> 이 오픈소스 프로젝트의 개발자를 후원해 주세요 </p> <p align="center"> <a href="https://www.buymeacoffee.com/smittix" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/12080/608ca47c77206e90cac89def2d3fa14b17084ebc4a0a8dce231e4f0b3a78be1a.webp" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a> </p> <p align="center"> <strong>신호 정보 플랫폼</strong><br> 소프트웨어 정의 라디오 도구를 위한 웹 기반 인터페이스입니다. </p> <p align="center"> <img src="https://assets.kitploit.com/production/public/readmes/12080/ccf5fc125324afe151202823a136a895449841e2cdd28325dcf6290230cda0d1.png" alt="스크린샷"> </p> --- ## 기능 - **페이저 디코딩** - rtl_fm + multimon-ng를 통한 POCSAG/FLEX - **433MHz 센서** - rtl_433을 통한 기상 관측소, TPMS, IoT 기기 - **Sub-GHz 분석기** - HackRF를 통한 300-928 MHz ISM 대역의 RF 캡처 및 프로토콜 디코딩 - **항공기 추적** - dump1090을 통한 ADS-B, 실시간 지도 및 레이더 제공 - **선박 추적** - VHF DSC 조난 모니터링을 포함한 AIS 선박 추적 - **ACARS 메시징** - acarsdec을 통한 항공기 데이터링크 메시지 - **VDL2** - dumpvdl2를 통한 VHF 데이터링크 모드 2 항공기 데이터링크 디코딩 - **청취소** - 실시간 오디오 모니터링을 갖춘 광대역 주파수 스캐너 - **기상 위성** - 자동 스케줄러를 갖춘 SatDump를 통한 NOAA APT 및 Meteor LRPT 이미지 디코딩 - **WebSDR** - KiwiSDR 네트워크를 통한 원격 HF/단파 청취 - **ISS SSTV** - 국제우주정거장으로부터의 느린 주사 TV 이미지 수신 - **HF SSTV** - 단파 주파수(80m-10m, VHF, UHF)에서의 지상 SSTV - **APRS** - direwolf를 통한 아마추어 패킷 라디오 위치 보고 및 텔레메트리 - **위성 추적** - 극좌표 플롯 및 지상 궤적 지도를 포함한 통과 예측 - **유틸리티 미터** - rtlamr를 통한 전기, 가스, 수도 계량기 판독 - **ADS-B 기록** - 보고 대시보드를 갖춘 영구 항공기 기록 (Postgres 선택 사항) - **WiFi 스캐닝** - aircrack-ng를 통한 모니터 모드 정찰 - **블루투스 스캐닝** - 기기 탐색 및 트래커 탐지 (Ubertooth 지원 포함) - **BT 위치 추적** - GPS 태그 신호 흔적 매핑 및 근접 경보를 갖춘 SAR 블루투스 기기 위치 추적 - **WiFi 위치 추적** - 실시간 신호 측정기, 거리 추정, 근접 오디오를 갖춘 BSSID 기반 WiFi 액세스 포인트 위치 추적 - **GPS** - 실시간 지도, 속도, 고도, 위성 정보를 갖춘 실시간 GPS 위치 추적 - **TSCM** - RF 기준선 비교 및 위협 탐지를 통한 역감시 - **Meshtastic** - LoRa 메시 네트워크 통합 - **우주 기상** - NOAA SWPC, NASA SDO, HamQSL로부터의 실시간 태양 및 지자기 데이터 (SDR 불필요) - **스파이 방송국** - 넘버 스테이션 및 외교 HF 네트워크 데이터베이스 - **원격 에이전트** - 원격 센서 노드를 통한 분산 SIGINT - **오프라인 모드** - 에어갭/현장 배포를 위한 번들 자산 - **드론 인텔리전스** - ASTM F3411 Remote ID (WiFi/BLE), RTL-SDR 433/868 MHz RF, HackRF 2.4/5.8 GHz 스캐닝을 통한 다중 벡터 UAV 탐지, 실시간 접촉 지도 및 위험 점수 산정 --- ## 설치 / Debian / Ubuntu / macOS ### 빠른 시작 ```bash git clone https://github.com/smittix/intercept.git cd intercept ./setup.sh # Interactive menu (first run launches setup wizard) sudo ./start.sh ``` 처음 실행할 때 `setup.sh`는 **안내 마법사**를 실행하여 운영 체제를 감지하고, 설치 프로필을 선택할 수 있게 하며, Python 환경을 설정하고, 선택적으로 환경 변수와 PostgreSQL을 구성합니다. 이후 실행에서는 **대화형 메뉴**가 열립니다: ``` INTERCEPT Setup Menu ════════════════════════════════════════ 1) Install / Add Modules 2) System Health Check 3) Database Setup (ADS-B History) 4) Update Tools 5) Environment Configurator 6) Uninstall / Cleanup 7) View Status 0) Exit ``` > **프로덕션 vs 개발 서버:** `start.sh`는 gunicorn + gevent를 자동 감지하여 협력적 그린릿(cooperative greenlet) 기반의 프로덕션 서버를 실행합니다. 이는 블로킹 없이 다수의 SSE/WebSocket 클라이언트를 처리합니다. gunicorn이 설치되어 있지 않으면 Flask 개발 서버로 대체됩니다. 빠른 로컬 개발을 위해서는 여전히 `sudo -E venv/bin/python intercept.py`를 직접 사용할 수 있습니다. ### 설치 프로필 마법사 실행 중 또는 메뉴 옵션 1을 통해 설치할 항목을 선택하세요: | # | 프로필 | 도구 | |---|---------|-------| | 1 | 핵심 SIGINT | rtl_sdr, multimon-ng, rtl_433, dump1090, acarsdec, dumpvdl2, ffmpeg, gpsd | | 2 | 해양 & 무선 | AIS-catcher, direwolf | | 3 | 기상 & 우주 | SatDump, radiosonde_auto_rx | | 4 | RF 보안 | aircrack-ng, HackRF, BlueZ, hcxtools, Ubertooth, SoapySDR | | 5 | 전체 SIGINT | 위의 모든 항목 | | 6 | 사용자 지정 | 도구별 체크리스트 | 여러 프로필을 조합할 수 있습니다 (예: 핵심 + 기상을 위해 `1 3` 입력). ### CLI 플래그 ```bash ./setup.sh --non-interactive # Headless full install (same as legacy behavior) ./setup.sh --profile=core,weather # Install specific profiles ./setup.sh --health-check # Check system health and exit ./setup.sh --postgres-setup # Run PostgreSQL setup and exit ./setup.sh --menu # Force interactive menu ``` ### Docker ```bash git clone https://github.com/smittix/intercept.git cd intercept docker compose --profile basic up -d --build ``` > **참고:** Docker는 USB SDR 액세스를 위해 권한 모드(privileged mode)가 필요합니다. SDR 장치는 `/dev/bus/usb`를 통해 전달됩니다. > **데이터:** 설정, 사용자, 경보 규칙, 감시 목록 및 디코딩된 메시지는 호스트의 `./instance`에 저장되므로 `--build` 후에도 유지됩니다. 해당 마운트가 없는 compose 파일에서 업그레이드하는 경우, 재빌드 전에 기존 데이터를 복사하세요: `docker cp intercept:/app/instance ./instance`. 다중 아키텍처 빌드(라즈베리 파이용 amd64 + arm64)는 `build-multiarch.sh`를 참조하세요 — 크로스 컴파일과 레지스트리 푸시를 한 단계로 처리합니다. ### 환경 구성 **환경 구성 도구**(메뉴 옵션 5)를 사용하여 모든 `INTERCEPT_*` 변수를 대화형으로 설정할 수 있습니다. 설정은 `.env` 파일에 저장되며, `start.sh`가 시작 시 자동으로 이를 소싱합니다. `.env`를 직접 생성하거나 편집할 수도 있습니다: ```bash # .env (auto-loaded by start.sh) INTERCEPT_PORT=5050 INTERCEPT_ADSB_AUTO_START=true INTERCEPT_DEFAULT_LAT=51.5074 INTERCEPT_DEFAULT_LON=-0.1278 ``` ### ADS-B 기록 (선택 사항) ADS-B 기록 기능은 장기 분석을 위해 항공기 메시지를 PostgreSQL에 영구 저장합니다. **자동 설정 (로컬 설치):** ```bash ./setup.sh --postgres-setup # Or use menu option 3: Database Setup ``` 필요한 경우 PostgreSQL을 설치하고, 데이터베이스/사용자/테이블을 생성하며, 연결 설정을 `.env`에 기록합니다. **Docker:** ```bash docker compose --profile history up -d ``` 다음 환경 변수를 설정하세요 (`.env` 파일에서): ```bash INTERCEPT_ADSB_HISTORY_ENABLED=true INTERCEPT_ADSB_DB_HOST=adsb_db INTERCEPT_ADSB_DB_PORT=5432 INTERCEPT_ADSB_DB_NAME=intercept_adsb INTERCEPT_ADSB_DB_USER=intercept INTERCEPT_ADSB_DB_PASSWORD=intercept ``` Postgres 데이터를 외부 스토리지에 저장하려면 `PGDATA_PATH`를 설정하세요 (기본값은 `./pgdata`): ```bash PGDATA_PATH=/mnt/usbpi1/intercept/pgdata ``` 그런 다음 보고 대시보드를 위해 **/adsb/history**를 엽니다. ### 시스템 상태 점검 설치가 완료되었고 정상적으로 작동하는지 확인하세요: ```bash ./setup.sh --health-check # Or use menu option 2 ``` 설치된 도구, SDR 장치, 포트 가용성, 권한, Python venv, `.env` 구성 및 PostgreSQL 연결을 확인합니다. ### 인터페이스 열기 시작한 후 브라우저에서 **http://localhost:5050** 을 엽니다. **기본 비밀번호는 없습니다.** 최초 시작 시 INTERCEPT가 `admin` 계정용 비밀번호를 생성하여 로그에 기록하고 `instance/.initial_password`에 저장합니다. 해당 비밀번호로 로그인하면 인터페이스가 잠금 해제되기 전에 직접 비밀번호를 설정하라는 요청을 받게 됩니다. 처음부터 직접 비밀번호를 지정하려면 최초 시작 전에 `INTERCEPT_ADMIN_PASSWORD`를 설정하십시오. 자세한 내용과 이전의 `admin`/`admin` 기본값이 대체된 이유는 [보안](https://github.com/smittix/intercept/blob/main/docs/SECURITY.md#authentication)을 참조하십시오. --- ## 하드웨어 요구 사항 | 하드웨어 | 용도 | 가격 | |----------|---------|-------| | **RTL-SDR** | 모든 SDR 기능에 필요 | ~$25-35 | | **WiFi 어댑터** | 프로미스큐어스(모니터) 모드를 지원해야 함 | ~$20-40 | | **Bluetooth 어댑터** | 장치 스캔 (보통 내장) | - | | **GPS** | Linux에서 지원되는 모든 GPS 장치 | ~10 | 대부분의 기능은 기본 RTL-SDR 동글(RTL2832U + R820T2)로 작동합니다. | :exclamation: RTL-SDR 장치를 사용하지 않으십니까? | |----------------------------------------------- |Intercept는 SoapySDR이 지원하는 모든 장치를 지원합니다. 단, 사용하는 장치에 맞는 올바른 모듈이 설치되어 있어야 합니다! 예를 들어 SDRPlay 장치가 있다면 soapysdr-module-sdrplay를 설치해야 합니다. | :exclamation: GPS 사용 | |----------------------------------------------- |실시간 위치 확인에는 gpsd가 필요합니다. Intercept는 지도가 렌더링될 때마다 백그라운드에서 gpsd가 실행 중인지 자동으로 확인합니다. --- ## Discord 서버 <p align="center"> <a href="https://discord.gg/EyeksEJmWE">Discord에 참여하세요</a> </p> --- ## 문서 - [사용 가이드](https://github.com/smittix/intercept/blob/main/docs/USAGE.md) - 각 모드에 대한 자세한 지침 - [하드웨어 가이드](https://github.com/smittix/intercept/blob/main/docs/HARDWARE.md) - SDR 하드웨어, 수동 설치 및 고급 설정 - [문제 해결](https://github.com/smittix/intercept/blob/main/docs/TROUBLESHOOTING.md) - 일반적인 문제와 해결 방법 - [분산 에이전트](https://github.com/smittix/intercept/blob/main/docs/DISTRIBUTED_AGENTS.md) - 원격 센서 노드 배포 - [웹훅](https://github.com/smittix/intercept/blob/main/docs/WEBHOOKS.md) - 경고 규칙 및 웹훅 통합 - [보안](https://github.com/smittix/intercept/blob/main/docs/SECURITY.md) - 네트워크 보안 및 모범 사례 --- ## 면책 조항 이 프로젝트는 AI를 코딩 파트너로 활용하여 개발되었으며, 인간의 지시와 AI 지원 구현을 결합했습니다. 목표는 일반적인 SDR 도구들을 위한 깔끔하고 통합된 인터페이스를 제공하여 소프트웨어 정의 라디오를 더 쉽게 접근할 수 있도록 하는 것입니다. **이 소프트웨어는 교육 및 승인된 테스트 목적으로만 사용됩니다.** - 적절한 승인을 받은 경우에만 사용하십시오 - 동의 없이 통신을 가로채는 것은 불법일 수 있습니다 - 관련 법률 준수에 대한 책임은 사용자에게 있습니다 --- ## 라이선스 Apache 2.0 라이선스 - [LICENSE](https://github.com/smittix/intercept/blob/main/LICENSE) 참조 ## 작성자 **smittix** 제작 - [GitHub](https://github.com/smittix) ## 감사의 글 [rtl-sdr](https://osmocom.org/projects/rtl-sdr/wiki) | [multimon-ng](https://github.com/EliasOenal/multimon-ng) | [rtl_433](https://github.com/merbanan/rtl_433) | [dump1090](https://github.com/flightaware/dump1090) | [AIS-catcher](https://github.com/jvde-github/AIS-catcher) | [acarsdec](https://github.com/TLeconte/acarsdec) | [direwolf](https://github.com/wb2osz/direwolf) | [rtlamr](https://github.com/bemasher/rtlamr) | [dumpvdl2](https://github.com/szpajder/dumpvdl2) | [aircrack-ng](https://www.aircrack-ng.org/) | [Leaflet.js](https://leafletjs.com/) | [SatDump](https://github.com/SatDump/SatDump) | [Celestrak](https://celestrak.org/) | [Priyom.org](https://priyom.org/)