UNPKG

crack-js

Version:

Javascript library to crack various hashes in hashcat format

2 lines (1 loc) 12.9 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var w=require("bcryptjs"),i=require("crypto-js");function M(e){return i.SHA512(i.enc.Latin1.parse(e)).toString(i.enc.Latin1)}function V(e){return i.SHA256(i.enc.Latin1.parse(e)).toString(i.enc.Latin1)}function K(e,r){for(var t="",n=0;n<Math.floor(r/32);n++)t+=e;return t+=e.substr(0,r%32),t}function R(e,r){for(var t="",n=0;n<Math.floor(r/64);n++)t+=e;return t+=e.substr(0,r%64),t}function ee(e,r){for(var t=M(e+r+e),n=e.length,v=R(t,e.length),a=e+r+v,c=n;c>0;c>>=1)c&1?a+=t:a+=e;var h=M(a);return h}function re(e,r){for(var t=V(e+r+e),n=e.length,v=K(t,e.length),a=e+r+v,c=n;c>0;c>>=1)c&1?a+=t:a+=e;var h=V(a);return h}function te(e,r,t){for(var n=re(e,r),v="",a=0;a<e.length;a++)v+=e;for(var c=V(v),h=K(c,e.length),b="",a=0;a<16+n.charCodeAt(0);a++)b+=r;for(var _=V(b),F=K(_,r.length),p=n,f="",a=0;a<t;a++)f="",a&1?f+=h:f+=p,a%3&&(f+=F),a%7&&(f+=h),a&1?f+=p:f+=h,p=V(f);return p}function ae(e,r,t){for(var n=ee(e,r),v="",a=0;a<e.length;a++)v+=e;for(var c=M(v),h=R(c,e.length),b="",a=0;a<16+n.charCodeAt(0);a++)b+=r;for(var _=M(b),F=R(_,r.length),p=n,f="",a=0;a<t;a++)f="",a&1?f+=h:f+=p,a%3&&(f+=F),a%7&&(f+=h),a&1?f+=p:f+=h,p=M(f);return p}function ne(e,r){var t="$6$",n,v=r.split("$");v.length>1&&(n=parseInt(v[2].split("=")[1]),n?(n<1e3&&(n=1e3),n>999999999&&(n=999999999),r=v[3]||r):r=v[2]||r),r=r.substr(0,16);var a="",c="";return a=ae(e,r,n||5e3),c=d(a,0,21,42)+d(a,22,43,1)+d(a,44,2,23)+d(a,3,24,45)+d(a,25,46,4)+d(a,47,5,26)+d(a,6,27,48)+d(a,28,49,7)+d(a,50,8,29)+d(a,9,30,51)+d(a,31,52,10)+d(a,53,11,32)+d(a,12,33,54)+d(a,34,55,13)+d(a,56,14,35)+d(a,15,36,57)+d(a,37,58,16)+d(a,59,17,38)+d(a,18,39,60)+d(a,40,61,19)+d(a,62,20,41)+Y(a,63),t+r+"$"+c}function ce(e,r){var t="$5$",n,v=r.split("$");v.length>1&&(n=parseInt(v[2].split("=")[1]),n?(n<1e3&&(n=1e3),n>999999999&&(n=999999999),r=v[3]||r):r=v[2]||r),r=r.substr(0,16);var a="",c="";a=te(e,r,n||5e3);var c=d(a,0,10,20)+d(a,21,1,11)+d(a,12,22,2)+d(a,3,13,23)+d(a,24,4,14)+d(a,15,25,5)+d(a,6,16,26)+d(a,27,7,17)+d(a,18,28,8)+d(a,9,19,29)+ie(a,31,30);return t+r+"$"+c}function W(e,r){const t="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(var n="";--r>=0;)n+=t.charAt(e&63),e>>=6;return n}function d(e,r,t,n){var v=e.charCodeAt(r)<<16|e.charCodeAt(t)<<8|e.charCodeAt(n);return W(v,4)}function ie(e,r,t){var n=e.charCodeAt(r)<<8|e.charCodeAt(t);return W(n,3)}function Y(e,r){var t=e.charCodeAt(r);return W(t,2)}function fe(e,r){var t=e.length,n=e+"$1$"+r,v=e+r+e,a=i.MD5(v);for(t;t>0;t-=16)t>16?n=n.concat(a.toString(i.enc.Latin1)):n=n.concat(a.toString(i.enc.Latin1).substring(0,t));for(var c=e.length;c!=0;c>>=1)c%2==1?n+="\0":n+=e.charAt(0);var h=i.MD5(i.enc.Latin1.parse(n));for(c=0;c<1e3;c++){var b="";c&1?b+=e:b+=h.toString(i.enc.Latin1),c%3&&(b+=r),c%7&&(b+=e),c&1?b+=h.toString(i.enc.Latin1):b+=e,h=i.MD5(i.enc.Latin1.parse(b))}var _="$1$"+r+"$"+d(h.toString(i.enc.Latin1),0,6,12)+d(h.toString(i.enc.Latin1),1,7,13)+d(h.toString(i.enc.Latin1),2,8,14)+d(h.toString(i.enc.Latin1),3,9,15)+d(h.toString(i.enc.Latin1),4,10,5)+Y(h.toString(i.enc.Latin1),11);return _}(function(e){var r=i,t=r.lib,n=t.WordArray,v=t.Hasher,a=r.algo,c=[[3,7,11,19],[3,5,9,13],[3,9,11,15]],h=0,b=1518500249,_=1859775393,F=a.MD4=v.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(g,y){for(var $=0;$<16;$++){var C=y+$,L=g[C];g[C]=(L<<8|L>>>24)&16711935|(L<<24|L>>>8)&4278255360}var H=this._hash.words,x=g[y+0],T=g[y+1],k=g[y+2],D=g[y+3],Z=g[y+4],U=g[y+5],B=g[y+6],N=g[y+7],E=g[y+8],q=g[y+9],J=g[y+10],P=g[y+11],j=g[y+12],G=g[y+13],I=g[y+14],O=g[y+15],s=H[0],u=H[1],o=H[2],l=H[3];s=f(m,h,s,u,o,l,x,c[0][0]),l=f(m,h,l,s,u,o,T,c[0][1]),o=f(m,h,o,l,s,u,k,c[0][2]),u=f(m,h,u,o,l,s,D,c[0][3]),s=f(m,h,s,u,o,l,Z,c[0][0]),l=f(m,h,l,s,u,o,U,c[0][1]),o=f(m,h,o,l,s,u,B,c[0][2]),u=f(m,h,u,o,l,s,N,c[0][3]),s=f(m,h,s,u,o,l,E,c[0][0]),l=f(m,h,l,s,u,o,q,c[0][1]),o=f(m,h,o,l,s,u,J,c[0][2]),u=f(m,h,u,o,l,s,P,c[0][3]),s=f(m,h,s,u,o,l,j,c[0][0]),l=f(m,h,l,s,u,o,G,c[0][1]),o=f(m,h,o,l,s,u,I,c[0][2]),u=f(m,h,u,o,l,s,O,c[0][3]),s=f(A,b,s,u,o,l,x,c[1][0]),l=f(A,b,l,s,u,o,Z,c[1][1]),o=f(A,b,o,l,s,u,E,c[1][2]),u=f(A,b,u,o,l,s,j,c[1][3]),s=f(A,b,s,u,o,l,T,c[1][0]),l=f(A,b,l,s,u,o,U,c[1][1]),o=f(A,b,o,l,s,u,q,c[1][2]),u=f(A,b,u,o,l,s,G,c[1][3]),s=f(A,b,s,u,o,l,k,c[1][0]),l=f(A,b,l,s,u,o,B,c[1][1]),o=f(A,b,o,l,s,u,J,c[1][2]),u=f(A,b,u,o,l,s,I,c[1][3]),s=f(A,b,s,u,o,l,D,c[1][0]),l=f(A,b,l,s,u,o,N,c[1][1]),o=f(A,b,o,l,s,u,P,c[1][2]),u=f(A,b,u,o,l,s,O,c[1][3]),s=f(S,_,s,u,o,l,x,c[2][0]),l=f(S,_,l,s,u,o,E,c[2][1]),o=f(S,_,o,l,s,u,Z,c[2][2]),u=f(S,_,u,o,l,s,j,c[2][3]),s=f(S,_,s,u,o,l,k,c[2][0]),l=f(S,_,l,s,u,o,J,c[2][1]),o=f(S,_,o,l,s,u,B,c[2][2]),u=f(S,_,u,o,l,s,I,c[2][3]),s=f(S,_,s,u,o,l,T,c[2][0]),l=f(S,_,l,s,u,o,q,c[2][1]),o=f(S,_,o,l,s,u,U,c[2][2]),u=f(S,_,u,o,l,s,G,c[2][3]),s=f(S,_,s,u,o,l,D,c[2][0]),l=f(S,_,l,s,u,o,P,c[2][1]),o=f(S,_,o,l,s,u,N,c[2][2]),u=f(S,_,u,o,l,s,O,c[2][3]),H[0]=H[0]+s|0,H[1]=H[1]+u|0,H[2]=H[2]+o|0,H[3]=H[3]+l|0},_doFinalize:function(){var g=this._data,y=g.words,$=this._nDataBytes*8,C=g.sigBytes*8;y[C>>>5]|=128<<24-C%32;var L=e.floor($/4294967296),H=$;y[(C+64>>>9<<4)+15]=(L<<8|L>>>24)&16711935|(L<<24|L>>>8)&4278255360,y[(C+64>>>9<<4)+14]=(H<<8|H>>>24)&16711935|(H<<24|H>>>8)&4278255360,g.sigBytes=(y.length+1)*4,this._process();for(var x=this._hash,T=x.words,k=0;k<4;k++){var D=T[k];T[k]=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360}return x},clone:function(){var g=v.clone.call(this);return g._hash=this._hash.clone(),g}});function p(g,y){return g<<y|g>>>32-y}function f(g,y,$,C,L,H,x,T){return p($+g(C,L,H)+x+y,T)}function m(g,y,$){return g&y|~g&$}function A(g,y,$){return g&y|g&$|y&$}function S(g,y,$){return g^y^$}r.MD4=v._createHelper(F),r.HmacMD4=v._createHmacHelper(F)})(Math);function se(e){let r=1345345333,t=305419889,n=7;for(let a=0;a<e.length;a++){let c=e.charCodeAt(a);r^=((r&63)+n)*c+(r<<8),t+=t<<8^r,n+=c}let v=(r>>>0).toString(16)+(t>>>0).toString(16);for(;v.length<16;)v="0"+v;return v}function ue(e,r,t,n,v){let a=i.enc.Hex.parse(i.MD4(i.enc.Utf16LE.parse(v)).toString().toUpperCase());var c=i.enc.Utf16LE.parse(e.toUpperCase()+r),h=i.HmacMD5(c,a),b=i.HmacMD5(i.enc.Hex.parse(t+n),h);return i.enc.Hex.stringify(b)}function X(e,r,t){switch(t){case"jwt":return ye(e,r);case"netntlmv2":return he(e,r);case"ntlm":return _e(e,r);case"md5":return He(e,r);case"sha1":return me(e,r);case"sha256":return Ae(e,r);case"sha512":return Se(e,r);case"bcrypt":return $e(e,r);case"md5crypt":return ge(e,r);case"sha256crypt":return de(e,r);case"sha512crypt":return be(e,r);case"hmac-md5":return pe(e,r);case"hmac-sha1":return Le(e,r);case"hmac-sha256":return Ce(e,r);case"hmac-sha512":return xe(e,r);case"mysql323":return Te(e,r);default:throw new Error(`Unsupported hash type: ${t}`)}}function oe(e){let r=!1;switch(e){case"jwt":r="eyJhbGciOiJIUzI1NiJ9.eyIzNDM2MzQyMCI6NTc2ODc1NDd9.f1nXZ3V_Hrr6ee-AFCTLaHRnrkiKmio2t3JqwL32guY";break;case"netntlmv2":r="admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030";break;case"ntlm":r="b4b9b02e6f09a9bd760f388b67351e2b";break;case"md5":r="8743b52063cd84097a65d1633f5c74f5";break;case"sha1":r="b89eaac7e61417341b710b727768294d0e6a277b";break;case"sha256":r="127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935";break;case"sha512":r="82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e29134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f";break;case"bcrypt":r="$2a$05$LhayLxezLhK1LhWvKxCyLOj0j1u.Kj0jZ0pEmm134uzrQlFvQJLF6";break;case"md5crypt":r="$1$28772684$iEwNOgGugqO9.bIz5sk8k/";break;case"sha256crypt":r="$5$rounds=5000$GX7BopJZJxPc/KEK$le16UF8I2Anb.rOrn22AUPWvzUETDGefUmAV8AZkGcD";break;case"sha512crypt":r="$6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/";break;case"mysql323":r="7196759210defdc0";break;case"hmac-md5":r="bfd280436f45fa38eaacac3b00518f29:1234";break;case"hmac-sha1":r="d89c92b4400b15c39e462a8caa939ab40c3aeeea:1234";break;case"hmac-sha256":r="8efbef4cec28f228fa948daaf4893ac3638fbae81358ff9020be1d7a9a509fc6:1234";break;case"hmac-sha512":r="7cce966f5503e292a51381f238d071971ad5442488f340f98e379b3aeae2f33778e3e732fcc2f7bdc04f3d460eebf6f8cb77da32df25500c09160dd3bf7d2a6b:1234";break;default:throw new Error(`Unsupported hash type: ${e}`)}const t=5e3,n=Date.now();let v=0;for(;Date.now()-n<t;)X("hashcat",r,e),v++;return Math.floor(v/(t/1e3))}function le(e){switch(e){case"ntlm":return!0;case"md5":return!0;case"sha1":return!0;case"sha256":return!0;case"sha512":return!0;case"mysql323":return!0;default:return!1}}function Q(e,r){switch(r){case"jwt":return/^([A-Za-z0-9-_]+={0,2})\.([A-Za-z0-9-_]+={0,2})\.([A-Za-z0-9-_]+={0,2})$/.test(e);case"netntlmv2":return/^[^:]+::[^:]+:[a-fA-F0-9]{16}:[a-fA-F0-9]{32,64}:[a-fA-F0-9]+$/.test(e);case"ntlm":return/^[a-fA-F0-9]{32}$/.test(e);case"md5":return/^[a-fA-F0-9]{32}$/.test(e);case"sha1":return/^[a-fA-F0-9]{40}$/.test(e);case"sha256":return/^[a-fA-F0-9]{64}$/.test(e);case"sha512":return/^[a-fA-F0-9]{128}$/.test(e);case"bcrypt":return/^\$2[aby]?\$[0-9]{2}\$[./A-Za-z0-9]{53}$/.test(e);case"md5crypt":return/^\$1\$[./A-Za-z0-9]{1,8}\$[./A-Za-z0-9]{22}$/.test(e);case"sha256crypt":return/^\$5\$(rounds=\d+\$)?[./A-Za-z0-9]{1,16}\$[./A-Za-z0-9]{43,86}$/.test(e);case"sha512crypt":return/^\$6\$(rounds=\d+\$)?[./A-Za-z0-9]{1,16}\$[./A-Za-z0-9]{86,}$/.test(e);case"mysql323":return/^[a-fA-F0-9]{16}$/.test(e);case"hmac-md5":return/^[a-fA-F0-9]{32}:[A-Za-z0-9_]+$/.test(e);case"hmac-sha1":return/^[a-fA-F0-9]{40}:[A-Za-z0-9_]+$/.test(e);case"hmac-sha256":return/^[a-fA-F0-9]{64}:[A-Za-z0-9_]+$/.test(e);case"hmac-sha512":return/^[a-fA-F0-9]{128}:[A-Za-z0-9_]+$/.test(e);default:throw new Error(`Unsupported hash type: ${r}`)}}function ve(e){let r=[];for(let t=0;t<z.length;t++)Q(e,z[t])&&r.push(z[t]);return r}function he(e,r){let t=r.split(":");if(t.length<6)return!1;var n=t[0],v=t[2],a=t[3],c=t[4],h=t[5],b=ue(n,v,a,h,e);return b===c}function ge(e,r){return fe(e,r.split("$")[2])===r}function de(e,r){var t=r.split("$"),n,v,a;if(t.length>1)v=parseInt(t[2].split("=")[1]),v?(n=t[3],a=t[4]):(n=t[2],a=t[3]);else return!1;var c="$5$"+n+"$"+a;return ce(e,r)===c}function be(e,r){var t=r.split("$"),n,v,a;if(t.length>1)n=parseInt(t[2].split("=")[1]),n?(v=t[3],a=t[4]):(v=t[2],a=t[3]);else return!1;var c="$6$"+v+"$"+a;return ne(e,r)===c}function ye(e,r){const t=r.split(".");var n=String(t[0])+"."+String(t[1]);const v=JSON.parse(atob(t[0]));if(!v.alg)return!1;let a=!1;switch(v.alg.toLowerCase()){case"hs256":a=i.HmacSHA256(String(n),String(e)).toString(i.enc.Base64).replaceAll("=","").replaceAll("+","-").replaceAll("/","_");break;case"hs384":a=i.HmacSHA384(String(n),String(e)).toString(i.enc.Base64).replaceAll("=","").replaceAll("+","-").replaceAll("/","_");break;case"hs512":a=i.HmacSHA512(String(n),String(e)).toString(i.enc.Base64).replaceAll("=","").replaceAll("+","-").replaceAll("/","_");break;default:return!1}return t[2]==a}function _e(e,r){return i.MD4(i.enc.Utf16LE.parse(e)).toString().toUpperCase()===r.toString().toUpperCase()}function He(e,r){return i.MD5(e).toString(i.enc.Hex)===r.toLowerCase()}function me(e,r){return i.SHA1(e).toString(i.enc.Hex)===r.toLowerCase()}function Ae(e,r){return i.SHA256(e).toString(i.enc.Hex)===r.toLowerCase()}function Se(e,r){return i.SHA512(e).toString(i.enc.Hex)===r.toLowerCase()}function $e(e,r){return w.compareSync(e,r)}function pe(e,r){const t=r.split(":");let n=null;return t.length==2?(n=i.HmacMD5(e,t[1]).toString(i.enc.Hex),n===t[0].toLowerCase()):(n=i.HmacMD5(e,e).toString(i.enc.Hex),n===r.toLowerCase())}function Le(e,r){const t=r.split(":");let n=null;return t.length==2?(n=i.HmacSHA1(e,t[1]).toString(i.enc.Hex),n===t[0].toLowerCase()||(n=i.HmacSHA1(t[1],e).toString(i.enc.Hex),n===t[0].toLowerCase())):(n=i.HmacSHA1(e,e).toString(i.enc.Hex),n===r.toLowerCase())}function Ce(e,r){const t=r.split(":");let n=null;return t.length==2?(n=i.HmacSHA256(e,t[1]).toString(i.enc.Hex),n===t[0].toLowerCase()||(n=i.HmacSHA256(t[1],e).toString(i.enc.Hex),n===t[0].toLowerCase())):(n=i.HmacSHA256(e,e).toString(i.enc.Hex),n===r.toLowerCase())}function xe(e,r){const t=r.split(":");let n=null;return t.length==2?(n=i.HmacSHA512(e,t[1]).toString(i.enc.Hex),n===t[0].toLowerCase()||(n=i.HmacSHA512(t[1],e).toString(i.enc.Hex),n===t[0].toLowerCase())):(n=i.HmacSHA512(e,e).toString(i.enc.Hex),n===r.toLowerCase())}function Te(e,r){return se(e).toLowerCase()===r.toLowerCase()}const z=["md5crypt","sha256crypt","sha512crypt","ntlm","md5","sha1","sha256","sha512","bcrypt","netntlmv2","hmac-md5","hmac-sha1","hmac-sha256","hmac-sha512","mysql323","jwt"];exports.availableHashTypes=z;exports.getPossibleHashTypes=ve;exports.isFast=le;exports.isValidHash=Q;exports.measureSpeed=oe;exports.verifyHash=X;