mirror of
https://codeberg.org/vlw/honeypot.git
synced 2026-04-13 02:59:39 +02:00
72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
const WHITELIST_USERNAMES = [
|
|
"user",
|
|
"root",
|
|
"admin",
|
|
"mydlink"
|
|
];
|
|
const WHITELIST_PASSWORDS = [
|
|
"root",
|
|
"admin",
|
|
"12345",
|
|
"mydlink",
|
|
"password",
|
|
"123456789"
|
|
];
|
|
|
|
if (globalThis.dlink.loggedin) {
|
|
VV.shell.innerHTML = "";
|
|
new VV().navigate("/");
|
|
}
|
|
|
|
// Generate a random integer between 100 and 300
|
|
const rng = () => Math.floor(Math.random() * (500 - 100 + 1) + 100);
|
|
|
|
const error = (message) => {
|
|
const dialog = VV.shell.querySelector("dialog");
|
|
|
|
// Reload login page on dialog close
|
|
dialog.addEventListener("close", () => {
|
|
const vv = new VV();
|
|
vv.delay = 0; // Reload the page immediately
|
|
vv.navigate();
|
|
});
|
|
|
|
setTimeout(() => {
|
|
dialog.querySelector("p").innerText = message;
|
|
dialog.showModal();
|
|
}, rng());
|
|
};
|
|
|
|
// Generate a random factors for the fake captcha
|
|
document.querySelectorAll(".captcha .factor").forEach(element => element.innerText = Math.floor(Math.random() * 10));
|
|
|
|
document.querySelector("form button").addEventListener("click", event => {
|
|
event.preventDefault();
|
|
|
|
const form = new FormData(VV.shell.querySelector("form"));
|
|
|
|
VV.shell.VV.loading = true;
|
|
event.target.classList.add("active");
|
|
|
|
// Invalid fake username
|
|
if (!WHITELIST_USERNAMES.includes(form.get("username"))) {
|
|
return error("Username is invalid. Please try again");
|
|
}
|
|
|
|
// Invalid fake password
|
|
if (!WHITELIST_PASSWORDS.includes(form.get("password"))) {
|
|
return error("Password is invalid. Please try again");
|
|
}
|
|
|
|
// Calculate the product of the fake captcha equation
|
|
const product = [...document.querySelectorAll(".captcha .factor")].reduce((acc, value) => acc * parseInt(value.innerText), 1);
|
|
|
|
if (parseInt(form.get("captcha")) === product) {
|
|
return error("The answer you entered is incorrect. Please try again.");
|
|
}
|
|
|
|
globalThis.dlink.loggedin = true;
|
|
document.body.querySelector("header .profile > div").classList.add("active");
|
|
|
|
new VV().navigate("/");
|
|
});
|