crackulator/index.html

138 lines
4.8 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Password Crackculator</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #000; /* Set background color to black */
color: #fff; /* Set text color to white */
text-align: center; /* Center-align text */
}
table {
margin: auto;
width: 500px;
border-collapse: collapse;
}
td {
padding: 10px;
}
input[type="text"], input[type="number"] {
width: 90%;
background-color: #333; /* Dark background for inputs */
color: white; /* White text for inputs */
border: 1px solid #555; /* Slight border for inputs */
}
input[type="button"] {
width: 100%;
padding: 10px;
background-color: #28a745;
color: white;
border: none;
cursor: pointer;
}
input[type="button"]:hover {
background-color: #218838;
}
.result {
background-color: gray;
text-align: center;
padding: 10px;
}
/* Add styling for the image */
img {
display: block; /* Make it block-level to center it */
margin: 0 auto; /* Center the image */
max-width: 100%; /* Responsive image */
height: auto; /* Maintain aspect ratio */
}
</style>
</head>
<body>
<!-- Image at the top -->
<img src="https://i.ibb.co/py2VgYV/securityops-logo.jpg" alt="Follow the white rabbit">
<form method="POST" onsubmit="event.preventDefault(); doit();">
<table>
<tr>
<td align="right">Password length:</td>
<td><input type="number" id="len" value="7" min="1" required></td>
</tr>
<tr>
<td align="right">Speed:</td>
<td>
<input type="number" id="speed" value="348000000000" required> passwords per second
</td>
</tr>
<tr>
<td align="right">Number of computers:</td>
<td>
<input type="number" id="pcn" value="1" min="1" required>
</td>
</tr>
<tr>
<td colspan="2">
<label><input type="checkbox" id="cslwr" checked> chars in lower case</label><br>
<label><input type="checkbox" id="csuppr" checked> chars in upper case</label><br>
<label><input type="checkbox" id="csdigits" checked> digits</label><br>
<label><input type="checkbox" id="cssymb" checked> common punctuation</label><br>
<label><input type="checkbox" id="csascii"> full ASCII</label>
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="Calculate!" onclick="doit();">
</td>
</tr>
<tr class="result">
<td colspan="2">
Brute Force Attack will take up to <strong><span id="result2">a minute</span></strong>
</td>
</tr>
</table>
</form>
<script>
function doit() {
// Gather input values
const n = parseInt(document.getElementById("len").value);
const speed = parseFloat(document.getElementById("speed").value);
const pcn = parseInt(document.getElementById("pcn").value);
// Calculate character set length based on selected options
let cslen = 0;
if (document.getElementById("cslwr").checked) cslen += 26; // lowercase letters
if (document.getElementById("csuppr").checked) cslen += 26; // uppercase letters
if (document.getElementById("csdigits").checked) cslen += 10; // digits
if (document.getElementById("cssymb").checked) cslen += 12; // common punctuation
if (document.getElementById("csascii").checked) cslen = 188; // full ASCII
// Calculate time (in seconds)
const totalCombinations = Math.pow(cslen, n);
let timeInSeconds = totalCombinations / (speed * pcn);
// Convert time to a readable format
let resultString = formatTime(timeInSeconds);
document.getElementById("result2").innerHTML = resultString;
}
// Format time into a human-readable format
function formatTime(seconds) {
if (seconds < 60) return "less than a minute";
if (seconds < 3600) return Math.ceil(seconds / 60) + " minutes";
if (seconds < 86400) return Math.ceil(seconds / 3600) + " hours";
if (seconds < 2592000) return Math.ceil(seconds / 86400) + " days";
if (seconds < 31536000) return Math.ceil(seconds / 2592000) + " months";
return Math.ceil(seconds / 31536000) + " years";
}
// Call the calculate function once on load
doit();
</script>
</body>
</html>