CryptoJS Example
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/md5.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<button>
start (check browser console!)
</button>
JavaScript
const hash = '897aaf7db80d8c03cdf7b1bacceabc18';
const salt = 'COLb';
/* needle: 375291234567 */
const startNumber = 1000000;
const endNumber = 9999999;
const codes = ['29', '44', '33', '25'];
function* Brute(salt) {
var n = startNumber;
while (true) {
n++;
yield CryptoJS.MD5(salt + n).toString()
};
}
const BruteGenerators = async (salt) => {
let f = Brute(salt),
k, nf;
for (k = 0; k < endNumber; k += 1) {
nf = f.next().value;
if (k % 1000000 === 0) {
console.log('next 100k: ' + salt + (k + 1 + startNumber));
}
if (nf === hash) {
return Promise.resolve(salt + (k + 1 + startNumber));
}
}
return Promise.reject('no matches for: ' + salt + '*******')
}
const start = async () => {
//const start = process.hrtime.bigint();
let result;
for (let code of codes) {
try {
result = await BruteGenerators(salt + '375' + code);
if (result) {
break;
}
} catch (e) {
console.error(e)
}
}
if (result) {
console.log({ result })
} else {
console.log('not found :(')
}
//const end = process.hrtime.bigint();
//const seconds = (end - start) / BigInt(1e9)
//const nanoSeconds = (end - start) - (seconds * BigInt(1e9));
//console.log(`Brute took ${seconds}.${nanoSeconds} seconds`);
}
const [button] = document.getElementsByTagName('button');
button.onclick = () => {
console.log('started')
start();
};