diff --git a/README.md b/README.md index 7eaf0a0..85dcece 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,21 @@ Pwgen For BIOS ============================ - About +About --------------------------- -This code are based on python programs from [Dogbert's Blog](http://dogber1.blogspot.com/2009/05/table-of-reverse-engineered-bios.html) and research by Asyncritus. + +This code is based on python programs from [Dogbert's Blog](http://dogber1.blogspot.com/2009/05/table-of-reverse-engineered-bios.html) and research by Asyncritus. It can calculate recovery password for bios from a service tag hash. -Supported BIOS -Compaq - 5 decimal digits 12345 pwgen-5dec.py -Windows binary -Dell serial number 1234567-595B, 1234567-D35B. 1234567-2A7B, 1234567-2A7B -Fujitsu-Siemens 5 decimal digits 12345 pwgen-5dec.py -Windows binary -Fujitsu-Siemens 8 hexadecimal digits DEADBEEF pwgen-fsi-hex.py -Windows binary -Fujitsu-Siemens 5x4 hexadecimal digits AAAA-BBBB-CCCC-DEAD-BEEF pwgen-fsi-hex.py -Windows binary -Fujitsu-Siemens 5x4 decimal digits 1234-4321-1234-4321-1234 pwgen-fsi-5x4dec.py -Windows binary -Hewlett-Packard 5 decimal digits 12345 pwgen-5dec.py -Windows binary -Hewlett-Packard/Compaq Netbooks 10 characters CNU1234ABC pwgen-hpmini.py -Windows binary -Insyde H20 (generic) 8 decimal digits 03133610 pwgen-insyde.py -Windows binary -Phoenix (generic) 5 decimal digits 12345 pwgen-5dec.py -Windows binary -Sony 7 digit serial number 1234567 pwgen-sony-serial.py -Windows binary -Samsung 12 hexadecimal digits 07088120410C0000 pwgen-samsung.py -Windows binary +Supported BIOS types: +* Compaq - 5 decimal digits +* Dell - serial number for series -595B, -D35B. -2A7B and -1D3B +* Fujitsu-Siemens - 5 decimal digits, 8 hexadecimal digits, 5x4 hexadecimal digits, 5x4 decimal digits 1234-4321-1234-4321-1234 +* Hewlett-Packard - 5 decimal digits, 10 characters +* Insyde H20 (generic) - 8 decimal digits +* Phoenix (generic) - 5 decimal digits +* Sony - 7 digit serial number +* Samsung - 12 hexadecimal digits For more information [read this](http://dogber1.blogspot.com/2009/05/table-of-reverse-engineered-bios.html). \ No newline at end of file diff --git a/decrypt_bios.min.js b/decrypt_bios.min.js index d9b8384..1097289 100644 --- a/decrypt_bios.min.js +++ b/decrypt_bios.min.js @@ -1,20 +1,20 @@ var keyboardDict={2:"1",3:"2",4:"3",5:"4",6:"5",7:"6",8:"7",9:"8",10:"9",11:"0",16:"q",17:"w",18:"e",19:"r",20:"t",21:"y",22:"u",23:"i",24:"o",25:"p",30:"a",31:"s",32:"d",33:"f",34:"g",35:"h",36:"j",37:"k",38:"l",44:"z",45:"x",46:"c",47:"v",48:"b",49:"n",50:"m"},SONY="sony",SAMSUNG="samsung",PHOENIX="phoenix",HP_COMPAQ="hp_compaq_phoenix",FSI_PHOENIX="fsi_phoenix",FSI_L_PHOENIX="fsi_l_phoenix",FSI_P_PHOENIX="fsi_p_phoenix",FSI_S_PHOENIX="fsi_s_phoenix",FSI_X_PHOENIX="fsi_x_phoenix",INSYDE="insyde", HP_MINI="hp_mini",FSI_20_DEC_NEW="fsi_20_dec_new",FSI_20_DEC_OLD="fsi_20_dec_old",FSI_HEX="fsi_hex",DELL_TAG="dell_tag",DELL_HDD_NEW="dell_hdd_new",DELL_HDD_OLD="dell_hdd_old",DELL_SERIES_PREFIX=["595B","D35B","2A7B","A95B","1D3B"],encscans=[5,16,19,9,50,3,37,17,31,23,6,21,48,25,38,34,10,2,44,47,22,20,7,24,36,35,49,32,30,8,45,33,4,11,18,46],chartabl2A7B="012345679abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0",chartabl1D3B="0BfIUG1kuPvc8A9Nl5DLZYSno7Ka6HMgqsJWm65yCQR94b21OTp7VFX2z0jihE33d4xtrew0", -scancods="\x00\u001b1234567890-=\b\tqwertyuiop[]\r\u00ffasdfghjkl;'`\u00ff\\zxcvbnm,./",encData=[1732584193,-271733879,-1732584194,271733878],MD5magic_o=[3614090360,3905402710,606105819,3250441966,4118548399,1200080426,2821735955,4249261313,1770035416,2336552879,4294925233,2304563134,1804603682,4254626195,2792965006,1236535329,4129170786,3225465664,643717713,3921069994,3593408605,38016083,3634488961,3889429448,568446438,3275163606,4107603335,1163531501,2850285829,4243563512,1735328473,2368359562, -4294588738,2272392833,1839030562,4259657740,2763975236,1272893353,4139469664,3200236656,681279174,3936430074,3572445317,76029189,3654602809,3873151461,530742520,3299628645,4096336452,1126891415,2878612391,4237533241,1700485571,2399980690,4293915773,2240044497,1873313359,4264355552,2734768916,1309151649,4149444226,3174756917,718787259,3951481745];function CorectBits(a){if("object"==typeof a){for(var b=0;b>>0}"undefined"==typeof Object.keys&&(Object.keys=function(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(c);return b});var keys=Object.keys;"undefined"==typeof values&&(values=function(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(a[c]);return b});Array.prototype.swap=function(a,b){var c=this[a];this[a]=this[b];this[b]=c;return this}; -Array.prototype.getUnique=function(){for(var a={},b=[],c=0,d=this.length;c>2,c=[],d=0;d<=b;d++)c[d]=a[4*d]|a[4*d+1]<<8|a[4*d+2]<<16|a[4*d+3]<<24;return c}function StringToIntArr(a){return"object"==typeof a?ByteArrToIntArr(a):ByteArrToIntArr(StringToArray(a))} -function IntToByteArr(a){var b=[];b[0]=a&255;b[1]=a>>8&255;b[2]=a>>16&255;b[3]=a>>24&255;return b}function IntArrToByteArr(a){for(var b=[],c=0;ca[c]||127>1^8193:c>>1;return c} -function bruteForce(a,b,c,d,e,f){b="undefined"==typeof b?0:b;e="undefined"==typeof e?3:e;f="undefined"==typeof f?7:f;var g=[0,0,0,0,0,0,0];if(16383h;h++)g[h]=c[Math.floor(l%d)],l*=7;k++;if(5E4>1,a[1]>>6|a[0]<<2,a[0]>>3]}function begin_calc(a,b){var c=[];"string"==typeof a&&(a=StringToArray(a));c[0]=a[b[3]];c[1]=a[b[3]]>>5|(a[b[2]]>>5|a[b[2]]<<3)&241;c[2]=a[b[2]]>>2;c[3]=a[b[2]]>>7|a[b[1]]<<1;c[4]=a[b[1]]>>4|a[b[0]]<<4;c=c.concat(calc_in(a));return toByte(c)}function end_calc(a,b,c,d){for(var e=0,f=[],g=0;8>g;g++)e=170,b[g]&1&&(e^=a[c[0]]),b[g]&2&&(e^=a[c[1]]),b[g]&4&&(e^=a[c[2]]),b[g]&8&&(e^=a[1]),b[g]&16&&(e^=a[0]),f[g]=d[e%d.length];return f} +scancods="\x00\u001b1234567890-=\b\tqwertyuiop[]\r\u00ffasdfghjkl;'`\u00ff\\zxcvbnm,./",MD5magic_o=[3614090360,3905402710,606105819,3250441966,4118548399,1200080426,2821735955,4249261313,1770035416,2336552879,4294925233,2304563134,1804603682,4254626195,2792965006,1236535329,4129170786,3225465664,643717713,3921069994,3593408605,38016083,3634488961,3889429448,568446438,3275163606,4107603335,1163531501,2850285829,4243563512,1735328473,2368359562,4294588738,2272392833,1839030562,4259657740,2763975236, +1272893353,4139469664,3200236656,681279174,3936430074,3572445317,76029189,3654602809,3873151461,530742520,3299628645,4096336452,1126891415,2878612391,4237533241,1700485571,2399980690,4293915773,2240044497,1873313359,4264355552,2734768916,1309151649,4149444226,3174756917,718787259,3951481745];function CorectBits(a){if("object"==typeof a){for(var b=0;b>>0} +"undefined"==typeof Object.keys&&(Object.keys=function(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(c);return b});var keys=Object.keys;"undefined"==typeof values&&(values=function(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(a[c]);return b});Array.prototype.swap=function(a,b){var c=this[a];this[a]=this[b];this[b]=c;return this};Array.prototype.getUnique=function(){for(var a={},b=[],c=0,d=this.length;c>2,c=[],d=0;d<=b;d++)c[d]=a[4*d]|a[4*d+1]<<8|a[4*d+2]<<16|a[4*d+3]<<24;return c}function StringToIntArr(a){return"object"==typeof a?ByteArrToIntArr(a):ByteArrToIntArr(StringToArray(a))}function IntToByteArr(a){var b=[];b[0]=a&255;b[1]=a>>8&255;b[2]=a>>16&255;b[3]=a>>24&255;return b} +function IntArrToByteArr(a){for(var b=[],c=0;ca[c]||127>1^8193:c>>1;return c} +function bruteForce(a,b,c,d,e,f){b="undefined"==typeof b?0:b;e="undefined"==typeof e?3:e;f="undefined"==typeof f?7:f;var h=[0,0,0,0,0,0,0];if(16383g;g++)h[g]=c[Math.floor(l%d)],l*=7;k++;if(5E4>1,a[1]>>6|a[0]<<2,a[0]>>3]}function begin_calc(a,b){var c=[];"string"==typeof a&&(a=StringToArray(a));c[0]=a[b[3]];c[1]=a[b[3]]>>5|(a[b[2]]>>5|a[b[2]]<<3)&241;c[2]=a[b[2]]>>2;c[3]=a[b[2]]>>7|a[b[1]]<<1;c[4]=a[b[1]]>>4|a[b[0]]<<4;c=c.concat(calc_in(a));return toByte(c)}function end_calc(a,b,c,d){for(var e=0,f=[],h=0;8>h;h++)e=170,b[h]&1&&(e^=a[c[0]]),b[h]&2&&(e^=a[c[1]]),b[h]&4&&(e^=a[c[2]]),b[h]&8&&(e^=a[1]),b[h]&16&&(e^=a[0]),f[h]=d[e%d.length];return f} function calc_suffix_shortcut(a,b,c){var d=StringToArray(a);b=begin_calc(d,b);return"2A7B"==dell_get_serial_line(a)?end_calc(d,b,c,StringToArray(chartabl2A7B)):"1D3B"==dell_get_serial_line(a)?end_calc(d,b,c,StringToArray(chartabl1D3B)):end_calc(d,b,c,encscans)}function calc_suffix_tag(a){return calc_suffix_shortcut(a,[1,2,3,4],[4,3,2])}function calc_suffix_hdd_new(a){return calc_suffix_shortcut(a,[1,10,9,8],[8,9,10])} function calc_suffix_hdd_old(a){var b=[49,49,49,49,49];a=StringToArray(a);for(var b=b.concat(calc_in(a)),c=5;8>c;c++){var d=170;b[c]&8&&(d^=a[1]);b[c]&16&&(d^=a[0]);b[c]=encscans[d%encscans.length]}return b} -function blockEncode(a,b,c,d,e,f,g){function k(a,c,b){c=c[b>>4][i&3];return SignedToUnsigned(a)/Math.pow(2,32-c)|SignedToUnsigned(a)<i;i++){switch(i>>4){case 0:q=l(c,i&15,i);break;case 1:q=l(d,5*i+1&15,i);break;case 2:q=l(e,3*i+5&15,i);break; -case 3:q=l(f,7*i&15,i)}h=p;p=n;n=m;m=k(q,r,i)+m|0}encData[0]+=h;encData[1]+=m;encData[2]+=n;encData[3]+=p}return CorectBits([encData[0],encData[1],encData[2],encData[3]])}function dell_get_serial_line(a){return"object"==typeof a?ArrayToString(a.slice(a.length-4,a.length)).toUpperCase():a.substr(a.length-4,a.length).toUpperCase()}function dell_get_serial_main(a){return a.substr(0,a.length-4)} -function choseEncode(a,b){function c(a,c,b){return(b^c)&a^b}function d(a,c,b){return(a^c)&b^c}function e(a,c,b){return c^a^b}function f(a,c,b){return(a|~b)^c}function g(a,c,b,d,e){return a(c,b,d)+e|0}function k(a,c,b,d,e){return a(c,b,d)+-e|0}function l(a,c,b){return(~b^c)&a^~b}function h(a,c,b){return~c^a^b}function m(a,c,b){return(~a|~b)^c}var n=dell_get_serial_line(b);return"D35B"==n?blockEncode(a,g,c,d,e,f,0):"1D3B"==n?blockEncode(a,k,l,d,h,m,1):blockEncode(a,k,l,d,h,m,0)} +function blockEncode(a,b,c,d,e,f,h){function k(a,c,b){c=c[b>>4][i&3];return SignedToUnsigned(a)/Math.pow(2,32-c)|SignedToUnsigned(a)<i;i++){switch(i>>4){case 0:r=l(c,i&15,i);break;case 1:r=l(d,5*i+1&15,i);break;case 2:r= +l(e,3*i+5&15,i);break;case 3:r=l(f,7*i&15,i)}n=q;q=p;p=m;m=k(r,s,i)+m|0}g[0]+=n;g[1]+=m;g[2]+=p;g[3]+=q}return CorectBits([g[0],g[1],g[2],g[3]])}function dell_get_serial_line(a){return"object"==typeof a?ArrayToString(a.slice(a.length-4,a.length)).toUpperCase():a.substr(a.length-4,a.length).toUpperCase()}function dell_get_serial_main(a){return a.substr(0,a.length-4)} +function choseEncode(a,b){function c(a,c,b){return(b^c)&a^b}function d(a,c,b){return(a^c)&b^c}function e(a,c,b){return c^a^b}function f(a,c,b){return(a|~b)^c}function h(a,c,b,d,e){return a(c,b,d)+e|0}function k(a,c,b,d,e){return a(c,b,d)+-e|0}function l(a,c,b){return(~b^c)&a^~b}function g(a,c,b){return~c^a^b}function n(a,c,b){return(~a|~b)^c}var m=dell_get_serial_line(b);return"D35B"==m?blockEncode(a,h,c,d,e,f,0):"1D3B"==m?blockEncode(a,k,l,d,g,n,1):blockEncode(a,k,l,d,g,n,0)} function answerToString(a,b){for(var c=a[0]%9,d="",e=0;16>e;e++)"2A7B"==dell_get_serial_line(b)?d+=chartabl2A7B.charAt(a[e]%chartabl2A7B.length):"1D3B"==dell_get_serial_line(b)?d+=chartabl1D3B.charAt(a[e]%chartabl1D3B.length):c<=e&&8>d.length&&(d+=scancods.charAt(encscans[a[e]%encscans.length]));return d}function dell_encode(a,b,c){a[b]=128;a=StringToIntArr(a);a=fill_zero(a,6,16);a[14]=b<<3;return IntArrToByteArr(choseEncode(a,c))} function getBiosPwdForDellTag(a){"A95B"==dell_get_serial_line(a)&&(a=dell_get_serial_main(a)+"595B");var b=StringToArray(a),b=b.concat(calc_suffix_tag(b));return answerToString(dell_encode(b,23,a),a)}function getBiosPwdForDellHddNew(a){if("A95B"==dell_get_serial_line(a)){var b=chr(0)+chr(0)+chr(0);a=a.slice(3,a.length-4)+b+"595B"}b=StringToArray(a);b=b.concat(calc_suffix_hdd_new(b));return answerToString(dell_encode(b,23,a),a)} function getBiosPwdForDellHddOld(a){a=calc_suffix_hdd_old(a);for(var b="",c=0;c>4|a[e[3]]<<4)&255;f[b[1]]=a[e[0]]&15|a[e[3]]&240;f[b[2]]=a[e[1]]>>4|a[e[2]]<<4&255;f[b[3]]=a[e[1]]&15|a[e[2]]&240;return f}return function(a){for(var d=0;d>5;a[1]=a[1]<<5&255|a[1]>>3;a[2]=a[2]<<7&255|a[2]>>1;a[3]=a[3]<<4&255|a[3]>>4;a[5]=a[5]<<6&255|a[5]>>2;a[6]= a[6]<<1&255|a[6]>>7;a[7]=a[7]<<2&255|a[7]>>6;for(var d=[],e=0;e>12)%16%10)+chr(b+(a>>8)%16%10)+chr(b+(a>>4)%16%10)+chr(b+(a>>0)%16%10)}function c(a,b){for(var c=0,g=0,k=0;k>8)%256],c=(c<<8^g)&65535;return c}20==a.length&&(a=a.slice(12,20));return function(a){for(var e=[],f=0,g=0;256>g;g++){for(var f=g<<8,k=0;8>k;k++)f<<=1,f&65536&&(f^=4129);e.push(f&65535)}return b(c(a.slice(0,4),e))+b(c(a.slice(4,8),e))}(a)} +function getBiosPwdForFSIhex(a){function b(a){var b=ord("0");return chr(b+(a>>12)%16%10)+chr(b+(a>>8)%16%10)+chr(b+(a>>4)%16%10)+chr(b+(a>>0)%16%10)}function c(a,b){for(var c=0,h=0,k=0;k>8)%256],c=(c<<8^h)&65535;return c}20==a.length&&(a=a.slice(12,20));return function(a){for(var e=[],f=0,h=0;256>h;h++){for(var f=h<<8,k=0;8>k;k++)f<<=1,f&65536&&(f^=4129);e.push(f&65535)}return b(c(a.slice(0,4),e))+b(c(a.slice(4,8),e))}(a)} function has_element(a,b){for(var c=0;c