mirror of
https://github.com/smittix/intercept.git
synced 2026-07-07 17:18:11 -07:00
PR #124 fixed major and minor issues
This commit is contained in:
@@ -1332,6 +1332,14 @@
|
||||
totalSignals: 0
|
||||
};
|
||||
|
||||
// XSS protection: Escape HTML special characters
|
||||
function escapeHtml(text) {
|
||||
if (text === null || text === undefined) return '';
|
||||
const div = document.createElement('div');
|
||||
div.textContent = text;
|
||||
return div.innerHTML;
|
||||
}
|
||||
|
||||
// Band configurations by region
|
||||
const BAND_CONFIG = {
|
||||
'Europe': [
|
||||
@@ -1832,23 +1840,23 @@
|
||||
<div class="tower-info">
|
||||
<div class="tower-info-row">
|
||||
<span class="tower-info-label">Cell ID</span>
|
||||
<span class="tower-info-value">${tower.cid} ${tower.rogue ? '<span class="tower-rogue-badge">ROGUE</span>' : ''}</span>
|
||||
<span class="tower-info-value">${escapeHtml(tower.cid)} ${tower.rogue ? '<span class="tower-rogue-badge">ROGUE</span>' : ''}</span>
|
||||
</div>
|
||||
<div class="tower-info-row">
|
||||
<span class="tower-info-label">MCC / MNC</span>
|
||||
<span class="tower-info-value">${tower.mcc} / ${tower.mnc}</span>
|
||||
<span class="tower-info-value">${escapeHtml(tower.mcc)} / ${escapeHtml(tower.mnc)}</span>
|
||||
</div>
|
||||
<div class="tower-info-row">
|
||||
<span class="tower-info-label">LAC</span>
|
||||
<span class="tower-info-value">${tower.lac}</span>
|
||||
<span class="tower-info-value">${escapeHtml(tower.lac)}</span>
|
||||
</div>
|
||||
<div class="tower-info-row">
|
||||
<span class="tower-info-label">ARFCN</span>
|
||||
<span class="tower-info-value">${tower.arfcn}</span>
|
||||
<span class="tower-info-value">${escapeHtml(tower.arfcn)}</span>
|
||||
</div>
|
||||
<div class="tower-info-row">
|
||||
<span class="tower-info-label">Signal (dBm)</span>
|
||||
<span class="tower-info-value">${tower.signal || 'N/A'}</span>
|
||||
<span class="tower-info-value">${escapeHtml(tower.signal || 'N/A')}</span>
|
||||
</div>
|
||||
<div class="tower-info-row">
|
||||
<span class="tower-info-label">Location</span>
|
||||
@@ -1877,14 +1885,14 @@
|
||||
for (const [key, tower] of Object.entries(towers)) {
|
||||
const selected = key === selectedTowerKey ? 'selected' : '';
|
||||
html += `
|
||||
<div class="list-item ${selected}" onclick="selectTower('${key}')">
|
||||
<div class="list-item ${selected}" onclick="selectTower('${escapeHtml(key)}')">
|
||||
<div class="list-item-header">
|
||||
<span class="list-item-id">CID ${tower.cid}</span>
|
||||
<span class="list-item-meta">${tower.mcc}-${tower.mnc}</span>
|
||||
<span class="list-item-id">CID ${escapeHtml(tower.cid)}</span>
|
||||
<span class="list-item-meta">${escapeHtml(tower.mcc)}-${escapeHtml(tower.mnc)}</span>
|
||||
${tower.rogue ? '<span class="rogue-indicator"></span>' : ''}
|
||||
</div>
|
||||
<div class="list-item-details">
|
||||
LAC ${tower.lac} | ARFCN ${tower.arfcn} | ${tower.signal || 'N/A'} dBm
|
||||
LAC ${escapeHtml(tower.lac)} | ARFCN ${escapeHtml(tower.arfcn)} | ${escapeHtml(tower.signal || 'N/A')} dBm
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
@@ -1900,6 +1908,13 @@
|
||||
const key = data.imsi || data.tmsi || `device_${Date.now()}`;
|
||||
devices[key] = data;
|
||||
|
||||
// Check if device has valid coordinates before creating marker
|
||||
if (!data.lat || !data.lon) {
|
||||
console.warn('[GSM SPY] Device has no coordinates, skipping map marker:', key);
|
||||
updateDevicesList();
|
||||
return;
|
||||
}
|
||||
|
||||
// Create device marker with vector icon
|
||||
const marker = L.marker([data.lat, data.lon], {
|
||||
icon: createGSMMarkerIcon('device', '#00d9ff', false, false)
|
||||
@@ -1951,14 +1966,17 @@
|
||||
let html = '';
|
||||
for (const [key, device] of Object.entries(devices)) {
|
||||
const identifier = device.imsi || device.tmsi || 'Unknown';
|
||||
const location = (device.lat && device.lon)
|
||||
? `${device.lat.toFixed(6)}, ${device.lon.toFixed(6)}`
|
||||
: 'Location unknown';
|
||||
html += `
|
||||
<div class="list-item">
|
||||
<div class="list-item-header">
|
||||
<span class="list-item-id">${identifier}</span>
|
||||
<span class="list-item-id">${escapeHtml(identifier)}</span>
|
||||
<span class="list-item-meta">${new Date(device.timestamp).toLocaleTimeString()}</span>
|
||||
</div>
|
||||
<div class="list-item-details">
|
||||
Tower CID ${device.cid} | ${device.lat.toFixed(6)}, ${device.lon.toFixed(6)}
|
||||
Tower CID ${escapeHtml(device.cid)} | ${escapeHtml(location)}
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
@@ -1983,7 +2001,7 @@
|
||||
<div class="alert-time">${new Date(data.timestamp).toLocaleTimeString()}</div>
|
||||
<div class="alert-message">
|
||||
⚠ ROGUE TOWER DETECTED<br>
|
||||
CID ${data.cid} | MCC ${data.mcc} MNC ${data.mnc} | ${data.reason || 'Unknown threat'}
|
||||
CID ${escapeHtml(data.cid)} | MCC ${escapeHtml(data.mcc)} MNC ${escapeHtml(data.mnc)} | ${escapeHtml(data.reason || 'Unknown threat')}
|
||||
</div>
|
||||
`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user