mjt

tp link wr840n encrypt.js

mjt
Jan 21st, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function hex_md5(s)
  2. {
  3.     return binl2hex(core_md5(str2binl(s), s.length * 8));
  4. }
  5.  
  6. function core_md5(x, len)
  7. {
  8.   /* append padding */
  9.   x[len >> 5] |= 0x80 << ((len) % 32);
  10.   x[(((len + 64) >>> 9) << 4) + 14] = len;
  11.  
  12.   var a =  1732584193;
  13.   var b = -271733879;
  14.   var c = -1732584194;
  15.   var d =  271733878;
  16.  
  17.   for(var i = 0; i < x.length; i += 16)
  18.   {
  19.     var olda = a;
  20.     var oldb = b;
  21.     var oldc = c;
  22.     var oldd = d;
  23.  
  24.     a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
  25.     d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
  26.     c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
  27.     b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
  28.     a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
  29.     d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
  30.     c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
  31.     b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
  32.     a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
  33.     d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
  34.     c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
  35.     b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
  36.     a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
  37.     d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
  38.     c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
  39.     b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
  40.  
  41.     a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
  42.     d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
  43.     c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
  44.     b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
  45.     a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
  46.     d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
  47.     c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
  48.     b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
  49.     a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
  50.     d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
  51.     c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
  52.     b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
  53.     a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
  54.     d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
  55.     c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
  56.     b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
  57.  
  58.     a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
  59.     d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
  60.     c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
  61.     b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
  62.     a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
  63.     d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
  64.     c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
  65.     b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
  66.     a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
  67.     d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
  68.     c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
  69.     b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
  70.     a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
  71.     d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
  72.     c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
  73.     b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
  74.  
  75.     a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
  76.     d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
  77.     c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
  78.     b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
  79.     a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
  80.     d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
  81.     c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
  82.     b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
  83.     a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
  84.     d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
  85.     c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
  86.     b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
  87.     a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
  88.     d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
  89.     c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
  90.     b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
  91.  
  92.     a = safe_add(a, olda);
  93.     b = safe_add(b, oldb);
  94.     c = safe_add(c, oldc);
  95.     d = safe_add(d, oldd);
  96.   }
  97.   return Array(a, b, c, d);
  98.  
  99. }
  100.  
  101. function md5_cmn(q, a, b, x, s, t)
  102. {
  103.   return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
  104. }
  105. function md5_ff(a, b, c, d, x, s, t)
  106. {
  107.   return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
  108. }
  109. function md5_gg(a, b, c, d, x, s, t)
  110. {
  111.   return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
  112. }
  113. function md5_hh(a, b, c, d, x, s, t)
  114. {
  115.   return md5_cmn(b ^ c ^ d, a, b, x, s, t);
  116. }
  117. function md5_ii(a, b, c, d, x, s, t)
  118. {
  119.   return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
  120. }
  121.  
  122. /*
  123.  * Add integers, wrapping at 2^32. This uses 16-bit operations internally
  124.  * to work around bugs in some JS interpreters.
  125.  */
  126. function safe_add(x, y)
  127. {
  128.   var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  129.   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  130.   return (msw << 16) | (lsw & 0xFFFF);
  131. }
  132.  
  133. function bit_rol(num, cnt)
  134. {
  135.   return (num << cnt) | (num >>> (32 - cnt));
  136. }
  137.  
  138. function str2binl(str)
  139. {
  140.   var bin = Array();
  141.   var mask = (1 << 8) - 1;
  142.   for(var i = 0; i < str.length * 8; i += 8)
  143.     bin[i>>5] |= (str.charCodeAt(i / 8) & mask) << (i%32);
  144.   return bin;
  145. }
  146.  
  147. function binl2hex(binarray)
  148. {
  149.   var hex_tab = "0123456789abcdef";
  150.   var str = "";
  151.   for(var i = 0; i < binarray.length * 4; i++)
  152.   {
  153.     str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
  154.            hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  155.   }
  156.   return str;
  157. }
  158.  
  159. function Base64Encoding(input)
  160. {
  161.     var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  162.     var output = "";
  163.     var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
  164.     var i = 0;
  165.  
  166.     //input = utf8_encode(input);
  167.  
  168.     while (i < input.length)
  169.     {
  170.  
  171.         chr1 = input.charCodeAt(i++);
  172.         chr2 = input.charCodeAt(i++);
  173.         chr3 = input.charCodeAt(i++);
  174.  
  175.         enc1 = chr1 >> 2;
  176.         enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  177.         enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  178.         enc4 = chr3 & 63;
  179.  
  180.         if (isNaN(chr2)) {
  181.             enc3 = enc4 = 64;
  182.         } else if (isNaN(chr3)) {
  183.             enc4 = 64;
  184.         }
  185.  
  186.         output = output +
  187.         keyStr.charAt(enc1) + keyStr.charAt(enc2) +
  188.         keyStr.charAt(enc3) + keyStr.charAt(enc4);
  189.  
  190.     }
  191.  
  192.     return output;
  193. }
  194.  
  195. function utf8_encode (string)
  196. {
  197.     string = string.replace(/\r\n/g,"\n");
  198.     var utftext = "";
  199.  
  200.     for (var n = 0; n < string.length; n++) {
  201.  
  202.         var c = string.charCodeAt(n);
  203.  
  204.         if (c < 128) {
  205.             utftext += String.fromCharCode(c);
  206.         }
  207.         else if((c > 127) && (c < 2048)) {
  208.             utftext += String.fromCharCode((c >> 6) | 192);
  209.             utftext += String.fromCharCode((c & 63) | 128);
  210.         }
  211.         else {
  212.             utftext += String.fromCharCode((c >> 12) | 224);
  213.             utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  214.             utftext += String.fromCharCode((c & 63) | 128);
  215.         }
  216.  
  217.     }
  218.  
  219.     return utftext;
  220. }
Add Comment
Please, Sign In to add comment