signalops-sigint 2.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- signalops_sigint-2.2.0/LICENSE +21 -0
- signalops_sigint-2.2.0/MANIFEST.in +7 -0
- signalops_sigint-2.2.0/PKG-INFO +85 -0
- signalops_sigint-2.2.0/README.md +51 -0
- signalops_sigint-2.2.0/pyproject.toml +57 -0
- signalops_sigint-2.2.0/setup.cfg +4 -0
- signalops_sigint-2.2.0/signalops/__init__.py +2 -0
- signalops_sigint-2.2.0/signalops/__main__.py +3 -0
- signalops_sigint-2.2.0/signalops/app_v2.py +5849 -0
- signalops_sigint-2.2.0/signalops/cli.py +38 -0
- signalops_sigint-2.2.0/signalops/modules/__init__.py +2 -0
- signalops_sigint-2.2.0/signalops/modules/ais.py +1087 -0
- signalops_sigint-2.2.0/signalops/modules/cases.py +517 -0
- signalops_sigint-2.2.0/signalops/modules/export.py +337 -0
- signalops_sigint-2.2.0/signalops/modules/fonts/DejaVuSans-Bold.ttf +0 -0
- signalops_sigint-2.2.0/signalops/modules/fonts/DejaVuSans.ttf +0 -0
- signalops_sigint-2.2.0/signalops/modules/graph.py +465 -0
- signalops_sigint-2.2.0/signalops/modules/health.py +429 -0
- signalops_sigint-2.2.0/signalops/modules/monitor.py +802 -0
- signalops_sigint-2.2.0/signalops/modules/net.py +533 -0
- signalops_sigint-2.2.0/signalops/modules/pubcams.py +242 -0
- signalops_sigint-2.2.0/signalops/modules/rf.py +549 -0
- signalops_sigint-2.2.0/signalops/modules/store.py +388 -0
- signalops_sigint-2.2.0/signalops/modules/timeline.py +363 -0
- signalops_sigint-2.2.0/signalops/paths.py +26 -0
- signalops_sigint-2.2.0/signalops/static/css/so-nav.css +1 -0
- signalops_sigint-2.2.0/signalops/static/css/so-theme.css +194 -0
- signalops_sigint-2.2.0/signalops/static/fonts/OFL.txt +93 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-ext-400-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-ext-500-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-ext-600-normal.woff2 +0 -0
- signalops_sigint-2.2.0/signalops/static/js/so-cases.js +342 -0
- signalops_sigint-2.2.0/signalops/static/js/so-nav.js +75 -0
- signalops_sigint-2.2.0/signalops/static/js/so-safe.js +23 -0
- signalops_sigint-2.2.0/signalops/static/js/so-tiles.js +56 -0
- signalops_sigint-2.2.0/signalops/templates/_sidebar.html +55 -0
- signalops_sigint-2.2.0/signalops/templates/adsb.html +2251 -0
- signalops_sigint-2.2.0/signalops/templates/base.html +92 -0
- signalops_sigint-2.2.0/signalops/templates/cases.html +785 -0
- signalops_sigint-2.2.0/signalops/templates/cctv.html +603 -0
- signalops_sigint-2.2.0/signalops/templates/dashboard.html +347 -0
- signalops_sigint-2.2.0/signalops/templates/geo.html +779 -0
- signalops_sigint-2.2.0/signalops/templates/graph.html +579 -0
- signalops_sigint-2.2.0/signalops/templates/maritime.html +581 -0
- signalops_sigint-2.2.0/signalops/templates/mobile.html +411 -0
- signalops_sigint-2.2.0/signalops/templates/monitor.html +625 -0
- signalops_sigint-2.2.0/signalops/templates/orbital.html +816 -0
- signalops_sigint-2.2.0/signalops/templates/profiles.html +171 -0
- signalops_sigint-2.2.0/signalops/templates/rf.html +290 -0
- signalops_sigint-2.2.0/signalops/templates/sdr.html +1587 -0
- signalops_sigint-2.2.0/signalops/templates/settings.html +483 -0
- signalops_sigint-2.2.0/signalops/templates/social.html +351 -0
- signalops_sigint-2.2.0/signalops/templates/surveillance.html +1038 -0
- signalops_sigint-2.2.0/signalops/templates/timeline.html +717 -0
- signalops_sigint-2.2.0/signalops/templates/watchlist.html +384 -0
- signalops_sigint-2.2.0/signalops/templates/wifi_search.html +3349 -0
- signalops_sigint-2.2.0/signalops_sigint.egg-info/PKG-INFO +85 -0
- signalops_sigint-2.2.0/signalops_sigint.egg-info/SOURCES.txt +67 -0
- signalops_sigint-2.2.0/signalops_sigint.egg-info/dependency_links.txt +1 -0
- signalops_sigint-2.2.0/signalops_sigint.egg-info/entry_points.txt +2 -0
- signalops_sigint-2.2.0/signalops_sigint.egg-info/requires.txt +15 -0
- signalops_sigint-2.2.0/signalops_sigint.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Emre Kybs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: signalops-sigint
|
|
3
|
+
Version: 2.2.0
|
|
4
|
+
Summary: Local-first SIGINT / OSINT workbench: WiFi, cell, cameras, aircraft, satellites, vessels and RF layers on one map
|
|
5
|
+
Author: Emre Kybs
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/emrekybs/signalops
|
|
8
|
+
Project-URL: Issues, https://github.com/emrekybs/signalops/issues
|
|
9
|
+
Keywords: sigint,osint,rf,ads-b,ais,cctv,wifi,sdr,security-research
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Framework :: Flask
|
|
12
|
+
Classifier: Environment :: Web Environment
|
|
13
|
+
Classifier: Intended Audience :: Information Technology
|
|
14
|
+
Classifier: Topic :: Security
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Requires-Python: >=3.9
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Requires-Dist: flask>=3.0.0
|
|
20
|
+
Requires-Dist: requests>=2.31.0
|
|
21
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
22
|
+
Requires-Dist: cachetools>=5.3.0
|
|
23
|
+
Requires-Dist: flask-limiter>=3.5.0
|
|
24
|
+
Requires-Dist: sgp4>=2.22
|
|
25
|
+
Requires-Dist: urllib3>=2.0
|
|
26
|
+
Requires-Dist: reportlab>=4.0
|
|
27
|
+
Requires-Dist: websocket-client>=1.6
|
|
28
|
+
Requires-Dist: PySocks>=1.7
|
|
29
|
+
Requires-Dist: socksio>=1.0
|
|
30
|
+
Requires-Dist: google-genai>=1.0.0
|
|
31
|
+
Provides-Extra: server
|
|
32
|
+
Requires-Dist: gunicorn>=21.0.0; extra == "server"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
# SignalOps
|
|
36
|
+
|
|
37
|
+
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.
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
## What it finds
|
|
42
|
+
|
|
43
|
+
- **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.
|
|
44
|
+
- **Cameras:**
|
|
45
|
+
- Internet-exposed IP cameras from Shodan, FOFA, Censys, Netlas and ZoomEye.
|
|
46
|
+
- 21 official public camera networks, including TfL, NYC DOT, Caltrans, Digitraffic, DGT, Vegagerðin, NSW, QLDTraffic, the 511 systems, NPS and USGS.
|
|
47
|
+
- **Air:** live ADS-B traffic with emergency squawks, drone detection, routes and registrations.
|
|
48
|
+
- **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.
|
|
49
|
+
- **Space and sea:** satellite passes with their downlink frequencies (SatNOGS), space weather (NOAA), and AIS vessels.
|
|
50
|
+
- **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.
|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
<sub>Screenshots use mock data and documentation-range IPs.</sub>
|
|
57
|
+
|
|
58
|
+
## Install
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install signalops-sigint
|
|
62
|
+
signalops
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
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.
|
|
66
|
+
|
|
67
|
+
To run from source instead:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
git clone https://github.com/emrekybs/signalops.git && cd signalops
|
|
71
|
+
./start.sh # Windows: start.bat · Docker: docker compose up -d
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- **State:** with pip, keys, the database and data live in `~/.signalops`; from source, they stay in the repo folder.
|
|
75
|
+
- **Optional datasets:** the camera, ALPR and precinct datasets go in `data/`.
|
|
76
|
+
- **Options:** `signalops --port 9090 --home /path`, plus optional Tor or a SOCKS proxy in Settings.
|
|
77
|
+
- **Turkish install guide:** [KURULUM.md](KURULUM.md).
|
|
78
|
+
|
|
79
|
+
## Responsible use
|
|
80
|
+
|
|
81
|
+
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.
|
|
82
|
+
|
|
83
|
+
## License
|
|
84
|
+
|
|
85
|
+
[MIT](LICENSE) © 2026 Emre Kybs
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# SignalOps
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## What it finds
|
|
8
|
+
|
|
9
|
+
- **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.
|
|
10
|
+
- **Cameras:**
|
|
11
|
+
- Internet-exposed IP cameras from Shodan, FOFA, Censys, Netlas and ZoomEye.
|
|
12
|
+
- 21 official public camera networks, including TfL, NYC DOT, Caltrans, Digitraffic, DGT, Vegagerðin, NSW, QLDTraffic, the 511 systems, NPS and USGS.
|
|
13
|
+
- **Air:** live ADS-B traffic with emergency squawks, drone detection, routes and registrations.
|
|
14
|
+
- **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.
|
|
15
|
+
- **Space and sea:** satellite passes with their downlink frequencies (SatNOGS), space weather (NOAA), and AIS vessels.
|
|
16
|
+
- **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.
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
<sub>Screenshots use mock data and documentation-range IPs.</sub>
|
|
23
|
+
|
|
24
|
+
## Install
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install signalops-sigint
|
|
28
|
+
signalops
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
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.
|
|
32
|
+
|
|
33
|
+
To run from source instead:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
git clone https://github.com/emrekybs/signalops.git && cd signalops
|
|
37
|
+
./start.sh # Windows: start.bat · Docker: docker compose up -d
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- **State:** with pip, keys, the database and data live in `~/.signalops`; from source, they stay in the repo folder.
|
|
41
|
+
- **Optional datasets:** the camera, ALPR and precinct datasets go in `data/`.
|
|
42
|
+
- **Options:** `signalops --port 9090 --home /path`, plus optional Tor or a SOCKS proxy in Settings.
|
|
43
|
+
- **Turkish install guide:** [KURULUM.md](KURULUM.md).
|
|
44
|
+
|
|
45
|
+
## Responsible use
|
|
46
|
+
|
|
47
|
+
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.
|
|
48
|
+
|
|
49
|
+
## License
|
|
50
|
+
|
|
51
|
+
[MIT](LICENSE) © 2026 Emre Kybs
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "signalops-sigint"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Local-first SIGINT / OSINT workbench: WiFi, cell, cameras, aircraft, satellites, vessels and RF layers on one map"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
12
|
+
authors = [{ name = "Emre Kybs" }]
|
|
13
|
+
requires-python = ">=3.9"
|
|
14
|
+
keywords = ["sigint", "osint", "rf", "ads-b", "ais", "cctv", "wifi", "sdr", "security-research"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Framework :: Flask",
|
|
18
|
+
"Environment :: Web Environment",
|
|
19
|
+
"Intended Audience :: Information Technology",
|
|
20
|
+
"Topic :: Security",
|
|
21
|
+
"Operating System :: OS Independent",
|
|
22
|
+
]
|
|
23
|
+
dependencies = [
|
|
24
|
+
"flask>=3.0.0",
|
|
25
|
+
"requests>=2.31.0",
|
|
26
|
+
"python-dotenv>=1.0.0",
|
|
27
|
+
"cachetools>=5.3.0",
|
|
28
|
+
"flask-limiter>=3.5.0",
|
|
29
|
+
"sgp4>=2.22",
|
|
30
|
+
"urllib3>=2.0",
|
|
31
|
+
"reportlab>=4.0",
|
|
32
|
+
"websocket-client>=1.6",
|
|
33
|
+
"PySocks>=1.7",
|
|
34
|
+
"socksio>=1.0",
|
|
35
|
+
"google-genai>=1.0.0",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
server = ["gunicorn>=21.0.0"]
|
|
40
|
+
|
|
41
|
+
[project.urls]
|
|
42
|
+
Homepage = "https://github.com/emrekybs/signalops"
|
|
43
|
+
Issues = "https://github.com/emrekybs/signalops/issues"
|
|
44
|
+
|
|
45
|
+
[project.scripts]
|
|
46
|
+
signalops = "signalops.cli:main"
|
|
47
|
+
|
|
48
|
+
[tool.setuptools]
|
|
49
|
+
packages = ["signalops", "signalops.modules"]
|
|
50
|
+
include-package-data = true
|
|
51
|
+
|
|
52
|
+
[tool.setuptools.dynamic]
|
|
53
|
+
version = { attr = "signalops.__version__" }
|
|
54
|
+
|
|
55
|
+
[tool.setuptools.package-data]
|
|
56
|
+
signalops = ["templates/*.html", "static/css/*", "static/js/*", "static/fonts/*"]
|
|
57
|
+
"signalops.modules" = ["fonts/*.ttf"]
|