From 890129cba434798f5c07907a36af97cfd80e1bf6 Mon Sep 17 00:00:00 2001 From: James Smith Date: Sun, 21 Dec 2025 16:02:45 +0000 Subject: [PATCH] Remove device types, manufacturer breakdown, and tracker detection from BT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These features weren't providing useful data since: - Most BLE devices don't broadcast friendly names - Many OUI prefixes are unregistered/private - Classification requires identifiable device names Kept: Bluetooth Proximity Radar (visual device tracking) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- intercept.py | 141 --------------------------------------------------- 1 file changed, 141 deletions(-) diff --git a/intercept.py b/intercept.py index 3b70c19..cbb2168 100755 --- a/intercept.py +++ b/intercept.py @@ -1827,7 +1827,6 @@ HTML_TEMPLATE = ''' @@ -1896,35 +1895,6 @@ HTML_TEMPLATE = ''' -
-
Device Types
-
-
- -
-
-
Phones: 0
-
Audio: 0
-
Wearables: 0
-
Trackers: 0
-
Other: 0
-
-
-
-
-
Manufacturer Breakdown
-
-
Scanning for devices...
-
-
-
-
Tracker Detection
-
-
- Monitoring for AirTags, Tiles, and other trackers... -
-
-
@@ -3799,7 +3769,6 @@ HTML_TEMPLATE = ''' let btDevices = {}; let btDeviceCount = 0; let btBeaconCount = 0; - let btTrackerCount = 0; let btRadarCtx = null; let btRadarAngle = 0; let btRadarAnimFrame = null; @@ -3940,12 +3909,6 @@ HTML_TEMPLATE = ''' document.getElementById('btDeviceCount').textContent = btDeviceCount; playAlert(); pulseSignal(); - - if (device.tracker) { - btTrackerCount++; - document.getElementById('btTrackerCount').textContent = btTrackerCount; - addTrackerAlert(device); - } } // Track in device intelligence @@ -3959,8 +3922,6 @@ HTML_TEMPLATE = ''' // Update visualizations addBtDeviceToRadar(device); - updateBtTypeChart(); - updateBtManufacturerList(); // Add device card addBtDeviceCard(device, isNew); @@ -4021,21 +3982,6 @@ HTML_TEMPLATE = ''' if (autoScroll) output.scrollTop = 0; } - // Add tracker alert to visualization - function addTrackerAlert(device) { - const list = document.getElementById('btTrackerList'); - const placeholder = list.querySelector('div[style*="text-align: center"]'); - if (placeholder) placeholder.remove(); - - const alert = document.createElement('div'); - alert.style.cssText = 'padding: 8px; margin-bottom: 5px; background: rgba(255,51,102,0.1); border-left: 2px solid var(--accent-red); font-family: JetBrains Mono, monospace;'; - alert.innerHTML = ` -
âš  ${escapeHtml(device.tracker.name)} Detected
-
${escapeHtml(device.mac)}
- `; - list.insertBefore(alert, list.firstChild); - } - // Target a Bluetooth device function btTargetDevice(mac) { document.getElementById('btTargetMac').value = mac; @@ -4213,93 +4159,6 @@ HTML_TEMPLATE = ''' if (btRadarDevices.length > 50) btRadarDevices.shift(); } - - // Update device type chart - function updateBtTypeChart() { - const canvas = document.getElementById('btTypeCanvas'); - if (!canvas) return; - - let phones = 0, audio = 0, wearables = 0, trackers = 0, other = 0; - - Object.values(btDevices).forEach(d => { - const devType = d.device_type || 'other'; - if (d.tracker) trackers++; - else if (devType === 'phone') phones++; - else if (devType === 'audio') audio++; - else if (devType === 'wearable') wearables++; - else other++; - }); - - document.getElementById('btPhoneCount').textContent = phones; - document.getElementById('btAudioCount').textContent = audio; - document.getElementById('btWearableCount').textContent = wearables; - document.getElementById('btTrackerTypeCount').textContent = trackers; - document.getElementById('btOtherCount').textContent = other; - - // Draw donut - const ctx = canvas.getContext('2d'); - const cx = canvas.width / 2; - const cy = canvas.height / 2; - const r = Math.min(cx, cy) - 2; - const inner = r * 0.6; - - ctx.clearRect(0, 0, canvas.width, canvas.height); - - const total = phones + audio + wearables + trackers + other; - if (total === 0) return; - - const data = [ - { value: phones, color: '#00d4ff' }, - { value: audio, color: '#00ff88' }, - { value: wearables, color: '#ff8800' }, - { value: trackers, color: '#ff3366' }, - { value: other, color: '#888' } - ]; - - let start = -Math.PI / 2; - data.forEach(seg => { - if (seg.value === 0) return; - const angle = (seg.value / total) * Math.PI * 2; - ctx.fillStyle = seg.color; - ctx.beginPath(); - ctx.moveTo(cx, cy); - ctx.arc(cx, cy, r, start, start + angle); - ctx.closePath(); - ctx.fill(); - start += angle; - }); - - ctx.fillStyle = '#000'; - ctx.beginPath(); - ctx.arc(cx, cy, inner, 0, Math.PI * 2); - ctx.fill(); - - ctx.fillStyle = '#fff'; - ctx.font = 'bold 14px JetBrains Mono'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillText(total, cx, cy); - } - - // Update manufacturer list - function updateBtManufacturerList() { - const manufacturers = {}; - Object.values(btDevices).forEach(d => { - const m = d.manufacturer || 'Unknown'; - manufacturers[m] = (manufacturers[m] || 0) + 1; - }); - - const sorted = Object.entries(manufacturers).sort((a, b) => b[1] - a[1]).slice(0, 6); - - const list = document.getElementById('btManufacturerList'); - if (sorted.length === 0) { - list.innerHTML = '
Scanning for devices...
'; - } else { - list.innerHTML = sorted.map(([name, count]) => - `
${name}${count}
` - ).join(''); - } - }