Files
intercept/templates/partials/modes/isms.html
Smittix 35d138175e 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>
2026-01-16 11:12:09 +00:00

170 lines
12 KiB
HTML

<!-- ISMS LISTENING STATION MODE -->
<div id="ismsMode" class="mode-content">
<div class="section">
<h3>Status</h3>
<!-- Quick Status -->
<div style="background: rgba(0,0,0,0.3); border-radius: 6px; padding: 12px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;">
<span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Status</span>
<span id="ismsQuickStatus" style="font-size: 11px; color: var(--accent-cyan);">IDLE</span>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;">
<span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Band</span>
<span id="ismsQuickBand" style="font-size: 11px; color: var(--text-primary);">--</span>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;">
<span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Findings</span>
<span id="ismsQuickFindings" style="font-size: 14px; font-weight: bold; color: var(--accent-green);">0</span>
</div>
<div style="display: flex; justify-content: space-between; align-items: center;">
<span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Location</span>
<span id="ismsQuickLocation" style="font-size: 10px; color: var(--text-muted);">--</span>
</div>
</div>
</div>
<div class="section">
<h3>Scan Preset</h3>
<select id="ismsScanPreset" class="full-width-select">
<option value="vhf_airband">VHF Airband (118-137 MHz)</option>
<option value="uhf_airband">UHF Airband (225-400 MHz)</option>
<option value="uhf_pmr">UHF PMR446</option>
<option value="ism_433" selected>ISM 433 MHz</option>
<option value="ism_868">ISM 868 MHz</option>
<option value="ism_915">ISM 915 MHz (US)</option>
<option value="cellular_700">Cellular 700 MHz</option>
<option value="cellular_850">Cellular 850 MHz</option>
<option value="cellular_900">Cellular 900 MHz</option>
<option value="full_sweep">Full Spectrum</option>
<option value="custom">Custom Range</option>
</select>
<!-- Custom range (shown when custom selected) -->
<div id="ismsCustomRange" style="display: none; margin-top: 8px;">
<div style="display: flex; gap: 8px;">
<input type="number" id="ismsStartFreq" placeholder="Start MHz" style="flex: 1; padding: 6px; background: var(--bg-secondary); border: 1px solid var(--border-color); color: var(--text-primary); border-radius: 4px; font-size: 11px;">
<input type="number" id="ismsEndFreq" placeholder="End MHz" style="flex: 1; padding: 6px; background: var(--bg-secondary); border: 1px solid var(--border-color); color: var(--text-primary); border-radius: 4px; font-size: 11px;">
</div>
</div>
</div>
<div class="section">
<h3>SDR Settings</h3>
<div class="form-group">
<label>Device</label>
<select id="ismsSdrDevice" class="full-width-select">
<option value="0">Device 0</option>
</select>
</div>
<div class="form-group">
<label>Gain</label>
<div style="display: flex; align-items: center; gap: 8px;">
<input type="range" id="ismsGain" min="0" max="50" value="40" style="flex: 1;">
<span id="ismsGainValue" style="min-width: 32px; text-align: right; font-size: 11px;">40</span>
</div>
</div>
<div class="form-group">
<label>Activity Threshold</label>
<div style="display: flex; align-items: center; gap: 8px;">
<input type="range" id="ismsActivityThreshold" min="0" max="100" value="50" style="flex: 1;">
<span id="ismsThresholdValue" style="min-width: 32px; text-align: right; font-size: 11px;">50%</span>
</div>
</div>
</div>
<div class="section">
<h3>Location</h3>
<div class="form-group">
<div style="display: flex; gap: 8px;">
<button class="preset-btn" onclick="ismsUseGPS()" style="flex: 1;">Use GPS</button>
<button class="preset-btn" onclick="ismsSetManualLocation()" style="flex: 1;">Manual</button>
</div>
</div>
<div id="ismsCoords" style="font-size: 10px; color: var(--text-muted); margin-top: 4px; font-family: 'JetBrains Mono', monospace;">
Lat: --, Lon: --
</div>
</div>
<div class="section">
<h3>Baseline</h3>
<select id="ismsBaselineSelect" class="full-width-select">
<option value="">No Baseline (Compare Disabled)</option>
</select>
<div style="display: flex; gap: 8px; margin-top: 8px;">
<button class="preset-btn" id="ismsRecordBaselineBtn" onclick="ismsToggleBaselineRecording()" style="flex: 1;">
Record New
</button>
<button class="preset-btn" onclick="ismsRefreshBaselines()" style="padding: 6px 10px;">
<span style="font-size: 12px;">&#8635;</span>
</button>
</div>
<div id="ismsBaselineRecordingStatus" style="display: none; margin-top: 8px; padding: 8px; background: rgba(255, 100, 100, 0.1); border-radius: 4px; font-size: 10px; color: var(--accent-red);">
Recording baseline...
</div>
</div>
<div class="section">
<h3>Cell Towers</h3>
<div class="form-group">
<button class="preset-btn" onclick="ismsRefreshTowers()" style="width: 100%;">
Query Nearby Towers
</button>
</div>
<div id="ismsTowerCount" style="font-size: 10px; color: var(--text-muted); margin-top: 4px;">
No tower data
</div>
<div style="margin-top: 8px;">
<a href="https://www.ofcom.org.uk/phones-and-broadband/coverage-and-quality/mobile-coverage-checker" target="_blank" rel="noopener" style="font-size: 10px; color: var(--accent-cyan);">
Ofcom Coverage Checker
</a>
<br>
<a href="https://www.ofcom.org.uk/phones-telecoms-and-internet/information-for-industry/radiocomms-and-spectrum/radio-spectrum/spectrum-for-mobile-services/electromagnetic-fields-emf" target="_blank" rel="noopener" style="font-size: 10px; color: var(--accent-cyan);">
Ofcom EMF Info
</a>
</div>
</div>
<div class="section">
<h3>GSM Scanner</h3>
<div style="background: rgba(255, 170, 0, 0.1); border: 1px solid rgba(255, 170, 0, 0.3); border-radius: 4px; padding: 6px 8px; margin-bottom: 8px; font-size: 9px; color: var(--accent-orange);">
Alpha - Under Development
</div>
<div class="form-group">
<label>GSM Band</label>
<select id="ismsGsmBand" class="full-width-select">
<option value="GSM900" selected>GSM 900 MHz (Europe)</option>
<option value="EGSM900">E-GSM 900 MHz</option>
<option value="GSM1800">GSM 1800 MHz (DCS)</option>
<option value="GSM850">GSM 850 MHz (US)</option>
<option value="GSM1900">GSM 1900 MHz (PCS)</option>
</select>
</div>
<div style="display: flex; gap: 8px; margin-top: 8px;">
<button class="preset-btn" id="ismsGsmScanBtn" onclick="ismsToggleGsmScan()" style="flex: 1;">
Scan GSM Cells
</button>
<button class="preset-btn" onclick="ismsSetGsmBaseline()" style="padding: 6px 10px;" title="Save as baseline">
<span style="font-size: 12px;">&#128190;</span>
</button>
</div>
<div id="ismsGsmStatus" style="margin-top: 8px; padding: 8px; background: rgba(0,0,0,0.3); border-radius: 4px; font-size: 10px;">
<div style="display: flex; justify-content: space-between; margin-bottom: 4px;">
<span style="color: var(--text-muted);">Status:</span>
<span id="ismsGsmStatusText" style="color: var(--accent-cyan);">Ready</span>
</div>
<div style="display: flex; justify-content: space-between;">
<span style="color: var(--text-muted);">Cells Found:</span>
<span id="ismsGsmCellCount" style="color: var(--accent-green); font-weight: bold;">0</span>
</div>
</div>
<div id="ismsGsmCells" style="margin-top: 8px; max-height: 150px; overflow-y: auto; font-size: 10px; font-family: 'JetBrains Mono', monospace;">
<!-- GSM cells will be populated here -->
</div>
</div>
<button class="run-btn" id="ismsStartBtn" onclick="ismsToggleScan()">
Start Scan
</button>
</div>