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.
Files changed (69) hide show
  1. signalops_sigint-2.2.0/LICENSE +21 -0
  2. signalops_sigint-2.2.0/MANIFEST.in +7 -0
  3. signalops_sigint-2.2.0/PKG-INFO +85 -0
  4. signalops_sigint-2.2.0/README.md +51 -0
  5. signalops_sigint-2.2.0/pyproject.toml +57 -0
  6. signalops_sigint-2.2.0/setup.cfg +4 -0
  7. signalops_sigint-2.2.0/signalops/__init__.py +2 -0
  8. signalops_sigint-2.2.0/signalops/__main__.py +3 -0
  9. signalops_sigint-2.2.0/signalops/app_v2.py +5849 -0
  10. signalops_sigint-2.2.0/signalops/cli.py +38 -0
  11. signalops_sigint-2.2.0/signalops/modules/__init__.py +2 -0
  12. signalops_sigint-2.2.0/signalops/modules/ais.py +1087 -0
  13. signalops_sigint-2.2.0/signalops/modules/cases.py +517 -0
  14. signalops_sigint-2.2.0/signalops/modules/export.py +337 -0
  15. signalops_sigint-2.2.0/signalops/modules/fonts/DejaVuSans-Bold.ttf +0 -0
  16. signalops_sigint-2.2.0/signalops/modules/fonts/DejaVuSans.ttf +0 -0
  17. signalops_sigint-2.2.0/signalops/modules/graph.py +465 -0
  18. signalops_sigint-2.2.0/signalops/modules/health.py +429 -0
  19. signalops_sigint-2.2.0/signalops/modules/monitor.py +802 -0
  20. signalops_sigint-2.2.0/signalops/modules/net.py +533 -0
  21. signalops_sigint-2.2.0/signalops/modules/pubcams.py +242 -0
  22. signalops_sigint-2.2.0/signalops/modules/rf.py +549 -0
  23. signalops_sigint-2.2.0/signalops/modules/store.py +388 -0
  24. signalops_sigint-2.2.0/signalops/modules/timeline.py +363 -0
  25. signalops_sigint-2.2.0/signalops/paths.py +26 -0
  26. signalops_sigint-2.2.0/signalops/static/css/so-nav.css +1 -0
  27. signalops_sigint-2.2.0/signalops/static/css/so-theme.css +194 -0
  28. signalops_sigint-2.2.0/signalops/static/fonts/OFL.txt +93 -0
  29. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  30. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  31. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
  32. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
  33. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  34. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  35. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  36. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-ext-400-normal.woff2 +0 -0
  37. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-ext-500-normal.woff2 +0 -0
  38. signalops_sigint-2.2.0/signalops/static/fonts/ibm-plex-sans-latin-ext-600-normal.woff2 +0 -0
  39. signalops_sigint-2.2.0/signalops/static/js/so-cases.js +342 -0
  40. signalops_sigint-2.2.0/signalops/static/js/so-nav.js +75 -0
  41. signalops_sigint-2.2.0/signalops/static/js/so-safe.js +23 -0
  42. signalops_sigint-2.2.0/signalops/static/js/so-tiles.js +56 -0
  43. signalops_sigint-2.2.0/signalops/templates/_sidebar.html +55 -0
  44. signalops_sigint-2.2.0/signalops/templates/adsb.html +2251 -0
  45. signalops_sigint-2.2.0/signalops/templates/base.html +92 -0
  46. signalops_sigint-2.2.0/signalops/templates/cases.html +785 -0
  47. signalops_sigint-2.2.0/signalops/templates/cctv.html +603 -0
  48. signalops_sigint-2.2.0/signalops/templates/dashboard.html +347 -0
  49. signalops_sigint-2.2.0/signalops/templates/geo.html +779 -0
  50. signalops_sigint-2.2.0/signalops/templates/graph.html +579 -0
  51. signalops_sigint-2.2.0/signalops/templates/maritime.html +581 -0
  52. signalops_sigint-2.2.0/signalops/templates/mobile.html +411 -0
  53. signalops_sigint-2.2.0/signalops/templates/monitor.html +625 -0
  54. signalops_sigint-2.2.0/signalops/templates/orbital.html +816 -0
  55. signalops_sigint-2.2.0/signalops/templates/profiles.html +171 -0
  56. signalops_sigint-2.2.0/signalops/templates/rf.html +290 -0
  57. signalops_sigint-2.2.0/signalops/templates/sdr.html +1587 -0
  58. signalops_sigint-2.2.0/signalops/templates/settings.html +483 -0
  59. signalops_sigint-2.2.0/signalops/templates/social.html +351 -0
  60. signalops_sigint-2.2.0/signalops/templates/surveillance.html +1038 -0
  61. signalops_sigint-2.2.0/signalops/templates/timeline.html +717 -0
  62. signalops_sigint-2.2.0/signalops/templates/watchlist.html +384 -0
  63. signalops_sigint-2.2.0/signalops/templates/wifi_search.html +3349 -0
  64. signalops_sigint-2.2.0/signalops_sigint.egg-info/PKG-INFO +85 -0
  65. signalops_sigint-2.2.0/signalops_sigint.egg-info/SOURCES.txt +67 -0
  66. signalops_sigint-2.2.0/signalops_sigint.egg-info/dependency_links.txt +1 -0
  67. signalops_sigint-2.2.0/signalops_sigint.egg-info/entry_points.txt +2 -0
  68. signalops_sigint-2.2.0/signalops_sigint.egg-info/requires.txt +15 -0
  69. 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,7 @@
1
+ include LICENSE README.md
2
+ recursive-include signalops/templates *.html
3
+ recursive-include signalops/static *
4
+ recursive-include signalops/modules/fonts *.ttf
5
+ prune data
6
+ prune docs
7
+ global-exclude __pycache__ *.py[cod]
@@ -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
+ ![Overview](docs/screenshots/overview.png)
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
+ ![ADS-B](docs/screenshots/adsb.png)
53
+
54
+ ![RF layers](docs/screenshots/rf.png)
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
+ ![Overview](docs/screenshots/overview.png)
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
+ ![ADS-B](docs/screenshots/adsb.png)
19
+
20
+ ![RF layers](docs/screenshots/rf.png)
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"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,2 @@
1
+ """SignalOps — local-first SIGINT / OSINT workbench."""
2
+ __version__ = "2.2.0"
@@ -0,0 +1,3 @@
1
+ from .cli import main
2
+
3
+ main()