mirror of
https://github.com/smittix/intercept.git
synced 2026-05-03 10:57:58 -07:00
Add visual rogue AP indicator for suspected evil twin detection
- Add rogueBssids Set to track all BSSIDs flagged as rogues - Display red banner with pulsing animation on rogue network cards - Apply red border and background tint to rogue AP cards - Show prominent warning in selected device panel for rogue APs - Change SSID color to red when viewing rogue AP details Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3737,6 +3737,7 @@
|
||||
let detectedDrones = {}; // Track detected drones by BSSID
|
||||
let ssidToBssids = {}; // Track SSIDs to their BSSIDs for rogue AP detection
|
||||
let rogueApDetails = {}; // Store details about rogue APs: {ssid: [{bssid, signal, channel, firstSeen}]}
|
||||
let rogueBssids = new Set(); // Track all BSSIDs that are suspected rogues
|
||||
let activeCapture = null; // {bssid, channel, file, startTime, pollInterval}
|
||||
let watchMacs = JSON.parse(localStorage.getItem('watchMacs') || '[]');
|
||||
let alertedMacs = new Set(); // Prevent duplicate alerts per session
|
||||
@@ -3953,10 +3954,20 @@
|
||||
document.getElementById('rogueApCount').textContent = rogueApCount;
|
||||
playAlert();
|
||||
|
||||
// Mark ALL BSSIDs with this SSID as suspected rogues
|
||||
ssidToBssids[ssid].forEach(b => rogueBssids.add(b));
|
||||
|
||||
// Get the BSSIDs to show in alert
|
||||
const bssidList = rogueApDetails[ssid].map(e => e.bssid).join(', ');
|
||||
showInfo(`⚠ Rogue AP: "${ssid}" has ${ssidToBssids[ssid].size} BSSIDs: ${bssidList}`);
|
||||
showNotification('⚠️ Rogue AP Detected!', `"${ssid}" on multiple BSSIDs`);
|
||||
|
||||
// Update all network cards with this SSID to show rogue indicator
|
||||
ssidToBssids[ssid].forEach(rogueBssid => {
|
||||
const net = wifiNetworks[rogueBssid];
|
||||
if (net) addWifiNetworkCard(net, false);
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -4976,11 +4987,13 @@
|
||||
const power = parseInt(net.power) || -100;
|
||||
const signalPercent = Math.max(0, Math.min(100, (power + 100) * 2));
|
||||
const signalColor = power >= -50 ? 'var(--accent-green)' : power >= -70 ? 'var(--accent-orange)' : 'var(--accent-red)';
|
||||
const isRogue = rogueBssids.has(net.bssid);
|
||||
|
||||
panel.innerHTML = `
|
||||
${isRogue ? '<div class="rogue-indicator" style="margin: -10px -10px 10px -10px; padding: 8px;">⚠️ SUSPECTED ROGUE ACCESS POINT</div>' : ''}
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
|
||||
<div style="grid-column: span 2; text-align: center; padding-bottom: 10px; border-bottom: 1px solid var(--border-color);">
|
||||
<div style="font-size: 18px; color: var(--accent-cyan); font-weight: bold;">${escapeHtml(net.essid || '[Hidden]')}</div>
|
||||
<div style="font-size: 18px; color: ${isRogue ? 'var(--accent-red)' : 'var(--accent-cyan)'}; font-weight: bold;">${escapeHtml(net.essid || '[Hidden]')}</div>
|
||||
<div style="font-size: 10px; color: var(--text-muted);">${escapeHtml(net.bssid)}</div>
|
||||
</div>
|
||||
<div style="background: rgba(0,0,0,0.3); padding: 8px; border-radius: 4px;">
|
||||
@@ -5100,8 +5113,18 @@
|
||||
|
||||
const wpsEnabled = net.wps === '1' || net.wps === 'Yes' || (net.privacy || '').includes('WPS');
|
||||
const wpsHtml = wpsEnabled ? '<span class="wps-enabled">WPS</span>' : '';
|
||||
const isRogue = rogueBssids.has(net.bssid);
|
||||
const rogueHtml = isRogue ? '<div class="rogue-indicator">⚠️ SUSPECTED ROGUE AP</div>' : '';
|
||||
|
||||
// Update card border for rogue APs
|
||||
if (isRogue) {
|
||||
card.style.borderLeftColor = 'var(--accent-red)';
|
||||
card.style.borderLeftWidth = '4px';
|
||||
card.style.background = 'rgba(255, 0, 0, 0.1)';
|
||||
}
|
||||
|
||||
card.innerHTML = `
|
||||
${rogueHtml}
|
||||
<div class="header" style="display: flex; justify-content: space-between; margin-bottom: 8px;">
|
||||
<span class="device-name">${escapeHtml(net.essid || '[Hidden]')}${wpsHtml}</span>
|
||||
<span style="color: #444; font-size: 10px;">CH ${net.channel}</span>
|
||||
|
||||
Reference in New Issue
Block a user