
All-source 인텔리전스 융합 대시보드 — WiFi, 셀룰러, CCTV, ADS-B, 궤도 및 SDR 피드를 단일 전술 지도로 통합. 보안 연구 전용.
보안 연구 및 교육을 위한 전 스펙트럼, 전 소스 신호 정보 융합 플랫폼입니다. Signal OPS는 수십 개의 공개 수집 소스(WiFi/Bluetooth/기지국 데이터베이스, 인터넷 노출 스캐너, 카메라 인덱스, ADS-B 항공편 피드, 위성 TLE 추적, SDR/APRS 네트워크)를 하나의 전술 지도와 Flask API로 통합하여 RF, 셀룰러, 항공, 궤도, 감시 영역을 하나의 실시간 작전 상황으로 상호 연관시키며, 선택적으로 AI 지원 위협 요약을 추가로 제공합니다.
거의 모든 소스는 선택 사항입니다. 키가 설정되지 않으면 해당 페처는 정상적으로 건너뜁니다 — 무료 소스(OpenStreetMap, Insecam, ipinfo.io, ADS-B, CelesTrak, KiwiSDR)는 키 없이도 작동합니다.
메인 지도는 WiFi, Bluetooth, 셀룰러, 카메라, 항공기 레이어를 동일한 영역에 융합하며, OSM 카메라, ALPR/Flock 네트워크, 경찰서 오버레이를 토글할 수 있습니다.


| 감시 피드 | CCTV 탐지 |
|---|---|
![]() | ![]() |
감시 목록은 각 장치에 점수를 매기고(예: "의심도 35/100: 인증되지 않은 카메라") WiGLE, Insecam, OSM에서 라우터, TV, 노출된 카메라를 병합합니다. CCTV 보기는 발견된 카메라를 소스별로 그룹화하고 카메라별 위험 및 라이브/메타데이터 상태를 표시합니다.
| 기지국 히트맵 | SDR / APRS 네트워크 |
|---|---|
![]() | ![]() |
핵심 종속성:
flask
requests
python-dotenv
권장 사항(전체 기능 활성화 — 캐싱, 속도 제한, 위성 전파):
cachetools # 제한된 지리 캐시(없으면 무제한 dict로 대체)
flask-limiter # 요청 속도 제한
sgp4 # /api/satellites용 위성 위치 전파
google-genai # Gemini AI 분석(GEMINI_API_KEY 사용 시에만)
모두 설치:
pip install flask requests python-dotenv cachetools flask-limiter sgp4 google-genai
git https://github.com/emrekybs/signalops.git
unzip signalops-v1.zip
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
requirements.txt가 없으면 위 요구 사항 섹션의 pip install 줄을 사용하세요.
예제 파일을 복사하고 보유한 키를 입력하세요:
cp .env.example .env
그런 다음 .env를 열고 API 키를 붙여넣으세요. 모든 키는 선택 사항입니다 — 해당 소스를 비활성화하려면 줄을 비워두거나(또는 삭제) 하세요. 각 키의 용도와 획득 방법은 다음 섹션을 참조하세요.
즉각적인 오프라인 카메라 및 경찰서 조회를 위해 data/ 디렉토리 아래에 배치하세요(또는 DATA_DIR을 다른 곳으로 지정):
data/CAMERAS_WITH_NETWORK_DATA.geojson # 포인트 피처(카메라)
data/police_precincts_usa.geojson # 폴리곤 피처(미국 경찰서)
data/camera_networks.json # 네트워크 공유 메타데이터
data/tiles/{z}/{x}/{y}.json # 선택적 타일 카메라 데이터셋
이 파일들이 없으면 앱은 자동으로 실시간 OpenStreetMap Overpass 쿼리로 대체합니다.
python app_v2.py
서버는 **http://0.0.0.0:8080**에서 시작됩니다. 브라우저에서 http://localhost:8080을 여세요.
언제든지 로드된 공급자를 확인하세요:
GET /api/status # 활성 vs. 누락 키
GET /api/debug # 키별 부울 + 실시간 WiGLE 인증 테스트
프로젝트 루트에 .env 파일을 생성하세요. 아래는 앱이 읽는 전체 목록입니다.
| 변수 | 기본값 | 설명 |
|---|
구성이 필요 없는 소스: OpenStreetMap Overpass, Insecam, EarthCam, ipinfo.io, ADS-B(adsb.fi / OpenSky), CelesTrak TLE, SatNOGS, KiwiSDR.
.env.example다른 사람들이 형식을 알 수 있도록 저장소에 .env.example로 저장하세요:
# ── Signal OPS 환경 ──
# 모든 키는 선택 사항입니다. 해당 소스를 비활성화하려면 비워두세요.
# WiFi / Bluetooth / 셀룰러
WIGLE_API_NAME=
WIGLE_API_TOKEN=
OPENCELLID_API_KEY=
# 인터넷 노출 스캐너
SHODAN_API_KEY=
CENSYS_API_ID=
CENSYS_API_SECRET=
ZOOMEYE_API_KEY=
FOFA_EMAIL=
FOFA_API_KEY=
HUNTERHOW_API_KEY=
NETLAS_API_KEY=
LEAKIX_API_KEY=
CRIMINALIP_API_KEY=
BINARYEDGE_API_KEY=
# 카메라 및 IP 평판
WINDY_API_KEY=
ABUSEIPDB_API_KEY=
# 항공기 및 햄 라디오
ADSB_API_KEY=
APRS_FI_KEY=
# AI 분석
GEMINI_API_KEY=
GEMINI_MODEL=gemini-2.0-flash
# 앱 구성
DATA_DIR=./data
FLASK_SECRET_KEY=
노출된 엔드포인트 중 일부(전체 목록은 소스 참조):
| 변수 | 공급자 | 키 획득처 |
|---|
WIGLE_API_NAME | WiGLE(WiFi/BT/셀) — 사용자 이름 | https://wigle.net/account |
WIGLE_API_TOKEN | WiGLE — API 토큰 | https://wigle.net/account |
OPENCELLID_API_KEY | OpenCellID(기지국) | https://opencellid.org |
SHODAN_API_KEY | Shodan(노출/카메라) | https://account.shodan.io |
CENSYS_API_ID | Censys — API ID | https://search.censys.io/account/api |
CENSYS_API_SECRET | Censys — API 시크릿 | https://search.censys.io/account/api |
ZOOMEYE_API_KEY | ZoomEye | https://www.zoomeye.org/profile |
FOFA_EMAIL | FOFA — 계정 이메일 | https://fofa.info |
FOFA_API_KEY | FOFA — API 키 | https://fofa.info |
HUNTERHOW_API_KEY | Hunter.how | https://hunter.how |
NETLAS_API_KEY | Netlas | https://netlas.io |
LEAKIX_API_KEY | LeakIX | https://leakix.net |
CRIMINALIP_API_KEY | CriminalIP | https://www.criminalip.io |
BINARYEDGE_API_KEY | BinaryEdge | https://www.binaryedge.io |
WINDY_API_KEY | Windy Webcams | https://api.windy.com/keys |
ABUSEIPDB_API_KEY | AbuseIPDB(IP 평판) | https://www.abuseipdb.com/account/api |
ADSB_API_KEY | adsb.fi(선택 사항; 없이도 작동) | https://adsb.fi |
APRS_FI_KEY | APRS.fi(햄 라디오 스테이션) | https://aprs.fi/page/api_key |
GEMINI_API_KEY | Google Gemini(AI 분석) | https://aistudio.google.com/apikey |
GEMINI_MODEL | gemini-2.0-flash | 분석에 사용되는 Gemini 모델 |
DATA_DIR | ./data | 로컬 GeoJSON/JSON 데이터셋 디렉토리 |
FLASK_SECRET_KEY | 실행마다 무작위 | Flask 세션 시크릿; 프로덕션에서는 고정 값 설정 |
| 엔드포인트 | 용도 |
|---|
GET /nearby?lat=&lon=&mode= | 특정 지점 주변 통합 RF/OSINT 스캔 |
GET /api/cctv?lat=&lon= 또는 ?country= | 위치 또는 국가별 카메라 탐지 |
GET /api/search?type=&query= | SSID, IP, 위치 또는 국가별 검색 |
POST /api/analyze | 장치 목록의 AI 요약 |
GET /api/ip-intel?ip= | 다중 소스 IP 위협 인텔리전스 |
GET /api/adsb?lat=&lon=&radius= | 실시간 항공기 + 비상 탐지 |
GET /api/satellites?categories= | 위성 위치(TLE + SGP4) |
GET /api/gps-jamming?lat=&lon= | ADS-B에서 파생된 GPS 재밍 히트맵 |
GET /api/sdr/kiwisdr | 공개 KiwiSDR 수신기 목록 |
GET /api/aprs/stations?lat=&lon= | 인근 APRS 스테이션 |
GET/POST /api/watchlist | 추적 식별자 관리 |
POST /api/watchlist/check | 관심 목록에 대한 장치 목록 확인 |
GET /api/status · GET /api/debug | 공급자 상태 / 키 진단 |