honeypot/assets/js/shell.js

73 lines
1.6 KiB
JavaScript

// Set a global delay to simulate crappy web software
VV.delay = 200;
// Log user activities
{
const MOUSE_MOVE_TIMEOUT_MS = 100;
const logUrl = new URL(window.location);
logUrl.pathname = "/log";
let mouseMoveTimeout;
// Return a fingerprint for this browser
const fingerprint = async () => {
const buffer = await window.crypto.subtle.digest("SHA-1", new TextEncoder().encode(JSON.stringify([
navigator.userAgent,
navigator.buildId,
navigator.languages
])));
let fingerprint;
for (let i = 0; i < buffer.byteLength; i++) {
fingerprint += buffer[i];
}
return fingerprint;
};
// Log data
const log = async (data) => {
console.log(JSON.stringify({
data: data,
fingerprint: await fingerprint()
}));
return await fetch(logUrl, {
body: JSON.stringify({
data: data,
fingerprint: await fingerprint()
}),
method: "POST",
headers: VV.header
});
};
const mouseEvent = (event) => {
return {
e: event.type,
w: window.innerWidth,
h: window.innerHeight,
x: event.x,
y: event.y
}
}
const keyEvent = (event) => {
return {
e: event.type,
c: event.key,
s: event.shiftKey
}
}
document.addEventListener("keyup", (event) => log(keyEvent(event)));
document.addEventListener("keydown", (event) => log(keyEvent(event)));
document.addEventListener("click", (event) => log(mouseEvent(event)));
document.addEventListener("mousemove", (event) => {
// Throttle mousemove events
clearTimeout(mouseMoveTimeout);
//mouseMoveTimeout = setTimeout(() => log(mouseEvent(event)), MOUSE_MOVE_TIMEOUT_MS);
});
}