mirror of
https://github.com/smittix/intercept.git
synced 2026-04-24 06:40:00 -07:00
Add .gitignore entry for data/subghz/captures/ to prevent large IQ recording files from being committed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
208 lines
14 KiB
HTML
208 lines
14 KiB
HTML
<!-- WiFi MODE -->
|
|
<div id="wifiMode" class="mode-content">
|
|
<!-- Scan Mode Tabs -->
|
|
<div class="section">
|
|
<h3>Signal Source</h3>
|
|
<div class="wifi-scan-mode-tabs" style="display: flex; gap: 4px;">
|
|
<button id="wifiScanModeQuick" class="wifi-mode-tab active" style="flex: 1; padding: 8px; font-size: 11px; background: var(--accent-green); color: #000; border: none; border-radius: 4px; cursor: pointer;">
|
|
Quick Scan
|
|
</button>
|
|
<button id="wifiScanModeDeep" class="wifi-mode-tab" style="flex: 1; padding: 8px; font-size: 11px; background: var(--bg-tertiary); color: #888; border: 1px solid var(--border-color); border-radius: 4px; cursor: pointer;">
|
|
Deep Scan
|
|
</button>
|
|
</div>
|
|
<div id="wifiCapabilityStatus" class="info-text" style="margin-top: 8px; font-size: 10px;"></div>
|
|
<!-- Show All Agents option (visible when agents are available) -->
|
|
<div id="wifiShowAllAgentsContainer" style="margin-top: 8px; display: none;">
|
|
<label class="inline-checkbox" style="font-size: 10px;">
|
|
<input type="checkbox" id="wifiShowAllAgents" onchange="if(typeof WiFiMode !== 'undefined') WiFiMode.toggleShowAllAgents(this.checked)">
|
|
Show networks from all agents
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>WiFi Adapter</h3>
|
|
<div class="form-group">
|
|
<label>Select Device</label>
|
|
<select id="wifiInterfaceSelect" style="font-size: 12px;">
|
|
<option value="">Detecting interfaces...</option>
|
|
</select>
|
|
</div>
|
|
<button class="preset-btn" onclick="refreshWifiInterfaces()" style="width: 100%;">
|
|
<span class="icon icon--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><polyline points="1 20 1 14 7 14"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg></span> Refresh Devices
|
|
</button>
|
|
<div class="info-text" style="margin-top: 8px; display: grid; grid-template-columns: auto auto; gap: 4px 8px; align-items: center;" id="wifiToolStatus">
|
|
<span>airmon-ng:</span><span class="tool-status missing">Checking...</span>
|
|
<span>airodump-ng:</span><span class="tool-status missing">Checking...</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Monitor Mode</h3>
|
|
<div style="display: flex; gap: 8px;">
|
|
<button class="preset-btn" id="monitorStartBtn" onclick="enableMonitorMode()" style="flex: 1; background: var(--accent-green); color: #000;">
|
|
Enable Monitor
|
|
</button>
|
|
<button class="preset-btn" id="monitorStopBtn" onclick="disableMonitorMode()" style="flex: 1; display: none;">
|
|
Disable Monitor
|
|
</button>
|
|
</div>
|
|
<div class="checkbox-group" style="margin-top: 8px;">
|
|
<label style="font-size: 10px;">
|
|
<input type="checkbox" id="killProcesses">
|
|
Kill interfering processes (may drop other connections)
|
|
</label>
|
|
</div>
|
|
<div id="monitorStatus" class="info-text" style="margin-top: 8px;">
|
|
Monitor mode: <span style="color: var(--accent-red);">Inactive</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Scan Settings</h3>
|
|
<div class="form-group">
|
|
<label>Band</label>
|
|
<select id="wifiBand">
|
|
<option value="abg">All (2.4 + 5 GHz)</option>
|
|
<option value="bg">2.4 GHz only</option>
|
|
<option value="a">5 GHz only</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Channel Preset</label>
|
|
<select id="wifiChannelPreset">
|
|
<option value="">Auto hop (all)</option>
|
|
<option value="2.4-common">2.4 GHz Common (1,6,11)</option>
|
|
<option value="2.4-all">2.4 GHz All (1-13)</option>
|
|
<option value="5-low">5 GHz Low (36-48)</option>
|
|
<option value="5-mid">5 GHz Mid/DFS (52-64)</option>
|
|
<option value="5-high">5 GHz High (149-165)</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Channel List (overrides preset)</label>
|
|
<input type="text" id="wifiChannelList" placeholder="e.g., 1,6,11 or 36,40,44,48">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Channel (single)</label>
|
|
<input type="text" id="wifiChannel" placeholder="e.g., 6 or 36">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Proximity Alerts</h3>
|
|
<div class="info-text" style="margin-bottom: 8px;">
|
|
Alert when specific MAC addresses appear
|
|
</div>
|
|
<div class="form-group">
|
|
<input type="text" id="watchMacInput" placeholder="AA:BB:CC:DD:EE:FF">
|
|
</div>
|
|
<button class="preset-btn" onclick="addWatchMac()" style="width: 100%; margin-bottom: 8px;">
|
|
Add to Watch List
|
|
</button>
|
|
<div id="watchList" style="max-height: 80px; overflow-y: auto; font-size: 10px; color: var(--text-dim);"></div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Attack Options</h3>
|
|
<div class="info-text" style="color: var(--accent-red); margin-bottom: 10px;">
|
|
<span class="icon icon--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg></span> Only use on authorized networks
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Target BSSID</label>
|
|
<input type="text" id="targetBssid" placeholder="AA:BB:CC:DD:EE:FF">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Target Client (optional)</label>
|
|
<input type="text" id="targetClient" placeholder="FF:FF:FF:FF:FF:FF (broadcast)">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Deauth Count</label>
|
|
<input type="text" id="deauthCount" value="5" placeholder="5">
|
|
</div>
|
|
<button class="preset-btn" onclick="sendDeauth()" style="width: 100%; border-color: var(--accent-red); color: var(--accent-red);">
|
|
Send Deauth
|
|
</button>
|
|
</div>
|
|
|
|
<!-- Handshake Capture Status Panel -->
|
|
<div class="section" id="captureStatusPanel" style="display: none; border: 1px solid var(--accent-orange); border-radius: 4px; padding: 10px; background: rgba(255, 165, 0, 0.1);">
|
|
<h3 style="color: var(--accent-orange); margin: 0 0 8px 0;"><span class="icon icon--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg></span> Handshake Capture</h3>
|
|
<div style="font-size: 11px;">
|
|
<div style="margin-bottom: 4px;">
|
|
<span style="color: var(--text-dim);">Target:</span>
|
|
<span id="captureTargetBssid" style="font-family: monospace;">--</span>
|
|
</div>
|
|
<div style="margin-bottom: 4px;">
|
|
<span style="color: var(--text-dim);">Channel:</span>
|
|
<span id="captureTargetChannel">--</span>
|
|
</div>
|
|
<div style="margin-bottom: 4px;">
|
|
<span style="color: var(--text-dim);">File:</span>
|
|
<span id="captureFilePath" style="font-size: 9px; word-break: break-all;">--</span>
|
|
</div>
|
|
<div style="margin-bottom: 8px;">
|
|
<span style="color: var(--text-dim);">Status:</span>
|
|
<span id="captureStatus" style="font-weight: bold;">--</span>
|
|
</div>
|
|
<div style="display: flex; gap: 8px;">
|
|
<button class="preset-btn" onclick="checkCaptureStatus()" style="flex: 1; font-size: 10px; padding: 4px;">
|
|
Check Status
|
|
</button>
|
|
<button class="preset-btn" onclick="stopHandshakeCapture()" style="flex: 1; font-size: 10px; padding: 4px; background: var(--accent-red); border: none; color: #fff;">
|
|
Stop Capture
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Beacon Flood Alert Panel -->
|
|
<div id="beaconFloodAlert" class="beacon-flood-alert" style="display: none;">
|
|
<h4 style="color: #ff4444; margin: 0 0 8px 0;"><span class="icon icon--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg></span> BEACON FLOOD DETECTED</h4>
|
|
<div style="font-size: 11px;">
|
|
<div id="beaconFloodDetails">Multiple beacon frames detected from same channel</div>
|
|
<div style="margin-top: 8px;">
|
|
<span style="color: var(--text-dim);">Networks/sec:</span>
|
|
<span id="beaconFloodRate" style="font-weight: bold; color: #ff4444;">--</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Export Section -->
|
|
<div class="section">
|
|
<h3>Export</h3>
|
|
<div style="display: flex; gap: 8px;">
|
|
<button class="preset-btn" onclick="WiFiMode.exportData('csv')" style="flex: 1;">
|
|
Export CSV
|
|
</button>
|
|
<button class="preset-btn" onclick="WiFiMode.exportData('json')" style="flex: 1;">
|
|
Export JSON
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mode-actions-bottom">
|
|
<!-- v2 Scan Buttons -->
|
|
<div style="display: flex; gap: 8px;">
|
|
<button class="run-btn" id="wifiQuickScanBtn" onclick="WiFiMode.startQuickScan()" style="flex: 1;">
|
|
Quick Scan
|
|
</button>
|
|
<button class="run-btn" id="wifiDeepScanBtn" onclick="WiFiMode.startDeepScan()" style="flex: 1; background: var(--accent-orange);">
|
|
Deep Scan
|
|
</button>
|
|
</div>
|
|
<button class="stop-btn" id="wifiStopScanBtn" onclick="WiFiMode.stopScan()" style="display: none; width: 100%;">
|
|
Stop Scanning
|
|
</button>
|
|
|
|
<!-- Legacy Scan Buttons (hidden, for backwards compatibility) -->
|
|
<button class="run-btn" id="startWifiBtn" onclick="startWifiScan()" style="display: none;">
|
|
Start Scanning (Legacy)
|
|
</button>
|
|
<button class="stop-btn" id="stopWifiBtn" onclick="stopWifiScan()" style="display: none;">
|
|
Stop Scanning (Legacy)
|
|
</button>
|
|
</div>
|
|
</div>
|