mirror of
https://github.com/0x5t4l1n/Keylogger.git
synced 2026-05-26 19:36:31 +00:00
126 lines
5.7 KiB
HTML
126 lines
5.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Secure Sign In</title>
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css">
|
|
<link rel="stylesheet" href="https://unicons.iconscout.com/release/v2.1.9/css/unicons.css">
|
|
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="/Sign in/style.css" />
|
|
</head>
|
|
|
|
<body>
|
|
<div class="section">
|
|
<div class="container">
|
|
<div class="row full-height justify-content-center">
|
|
<div class="col-12 text-center align-self-center py-5">
|
|
<div class="section pb-5 pt-5 pt-sm-2 text-center">
|
|
<h6 class="mb-0 pb-3"><span>Log In </span><span>Sign Up</span></h6>
|
|
<input class="checkbox" type="checkbox" id="reg-log" name="reg-log" />
|
|
<label for="reg-log"></label>
|
|
<div class="card-3d-wrap mx-auto">
|
|
<div class="card-3d-wrapper">
|
|
<div class="card-front">
|
|
<div class="center-wrap">
|
|
<div class="section text-center">
|
|
<h4 class="mb-4 pb-3">Log In</h4>
|
|
<form id="login-form" onsubmit="return validateLogin(event)">
|
|
<div class="form-group">
|
|
<input type="text" name="username" class="form-style" placeholder="Your Username"
|
|
id="logusername" autocomplete="off" required>
|
|
<i class="input-icon uil uil-user"></i>
|
|
</div>
|
|
<div class="form-group mt-2">
|
|
<input type="password" name="password" class="form-style" placeholder="Your Password"
|
|
id="logpass" autocomplete="off" required>
|
|
<i class="input-icon uil uil-lock-alt"></i>
|
|
</div>
|
|
<button type="submit" class="btn mt-4">Submit</button>
|
|
</form>
|
|
<p class="mb-0 mt-4 text-center">
|
|
<a href="#" class="link" onclick="checkLocalStorage()">Forgot your password?</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-back">
|
|
<div class="center-wrap">
|
|
<div class="section text-center">
|
|
<h4 class="mb-4 pb-3">Sign Up</h4>
|
|
<div class="form-group">
|
|
<input type="text" id="logname" class="form-style" placeholder="Your Full Name"
|
|
autocomplete="off">
|
|
<i class="input-icon uil uil-user"></i>
|
|
</div>
|
|
<div class="form-group mt-2">
|
|
<input type="text" id="logusername-signup" class="form-style" placeholder="Choose Username"
|
|
autocomplete="off" required>
|
|
<i class="input-icon uil uil-user"></i>
|
|
</div>
|
|
<div class="form-group mt-2">
|
|
<input type="password" id="logpass-signup" class="form-style" placeholder="Choose Password"
|
|
autocomplete="off" required>
|
|
<i class="input-icon uil uil-lock-alt"></i>
|
|
</div>
|
|
<a href="#" class="btn mt-4" onclick="saveAndRedirect()">Submit</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
async function hashPassword(password) {
|
|
const msgBuffer = new TextEncoder().encode(password);
|
|
const hashBuffer = await crypto.subtle.digest("SHA-256", msgBuffer);
|
|
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
|
}
|
|
async function saveAndRedirect() {
|
|
const username = document.getElementById('logusername-signup').value.trim();
|
|
const password = document.getElementById('logpass-signup').value;
|
|
if (!username || !password) {
|
|
alert("Username and password required!");
|
|
return;
|
|
}
|
|
let users = JSON.parse(localStorage.getItem("users")) || [];
|
|
if (users.some(u => u.username === username)) {
|
|
alert("Username already exists. Choose another.");
|
|
return;
|
|
}
|
|
const hashedPass = await hashPassword(password);
|
|
users.push({ username, password: hashedPass });
|
|
localStorage.setItem("users", JSON.stringify(users));
|
|
document.getElementById('reg-log').checked = false;
|
|
document.getElementById('logusername').value = username;
|
|
document.getElementById('logpass').value = "";
|
|
}
|
|
async function validateLogin(event) {
|
|
event.preventDefault();
|
|
const enteredUser = document.getElementById('logusername').value.trim();
|
|
const enteredPass = document.getElementById('logpass').value;
|
|
let users = JSON.parse(localStorage.getItem("users")) || [];
|
|
const hashedPass = await hashPassword(enteredPass);
|
|
const user = users.find(u => u.username === enteredUser && u.password === hashedPass);
|
|
if (user) {
|
|
alert("Login successful!");
|
|
return true;
|
|
} else {
|
|
alert("Invalid username or password!");
|
|
return false;
|
|
}
|
|
}
|
|
function checkLocalStorage() {
|
|
console.log(JSON.parse(localStorage.getItem("users")));
|
|
alert("Check console for stored users.");
|
|
}
|
|
</script>
|
|
</body>
|
|
|
|
</html> |