Показать сообщение отдельно
Старый 08.03.2011, 06:18   #3
Пользователь
 
Аватар для DzumoHu4
 
Регистрация: 28.06.2008
Сообщений: 73
Сказал Спасибо: 7
Имеет 24 спасибок в 16 сообщенях
DzumoHu4 пока неопределено
По умолчанию

Сервер
Код:
package com.lameguard.crypt.impl;

import com.lameguard.crypt.LameCrypt;

public class L2S
    implements LameCrypt
{

    public L2S()
    {
        key = new byte[16];
    }

    public void setup(byte key[], byte iv[])
    {
        System.arraycopy(key, 0, this.key, 0, 16);
    }

    public void crypt(byte raw[], int offset, int size)
    {
        int temp = 0;
        for(int i = 0; i < size; i++)
        {
            int temp2 = raw[offset + i] & 0xff;
            temp = temp2 ^ key[i & 0xf] ^ temp;
            raw[offset + i] = (byte)temp;
        }

        int old = key[8] & 0xff;
        old |= key[9] << 8 & 0xff00;
        old |= key[10] << 16 & 0xff0000;
        old |= key[11] << 24 & 0xff000000;
        old += size;
        key[8] = (byte)(old & 0xff);
        key[9] = (byte)(old >> 8 & 0xff);
        key[10] = (byte)(old >> 16 & 0xff);
        key[11] = (byte)(old >> 24 & 0xff);
    }

    private byte key[];
}
Ключи задаются отдельно для Сервера и Клиента;
После этого числовые ключи помещаются в байт массив, которые "расширяются функцией LameCrypt.expandKey.
Дальше затрудняюсь описать так как плохо понимаю яву но предполагаю следующее.
c.setup(ключ.Начальный,Расширенная версия) - клиент
s.setup(ключ.Начальный,Расширенная версия) - сервер
Расшифровка пакетов от клиента выполняется функцией из VMPC()
Код:
 public void crypt(byte raw[], int offset, int size)
    {
        for(int i = 0; i < size; i++)
        {
            s = P[s + P[n & 0xff] & 0xff];
            byte z = P[P[P[s & 0xff] & 0xff] + 1 & 0xff];
            byte temp = P[n & 0xff];
            P[n & 0xff] = P[s & 0xff];
            P[s & 0xff] = temp;
            n = (byte)(n + 1 & 0xff);
            raw[offset + i] = (byte)(raw[offset + i] ^ z);
        }

    }
В которой задается размер, смещение....
Пока все может будут новые мысли.Буду писать сюда.(и вам рекомендую)
Как определить что сервер под защитой LameGuard
l2.bin как процесс клиента
папки на сайте с апдейтером(lame/updater.exe например)
нестандартные порты(хотя тут могут быть варианты)
Каждый пакет отличается от предидущего чуть больше чем полностью.(хотя тут тоже могут быть варианты)
В общем товарищи развиваем

Если вы решили что я написал херню(я яву плохо знаю о чем писал выше) уважайте чувства автора бишь меня, "помягше" как говорил Аркадий Райкин.

Последний раз редактировалось DzumoHu4, 08.03.2011 в 06:23.
DzumoHu4 вне форума   Ответить с цитированием