Add ISMS Listening Station with GSM cell detection

- Add spectrum monitoring via rtl_power with configurable presets
- Add OpenCelliD tower integration with Leaflet map display
- Add grgsm_scanner integration for passive GSM cell detection (alpha)
- Add rules engine for anomaly detection and findings
- Add baseline recording and comparison system
- Add setup.sh support for gr-gsm installation on Debian/Ubuntu

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Smittix
2026-01-16 11:12:09 +00:00
parent a8d1edd123
commit 2b5bc563c6
15 changed files with 5578 additions and 4 deletions
+89 -1
View File
@@ -166,6 +166,14 @@ check_tools() {
echo
info "SoapySDR:"
check_required "SoapySDRUtil" "SoapySDR CLI utility" SoapySDRUtil
echo
info "GSM (optional):"
if have_any grgsm_scanner; then
ok "grgsm_scanner - GSM cell scanner"
else
warn "grgsm_scanner - GSM cell scanner (optional, for ISMS GSM detection)"
fi
echo
}
@@ -352,6 +360,8 @@ install_macos_packages() {
warn "macOS note: hcitool/hciconfig are Linux (BlueZ) utilities and often unavailable on macOS."
info "TSCM BLE scanning uses bleak library (installed via pip) for manufacturer data detection."
warn "macOS note: gr-gsm (for GSM cell scanning) is not easily available on macOS."
info "GSM cell detection in ISMS mode requires Linux with GNU Radio."
echo
}
@@ -448,6 +458,77 @@ install_acarsdec_from_source_debian() {
)
}
install_grgsm_from_source_debian() {
info "Installing gr-gsm for GSM cell scanning (optional)..."
# Check if GNU Radio is available
if ! cmd_exists gnuradio-config-info; then
info "GNU Radio not found. Installing GNU Radio first..."
$SUDO apt-get install -y gnuradio gnuradio-dev >/dev/null 2>&1 || {
warn "Failed to install GNU Radio. gr-gsm requires GNU Radio 3.8+."
warn "GSM scanning will not be available."
return 1
}
fi
# Check GNU Radio version (need 3.8+)
local gr_version
gr_version=$(gnuradio-config-info --version 2>/dev/null || echo "0.0.0")
info "GNU Radio version: $gr_version"
# Install dependencies for gr-gsm
info "Installing gr-gsm dependencies..."
$SUDO apt-get install -y \
cmake \
autoconf \
libtool \
pkg-config \
build-essential \
python3-docutils \
libcppunit-dev \
swig \
doxygen \
liblog4cpp5-dev \
python3-scipy \
gnuradio-dev \
gr-osmosdr \
libosmocore-dev \
libosmocoding-dev \
libosmoctrl-dev \
libosmogsm-dev \
libosmovty-dev \
libosmocodec-dev \
>/dev/null 2>&1 || {
warn "Some gr-gsm dependencies failed to install."
warn "Attempting to continue anyway..."
}
# Run in subshell to isolate EXIT trap
(
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
info "Cloning gr-gsm..."
git clone --depth 1 https://github.com/ptrkrysik/gr-gsm.git "$tmp_dir/gr-gsm" >/dev/null 2>&1 \
|| { warn "Failed to clone gr-gsm"; exit 1; }
cd "$tmp_dir/gr-gsm"
mkdir -p build && cd build
info "Compiling gr-gsm (this may take a few minutes)..."
if cmake .. >/dev/null 2>&1 && make -j$(nproc) >/dev/null 2>&1; then
$SUDO make install >/dev/null 2>&1
$SUDO ldconfig
ok "gr-gsm installed successfully."
info "grgsm_scanner should now be available for GSM cell detection."
else
warn "Failed to build gr-gsm from source."
warn "GSM cell scanning will not be available in ISMS mode."
warn "You can try installing manually from: https://github.com/ptrkrysik/gr-gsm"
fi
)
}
install_rtlsdr_blog_drivers_debian() {
# The RTL-SDR Blog drivers provide better support for:
# - RTL-SDR Blog V4 (R828D tuner)
@@ -547,7 +628,7 @@ install_debian_packages() {
export DEBIAN_FRONTEND=noninteractive
export NEEDRESTART_MODE=a
TOTAL_STEPS=18
TOTAL_STEPS=19
CURRENT_STEP=0
progress "Updating APT package lists"
@@ -617,6 +698,13 @@ install_debian_packages() {
fi
cmd_exists acarsdec || install_acarsdec_from_source_debian
progress "Installing gr-gsm (optional, for GSM cell detection)"
if ! cmd_exists grgsm_scanner; then
install_grgsm_from_source_debian || true
else
ok "grgsm_scanner already installed"
fi
progress "Configuring udev rules"
setup_udev_rules_debian