diff --git a/static/css/modes/acars.css b/static/css/modes/acars.css new file mode 100644 index 0000000..043bb68 --- /dev/null +++ b/static/css/modes/acars.css @@ -0,0 +1,91 @@ +/* ACARS Sidebar Styles */ +@keyframes pulse { + 0%, 100% { opacity: 0.3; transform: scale(0.8); } + 50% { opacity: 1; transform: scale(1); } +} + +/* Main ACARS Sidebar (Collapsible) */ +.main-acars-sidebar { + display: flex; + flex-direction: row; + background: var(--bg-panel); + border-left: 1px solid var(--border-color); +} +.main-acars-collapse-btn { + width: 24px; + min-width: 24px; + background: rgba(0,0,0,0.4); + border: none; + border-right: 1px solid var(--border-color); + color: var(--accent-cyan); + cursor: pointer; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 5px; + padding: 6px 0; + transition: background 0.2s; +} +.main-acars-collapse-btn:hover { + background: rgba(74, 158, 255, 0.15); +} +.main-acars-collapse-label { + writing-mode: vertical-rl; + text-orientation: mixed; + font-size: 8px; + font-weight: 600; + letter-spacing: 1px; +} +.main-acars-sidebar.collapsed .main-acars-collapse-label { display: block; } +.main-acars-sidebar:not(.collapsed) .main-acars-collapse-label { display: none; } +#mainAcarsCollapseIcon { + font-size: 10px; + transition: transform 0.3s; +} +.main-acars-sidebar.collapsed #mainAcarsCollapseIcon { + transform: rotate(180deg); +} +.main-acars-content { + width: 196px; + display: flex; + flex-direction: column; + overflow: hidden; + transition: width 0.3s ease, opacity 0.2s ease; +} +.main-acars-sidebar.collapsed .main-acars-content { + width: 0; + opacity: 0; + pointer-events: none; +} +.main-acars-messages { + max-height: 350px; +} +.main-acars-msg { + padding: 6px 8px; + border-bottom: 1px solid var(--border-color); + animation: fadeInMsg 0.3s ease; +} +.main-acars-msg:hover { + background: rgba(74, 158, 255, 0.05); +} +@keyframes fadeInMsg { + from { opacity: 0; transform: translateY(-3px); } + to { opacity: 1; transform: translateY(0); } +} + +/* ACARS Status Indicator */ +.acars-status-dot.listening { + background: var(--accent-cyan) !important; + animation: acars-pulse 1.5s ease-in-out infinite; +} +.acars-status-dot.receiving { + background: var(--accent-green) !important; +} +.acars-status-dot.error { + background: var(--accent-red) !important; +} +@keyframes acars-pulse { + 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(74, 158, 255, 0.7); } + 50% { opacity: 0.6; box-shadow: 0 0 6px 3px rgba(74, 158, 255, 0.3); } +} diff --git a/static/css/modes/aprs.css b/static/css/modes/aprs.css new file mode 100644 index 0000000..2b225b4 --- /dev/null +++ b/static/css/modes/aprs.css @@ -0,0 +1,48 @@ +/* APRS Status Bar Styles */ +.aprs-status-bar { + margin-top: 12px; + padding: 10px; + background: rgba(0,0,0,0.3); + border: 1px solid var(--border-color); + border-radius: 4px; +} +.aprs-status-indicator { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 8px; +} +.aprs-status-dot { + width: 10px; + height: 10px; + border-radius: 50%; + background: var(--text-muted); +} +.aprs-status-dot.standby { background: var(--text-muted); } +.aprs-status-dot.listening { + background: var(--accent-cyan); + animation: aprs-pulse 1.5s ease-in-out infinite; +} +.aprs-status-dot.tracking { background: var(--accent-green); } +.aprs-status-dot.error { background: var(--accent-red); } +@keyframes aprs-pulse { + 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(74, 158, 255, 0.7); } + 50% { opacity: 0.6; box-shadow: 0 0 8px 4px rgba(74, 158, 255, 0.3); } +} +.aprs-status-text { + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; +} +.aprs-status-stats { + display: flex; + flex-wrap: wrap; + gap: 8px; + font-size: 9px; +} +.aprs-stat { + color: var(--text-secondary); +} +.aprs-stat-label { + color: var(--text-muted); +} diff --git a/static/css/modes/tscm.css b/static/css/modes/tscm.css new file mode 100644 index 0000000..abcc80a --- /dev/null +++ b/static/css/modes/tscm.css @@ -0,0 +1,725 @@ +/* TSCM Styles */ + +/* TSCM Threat Cards */ +.threat-card { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 8px; + border-radius: 6px; + background: rgba(0,0,0,0.3); + border: 1px solid var(--border-color); +} +.threat-card .count { + font-size: 18px; + font-weight: bold; + line-height: 1; +} +.threat-card .label { + font-size: 9px; + text-transform: uppercase; + opacity: 0.7; + margin-top: 2px; +} +.threat-card.critical { border-color: #ff3366; color: #ff3366; } +.threat-card.critical.active { background: rgba(255,51,102,0.2); } +.threat-card.high { border-color: #ff9933; color: #ff9933; } +.threat-card.high.active { background: rgba(255,153,51,0.2); } +.threat-card.medium { border-color: #ffcc00; color: #ffcc00; } +.threat-card.medium.active { background: rgba(255,204,0,0.2); } +.threat-card.low { border-color: #00ff88; color: #00ff88; } +.threat-card.low.active { background: rgba(0,255,136,0.2); } + +/* TSCM Dashboard */ +.tscm-dashboard { + display: flex; + flex-direction: column; + gap: 16px; + height: 100%; +} +.tscm-threat-banner { + display: flex; + gap: 12px; + padding: 12px; + background: rgba(0,0,0,0.3); + border-radius: 8px; +} +.tscm-threat-banner .threat-card { + flex: 1; + padding: 12px; +} +.tscm-threat-banner .threat-card .count { + font-size: 24px; +} +.tscm-main-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 16px; + flex: 1; + min-height: 0; +} +.tscm-panel { + background: rgba(0,0,0,0.3); + border: 1px solid var(--border-color); + border-radius: 8px; + display: flex; + flex-direction: column; + overflow: hidden; +} +.tscm-panel-header { + padding: 10px 12px; + background: rgba(0,0,0,0.3); + border-bottom: 1px solid var(--border-color); + font-weight: 600; + font-size: 12px; + display: flex; + justify-content: space-between; + align-items: center; +} +.tscm-panel-header .badge { + background: var(--primary-color); + color: #fff; + padding: 2px 8px; + border-radius: 10px; + font-size: 10px; + font-weight: normal; +} +.tscm-panel-content { + flex: 1; + overflow-y: auto; + padding: 8px; +} +.tscm-device-item { + padding: 8px 10px; + border-radius: 4px; + margin-bottom: 6px; + background: rgba(0,0,0,0.2); + border-left: 3px solid var(--border-color); + cursor: pointer; + transition: background 0.2s; +} +.tscm-device-item:hover { + background: rgba(74,158,255,0.1); +} +.tscm-device-item.new { + border-left-color: #ff9933; + animation: pulse-glow 2s infinite; +} +.tscm-device-item.threat { + border-left-color: #ff3366; +} +.tscm-device-item.baseline { + border-left-color: #00ff88; +} +/* Classification colors */ +.tscm-device-item.classification-green { + border-left-color: #00cc00; + background: rgba(0, 204, 0, 0.1); +} +.tscm-device-item.classification-yellow { + border-left-color: #ffcc00; + background: rgba(255, 204, 0, 0.1); +} +.tscm-device-item.classification-red { + border-left-color: #ff3333; + background: rgba(255, 51, 51, 0.15); + animation: pulse-glow 2s infinite; +} +.classification-indicator { + margin-right: 6px; +} +.tscm-status-message { + padding: 12px; + background: rgba(255, 153, 51, 0.15); + border: 1px solid rgba(255, 153, 51, 0.3); + border-radius: 6px; + color: var(--text-primary); + font-size: 12px; + display: flex; + align-items: center; + gap: 8px; +} +.tscm-status-message .status-icon { + font-size: 16px; +} +.tscm-privilege-warning { + padding: 10px 12px; + background: rgba(255, 51, 51, 0.15); + border: 1px solid rgba(255, 51, 51, 0.4); + border-radius: 6px; + color: var(--text-primary); + font-size: 11px; + display: flex; + align-items: flex-start; + gap: 10px; + margin-bottom: 12px; +} +.tscm-privilege-warning .warning-icon { + font-size: 18px; + flex-shrink: 0; +} +.tscm-privilege-warning .warning-action { + margin-top: 4px; + font-family: 'JetBrains Mono', monospace; + font-size: 10px; + color: var(--accent-cyan); + background: rgba(0, 0, 0, 0.3); + padding: 4px 8px; + border-radius: 3px; +} +.tscm-action-btn { + padding: 10px 16px; + background: var(--accent-green); + border: none; + border-radius: 4px; + color: #000; + font-size: 12px; + font-weight: 600; + cursor: pointer; + transition: all 0.2s; +} +.tscm-action-btn:hover { + background: #2ecc71; + transform: translateY(-1px); +} +.tscm-device-reasons { + font-size: 10px; + color: var(--text-secondary); + margin-top: 4px; + font-style: italic; + line-height: 1.4; +} +.audio-badge { + margin-left: 6px; + font-size: 10px; +} +.tscm-device-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 4px; +} +.tscm-device-name { + font-weight: 600; + font-size: 12px; +} +.tscm-device-meta { + font-size: 10px; + color: var(--text-muted); + display: flex; + gap: 8px; + flex-wrap: wrap; +} +.tscm-device-indicators { + margin-top: 6px; + display: flex; + flex-wrap: wrap; + gap: 4px; +} +.indicator-tag { + font-size: 9px; + padding: 2px 6px; + border-radius: 3px; + background: rgba(255, 255, 255, 0.1); + color: var(--text-secondary); + white-space: nowrap; +} +.score-badge { + font-size: 10px; + padding: 2px 8px; + border-radius: 10px; + font-weight: 600; +} +.score-badge.score-low { + background: rgba(0, 204, 0, 0.2); + color: #00cc00; +} +.score-badge.score-medium { + background: rgba(255, 204, 0, 0.2); + color: #ffcc00; +} +.score-badge.score-high { + background: rgba(255, 51, 51, 0.2); + color: #ff3333; +} +.tscm-action { + margin-top: 4px; + font-size: 10px; + color: #ff9933; + font-weight: 600; + text-transform: uppercase; +} +.tscm-correlations { + margin-top: 16px; + padding: 12px; + background: rgba(255, 153, 51, 0.1); + border-radius: 6px; + border: 1px solid #ff9933; +} +.tscm-correlations h4 { + margin: 0 0 8px 0; + font-size: 12px; + color: #ff9933; +} +.correlation-item { + padding: 8px; + margin-bottom: 6px; + background: rgba(0, 0, 0, 0.2); + border-radius: 4px; + font-size: 11px; +} +.correlation-devices { + font-size: 10px; + color: var(--text-muted); + margin-top: 4px; +} +.tscm-summary-box { + display: flex; + gap: 12px; + margin-bottom: 16px; + flex-wrap: wrap; +} +.summary-stat { + flex: 1; + min-width: 100px; + padding: 12px; + background: rgba(0, 0, 0, 0.3); + border-radius: 6px; + text-align: center; +} +.summary-stat .count { + font-size: 24px; + font-weight: 700; +} +.summary-stat .label { + font-size: 10px; + color: var(--text-muted); + text-transform: uppercase; +} +.summary-stat.high-interest .count { color: #ff3333; } +.summary-stat.needs-review .count { color: #ffcc00; } +.summary-stat.informational .count { color: #00cc00; } +.tscm-assessment { + padding: 10px 14px; + margin: 12px 0; + border-radius: 6px; + font-size: 13px; +} +.tscm-assessment.high-interest { + background: rgba(255, 51, 51, 0.15); + border: 1px solid #ff3333; + color: #ff3333; +} +.tscm-assessment.needs-review { + background: rgba(255, 204, 0, 0.15); + border: 1px solid #ffcc00; + color: #ffcc00; +} +.tscm-assessment.informational { + background: rgba(0, 204, 0, 0.15); + border: 1px solid #00cc00; + color: #00cc00; +} +.tscm-disclaimer { + font-size: 10px; + color: var(--text-muted); + font-style: italic; + padding: 8px 12px; + background: rgba(0, 0, 0, 0.2); + border-radius: 4px; + margin-top: 8px; +} + +/* TSCM Device Details Modal */ +.tscm-modal-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.8); + display: flex; + align-items: center; + justify-content: center; + z-index: 10000; +} +.tscm-modal { + background: var(--bg-card); + border: 1px solid var(--border-light); + border-radius: 8px; + max-width: 500px; + width: 90%; + max-height: 80vh; + overflow-y: auto; + position: relative; + box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5); +} +.tscm-modal-close { + position: absolute; + top: 12px; + right: 12px; + background: var(--bg-tertiary); + border: 1px solid var(--border-light); + border-radius: 50%; + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-secondary); + font-size: 20px; + cursor: pointer; + z-index: 10; + transition: all 0.2s; +} +.tscm-modal-close:hover { + background: var(--accent-red); + border-color: var(--accent-red); + color: #fff; +} +.device-detail-header { + padding: 16px; + padding-right: 52px; /* Reserve space for close button */ + border-bottom: 1px solid var(--border-color); + display: flex; + justify-content: space-between; + align-items: center; +} +.device-detail-header h3 { + margin: 0; + font-size: 16px; +} +.device-detail-header.classification-red { background: rgba(255, 51, 51, 0.15); } +.device-detail-header.classification-yellow { background: rgba(255, 204, 0, 0.15); } +.device-detail-header.classification-green { background: rgba(0, 204, 0, 0.15); } +.device-detail-protocol { + font-size: 10px; + padding: 3px 8px; + background: rgba(255, 255, 255, 0.1); + border-radius: 3px; + text-transform: uppercase; +} +.device-detail-score { + display: flex; + align-items: center; + padding: 16px; + gap: 16px; + border-bottom: 1px solid var(--border-color); +} +.score-circle { + width: 70px; + height: 70px; + border-radius: 50%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + border: 3px solid; +} +.score-circle.high { border-color: #ff3333; background: rgba(255, 51, 51, 0.1); } +.score-circle.medium { border-color: #ffcc00; background: rgba(255, 204, 0, 0.1); } +.score-circle.low { border-color: #00cc00; background: rgba(0, 204, 0, 0.1); } +.score-circle .score-value { + font-size: 24px; + font-weight: 700; +} +.score-circle.high .score-value { color: #ff3333; } +.score-circle.medium .score-value { color: #ffcc00; } +.score-circle.low .score-value { color: #00cc00; } +.score-circle .score-label { + font-size: 8px; + color: var(--text-muted); + text-transform: uppercase; +} +.score-breakdown { + flex: 1; + font-size: 12px; + line-height: 1.6; +} +.device-detail-section { + padding: 16px; + border-bottom: 1px solid var(--border-color); +} +.device-detail-section h4 { + margin: 0 0 12px 0; + font-size: 12px; + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.5px; +} +.device-detail-table { + width: 100%; + font-size: 12px; +} +.device-detail-table td { + padding: 4px 0; +} +.device-detail-table td:first-child { + color: var(--text-dim); + width: 40%; +} +.indicator-list { + display: flex; + flex-direction: column; + gap: 8px; +} +.indicator-item { + display: flex; + gap: 10px; + padding: 8px; + background: rgba(0, 0, 0, 0.2); + border-radius: 4px; + font-size: 11px; +} +.indicator-type { + background: rgba(255, 153, 51, 0.2); + color: #ff9933; + padding: 2px 6px; + border-radius: 3px; + font-size: 10px; + white-space: nowrap; +} +.indicator-desc { + color: var(--text-color); +} +.device-reasons-list { + margin: 0; + padding-left: 20px; + font-size: 12px; + color: var(--text-primary); +} +.device-reasons-list li { + margin-bottom: 4px; + color: var(--text-secondary); +} +.device-detail-disclaimer { + padding: 12px 16px; + font-size: 10px; + color: var(--text-secondary); + background: rgba(74, 158, 255, 0.1); + border-top: 1px solid rgba(74, 158, 255, 0.3); +} +.tscm-threat-action { + margin-top: 6px; + font-size: 10px; + color: #ff9933; + text-transform: uppercase; + font-weight: 600; +} +.tscm-device-item { + cursor: pointer; +} +.tscm-device-item:hover { + background: rgba(255, 255, 255, 0.05); +} +.threat-card.clickable { + cursor: pointer; + transition: transform 0.2s, box-shadow 0.2s; +} +.threat-card.clickable:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); +} +.category-device-list { + max-height: 400px; + overflow-y: auto; +} +.category-device-item { + padding: 12px 16px; + border-bottom: 1px solid var(--border-color); + cursor: pointer; + transition: background 0.2s; +} +.category-device-item:hover { + background: rgba(255, 255, 255, 0.05); +} +.category-device-header { + display: flex; + justify-content: space-between; + align-items: center; +} +.category-device-name { + font-weight: 600; + font-size: 13px; +} +.category-device-score { + background: rgba(255, 255, 255, 0.1); + padding: 2px 8px; + border-radius: 10px; + font-size: 11px; + font-weight: 600; +} +.category-device-meta { + display: flex; + gap: 6px; + margin-top: 6px; +} +.protocol-badge { + font-size: 9px; + padding: 2px 6px; + background: rgba(74, 158, 255, 0.2); + color: #4a9eff; + border-radius: 3px; + text-transform: uppercase; +} +.indicator-mini { + font-size: 9px; + padding: 2px 6px; + background: rgba(255, 153, 51, 0.2); + color: #ff9933; + border-radius: 3px; +} +.correlation-detail-item { + padding: 12px; + background: rgba(0, 0, 0, 0.2); + border-radius: 6px; + margin-bottom: 8px; +} +.tscm-threat-list { + display: flex; + flex-direction: column; + gap: 8px; +} +.tscm-threat-item { + padding: 10px 12px; + border-radius: 6px; + background: rgba(0,0,0,0.2); + border: 1px solid; +} +.tscm-threat-item.critical { border-color: #ff3366; background: rgba(255,51,102,0.1); } +.tscm-threat-item.high { border-color: #ff9933; background: rgba(255,153,51,0.1); } +.tscm-threat-item.medium { border-color: #ffcc00; background: rgba(255,204,0,0.1); } +.tscm-threat-item.low { border-color: #00ff88; background: rgba(0,255,136,0.1); } +.tscm-threat-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 4px; +} +.tscm-threat-type { + font-weight: 600; + font-size: 12px; +} +.tscm-threat-severity { + font-size: 10px; + padding: 2px 6px; + border-radius: 3px; + text-transform: uppercase; +} +.tscm-threat-item.critical .tscm-threat-severity { background: #ff3366; color: #fff; } +.tscm-threat-item.high .tscm-threat-severity { background: #ff9933; color: #000; } +.tscm-threat-item.medium .tscm-threat-severity { background: #ffcc00; color: #000; } +.tscm-threat-item.low .tscm-threat-severity { background: #00ff88; color: #000; } +.tscm-threat-details { + font-size: 11px; + color: var(--text-muted); +} +@keyframes pulse-glow { + 0%, 100% { box-shadow: 0 0 5px rgba(255,153,51,0.3); } + 50% { box-shadow: 0 0 15px rgba(255,153,51,0.6); } +} +.tscm-empty { + text-align: center; + padding: 30px; + color: var(--text-muted); + font-size: 12px; +} + +/* Futuristic Scanner Progress */ +.tscm-scanner-progress { + display: flex; + align-items: center; + gap: 12px; + padding: 12px; + margin-top: 10px; + background: rgba(0,0,0,0.4); + border: 1px solid var(--border-color); + border-radius: 8px; +} +.scanner-ring { + position: relative; + width: 70px; + height: 70px; + flex-shrink: 0; +} +.scanner-ring svg { + width: 100%; + height: 100%; + transform: rotate(-90deg); +} +.scanner-track { + fill: none; + stroke: rgba(74,158,255,0.1); + stroke-width: 4; +} +.scanner-progress { + fill: none; + stroke: var(--accent-cyan); + stroke-width: 4; + stroke-linecap: round; + stroke-dasharray: 283; + stroke-dashoffset: 283; + transition: stroke-dashoffset 0.3s ease; + filter: drop-shadow(0 0 6px var(--accent-cyan)); +} +.scanner-sweep { + stroke: var(--accent-cyan); + stroke-width: 2; + opacity: 0.8; + transform-origin: 50px 50px; + animation: sweep-rotate 2s linear infinite; + filter: drop-shadow(0 0 4px var(--accent-cyan)); +} +@keyframes sweep-rotate { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} +.scanner-center { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; +} +.scanner-percent { + font-size: 14px; + font-weight: bold; + color: var(--accent-cyan); + text-shadow: 0 0 10px var(--accent-cyan); +} +.scanner-info { + flex: 1; + min-width: 0; +} +.scanner-status { + font-size: 10px; + font-weight: 600; + letter-spacing: 2px; + color: var(--accent-cyan); + margin-bottom: 6px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.scanner-devices { + display: flex; + gap: 8px; +} +.device-indicator { + font-size: 14px; + opacity: 0.3; + transition: opacity 0.3s, transform 0.3s; +} +.device-indicator.active { + opacity: 1; + animation: device-pulse 1.5s ease-in-out infinite; +} +.device-indicator.inactive { + opacity: 0.2; + filter: grayscale(1); +} +@keyframes device-pulse { + 0%, 100% { transform: scale(1); } + 50% { transform: scale(1.1); } +} diff --git a/templates/index.html b/templates/index.html index 10bb410..dce679c 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,11862 +1,10281 @@ - - - - - - iNTERCEPT // See the Invisible - - - - - - - - - - - - - - - -
-
- -
- -
-

iNTERCEPT

-

// See the Invisible

- v{{ version }} -
-
- - -
- -
-

What's New

- {% for release in changelog[:2] %} -
-
- v{{ release.version }} - {{ release.date }} -
-
    - {% for item in release.highlights %} -
  • {{ item }}
  • - {% endfor %} -
-
- {% endfor %} -
- - -
-

Select Mode

-
- - - - - - - - - -
-
-
- - - -
-
-
- - - - - - - - -
-
-
- █████╗  ██████╗ ██████╗███████╗███████╗███████╗
-██╔══██╗██╔════╝██╔════╝██╔════╝██╔════╝██╔════╝
-███████║██║     ██║     █████╗  ███████╗███████╗
-██╔══██║██║     ██║     ██╔══╝  ╚════██║╚════██║
-██║  ██║╚██████╗╚██████╗███████╗███████║███████║
-╚═╝  ╚═╝ ╚═════╝ ╚═════╝╚══════╝╚══════╝╚══════╝
-██████╗ ███████╗███╗   ██╗██╗███████╗██████╗
-██╔══██╗██╔════╝████╗  ██║██║██╔════╝██╔══██╗
-██║  ██║█████╗  ██╔██╗ ██║██║█████╗  ██║  ██║
-██║  ██║██╔══╝  ██║╚██╗██║██║██╔══╝  ██║  ██║
-██████╔╝███████╗██║ ╚████║██║███████╗██████╔╝
-╚═════╝ ╚══════╝╚═╝  ╚═══╝╚═╝╚══════╝╚═════╝
-
-

- root@intercepted:~# sudo access --grant-permission
- [sudo] password for user: ********
- Error: User is not in the sudoers file.
- This incident will be reported. -

-
-

- "In a world of locked doors, the man with the key is king.
- And you, my friend, just threw away the key." -

- -
-
-
- - - -
- UTC - --:--:-- -
- - - - -

iNTERCEPT // See the Invisible v{{ version }}

-

Signal Intelligence & Counter Surveillance Platform PAGER

- - -
- -
-
- 📨 -
- 0 - messages -
-
-
- 📟 -
- 0 - POCSAG -
-
-
- 📠 -
- 0 - FLEX -
-
-
- - -
-
- 🌡️ -
- 0 - sensors -
-
-
- 📊 -
- 0 - types -
-
-
- - -
-
- 📡 -
- 0 - networks -
-
-
- 👤 -
- 0 - clients -
-
-
- 🤝 -
- 0 - handshakes -
-
-
- 🚁 -
- 0 - drones -
-
-
- - -
-
- 🔵 -
- 0 - devices -
-
-
- 📍 -
- 0 - beacons -
-
-
- - -
-
- ✈️ -
- 0 - aircraft -
-
-
- 📨 -
- 0 - messages -
-
-
- 🔢 -
- 0 - ICAO -
-
-
- - -
-
- 🛰️ -
- 0 - passes -
-
-
- 📡 -
- 0 - bursts -
-
-
- -
-
- - - - - - - - -
- -
-
- - -
-
-

Pager Decoder

-
-
-
📨 0
-
📟 0
-
📠 0
-
- - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- Configure settings and click "Start Decoding" to begin. -
-
- - - - - - - -
-
-
- Idle -
-
-
- Mode - - - -
-
- Export - - - -
- -
-
-
-
-
- - - - - - - - - - - - -
-
- -

📡 iNTERCEPT Help

- -
- - - - - -
- - -
-

Stats Bar Icons

-
-
📟POCSAG messages decoded
-
📠FLEX messages decoded
-
📨Total messages received
-
🌡️Unique sensors detected
-
📊Device types found
-
✈️Aircraft being tracked
-
🛰️Satellites monitored
-
📡WiFi Access Points
-
👤Connected WiFi clients
-
🤝Captured handshakes
-
🚁Detected drones (click for details)
-
⚠️Rogue APs (click for details)
-
🔵Bluetooth devices
-
📍BLE beacons / APRS stations
-
📨ACARS messages received
-
- -

Mode Tab Icons

-
-
📟Pager - POCSAG/FLEX decoder
-
📡433MHz - Sensor decoder
-
✈️Aircraft - ADS-B/ACARS tracker
-
📍APRS - Amateur radio tracking
-
🛰️Satellite - Pass prediction
-
📶WiFi - Network scanner
-
🔵Bluetooth - BT/BLE scanner
-
📻Listening Post - SDR scanner
-
🔍TSCM - Counter-surveillance
-
-
- - -
-

📟 Pager Mode

-
    -
  • Decodes POCSAG and FLEX pager signals using RTL-SDR
  • -
  • Set frequency to local pager frequencies (common: 152-158 MHz)
  • -
  • Messages are displayed in real-time as they're decoded
  • -
  • Use presets for common pager frequencies
  • -
- -

📡 433MHz Sensor Mode

-
    -
  • Decodes wireless sensors on 433.92 MHz ISM band
  • -
  • Detects temperature, humidity, weather stations, tire pressure monitors
  • -
  • Supports many common protocols (Acurite, LaCrosse, Oregon Scientific, etc.)
  • -
  • Device intelligence builds profiles of recurring devices
  • -
- -

✈️ Aircraft Mode

-
    -
  • Tracks aircraft via ADS-B using dump1090 or rtl_adsb
  • -
  • Interactive map with real OpenStreetMap tiles
  • -
  • Click aircraft markers to see callsign, altitude, speed, heading
  • -
  • ACARS messaging sidebar decodes aircraft datalink messages
  • -
  • Emergency squawk codes highlighted in red
  • -
  • Open full dashboard for radar view and airband audio
  • -
- -

📍 APRS Mode

-
    -
  • Decodes APRS (Automatic Packet Reporting System) on VHF
  • -
  • Tracks amateur radio operators transmitting position data
  • -
  • Regional frequencies: 144.390 MHz (N. America), 144.800 MHz (Europe)
  • -
  • Uses Direwolf or multimon-ng for packet decoding
  • -
  • Interactive map shows station positions in real-time
  • -
- -

🛰️ Satellite Mode

-
    -
  • Track satellites using TLE (Two-Line Element) data
  • -
  • Add satellites manually or fetch from Celestrak by category
  • -
  • Categories: Amateur, Weather, ISS, Starlink, GPS, and more
  • -
  • View next pass predictions with elevation and duration
  • -
- -

📶 WiFi Mode

-
    -
  • Requires a WiFi adapter capable of monitor mode
  • -
  • Click "Enable Monitor" to put adapter in monitor mode
  • -
  • Scans all channels or lock to a specific channel
  • -
  • Detects drones by SSID patterns and manufacturer OUI
  • -
  • Rogue AP detection flags same SSID on multiple BSSIDs
  • -
  • Click network rows to target for deauth or handshake capture
  • -
- -

🔵 Bluetooth Mode

-
    -
  • Scans for classic Bluetooth and BLE devices
  • -
  • Shows device names, addresses, and signal strength
  • -
  • Manufacturer lookup from MAC address OUI
  • -
  • Radar visualization shows device proximity
  • -
- -

📻 Listening Post Mode

-
    -
  • Wideband SDR scanner with spectrum visualization
  • -
  • Tune to any frequency supported by your SDR hardware
  • -
  • AM/FM/USB/LSB demodulation modes
  • -
  • Bookmark frequencies for quick recall
  • -
  • Quick tune presets for emergency and marine channels
  • -
- -

🔍 TSCM Mode

-
    -
  • Technical Surveillance Countermeasures sweep
  • -
  • Scans for unknown RF transmitters, WiFi devices, Bluetooth
  • -
  • Baseline comparison to detect new/anomalous devices
  • -
  • Threat classification: Critical, High, Medium, Low
  • -
  • Useful for security audits and bug sweeps
  • -
  • Note: This feature is in early development
  • -
-
- - -
-

Monitor Mode

-
    -
  • Enable Monitor: Puts WiFi adapter in monitor mode for passive scanning
  • -
  • Kill Processes: Optional - stops NetworkManager/wpa_supplicant (may drop other connections)
  • -
  • Some adapters rename when entering monitor mode (e.g., wlan0 → wlan0mon)
  • -
- -

Handshake Capture

-
    -
  • Click "Capture" on a network to start targeted handshake capture
  • -
  • Status panel shows capture progress and file location
  • -
  • Use deauth to force clients to reconnect (only on authorized networks!)
  • -
  • Handshake files saved to /tmp/intercept_handshake_*.cap
  • -
- -

Drone Detection

-
    -
  • Drones detected by SSID patterns (DJI, Parrot, Autel, etc.)
  • -
  • Also detected by manufacturer OUI in MAC address
  • -
  • Distance estimated from signal strength (approximate)
  • -
  • Click drone count in stats bar to see all detected drones
  • -
- -

Rogue AP Detection

-
    -
  • Flags networks where same SSID appears on multiple BSSIDs
  • -
  • Could indicate evil twin attack or legitimate multi-AP setup
  • -
  • Click rogue count to see which SSIDs are flagged
  • -
- -

Proximity Alerts

-
    -
  • Add MAC addresses to watch list for alerts when detected
  • -
  • Watch list persists in browser localStorage
  • -
  • Useful for tracking specific devices
  • -
- -

Client Probe Analysis

-
    -
  • Shows what networks client devices are looking for
  • -
  • Orange highlights indicate sensitive/private network names
  • -
  • Reveals user location history (home, work, hotels, airports)
  • -
  • Useful for security awareness and pen test reports
  • -
-
- - -
-

ADS-B Tracking

-
    -
  • Receives ADS-B broadcasts on 1090 MHz from aircraft transponders
  • -
  • Displays position, altitude, speed, heading, and squawk code
  • -
  • Interactive map and radar scope views available
  • -
  • Click aircraft to see detailed telemetry and photos
  • -
  • Emergency squawk codes (7500, 7600, 7700) highlighted
  • -
- -

ACARS Messaging

-
    -
  • ACARS (Aircraft Communications Addressing and Reporting System)
  • -
  • Decodes VHF datalink messages between aircraft and ground
  • -
  • Requires a second SDR (separate from ADS-B)
  • -
  • Regional frequencies vary - select N. America, Europe, or Asia-Pacific
  • -
  • Messages include flight info, weather, OOOI events, and free text
  • -
- -

ACARS Frequencies

-
    -
  • N. America: 130.025, 130.450, 131.550 MHz
  • -
  • Europe: 131.525, 131.725, 131.550 MHz
  • -
  • Asia-Pacific: 131.550, 131.450 MHz
  • -
- -

Airband Audio

-
    -
  • Listen to aviation voice communications (AM mode)
  • -
  • Requires RTL-SDR or compatible SDR hardware
  • -
  • Common frequencies: 118-137 MHz (civil aviation band)
  • -
  • 121.5 MHz is the international emergency/guard frequency
  • -
- -

Full Dashboard

-
    -
  • Click "Open Full Dashboard" for expanded ADS-B view
  • -
  • Toggle between map and radar scope displays
  • -
  • Watchlist feature for tracking specific aircraft
  • -
  • Aircraft photos fetched from JetPhotos when available
  • -
-
- - -
-

General Tips

-
    -
  • Collapsible sections: Click any section header (▼) to collapse/expand
  • -
  • Sound alerts: Toggle sound on/off in settings for each mode
  • -
  • Export data: Use export buttons to save captured data as JSON
  • -
  • Device Intelligence: Tracks device patterns over time
  • -
  • Theme toggle: Click 🌙/☀️ button in header to switch dark/light mode
  • -
- -

Keyboard Shortcuts

-
    -
  • F1 - Open this help page
  • -
  • ? - Open help (when not typing in a field)
  • -
  • Escape - Close help and modal dialogs
  • -
- -

Requirements

-
    -
  • Pager: RTL-SDR, rtl_fm, multimon-ng
  • -
  • 433MHz Sensors: RTL-SDR, rtl_433
  • -
  • Aircraft (ADS-B): RTL-SDR, dump1090 or rtl_adsb
  • -
  • Aircraft (ACARS): Second RTL-SDR, acarsdec
  • -
  • APRS: RTL-SDR, direwolf or multimon-ng
  • -
  • Satellite: Internet for Celestrak (optional), skyfield
  • -
  • WiFi: Monitor-mode adapter, aircrack-ng suite
  • -
  • Bluetooth: Bluetooth adapter, bluez (hcitool/bluetoothctl)
  • -
  • Listening Post: RTL-SDR or SoapySDR-compatible hardware
  • -
  • TSCM: WiFi adapter, Bluetooth adapter, RTL-SDR (all optional)
  • -
  • Run as root/sudo for full hardware access
  • -
- -

Legal Notice

-
    -
  • Only use on networks and devices you own or have authorization to test
  • -
  • Passive monitoring may be legal; active attacks require authorization
  • -
  • Check local laws regarding radio frequency monitoring
  • -
-
-
-
- - -
-
- -

🔧 Tool Dependencies

-

Check which tools are installed for each mode. = Installed, = Missing

-
-
- Loading dependencies... -
-
-
-

Quick Install (Debian/Ubuntu)

-
-
sudo apt install rtl-sdr multimon-ng rtl-433 aircrack-ng bluez dump1090-mutability hcxdumptool hcxtools
-
pip install skyfield flask
-
-
- Note: ACARS decoding requires acarsdec which must be built from source. - See github.com/TLeconte/acarsdec or run ./setup.sh for automated installation. -
-
-
-
- - -
-
- -

Add Satellites

- - -
- - -
- - -
-

- Paste TLE (Two-Line Element) data. Format: Name on first line, followed by TLE lines 1 and 2. -

- - -
- - -
-

- Fetch satellite TLE data from CelesTrak by category. -

-
- -
- - - - - - - - - - - - -
- -

- Data from celestrak.org. - Note: Some categories (Starlink, OneWeb) contain many satellites. -

-
-
-
- - - - + + + + + + iNTERCEPT // See the Invisible + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+

iNTERCEPT

+

// See the Invisible

+ v{{ version }} +
+
+ + +
+ +
+

What's New

+ {% for release in changelog[:2] %} +
+
+ v{{ release.version }} + {{ release.date }} +
+
    + {% for item in release.highlights %} +
  • {{ item }}
  • + {% endfor %} +
+
+ {% endfor %} +
+ + +
+

Select Mode

+
+ + + + + + + + + +
+
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ █████╗  ██████╗ ██████╗███████╗███████╗███████╗
+██╔══██╗██╔════╝██╔════╝██╔════╝██╔════╝██╔════╝
+███████║██║     ██║     █████╗  ███████╗███████╗
+██╔══██║██║     ██║     ██╔══╝  ╚════██║╚════██║
+██║  ██║╚██████╗╚██████╗███████╗███████║███████║
+╚═╝  ╚═╝ ╚═════╝ ╚═════╝╚══════╝╚══════╝╚══════╝
+██████╗ ███████╗███╗   ██╗██╗███████╗██████╗
+██╔══██╗██╔════╝████╗  ██║██║██╔════╝██╔══██╗
+██║  ██║█████╗  ██╔██╗ ██║██║█████╗  ██║  ██║
+██║  ██║██╔══╝  ██║╚██╗██║██║██╔══╝  ██║  ██║
+██████╔╝███████╗██║ ╚████║██║███████╗██████╔╝
+╚═════╝ ╚══════╝╚═╝  ╚═══╝╚═╝╚══════╝╚═════╝
+
+

+ root@intercepted:~# sudo access --grant-permission
+ [sudo] password for user: ********
+ Error: User is not in the sudoers file.
+ This incident will be reported. +

+
+

+ "In a world of locked doors, the man with the key is king.
+ And you, my friend, just threw away the key." +

+ +
+
+
+ + + +
+ UTC + --:--:-- +
+ + + + +

iNTERCEPT // See the Invisible v{{ version }}

+

Signal Intelligence & Counter Surveillance Platform PAGER

+ + +
+ +
+
+ 📨 +
+ 0 + messages +
+
+
+ 📟 +
+ 0 + POCSAG +
+
+
+ 📠 +
+ 0 + FLEX +
+
+
+ + +
+
+ 🌡️ +
+ 0 + sensors +
+
+
+ 📊 +
+ 0 + types +
+
+
+ + +
+
+ 📡 +
+ 0 + networks +
+
+
+ 👤 +
+ 0 + clients +
+
+
+ 🤝 +
+ 0 + handshakes +
+
+
+ 🚁 +
+ 0 + drones +
+
+
+ + +
+
+ 🔵 +
+ 0 + devices +
+
+
+ 📍 +
+ 0 + beacons +
+
+
+ + +
+
+ ✈️ +
+ 0 + aircraft +
+
+
+ 📨 +
+ 0 + messages +
+
+
+ 🔢 +
+ 0 + ICAO +
+
+
+ + +
+
+ 🛰️ +
+ 0 + passes +
+
+
+ 📡 +
+ 0 + bursts +
+
+
+ +
+
+ + + + + + + + +
+ +
+
+ + +
+
+

Pager Decoder

+
+
+
📨 0
+
📟 0
+
📠 0
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Configure settings and click "Start Decoding" to begin. +
+
+ + + + + + + +
+
+
+ Idle +
+
+
+ Mode + + + +
+
+ Export + + + +
+ +
+
+
+
+
+ + + + + + + + + + + + +
+
+ +

📡 iNTERCEPT Help

+ +
+ + + + + +
+ + +
+

Stats Bar Icons

+
+
📟POCSAG messages decoded
+
📠FLEX messages decoded
+
📨Total messages received
+
🌡️Unique sensors detected
+
📊Device types found
+
✈️Aircraft being tracked
+
🛰️Satellites monitored
+
📡WiFi Access Points
+
👤Connected WiFi clients
+
🤝Captured handshakes
+
🚁Detected drones (click for details)
+
⚠️Rogue APs (click for details)
+
🔵Bluetooth devices
+
📍BLE beacons / APRS stations
+
📨ACARS messages received
+
+ +

Mode Tab Icons

+
+
📟Pager - POCSAG/FLEX decoder
+
📡433MHz - Sensor decoder
+
✈️Aircraft - ADS-B/ACARS tracker
+
📍APRS - Amateur radio tracking
+
🛰️Satellite - Pass prediction
+
📶WiFi - Network scanner
+
🔵Bluetooth - BT/BLE scanner
+
📻Listening Post - SDR scanner
+
🔍TSCM - Counter-surveillance
+
+
+ + +
+

📟 Pager Mode

+
    +
  • Decodes POCSAG and FLEX pager signals using RTL-SDR
  • +
  • Set frequency to local pager frequencies (common: 152-158 MHz)
  • +
  • Messages are displayed in real-time as they're decoded
  • +
  • Use presets for common pager frequencies
  • +
+ +

📡 433MHz Sensor Mode

+
    +
  • Decodes wireless sensors on 433.92 MHz ISM band
  • +
  • Detects temperature, humidity, weather stations, tire pressure monitors
  • +
  • Supports many common protocols (Acurite, LaCrosse, Oregon Scientific, etc.)
  • +
  • Device intelligence builds profiles of recurring devices
  • +
+ +

✈️ Aircraft Mode

+
    +
  • Tracks aircraft via ADS-B using dump1090 or rtl_adsb
  • +
  • Interactive map with real OpenStreetMap tiles
  • +
  • Click aircraft markers to see callsign, altitude, speed, heading
  • +
  • ACARS messaging sidebar decodes aircraft datalink messages
  • +
  • Emergency squawk codes highlighted in red
  • +
  • Open full dashboard for radar view and airband audio
  • +
+ +

📍 APRS Mode

+
    +
  • Decodes APRS (Automatic Packet Reporting System) on VHF
  • +
  • Tracks amateur radio operators transmitting position data
  • +
  • Regional frequencies: 144.390 MHz (N. America), 144.800 MHz (Europe)
  • +
  • Uses Direwolf or multimon-ng for packet decoding
  • +
  • Interactive map shows station positions in real-time
  • +
+ +

🛰️ Satellite Mode

+
    +
  • Track satellites using TLE (Two-Line Element) data
  • +
  • Add satellites manually or fetch from Celestrak by category
  • +
  • Categories: Amateur, Weather, ISS, Starlink, GPS, and more
  • +
  • View next pass predictions with elevation and duration
  • +
+ +

📶 WiFi Mode

+
    +
  • Requires a WiFi adapter capable of monitor mode
  • +
  • Click "Enable Monitor" to put adapter in monitor mode
  • +
  • Scans all channels or lock to a specific channel
  • +
  • Detects drones by SSID patterns and manufacturer OUI
  • +
  • Rogue AP detection flags same SSID on multiple BSSIDs
  • +
  • Click network rows to target for deauth or handshake capture
  • +
+ +

🔵 Bluetooth Mode

+
    +
  • Scans for classic Bluetooth and BLE devices
  • +
  • Shows device names, addresses, and signal strength
  • +
  • Manufacturer lookup from MAC address OUI
  • +
  • Radar visualization shows device proximity
  • +
+ +

📻 Listening Post Mode

+
    +
  • Wideband SDR scanner with spectrum visualization
  • +
  • Tune to any frequency supported by your SDR hardware
  • +
  • AM/FM/USB/LSB demodulation modes
  • +
  • Bookmark frequencies for quick recall
  • +
  • Quick tune presets for emergency and marine channels
  • +
+ +

🔍 TSCM Mode

+
    +
  • Technical Surveillance Countermeasures sweep
  • +
  • Scans for unknown RF transmitters, WiFi devices, Bluetooth
  • +
  • Baseline comparison to detect new/anomalous devices
  • +
  • Threat classification: Critical, High, Medium, Low
  • +
  • Useful for security audits and bug sweeps
  • +
  • Note: This feature is in early development
  • +
+
+ + +
+

Monitor Mode

+
    +
  • Enable Monitor: Puts WiFi adapter in monitor mode for passive scanning
  • +
  • Kill Processes: Optional - stops NetworkManager/wpa_supplicant (may drop other connections)
  • +
  • Some adapters rename when entering monitor mode (e.g., wlan0 → wlan0mon)
  • +
+ +

Handshake Capture

+
    +
  • Click "Capture" on a network to start targeted handshake capture
  • +
  • Status panel shows capture progress and file location
  • +
  • Use deauth to force clients to reconnect (only on authorized networks!)
  • +
  • Handshake files saved to /tmp/intercept_handshake_*.cap
  • +
+ +

Drone Detection

+
    +
  • Drones detected by SSID patterns (DJI, Parrot, Autel, etc.)
  • +
  • Also detected by manufacturer OUI in MAC address
  • +
  • Distance estimated from signal strength (approximate)
  • +
  • Click drone count in stats bar to see all detected drones
  • +
+ +

Rogue AP Detection

+
    +
  • Flags networks where same SSID appears on multiple BSSIDs
  • +
  • Could indicate evil twin attack or legitimate multi-AP setup
  • +
  • Click rogue count to see which SSIDs are flagged
  • +
+ +

Proximity Alerts

+
    +
  • Add MAC addresses to watch list for alerts when detected
  • +
  • Watch list persists in browser localStorage
  • +
  • Useful for tracking specific devices
  • +
+ +

Client Probe Analysis

+
    +
  • Shows what networks client devices are looking for
  • +
  • Orange highlights indicate sensitive/private network names
  • +
  • Reveals user location history (home, work, hotels, airports)
  • +
  • Useful for security awareness and pen test reports
  • +
+
+ + +
+

ADS-B Tracking

+
    +
  • Receives ADS-B broadcasts on 1090 MHz from aircraft transponders
  • +
  • Displays position, altitude, speed, heading, and squawk code
  • +
  • Interactive map and radar scope views available
  • +
  • Click aircraft to see detailed telemetry and photos
  • +
  • Emergency squawk codes (7500, 7600, 7700) highlighted
  • +
+ +

ACARS Messaging

+
    +
  • ACARS (Aircraft Communications Addressing and Reporting System)
  • +
  • Decodes VHF datalink messages between aircraft and ground
  • +
  • Requires a second SDR (separate from ADS-B)
  • +
  • Regional frequencies vary - select N. America, Europe, or Asia-Pacific
  • +
  • Messages include flight info, weather, OOOI events, and free text
  • +
+ +

ACARS Frequencies

+
    +
  • N. America: 130.025, 130.450, 131.550 MHz
  • +
  • Europe: 131.525, 131.725, 131.550 MHz
  • +
  • Asia-Pacific: 131.550, 131.450 MHz
  • +
+ +

Airband Audio

+
    +
  • Listen to aviation voice communications (AM mode)
  • +
  • Requires RTL-SDR or compatible SDR hardware
  • +
  • Common frequencies: 118-137 MHz (civil aviation band)
  • +
  • 121.5 MHz is the international emergency/guard frequency
  • +
+ +

Full Dashboard

+
    +
  • Click "Open Full Dashboard" for expanded ADS-B view
  • +
  • Toggle between map and radar scope displays
  • +
  • Watchlist feature for tracking specific aircraft
  • +
  • Aircraft photos fetched from JetPhotos when available
  • +
+
+ + +
+

General Tips

+
    +
  • Collapsible sections: Click any section header (▼) to collapse/expand
  • +
  • Sound alerts: Toggle sound on/off in settings for each mode
  • +
  • Export data: Use export buttons to save captured data as JSON
  • +
  • Device Intelligence: Tracks device patterns over time
  • +
  • Theme toggle: Click 🌙/☀️ button in header to switch dark/light mode
  • +
+ +

Keyboard Shortcuts

+
    +
  • F1 - Open this help page
  • +
  • ? - Open help (when not typing in a field)
  • +
  • Escape - Close help and modal dialogs
  • +
+ +

Requirements

+
    +
  • Pager: RTL-SDR, rtl_fm, multimon-ng
  • +
  • 433MHz Sensors: RTL-SDR, rtl_433
  • +
  • Aircraft (ADS-B): RTL-SDR, dump1090 or rtl_adsb
  • +
  • Aircraft (ACARS): Second RTL-SDR, acarsdec
  • +
  • APRS: RTL-SDR, direwolf or multimon-ng
  • +
  • Satellite: Internet for Celestrak (optional), skyfield
  • +
  • WiFi: Monitor-mode adapter, aircrack-ng suite
  • +
  • Bluetooth: Bluetooth adapter, bluez (hcitool/bluetoothctl)
  • +
  • Listening Post: RTL-SDR or SoapySDR-compatible hardware
  • +
  • TSCM: WiFi adapter, Bluetooth adapter, RTL-SDR (all optional)
  • +
  • Run as root/sudo for full hardware access
  • +
+ +

Legal Notice

+
    +
  • Only use on networks and devices you own or have authorization to test
  • +
  • Passive monitoring may be legal; active attacks require authorization
  • +
  • Check local laws regarding radio frequency monitoring
  • +
+
+
+
+ + +
+
+ +

🔧 Tool Dependencies

+

Check which tools are installed for each mode. = Installed, = Missing

+
+
+ Loading dependencies... +
+
+
+

Quick Install (Debian/Ubuntu)

+
+
sudo apt install rtl-sdr multimon-ng rtl-433 aircrack-ng bluez dump1090-mutability hcxdumptool hcxtools
+
pip install skyfield flask
+
+
+ Note: ACARS decoding requires acarsdec which must be built from source. + See github.com/TLeconte/acarsdec or run ./setup.sh for automated installation. +
+
+
+
+ + +
+
+ +

Add Satellites

+ + +
+ + +
+ + +
+

+ Paste TLE (Two-Line Element) data. Format: Name on first line, followed by TLE lines 1 and 2. +

+ + +
+ + +
+

+ Fetch satellite TLE data from CelesTrak by category. +

+
+ +
+ + + + + + + + + + + + +
+ +

+ Data from celestrak.org. + Note: Some categories (Starlink, OneWeb) contain many satellites. +

+
+
+
+ + + + diff --git a/templates/partials/modes/aircraft.html b/templates/partials/modes/aircraft.html new file mode 100644 index 0000000..055f404 --- /dev/null +++ b/templates/partials/modes/aircraft.html @@ -0,0 +1,121 @@ + +
+
+

ADS-B Receiver

+
+ + +
Fixed at 1090 MHz
+
+
+ + +
+
+ +
+
+ +
+

Display Settings

+
+ + +
+
+ + + + + +
+
+ +
+ + +
+ +
+
+ + +
+
+ +
+
+ +
+

Reception Statistics

+
+
+
Max Range
+
0.0 nm
+
+
+
Total Seen
+
0
+
+
+
Msg Rate
+
0.0/s
+
+
+
Busiest Hour
+
--
+
+
+
+ +
+ dump1090:Checking... + rtl_adsb:Checking... +
+ + + + +
diff --git a/templates/partials/modes/aprs.html b/templates/partials/modes/aprs.html new file mode 100644 index 0000000..6a8ea6f --- /dev/null +++ b/templates/partials/modes/aprs.html @@ -0,0 +1,57 @@ + +
+
+

APRS Tracking

+

+ Decode APRS (Automatic Packet Reporting System) amateur radio position reports on VHF. +

+
+ Amateur Radio
+ APRS operates on 144.390 MHz (N. America) or 144.800 MHz (Europe). Decodes position, weather, and messages from ham radio operators. +
+
+
+

Configuration

+
+ + +
+
+ + +
+
+ + +
+
+ direwolf:Checking... + multimon-ng:Checking... +
+
+ + + + +
diff --git a/templates/partials/modes/bluetooth.html b/templates/partials/modes/bluetooth.html new file mode 100644 index 0000000..b2033eb --- /dev/null +++ b/templates/partials/modes/bluetooth.html @@ -0,0 +1,70 @@ + +
+
+

Bluetooth Interface

+
+ +
+ +
+ hcitool:Checking... + bluetoothctl:Checking... +
+
+ +
+

Scan Mode

+
+ + +
+
+ + +
+
+ + + +
+
+ +
+

Device Actions

+
+ + +
+ +
+ + + + + + + +
diff --git a/templates/partials/modes/listening-post.html b/templates/partials/modes/listening-post.html new file mode 100644 index 0000000..f108a94 --- /dev/null +++ b/templates/partials/modes/listening-post.html @@ -0,0 +1,49 @@ + +
+
+

Status

+ + + + + +
+
+ Status + IDLE +
+
+ Frequency + ---.--- MHz +
+
+ Signals + 0 +
+
+
+ +
+

Bookmarks

+
+ + +
+
+
No bookmarks saved
+
+
+ +
+

Recent Signals

+
+
No signals yet
+
+
+ +
diff --git a/templates/partials/modes/pager.html b/templates/partials/modes/pager.html new file mode 100644 index 0000000..4ac158c --- /dev/null +++ b/templates/partials/modes/pager.html @@ -0,0 +1,84 @@ + +
+
+

Frequency

+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ +
+

Protocols

+
+ + + + +
+
+ +
+

Settings

+
+ + +
+
+ + +
+
+ + +
+
+ +
+

Logging

+
+ +
+
+ + +
+
+ +
+

Message Filters

+
+ +
+
+ + +
+
+ Messages matching these keywords will be hidden from display but still logged. +
+
+ + + +
diff --git a/templates/partials/modes/satellite.html b/templates/partials/modes/satellite.html new file mode 100644 index 0000000..a57ff53 --- /dev/null +++ b/templates/partials/modes/satellite.html @@ -0,0 +1,50 @@ + +
+
+

Satellite Command

+

+ Full satellite tracking dashboard with polar plot, ground track map, pass predictions, and live telemetry. +

+ + Open in New Window + +
+ +
+

Satellite Database

+

+ Add satellites via TLE data or fetch from Celestrak. +

+
+ + +
+
+
TRACKED SATELLITES
+
+
+ ISS (ZARYA) + NOAA 15 + NOAA 18 + NOAA 19 + NOAA 20 + METEOR-M2 + METEOR-M2-3 +
+
+
+
+ +
+

Quick Info

+
+

Polar Plot: Shows satellite path across the sky. Center = overhead, edge = horizon.

+

Ground Track: Real-time satellite position and orbital path on world map.

+

Pass Quality: Excellent (60°+), Good (30°+), Fair (below 30°).

+
+
+
diff --git a/templates/partials/modes/sensor.html b/templates/partials/modes/sensor.html new file mode 100644 index 0000000..48b9238 --- /dev/null +++ b/templates/partials/modes/sensor.html @@ -0,0 +1,48 @@ + +
+
+

Frequency

+
+ + +
+
+ + + + +
+
+ +
+

Settings

+
+ + +
+
+ + +
+
+ +
+

Protocols

+
+ rtl_433 auto-detects 200+ device protocols including weather stations, TPMS, doorbells, and more. +
+
+ +
+
+ + + +
diff --git a/templates/partials/modes/tscm.html b/templates/partials/modes/tscm.html new file mode 100644 index 0000000..8283bba --- /dev/null +++ b/templates/partials/modes/tscm.html @@ -0,0 +1,103 @@ + +
+
+

TSCM Sweep Alpha

+
+ + +
+
+ + +
+
+ +
+

Scan Sources

+
+
+ + +
+ +
+
+
+ + +
+ +
+
+
+ + +
+ +
+ +
+ +
+

Baseline Management

+
+ +
+ + +
+
+ + + + + + + + + +
diff --git a/templates/partials/modes/wifi.html b/templates/partials/modes/wifi.html new file mode 100644 index 0000000..6bc5bec --- /dev/null +++ b/templates/partials/modes/wifi.html @@ -0,0 +1,142 @@ + +
+
+

WiFi Adapter

+
+ + +
+ +
+ airmon-ng:Checking... + airodump-ng:Checking... +
+
+ +
+

Monitor Mode

+
+ + +
+
+ +
+
+ Monitor mode: Inactive +
+
+ +
+

Scan Settings

+
+ + +
+
+ + +
+
+ +
+

Proximity Alerts

+
+ Alert when specific MAC addresses appear +
+
+ +
+ +
+
+ +
+

Attack Options

+
+ ⚠ Only use on authorized networks +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + + + + + + + + +