PDA

Просмотр полной версии : Стандартный Алгоритм шифрации L2 C#


Deadly
11.03.2013, 21:20
Если вы играете на сервере, на нем много народу, и нету бота в шаре(ток у избранных) пишите пм адрес сервера(и если знаете текущую ситуацию с этим тоже пишите, и если знаете обход шифрации запилю бесплатно).
А да сам код
/*
1 - передаче подлежит полный пакет без обрезанных первых 2 байт;
2 - по идее должно быть 4 ключа, 1-н которым шифрует от сервера другой который шифрует до клиента и еще 2 от клиента до сервера логичне всего определить эти 4 ключа гдето в начале программы, алгоритм должен быть следующим 1 ключ на дешифровку от сервера 1 ключ на шифровку к клиенту, и в конце оба ключа должны по идеии увеличиваться на то число байт на которое были увеличины или уменьшены, еще нужно передать размер сообщения не забываем про первые 2 байта;
3 - мы можем впринципе ничего не возращать тк все изменяется во время выполнения;
4 - это для гс не забываем что шифтрация начинается с 3 пакета
*/


using System;
namespace Crypt
{
public class Crypt
{


void crypt(ref byte[] data,int length,ref byte[] key) //1
{
byte temp1 = 0;
for (int i = 2; i < length; i++)
{
byte temp2 = data[i];
data[i] = Convert.ToByte((temp2 ^ (key[(i - 2) % 16]) ^ temp1));
temp1 = temp2;
}
//расшифрован
//Здесь можно произвести какието махинации, если меняется длинна пакета то необходимо изменить размер
//шифровка
temp1 = 0;
for (int i = 2; i < length; i++)
{
byte temp2 = data[i];
data[i] = Convert.ToByte((temp2 ^ (key[(i - 2) % 16]) ^ temp1));
temp1 = data[i];
}
BitConverter.GetBytes(BitConverter.ToInt64(key, 8) + length - 2).CopyTo(key, 8); // забавно на сколько c# облегчил жизнь)))
}
}
}


думаю многим будет полезно.

rszpua
27.04.2013, 15:31
Спасибо, да действительно, теперь хотя бы понятно как это работает. =)