Metadata-Version: 2.4
Name: signalops-sigint
Version: 2.2.0
Summary: Local-first SIGINT / OSINT workbench: WiFi, cell, cameras, aircraft, satellites, vessels and RF layers on one map
Author: Emre Kybs
License-Expression: MIT
Project-URL: Homepage, https://github.com/emrekybs/signalops
Project-URL: Issues, https://github.com/emrekybs/signalops/issues
Keywords: sigint,osint,rf,ads-b,ais,cctv,wifi,sdr,security-research
Classifier: Programming Language :: Python :: 3
Classifier: Framework :: Flask
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Information Technology
Classifier: Topic :: Security
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flask>=3.0.0
Requires-Dist: requests>=2.31.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: cachetools>=5.3.0
Requires-Dist: flask-limiter>=3.5.0
Requires-Dist: sgp4>=2.22
Requires-Dist: urllib3>=2.0
Requires-Dist: reportlab>=4.0
Requires-Dist: websocket-client>=1.6
Requires-Dist: PySocks>=1.7
Requires-Dist: socksio>=1.0
Requires-Dist: google-genai>=1.0.0
Provides-Extra: server
Requires-Dist: gunicorn>=21.0.0; extra == "server"
Dynamic: license-file

# SignalOps

SignalOps puts what is transmitting around a location on one map: Wi-Fi and Bluetooth devices, cell towers, exposed and public cameras, aircraft, satellites, ships and RF networks. It runs on your own machine. There is no account and no cloud backend.

![Overview](docs/screenshots/overview.png)

## What it finds

- **Wireless and cellular:** Wi-Fi access points, Bluetooth and BLE devices and cell towers around a point (WiGLE, OpenCellID), with rogue AP, tracker and IMSI-catcher heuristics.
- **Cameras:**
  - Internet-exposed IP cameras from Shodan, FOFA, Censys, Netlas and ZoomEye.
  - 21 official public camera networks, including TfL, NYC DOT, Caltrans, Digitraffic, DGT, Vegagerðin, NSW, QLDTraffic, the 511 systems, NPS and USGS.
- **Air:** live ADS-B traffic with emergency squawks, drone detection, routes and registrations.
- **RF:** GNSS jamming zones derived from ADS-B, LoRaWAN gateways, Meshtastic nodes, radiosondes with landing predictions, WSPR / PSKReporter HF paths, KiwiSDR receivers and APRS stations.
- **Space and sea:** satellite passes with their downlink frequencies (SatNOGS), space weather (NOAA), and AIS vessels.
- **Investigation:** cases, change detection between scans, a correlation graph, a timeline replay, area monitoring with webhook alerts, a watchlist, and PDF / KML / GeoJSON / CSV export.

![ADS-B](docs/screenshots/adsb.png)

![RF layers](docs/screenshots/rf.png)

<sub>Screenshots use mock data and documentation-range IPs.</sub>

## Install

```bash
pip install signalops-sigint
signalops
```

The app opens at **http://localhost:8080**. Add whichever API keys you have under **Settings**. Every source is optional, and the free ones (OSM, adsb.fi, CelesTrak, SondeHub, Meshtastic, NOAA, public cameras) work without a key.

To run from source instead:

```bash
git clone https://github.com/emrekybs/signalops.git && cd signalops
./start.sh            # Windows: start.bat · Docker: docker compose up -d
```

- **State:** with pip, keys, the database and data live in `~/.signalops`; from source, they stay in the repo folder.
- **Optional datasets:** the camera, ALPR and precinct datasets go in `data/`.
- **Options:** `signalops --port 9090 --home /path`, plus optional Tor or a SOCKS proxy in Settings.
- **Turkish install guide:** [KURULUM.md](KURULUM.md).

## Responsible use

SignalOps is for lawful, authorized research and education. Finding a device does not give you permission to access it. Follow local law and each provider's terms.

## License

[MIT](LICENSE) © 2026 Emre Kybs
