import React from 'react'; import { InvestigationCase } from '../../types/forensics'; import { Cpu, Wifi, Radio, Clock, Keyboard, AlertTriangle, CheckCircle2, Layers, Activity, MapPin, ShieldAlert } from 'lucide-react'; interface ClientLeakageTabProps { currentCase: InvestigationCase; } export const ClientLeakageTab: React.FC = ({ currentCase, }) => { const probes = currentCase.networkTelemetry.clientProbes; return (
{/* Top Banner: Client-Side Hardware Probing Overview */}

Client-Side Telemetry & Hardware Leakage Probing

MULTI-LAYER CLIENT PROBES ACTIVE

Standard transport-layer VPNs leave client hardware and peer-to-peer interfaces exposed. The Sentinel Probing Engine extracts WebRTC ICE candidates via STUN, queries ambient Wi-Fi BSSID identifiers, measures clock skew desynchronization, and profiles keyboard layout telemetry to unmask physical origin.

{/* Grid of 4 Client Probing Vectors */}
{/* 1. WebRTC ICE Candidate & STUN Leakage */}
WEBRTC ICE CANDIDATE & STUN INTERFACE LEAK
{probes.webrtcCandidateLeak.leakDetected ? ( PHYSICAL NIC LEAK DETECTED ) : ( NO STUN LEAK )}
LOCAL PRIVATE IP (RFC 1918) {probes.webrtcCandidateLeak.localPrivateIp}
UNMASKED PUBLIC PHYSICAL IP {probes.webrtcCandidateLeak.unmaskedPublicIp}
STUN RESOLVER USED {probes.webrtcCandidateLeak.stunServerUsed}
LEAKAGE ASSESSMENT:

{probes.webrtcCandidateLeak.leakDetails}

{/* 2. Ambient Wi-Fi BSSID & RF Triangulation */}
AMBIENT RF & WI-FI BSSID TRIANGULATION
±{probes.ambientRfTriangulation.accuracyMeters}m ACCURACY
NEARBY ROUTER BSSID (MAC) {probes.ambientRfTriangulation.bssidMac} SSID: {probes.ambientRfTriangulation.ssid}
CELL TOWER CGI / ENODEB {probes.ambientRfTriangulation.cellTowerCgi} RSSI: {probes.ambientRfTriangulation.rssiDb} dBm
TRIANGULATED PHYSICAL LOCATION:

{probes.ambientRfTriangulation.triangulatedLocation}

Ambient RF positioning overrides operating-system level IP VPN tunnels by cross-referencing physical radio beacons.
{/* 3. System Clock & NTP Skew Desynchronization */}
SYSTEM CLOCK & NTP TIMEZONE SKEW
Δ {probes.ntpClockSkew.skewDeltaSeconds}s
CLIENT REPORTED TIMEZONE {probes.ntpClockSkew.clientReportedTz}
DEVICE CLOCK ISO {probes.ntpClockSkew.deviceClockIso}
SERVER NTP ISO {probes.ntpClockSkew.serverNtpTimestampIso}
DESYNCHRONIZATION VERDICT:

{probes.ntpClockSkew.verdict}

{/* 4. Linguistic, Keyboard & UI Cadence */}
LINGUISTIC & KEYBOARD TELEMETRY
{probes.linguisticTelemetry.anomalyFlag && ( BEHAVIOR ANOMALY )}
ACTIVE KEYBOARD LAYOUT {probes.linguisticTelemetry.activeKeyboardLayout}
TYPING CADENCE (INTERVAL) {probes.linguisticTelemetry.typingCadenceMs} ms / stroke {probes.linguisticTelemetry.typingCadenceMs < 20 ? '(Mechanical Bot / Script)' : '(Human Velocity)'}
HTTP ACCEPT-LANGUAGE HEADER {probes.linguisticTelemetry.acceptLanguage}
LINGUISTIC & BEHAVIOR OBSERVATION:

{probes.linguisticTelemetry.anomalyNote}

); };