Esempio n. 1
0
 private void crypt(byte[] packet, SGKey key)
 {
     for (int i = 2; i < packet.Length; i++)
     {
         key.var1++;
         key.var1 %= 256;
         key.var2 += key.ContentBytes[key.var1];
         key.var2 %= 256;
         var tmp = key.ContentBytes[key.var1];
         key.ContentBytes[key.var1] = key.ContentBytes[key.var2];
         key.ContentBytes[key.var2] = tmp;
         var index = key.ContentBytes[key.var1] + key.ContentBytes[key.var2];
         index    %= 256;
         packet[i] = (byte)(packet[i] ^ key.ContentBytes[index]);
     }
 }
Esempio n. 2
0
        public void reverseCrypt(byte[] packet, SGKey key)
        {
            for (int i = packet.Length - 1; i > 1; i--)
            {
                var index = key.ContentBytes[key.var1] + key.ContentBytes[key.var2];
                index    %= 256;
                packet[i] = (byte)(packet[i] ^ key.ContentBytes[index]);
                var tmp = key.ContentBytes[key.var1];
                key.ContentBytes[key.var1] = key.ContentBytes[key.var2];
                key.ContentBytes[key.var2] = tmp;

                key.var2 -= key.ContentBytes[key.var1];
                key.var2 += key.var2 < 0 ? 256 : 0;

                key.var1--;
                key.var1 += key.var1 < 0 ? 256 : 0;
            }
        }