//This is a very specific password cracker for bcrypt. //It cracks from 0A0 to 99z999 and thus is probably useless for you. //Made for https://redd.it/4dqeyz var util=require("util"); var bcrypt=require("bcrypt"); var cluster=require("cluster"); var numCPUs=require("os").cpus().length;; var charset="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); var hash="$2a$10$Cv/hHXntAbMoFbZ9.fFNbeNdi26sc15eo04ruHTfk8xhuza88.xq6"; var id=0; var last=null; charset=charset.reverse().join(""); //The master process needs to do different stuff if(cluster.isMaster) { var childs=[]; var hashes=[]; var count=0; var total=0; var start=Date.now(); //spawn one slave for each CPU code in our system. for (var i = 0; i < numCPUs; i++) { childs.push(cluster.fork()); } //display stats once a second setInterval(function(){ //clears screen and moves cursor to top left util.print("\u001b[2J\u001b[0;0H"); console.log("H/s",count); console.log("Total",total); console.log("Runtime:",((Date.now()-start)/1000)|0,"sec"); hashes.forEach(function(v,i){ console.log(i,v); }); count=0; },1000); //hook to message events from children childs.forEach(function(v,i){ v.on("message",function(m) { if(m.msg==="count") { ++count; ++total; } hashes[i]=m.hash; }); }); } else if(cluster.isWorker) { id=cluster.worker.id; console.log(id,"started"); //counts down from 99 to 0 (1st part of password) for(var i=99;i>=0;i--) { //counts down all possible letters (2nd part of password) for(var k=0;k=0;j-=numCPUs) { //if the password is correct, print it and then exit if(bcrypt.compareSync(i+charset[k]+j,hash)) { console.log("DONE! Password:",i+charset[k]+j); process.exit(); } process.send({msg:"count",hash:i+charset[k]+j}); } } } }