Remove standalone stealth system, keep only driver spoof + boot timing
This commit is contained in:
@@ -415,44 +415,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Stealth -->
|
||||
<div class="card">
|
||||
<div class="card-title"><span class="dot" id="stealthDot"></span> Stealth</div>
|
||||
<div class="row">
|
||||
<div>
|
||||
<div class="row-label">Stealth Mode</div>
|
||||
<div class="row-desc">Hide module, mask processes, clean traces</div>
|
||||
</div>
|
||||
<select class="sel" id="stealthMode" onchange="setStealthMode(this.value)">
|
||||
<option value="off">Off</option>
|
||||
<option value="hide_module">Hide Module</option>
|
||||
<option value="mask_procs">Mask Processes</option>
|
||||
<option value="hide_props">Hide Props</option>
|
||||
<option value="mac_random">MAC Randomization</option>
|
||||
<option value="hide_usb">Hide USB Devices</option>
|
||||
<option value="clean_logs">Clean Logs</option>
|
||||
<option value="full">Full Stealth</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div>
|
||||
<div class="row-label">Stealth Status</div>
|
||||
<div class="row-desc" id="stealthStatus">Inactive</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div>
|
||||
<div class="row-label">MAC Randomization</div>
|
||||
<div class="row-desc">WiFi + Bluetooth address randomization</div>
|
||||
</div>
|
||||
<div class="row-value" id="macStatus">—</div>
|
||||
</div>
|
||||
<div class="btn-row">
|
||||
<button class="btn" onclick="purgeTraces()">Purge All Traces</button>
|
||||
<button class="btn btn-primary" onclick="applyStealthNow()">Apply Now</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Log -->
|
||||
<div class="card">
|
||||
<div class="card-title">Log</div>
|
||||
@@ -585,74 +547,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function setStealthMode(mode) {
|
||||
log('Setting stealth: ' + mode);
|
||||
await exec('echo "' + mode + '" > ' + MODDIR + '/config/stealth_mode');
|
||||
log('Stealth mode set to: ' + mode + '. Apply or reboot to activate.');
|
||||
await loadStealthStatus();
|
||||
}
|
||||
|
||||
async function applyStealthNow() {
|
||||
log('Applying stealth...');
|
||||
await exec('sh ' + MODDIR + '/service.sh &');
|
||||
setTimeout(async () => {
|
||||
await loadStealthStatus();
|
||||
log('Stealth applied');
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
async function purgeTraces() {
|
||||
log('Purging all traces...');
|
||||
// Clear module logs
|
||||
await exec('echo "" > ' + MODDIR + '/driver-manager.log');
|
||||
// Clear logcat entries from our tags
|
||||
await exec('logcat -b all -c 2>/dev/null');
|
||||
// Remove stealth wrappers (recreated on next apply)
|
||||
await exec('rm -rf ' + MODDIR + '/.wrappers');
|
||||
// Clear run state
|
||||
await exec('rm -f ' + MODDIR + '/run/*.pid');
|
||||
// Clear stream data
|
||||
await exec('rm -f ' + MODDIR + '/streams/*');
|
||||
// Clear spectrum/adsb output
|
||||
await exec('rm -f ' + MODDIR + '/spectrum_data.csv ' + MODDIR + '/adsb_output.txt');
|
||||
document.getElementById('logArea').textContent = 'Traces purged.';
|
||||
log('All traces purged');
|
||||
await loadStealthStatus();
|
||||
}
|
||||
|
||||
async function loadStealthStatus() {
|
||||
const mode = (await exec('cat ' + MODDIR + '/config/stealth_mode 2>/dev/null')).stdout.trim();
|
||||
if (mode) document.getElementById('stealthMode').value = mode;
|
||||
|
||||
const dot = document.getElementById('stealthDot');
|
||||
const status = document.getElementById('stealthStatus');
|
||||
|
||||
if (mode === 'full') {
|
||||
dot.className = 'dot';
|
||||
status.textContent = 'Full stealth active — logs disabled, processes masked, props hidden';
|
||||
} else if (mode && mode !== 'off') {
|
||||
dot.className = 'dot warn';
|
||||
status.textContent = 'Partial: ' + mode;
|
||||
} else {
|
||||
dot.className = 'dot off';
|
||||
status.textContent = 'Inactive';
|
||||
}
|
||||
|
||||
// MAC randomization status
|
||||
const wifiMac = (await exec('settings get global wifi_connected_mac_randomization_enabled 2>/dev/null')).stdout.trim();
|
||||
const btMac = (await exec('settings get global bluetooth_addr_randomization_enabled 2>/dev/null')).stdout.trim();
|
||||
const macEl = document.getElementById('macStatus');
|
||||
if (wifiMac === '1' && btMac === '1') {
|
||||
macEl.textContent = 'WiFi + BT';
|
||||
} else if (wifiMac === '1') {
|
||||
macEl.textContent = 'WiFi only';
|
||||
} else if (btMac === '1') {
|
||||
macEl.textContent = 'BT only';
|
||||
} else {
|
||||
macEl.textContent = 'off';
|
||||
}
|
||||
}
|
||||
|
||||
async function setMode(file, value) {
|
||||
log('Setting ' + file + ' = ' + value);
|
||||
await exec('echo "' + value + '" > ' + MODDIR + '/config/' + file);
|
||||
@@ -743,7 +637,6 @@
|
||||
await loadRtlStatus();
|
||||
await loadBootStatus();
|
||||
await loadSpoofStatus();
|
||||
await loadStealthStatus();
|
||||
log('Done');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user