mirror of
https://github.com/smittix/intercept.git
synced 2026-04-25 07:10:00 -07:00
- Add SDR hardware abstraction layer (utils/sdr/) with support for: - RTL-SDR (existing, using native rtl_* tools) - LimeSDR (via SoapySDR) - HackRF (via SoapySDR) - Add hardware type selector to UI with capabilities display - Add automatic device detection across all supported hardware - Add hardware-specific parameter validation (frequency/gain ranges) - Add setup.sh script for automated dependency installation - Update README with multi-SDR docs, installation guide, troubleshooting - Add SoapySDR/LimeSDR/HackRF to dependency definitions - Fix dump1090 detection for Homebrew on Apple Silicon Macs - Remove defunct NOAA-15/18/19 satellites, add NOAA-21 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
248 lines
7.0 KiB
Bash
Executable File
248 lines
7.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# INTERCEPT Setup Script
|
|
# Installs Python dependencies and checks for external tools
|
|
#
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}"
|
|
echo " ___ _ _ _____ _____ ____ ____ _____ ____ _____ "
|
|
echo " |_ _| \\ | |_ _| ____| _ \\ / ___| ____| _ \\_ _|"
|
|
echo " | || \\| | | | | _| | |_) | | | _| | |_) || | "
|
|
echo " | || |\\ | | | | |___| _ <| |___| |___| __/ | | "
|
|
echo " |___|_| \\_| |_| |_____|_| \\_\\\\____|_____|_| |_| "
|
|
echo -e "${NC}"
|
|
echo "Signal Intelligence Platform - Setup Script"
|
|
echo "============================================"
|
|
echo ""
|
|
|
|
# Detect OS
|
|
detect_os() {
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
OS="macos"
|
|
PKG_MANAGER="brew"
|
|
elif [[ -f /etc/debian_version ]]; then
|
|
OS="debian"
|
|
PKG_MANAGER="apt"
|
|
elif [[ -f /etc/redhat-release ]]; then
|
|
OS="redhat"
|
|
PKG_MANAGER="dnf"
|
|
elif [[ -f /etc/arch-release ]]; then
|
|
OS="arch"
|
|
PKG_MANAGER="pacman"
|
|
else
|
|
OS="unknown"
|
|
PKG_MANAGER="unknown"
|
|
fi
|
|
echo -e "${BLUE}Detected OS:${NC} $OS (package manager: $PKG_MANAGER)"
|
|
}
|
|
|
|
# Check if a command exists
|
|
check_cmd() {
|
|
command -v "$1" &> /dev/null
|
|
}
|
|
|
|
# Install Python dependencies
|
|
install_python_deps() {
|
|
echo ""
|
|
echo -e "${BLUE}[1/3] Installing Python dependencies...${NC}"
|
|
|
|
if ! check_cmd python3; then
|
|
echo -e "${RED}Error: Python 3 is not installed${NC}"
|
|
echo "Please install Python 3.7 or later"
|
|
exit 1
|
|
fi
|
|
|
|
PYTHON_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
|
|
echo "Python version: $PYTHON_VERSION"
|
|
|
|
if check_cmd pip3; then
|
|
pip3 install -r requirements.txt
|
|
elif check_cmd pip; then
|
|
pip install -r requirements.txt
|
|
else
|
|
python3 -m pip install -r requirements.txt
|
|
fi
|
|
|
|
echo -e "${GREEN}Python dependencies installed successfully${NC}"
|
|
}
|
|
|
|
# Check external tools
|
|
check_tools() {
|
|
echo ""
|
|
echo -e "${BLUE}[2/3] Checking external tools...${NC}"
|
|
echo ""
|
|
|
|
MISSING_TOOLS=()
|
|
|
|
# Core SDR tools
|
|
echo "Core SDR Tools:"
|
|
check_tool "rtl_fm" "RTL-SDR FM demodulator"
|
|
check_tool "rtl_test" "RTL-SDR device detection"
|
|
check_tool "multimon-ng" "Pager decoder"
|
|
check_tool "rtl_433" "433MHz sensor decoder"
|
|
check_tool "dump1090" "ADS-B decoder"
|
|
|
|
echo ""
|
|
echo "Additional SDR Hardware (optional):"
|
|
check_tool "SoapySDRUtil" "SoapySDR (for LimeSDR/HackRF)"
|
|
check_tool "LimeUtil" "LimeSDR tools"
|
|
check_tool "hackrf_info" "HackRF tools"
|
|
|
|
echo ""
|
|
echo "WiFi Tools:"
|
|
check_tool "airmon-ng" "WiFi monitor mode"
|
|
check_tool "airodump-ng" "WiFi scanner"
|
|
|
|
echo ""
|
|
echo "Bluetooth Tools:"
|
|
check_tool "bluetoothctl" "Bluetooth controller"
|
|
check_tool "hcitool" "Bluetooth HCI tool"
|
|
|
|
if [ ${#MISSING_TOOLS[@]} -gt 0 ]; then
|
|
echo ""
|
|
echo -e "${YELLOW}Some tools are missing. See installation instructions below.${NC}"
|
|
fi
|
|
}
|
|
|
|
check_tool() {
|
|
local cmd=$1
|
|
local desc=$2
|
|
if check_cmd "$cmd"; then
|
|
echo -e " ${GREEN}✓${NC} $cmd - $desc"
|
|
else
|
|
echo -e " ${RED}✗${NC} $cmd - $desc ${YELLOW}(not found)${NC}"
|
|
MISSING_TOOLS+=("$cmd")
|
|
fi
|
|
}
|
|
|
|
# Show installation instructions
|
|
show_install_instructions() {
|
|
echo ""
|
|
echo -e "${BLUE}[3/3] Installation instructions for missing tools${NC}"
|
|
echo ""
|
|
|
|
if [ ${#MISSING_TOOLS[@]} -eq 0 ]; then
|
|
echo -e "${GREEN}All tools are installed!${NC}"
|
|
return
|
|
fi
|
|
|
|
echo "Run the following commands to install missing tools:"
|
|
echo ""
|
|
|
|
if [[ "$OS" == "macos" ]]; then
|
|
echo -e "${YELLOW}macOS (Homebrew):${NC}"
|
|
echo ""
|
|
|
|
# Check if Homebrew is installed
|
|
if ! check_cmd brew; then
|
|
echo "First, install Homebrew:"
|
|
echo ' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"'
|
|
echo ""
|
|
fi
|
|
|
|
echo "# Core SDR tools"
|
|
echo "brew install librtlsdr multimon-ng rtl_433 dump1090-mutability"
|
|
echo ""
|
|
echo "# LimeSDR support (optional)"
|
|
echo "brew install soapysdr limesuite soapylms7"
|
|
echo ""
|
|
echo "# HackRF support (optional)"
|
|
echo "brew install hackrf soapyhackrf"
|
|
echo ""
|
|
echo "# WiFi tools"
|
|
echo "brew install aircrack-ng"
|
|
|
|
elif [[ "$OS" == "debian" ]]; then
|
|
echo -e "${YELLOW}Ubuntu/Debian:${NC}"
|
|
echo ""
|
|
echo "# Core SDR tools"
|
|
echo "sudo apt update"
|
|
echo "sudo apt install rtl-sdr multimon-ng rtl-433 dump1090-mutability"
|
|
echo ""
|
|
echo "# LimeSDR support (optional)"
|
|
echo "sudo apt install soapysdr-tools limesuite soapysdr-module-lms7"
|
|
echo ""
|
|
echo "# HackRF support (optional)"
|
|
echo "sudo apt install hackrf soapysdr-module-hackrf"
|
|
echo ""
|
|
echo "# WiFi tools"
|
|
echo "sudo apt install aircrack-ng"
|
|
echo ""
|
|
echo "# Bluetooth tools"
|
|
echo "sudo apt install bluez bluetooth"
|
|
|
|
elif [[ "$OS" == "arch" ]]; then
|
|
echo -e "${YELLOW}Arch Linux:${NC}"
|
|
echo ""
|
|
echo "# Core SDR tools"
|
|
echo "sudo pacman -S rtl-sdr multimon-ng"
|
|
echo "yay -S rtl_433 dump1090"
|
|
echo ""
|
|
echo "# LimeSDR/HackRF support (optional)"
|
|
echo "sudo pacman -S soapysdr limesuite hackrf"
|
|
|
|
elif [[ "$OS" == "redhat" ]]; then
|
|
echo -e "${YELLOW}Fedora/RHEL:${NC}"
|
|
echo ""
|
|
echo "# Core SDR tools"
|
|
echo "sudo dnf install rtl-sdr"
|
|
echo "# multimon-ng, rtl_433, dump1090 may need to be built from source"
|
|
|
|
else
|
|
echo "Please install the following tools manually:"
|
|
for tool in "${MISSING_TOOLS[@]}"; do
|
|
echo " - $tool"
|
|
done
|
|
fi
|
|
}
|
|
|
|
# RTL-SDR udev rules (Linux only)
|
|
setup_udev_rules() {
|
|
if [[ "$OS" != "macos" ]] && [[ "$OS" != "unknown" ]]; then
|
|
echo ""
|
|
echo -e "${BLUE}RTL-SDR udev rules (Linux only):${NC}"
|
|
echo ""
|
|
echo "If your RTL-SDR is not detected, you may need to add udev rules:"
|
|
echo ""
|
|
echo "sudo bash -c 'cat > /etc/udev/rules.d/20-rtlsdr.rules << EOF"
|
|
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE="0666"'
|
|
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", MODE="0666"'
|
|
echo "EOF'"
|
|
echo ""
|
|
echo "sudo udevadm control --reload-rules"
|
|
echo "sudo udevadm trigger"
|
|
echo ""
|
|
echo "Then unplug and replug your RTL-SDR device."
|
|
fi
|
|
}
|
|
|
|
# Main
|
|
main() {
|
|
detect_os
|
|
install_python_deps
|
|
check_tools
|
|
show_install_instructions
|
|
setup_udev_rules
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
echo -e "${GREEN}Setup complete!${NC}"
|
|
echo ""
|
|
echo "To start INTERCEPT:"
|
|
echo " sudo python3 intercept.py"
|
|
echo ""
|
|
echo "Then open http://localhost:5050 in your browser"
|
|
echo ""
|
|
}
|
|
|
|
main "$@"
|