Initial commit.
This commit is contained in:
commit
0a9434be1b
18 changed files with 1860 additions and 0 deletions
57
client/nojscap.js
Normal file
57
client/nojscap.js
Normal file
|
@ -0,0 +1,57 @@
|
|||
const crypto = require('crypto');
|
||||
|
||||
function checkDifficulty(hashBuffer, difficultyBits) {
|
||||
let bits = difficultyBits;
|
||||
let i = 0;
|
||||
while (bits > 0) {
|
||||
const byte = hashBuffer[i];
|
||||
if (bits >= 8) {
|
||||
if (byte !== 0) return false;
|
||||
bits -= 8;
|
||||
} else {
|
||||
const mask = 0xFF << (8 - bits);
|
||||
if ((byte & mask) !== 0) return false;
|
||||
bits = 0;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function main() {
|
||||
if (process.argv.length !== 4) {
|
||||
console.error(`Usage: node ${process.argv[1]} <challenge_string> <difficulty_bits>`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const challenge = process.argv[2];
|
||||
const difficultyBits = parseInt(process.argv[3], 10);
|
||||
|
||||
if (isNaN(difficultyBits) || difficultyBits <= 0 || difficultyBits > 256) {
|
||||
console.error('Difficulty bits must be a number between 1 and 256');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
let counter = 0;
|
||||
|
||||
while (true) {
|
||||
const input = challenge + counter;
|
||||
const hash = crypto.createHash('sha256').update(input).digest();
|
||||
|
||||
if (checkDifficulty(hash, difficultyBits)) {
|
||||
console.log('===================');
|
||||
console.log(`Found nonce: ${counter}`);
|
||||
console.log('===================');
|
||||
console.log(`Hash: ${hash.toString('hex')}`);
|
||||
break;
|
||||
}
|
||||
|
||||
if ((counter & 0xFFFFF) === 0) {
|
||||
console.log(`Attempts: ${counter}`);
|
||||
}
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
Loading…
Add table
Add a link
Reference in a new issue