Advertisement
Guest User

Untitled

a guest
Aug 9th, 2015
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. ////////////////////////////////////////
  2. // Base64 Pack by Truce //
  3. ////////////////////////////////////////
  4.  
  5. function convertBase(%val,%atype,%btype)
  6. {
  7. %vlen = strLen(%val);
  8. %alen = strLen(%atype);
  9. %blen = strLen(%btype);
  10.  
  11. for(%i = 0; %i < %vlen; %i++)
  12. %sum += striPos(%atype,getSubStr(%val,%i,1)) * mPow(%alen,%vlen - %i - 1);
  13.  
  14. while(1)
  15. {
  16. %rem = %sum % %blen;
  17. %new = getSubStr(%btype,%rem,1) @ %new;
  18. %sum = mFloor(%sum / %blen);
  19.  
  20. if(!%sum)
  21. break;
  22. }
  23.  
  24. return %new;
  25. }
  26.  
  27. function base64Encode(%str)
  28. {
  29. %base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabc defghijklmnopqrstuvwxyz012345 6789+/";
  30. %asciimap = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" @
  31. "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F" @
  32. "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F" @
  33. "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F" @
  34. "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F" @
  35. "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F" @
  36. "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F" @
  37. "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F" @
  38. "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F" @
  39. "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F" @
  40. "\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF" @
  41. "\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF" @
  42. "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF" @
  43. "\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF" @
  44. "\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF" @
  45. "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF";
  46.  
  47. %len = strLen(%str);
  48.  
  49. for(%i = 0; %i < %len; %i++)
  50. {
  51. %chr = getSubStr(%str,%i,1);
  52. %ascii = strPos(%asciimap,%chr) + 1;
  53. %bin = convertBase(%ascii,"0123456789","01");
  54.  
  55. while(strLen(%bin) < 8)
  56. %bin = "0" @ %bin;
  57.  
  58. %all = %all @ %bin;
  59. }
  60.  
  61. %len = strLen(%all);
  62.  
  63. for(%i = 0; %i < %len; %i += 6)
  64. {
  65. %pack = getSubStr(%all,%i,6);
  66.  
  67. while(strLen(%pack) < 6)
  68. %pack = %pack @ "0";
  69.  
  70. %dec = convertBase(%pack,"01","0123456789");
  71. %new = %new @ getSubStr(%base64map,%dec,1);
  72. }
  73.  
  74. while(strLen(%new) % 4 > 0)
  75. %new = %new @ "=";
  76.  
  77. return %new;
  78. }
  79.  
  80. function convertWebkey(%key)
  81. {
  82. %sha = sha1(%key);
  83. %len = strLen(%sha);
  84.  
  85. for(%i = 0; %i < %len; %i += 2)
  86. %str = %str SPC convertBase(getSubStr(%sha,%i,2),"0123456789ABCDEF","0123456789");
  87.  
  88. %str = trim(%str);
  89. %b64 = base64Encode_Nulls(%str);
  90.  
  91. return %b64;
  92. }
  93.  
  94. function base64Encode_Nulls(%str)
  95. {
  96. %base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  97.  
  98. %len = getWordCount(%str);
  99.  
  100. for(%i = 0; %i < %len; %i++)
  101. {
  102. %ascii = getWord(%str,%i);
  103. %bin = convertBase(%ascii,"0123456789","01");
  104.  
  105. while(strLen(%bin) < 8)
  106. %bin = "0" @ %bin;
  107.  
  108. %all = %all @ %bin;
  109. }
  110.  
  111. %len = strLen(%all);
  112.  
  113. for(%i = 0; %i < %len; %i += 6)
  114. {
  115. %pack = getSubStr(%all,%i,6);
  116.  
  117. while(strLen(%pack) < 6)
  118. %pack = %pack @ "0";
  119.  
  120. %dec = convertBase(%pack,"01","0123456789");
  121. %new = %new @ getSubStr(%base64map,%dec,1);
  122. }
  123.  
  124. while(strLen(%new) % 4 > 0)
  125. %new = %new @ "=";
  126.  
  127. return %new;
  128. }
  129.  
  130. function base64Decode(%str)
  131. {
  132. %base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  133. %asciimap = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN" @
  134. "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
  135.  
  136. while(getSubStr(%str,strLen(%str) - 1,1) $= "=")
  137. %str = getSubStr(%str,0,strLen(%str) - 1);
  138.  
  139. %len = strLen(%str);
  140.  
  141. for(%i = 0; %i < %len; %i++)
  142. {
  143. %chr = getSubStr(%str,%i,1);
  144. %pos = strPos(%base64map,%chr);
  145. %bin = convertBase(%pos,"0123456789","01");
  146.  
  147. while(strLen(%bin) < 6)
  148. %bin = "0" @ %bin;
  149.  
  150. %all = %all @ %bin;
  151. }
  152.  
  153. while(strLen(%all) % 8 > 0)
  154. %all = getSubStr(%all,0,strLen(%all) - 1);
  155.  
  156. %len = strLen(%all);
  157.  
  158. for(%i = 0; %i < %len; %i += 8)
  159. {
  160. %bin = getSubStr(%all,%i,8);
  161. %dec = convertBase(%bin,"01","0123456789") - 32;
  162. %chr = getSubStr(%asciiMap,%dec,1);
  163.  
  164. %new = %new @ %chr;
  165. }
  166.  
  167. return %new;
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement