Advertisement
Guest User

da

a guest
Apr 24th, 2019
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var firstHost = null;
  2. var xorKey = new Array();
  3. var base64Charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  4. var base64Reverse = new Array();
  5. for(var i = base64Charset.length - 1;i >= 0;i--){
  6.     base64Reverse[base64Charset.charAt(i)] = i;
  7. }
  8. String.prototype.replace = function(searchStr, replaceStr):String {
  9.     var arr:Array = this.split(searchStr);
  10.     return arr.join(replaceStr);
  11. };
  12.  
  13. function encodeBase64(s:Array){
  14.     var r = "";
  15.     var p = "";
  16.     var c = s.length % 3;
  17.     if(c > 0){
  18.         for(;c < 3;c++){
  19.             p += "=";
  20.             s.push(0);
  21.         }
  22.     }
  23.    
  24.     for(c = 0;c < s.length; c+=3){
  25.         var n = (s[c] << 16) + (s[c + 1] << 8) + (s[c + 2]);
  26.        
  27.         r += base64Charset.charAt((n >> 18) & 63) +
  28.                 base64Charset.charAt((n >> 12) & 63) +
  29.                 base64Charset.charAt((n >> 6) & 63) +
  30.                 base64Charset.charAt(n & 63);
  31.     }
  32.    
  33.     return r.substr(0, r.length - p.length) + p;
  34. };
  35.  
  36. function decodeBase64(encoded:String){
  37.     for(var i = 0;i < encodedLength;i++){
  38.         if(base64Charset.indexOf(encodedLength.charAt(i)) == -1){
  39.             encodedLength.replace(encodedLength.charAt(i--), "");
  40.         }
  41.     }
  42.    
  43.     var p = (encoded.charAt(encoded.length - 1) == "=" ?
  44.              (encoded.charAt(encoded.length - 2) == "=" ? "AA" : "A") : "");
  45.     var r = new Array();
  46.     encoded = encoded.substr(0, encoded.length - p.length) + p;
  47.     for(var c = 0;c < encoded.length;c+=4){
  48.         var n = (base64Reverse[encoded.charAt(c)] << 18)
  49.                 + (base64Reverse[encoded.charAt(c+1)] << 12)
  50.                 + (base64Reverse[encoded.charAt(c+2)] << 6)
  51.                 + base64Reverse[encoded.charAt(c+3)];
  52.  
  53.         r.push((n >>> 16) & 255);
  54.         r.push((n >>> 8) & 255);
  55.         r.push(n & 255);
  56.     }
  57.     return r.slice(0, r.length - p.length);
  58. };
  59.  
  60. dofus_aks_Aks.connect = function (sHost, nPort, bSaveHost)
  61. {
  62.     if(firstHost == null || firstHost == sHost){
  63.         xorKey = null;
  64.         firstHost = sHost;
  65.     }
  66.    
  67.     if (bSaveHost == undefined)
  68.     {
  69.         bSaveHost = true;
  70.     } // end if
  71.     if (this._bConnected)
  72.     {
  73.         return (null);
  74.     } // end if
  75.     if (this._bConnecting)
  76.     {
  77.         return (null);
  78.     } // end if
  79.     this.api.ui.loadUIComponent("Waiting", "Waiting", undefined, {bStayIfPresent: true});
  80.     if (sHost == undefined)
  81.     {
  82.         sHost = this.api.datacenter.Basics.serverHost;
  83.     }
  84.     else if (bSaveHost)
  85.     {
  86.         this.api.datacenter.Basics.serverHost = sHost;
  87.     } // end else if
  88.     if (nPort == undefined)
  89.     {
  90.         nPort = this.api.datacenter.Basics.serverPort;
  91.     }
  92.     else if (bSaveHost)
  93.     {
  94.         this.api.datacenter.Basics.serverPort = nPort;
  95.     } // end else if
  96.     this._bConnecting = true;
  97.     this._aLastPings = new Array();
  98.     var connect = this._xSocket.connect(sHost, nPort);
  99.     return (connect);
  100. };
  101. dofus_aks_Aks.onData = function(sData){
  102.     ank.utils.Timer.removeTime(this.Lag,"lag");
  103.     if(this._bLag){
  104.         dofus.utils.Api.getInstance().ui.unloadUIComponent("WaitingMessage");
  105.         ank.utils.Timer.removeTimer(this.Deco, "deco");
  106.         this._bLag = false;
  107.     }
  108.    
  109.     if(this._isWaitingForData){
  110.         this._isWaitingForData = false;
  111.         this.api.ui.unloadUIComponent("Waiting");
  112.         var timer = getTimer() - this._nLastWaitingSend;
  113.         this._aLastPings.push(timer);
  114.         if(this._aLastPings.length > dofus.aks.Aks.EVALUATE_AVERAGE_PING_ON_COMMANDS){
  115.             this._aLastPings.shift();
  116.         }
  117.     }
  118.    
  119.     if(xorKey != null && xorKey.length > 0){
  120.         sData = decodeBase64(sData);
  121.         var finalData:String = "";
  122.         for(var i = 0;i < sData.length;i++){
  123.             finalData += String.fromCharCode(sData[i] ^ (xorKey[xorKey.length - (i % xorKey.length) - 1]));
  124.         }
  125.         sData = finalData;
  126.     }
  127.     else{
  128.         var newXorKey = new Array();
  129.         var xorKeySize = sData.charCodeAt(sData.length - 1);
  130.         for(var i = 0;i < xorKeySize;i++){
  131.             newXorKey.unshift(sData.charCodeAt(sData.length - i - 2));
  132.         }
  133.        
  134.         xorKey = newXorKey;
  135.     }
  136.     if (_global.PRECV)
  137.     {
  138.         this.api.kernel.showMessage(undefined, "Packet reçus : " + "<b>" + sData + "</b>", "DEBUG_CLIENT");
  139.     } // end if
  140.     ank.utils.Logger.log("<< " + sData);
  141.     this._oDataProcessor.process(sData);
  142. };
  143.  
  144. dofus_aks_Aks.send = function (sData, bWaiting, sWaitingMessage, bNoLimit, bNoCyphering)
  145. {
  146.     this.api.kernel.GameManager.signalActivity();
  147.     if (bWaiting || bWaiting == undefined)
  148.     {
  149.         if (sWaitingMessage != undefined)
  150.         {
  151.             this.api.ui.loadUIComponent("WaitingMessage", "WaitingMessage", {text: sWaitingMessage}, {bAlwaysOnTop: true, bForceLoad: true});
  152.         } // end if
  153.         this._sDebug = sData;
  154.         this.api.ui.loadUIComponent("Waiting", "Waiting");
  155.         this._isWaitingForData = true;
  156.         if (this.api.datacenter.Basics.inGame && this._bAutoReco)
  157.         {
  158.             ank.utils.Timer.setTimer(this.Lag, "lag", this, this.onLag, Number(this.api.lang.getConfigText("DELAY_RECO_MESSAGE")));
  159.         } // end if
  160.        
  161.     } // end if
  162.    
  163.     while(sData.charAt(sData.length -1) == '\n' || sData.charAt(sData.length - 1) == '\r'){
  164.         sData = sData.substr(0, sData.length - 1);
  165.     }
  166.     ank.utils.Logger.log(">> [NC] " + sData);
  167.  
  168.     if (_global.PSEND)
  169.     {
  170.         this.api.kernel.showMessage(undefined, "Envoie du packet : " + "<b>" + sData + "</b>", "DEBUG_PAKET");
  171.     } // end if
  172.  
  173.     var finalData:Array = new Array();
  174.     for(var i = 0;i < sData.length;i++){
  175.         finalData.push(sData.charCodeAt(i) ^ (xorKey[i % xorKey.length]));
  176.     }
  177.     finalData = encodeBase64(finalData);
  178.     ank.utils.Logger.log("[" + finalData + "] => " + decipherStrData);
  179.     this._xSocket.send(finalData);
  180.     if (bWaiting || bWaiting == undefined)
  181.     {
  182.         this._nLastWaitingSend = getTimer();
  183.     } // end if
  184. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement