PDA

Просмотр полной версии : LameGuard - шифрование.


DzumoHu4
08.03.2011, 06:17
Давно меня здесь не было, но как видите столкнулся с сервером на котором применяется данный вид защиты.

Внимание все изложенное ниже мои догадки, это не значит что все на самом деле происходит так как я описал.

Начнем с того что я решил напомнить себе про L2, поиграл, побегал, надоело решил "пошаманить" с "заточками"(спасибо NLObP ещё раз за твой труд) но увы, вместо знакомых пакетов увидел нечто что ввело меня в ступор... отвлекся.

Во первых если я верно понял то для сервера и клиента используются разные ключи.
l

package com.lameguard.crypt;
import com.lameguard.Config;
import com.lameguard.crypt.impl.L2C;
import com.lameguard.crypt.impl.L2S;
import com.lameguard.crypt.impl.VMPC;


public class GameCrypt
{

public GameCrypt()
{
isEnabled = false;
isProtected = true;
}

public void setProtected(boolean state)
{
isProtected = state;
}

public void setKey(byte key[])
{
if(isProtected)
{
c = new VMPC();
c.setup(key, Config.LAMEGUARD_CLIENT_CRYPT_IV);
s = ((LameCrypt) (Config.LAMEGUARD_USE_DEFAULT_ENCODER ? ((LameCrypt) (new L2S())) : ((LameCrypt) (new VMPC()))));
s.setup(key, Config.LAMEGUARD_SERVER_CRYPT_IV);
} else
{
c = new L2C();
c.setup(key, null);
s = new L2S();
s.setup(key, null);
}
}

public void decrypt(byte raw[], int offset, int size)
{
if(isEnabled)
c.crypt(raw, offset, size);
}

public void encrypt(byte raw[], int offset, int size)
{
if(isEnabled)
s.crypt(raw, offset, size);
else
isEnabled = true;
}

private LameCrypt c;
private LameCrypt s;
private boolean isEnabled;
private boolean isProtected;
}

Отсюда видно что если Администратор задал ключи в конфиге то их используют, иначе используется упрошенная схема шифрования
Дальше;

package com.lameguard.crypt.impl;

import com.lameguard.crypt.LameCrypt;

public class VMPC
implements LameCrypt
{

public VMPC()
{
n = 0;
P = new byte[256];
s = 0;
}

public void setup(byte key[], byte iv[])
{
s = 0;
for(int i = 0; i < 256; i++)
P[i] = (byte)(i & 0xff);

for(int m = 0; m < 768; m++)
{
s = P[s + P[m & 0xff] + key[m % 64] & 0xff];
byte temp = P[m & 0xff];
P[m & 0xff] = P[s & 0xff];
P[s & 0xff] = temp;
}

for(int m = 0; m < 768; m++)
{
s = P[s + P[m & 0xff] + iv[m % 64] & 0xff];
byte temp = P[m & 0xff];
P[m & 0xff] = P[s & 0xff];
P[s & 0xff] = temp;
}

for(int m = 0; m < 768; m++)
{
s = P[s + P[m & 0xff] + key[m % 64] & 0xff];
byte temp = P[m & 0xff];
P[m & 0xff] = P[s & 0xff];
P[s & 0xff] = temp;
}

n = 0;
}

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);
}

}

private byte n;
private byte P[];
private byte s;
}

Затрудняюсь описать операции так как не силен в яве но по видимому этот фрагмент кода генерирует ключ(поправьте если не прав) из lameguard.Config а именно из этого фрагмента

byte key[] = attrs.getValue("Client-Key").getBytes();
byte tmp[] = new byte[32];
System.arraycopy(key, 0, tmp, 0, 32);
LAMEGUARD_CLIENT_CRYPT_KEY = LameKey.expandKey(tmp, 32);
System.arraycopy(key, 32, tmp, 0, 32);
LAMEGUARD_CLIENT_CRYPT_IV = LameKey.expandKey(tmp, 32);
key = attrs.getValue("Server-Key").getBytes();
System.arraycopy(key, 0, tmp, 0, 32);
LAMEGUARD_SERVER_CRYPT_KEY = LameKey.expandKey(tmp, 32);
System.arraycopy(key, 32, tmp, 0, 32);
LAMEGUARD_SERVER_CRYPT_IV = LameKey.expandKey(tmp, 32);

который в свою очередь расширяется по алгоритму из этого фрагмента LameKey.expandKey....

DzumoHu4
08.03.2011, 06:18
....

package com.lameguard.crypt;


public class LameKey
{

public LameKey()
{
}

public static byte[] expandKey(byte key[], int size)
{
byte P[] = new byte[64];
for(int i = 0; i < 64; i++)
P[i] = key[i % size];

for(int i = 0; i < 256; i++)
{
byte t = P[i % 64];
byte m = (byte)(MGBOX[MGBOX[t & 0xff] & 0xff] & 0xff ^ TKBOX[TKBOX[i] & 0xff] & 0xff);
P[i % 64] = TKBOX[m & 0xff];
}

return P;
}

private static final byte TKBOX[] = {
-112, 22, 124, -93, 68, -116, -19, -125, -4, 101,
-62, 5, 70, 25, 29, 81, 65, -86, 79, -69,
2, 97, -108, -11, -84, -56, 17, 7, 31, 52,
-34, -41, -110, -60, 57, -5, -6, -24, 98, -100,
23, 4, -74, -37, 1, 6, -2, -14, -77, 12,
-7, 3, -29, -17, -75, 49, 44, -78, 94, 21,
0, 35, -18, 83, 9, -42, 60, 93, 54, 20,
-49, 114, 106, -82, 113, -90, 86, -124, -73, -81,
90, 121, 115, 125, 47, 24, -28, 73, 56, -31,
8, 71, 122, 58, -33, 108, -111, 102, -118, -103,
-122, 88, 28, -76, 67, -115, -67, 78, 36, 117,
-8, -25, -97, 107, -91, -50, -53, -52, 111, -114,
-58, -128, 84, -98, 63, 74, 10, 41, -32, 126,
69, -68, 11, -119, -44, -39, -107, -40, 85, -87,
61, 91, -1, 50, -72, -117, 15, 55, -51, 43,
87, 105, 120, -88, 116, 80, -48, -123, -127, -105,
-22, 76, 109, 19, -46, -30, 112, 16, -10, 45,
-63, -47, 123, -106, 27, 38, 104, -70, -79, 18,
-99, -16, -85, -23, 30, -66, 48, -89, -61, -113,
-12, 51, -95, -15, 32, -9, 62, -38, 14, -45,
-80, 66, 100, 103, -104, -27, -43, 110, -83, -26,
-101, 46, -120, -54, 37, 42, 13, 75, 82, -109,
26, -94, -57, -64, 119, 53, 39, -13, -121, 33,
72, -126, -65, -36, -71, 118, -35, 92, 96, 89,
64, 34, -20, -96, 77, 40, 127, -21, 59, -55,
-102, 95, -3, 99, -59, -92
};
private static final byte MGBOX[] = {
-14, -108, 90, 75, 15, 115, -38, -37, -125, 29,
-77, 9, -4, 54, -72, 70, 65, -44, -48, 85,
-13, -121, 118, -102, 40, 53, 113, -5, -9, 28,
3, 125, 21, -124, 10, 67, -6, -98, 96, -105,
-104, 126, -93, 82, -47, 41, -91, 89, -59, 122,
47, 37, -31, 59, 56, 12, -112, -58, -39, -10,
-40, -49, 22, -107, 33, -89, 109, 31, 88, 81,
72, 42, -66, -85, -15, 93, -101, -7, -128, -19,
-27, -90, -11, 111, 49, -70, 121, 79, -123, -127,
-79, 35, -28, 114, -22, 44, -54, 107, 106, 30,
92, 4, -43, -82, -78, -26, -61, 57, 77, 95,
58, 69, -76, 103, -56, 78, 26, -92, 48, -32,
-52, 16, -67, 51, -50, -73, -29, 52, -60, -118,
-1, -80, 63, 2, 124, -36, -65, 8, -33, -115,
-3, 108, -21, 18, 110, 36, -51, 46, -103, 94,
20, -114, 80, 127, -86, 19, -119, -113, 68, -25,
-120, -71, 32, 38, -95, -57, 5, 7, 105, -17,
-34, -81, 24, -74, -35, 100, 1, -46, -94, 43,
13, 17, -87, 11, -69, -62, -126, -63, -64, -23,
-97, 27, -18, -53, 84, 0, -106, -83, 39, 116,
91, 104, 14, -24, -42, 34, -88, -84, 62, 61,
-2, 112, 23, 119, 73, 6, -122, 55, -99, -41,
83, 99, 60, 87, 45, 120, -55, 117, -117, 98,
123, -8, 76, -16, -30, 64, -96, -109, -75, 25,
101, -110, 86, 50, 71, -12, 74, -100, -116, -68,
66, -20, -45, 102, -111, 97
};

}

если же GameCrypt не используется то шифрование проходит по этим алгоритмам(могу ошибаться)
Клиент

package com.lameguard.crypt.impl;

import com.lameguard.crypt.LameCrypt;

public class L2C
implements LameCrypt
{

public L2C()
{
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;
int temp2 = 0;
for(int i = 0; i < size; i++)
{
temp2 = raw[offset + i] & 0xff;
raw[offset + i] = (byte)(temp2 ^ key[i & 0xf] ^ temp);
temp = temp2;
}

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[];
}
...

DzumoHu4
08.03.2011, 06:18
Сервер

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 например)
нестандартные порты(хотя тут могут быть варианты)
Каждый пакет отличается от предидущего чуть больше чем полностью.(хотя тут тоже могут быть варианты)
В общем товарищи развиваем

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

supernewbie
08.03.2011, 10:00
это всё конечно здорово, но... смена алгоритма, апдейтер качает обновление -> тихюй

guplen
08.03.2011, 13:31
Сейчас на любой сраной фришке стоит эта защита. Ничего сделать нельзя.
supernewbie, довай уже, обходи эту зашиту. Тебя в какойто теме учили это делать :)

supernewbie
09.03.2011, 11:14
именно эта - только на этих двух

сниферить могу на всех, кроме как раз этих двух, отправлять сложнее :\

Добавлено через 4 минуты
щас разберусь с 411 и 606 и мб примусь за пх клаб

Добавлено через 11 минут
так, нашел где безобразие.. абазнался :(

Добавлено через 20 часов 38 минут
я понял...

antarius
10.03.2011, 12:38
тоесть там сначало идет пакет от клиента к серверу потом уже его дешифрует что ли?

Добавлено через 20 часов 8 минут
Понел щас сижу в файле енжине.длл смарю его

Tonigop
13.03.2011, 02:47
вы все поняли это канеш харашо нооо
яб тоже хател понять напишыте его )))

vahes
13.03.2011, 12:31
поделюсь своими догадками насчет лейма, видимо в шару попали исходники серверной части, а в клиентской научились перепрошивать ип. Потому как "Сейчас на любой сраной фришке стоит эта защита. Ничего сделать нельзя." и алгоритм шифрации на всех этих говно фришках одинаков, и поскольку берут откуда-то со стороны а не покупают у разработчика то обновления никто ставить не будет(имею ввиду эти говнофришки). Когда-то парился и определил что в клиентской части ип куда ломиться зашит в 2 файла GameGuard.des и Lineage2us.ini. Что алгоритм шифрации одинаков определил путем замены пакета KeyInit после которого начинается шифрация. L2.bin - обычный файл клиента, L2.exe - лоадер, который связывает L2.bin, GameGuard.des и Lineage2us.ini, поскольку не особо силен в программировании особенно на яве и ассемблере значимых успехов в обходе(дешифровке) лейма не добился. Так вот если в системс имеются эти 4 файла то 90%, что там лейм. Кстати пока встречал только на эпилогах.

antarius
14.03.2011, 01:02
поделюсь своими догадками насчет лейма, видимо в шару попали исходники серверной части, а в клиентской научились перепрошивать ип. Потому как "Сейчас на любой сраной фришке стоит эта защита. Ничего сделать нельзя." и алгоритм шифрации на всех этих говно фришках одинаков, и поскольку берут откуда-то со стороны а не покупают у разработчика то обновления никто ставить не будет(имею ввиду эти говнофришки). Когда-то парился и определил что в клиентской части ип куда ломиться зашит в 2 файла GameGuard.des и Lineage2us.ini. Что алгоритм шифрации одинаков определил путем замены пакета KeyInit после которого начинается шифрация. L2.bin - обычный файл клиента, L2.exe - лоадер, который связывает L2.bin, GameGuard.des и Lineage2us.ini, поскольку не особо силен в программировании особенно на яве и ассемблере значимых успехов в обходе(дешифровке) лейма не добился. Так вот если в системс имеются эти 4 файла то 90%, что там лейм. Кстати пока встречал только на эпилогах.

стоит 10 вмз со стороны купить лейму щас 415 лейма стоит почти везде а 606 там привязка по сайту у них...
что касается перепривязки ещё там завязан dsetup.dll всё зашифровоно Themida если что пробуй....

Добавлено через 8 часов 48 минут
//Важнаая инфа точнее вопрос что такое CRC32

package com.lameguard.utils;

public class CRC32
{
public static final int[] table = { 0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274, 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548, 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990, 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096, 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722, 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980, 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974, 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192, 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290, 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444, 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902, 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960, 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506, 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948, 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054, 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912, -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366, -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716, -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770, -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408, -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446, -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492, -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754, -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376, -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662, -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284, -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362, -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400, -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478, -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188, -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682, -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117 };
public static final int INIT = -1;

public static final int update(int crc32, byte[] bytes, int start, int size)
{
for (int i = 0; i < size; ++i)
crc32 = crc32 >>> 8 ^ table[((crc32 ^ bytes[(start + i)]) & 0xFF)];

return crc32;
}

public static final int done(int crc32)
{
return (crc32 ^ 0xFFFFFFFF);
}
}

mira
14.03.2011, 01:41
стоит 10 вмз со стороны купить лейму щас 415 лейма стоит почти везде а 606 там привязка по сайту у них...
что касается перепривязки ещё там завязан dsetup.dll всё зашифровоно Themida если что пробуй....

Добавлено через 8 часов 48 минут
//Важнаая инфа точнее вопрос что такое CRC32

package com.lameguard.utils;

public class CRC32
{
public static final int[] table = { 0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274, 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548, 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990, 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096, 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722, 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980, 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974, 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192, 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290, 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444, 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902, 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960, 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506, 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948, 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054, 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912, -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366, -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716, -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770, -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408, -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446, -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492, -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754, -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376, -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662, -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284, -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362, -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400, -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478, -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188, -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682, -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117 };
public static final int INIT = -1;

public static final int update(int crc32, byte[] bytes, int start, int size)
{
for (int i = 0; i < size; ++i)
crc32 = crc32 >>> 8 ^ table[((crc32 ^ bytes[(start + i)]) & 0xFF)];

return crc32;
}

public static final int done(int crc32)
{
return (crc32 ^ 0xFFFFFFFF);
}
}

контрольная сумма файлов. если она не совпала то файл следует обновить =) по крайней мере апдейтер юзает чексумму и в ключевом пакете она идет на серв. если хоть 1 важный файл будет хоть на байт изменен и при этом не обновлен - сервер откажет в соединении

AHTOWKA
20.03.2011, 11:31
Мне вот ети строчки голову морочят
key[8] = (byte)(old & 0xff);
key[9] = (byte)(old >> 8 & 0xff);
key[10] = (byte)(old >> 16 & 0xff);
key[11] = (byte)(old >> 24 & 0xff);

А что будет если вот ети строчки перевести в байты ?;

key[8] = (old & 0xff);
key[9] = (old >> 08 & 0xff);
key[10] = (old >> 10 & 0xff);
key[11] = (old >> 18 & 0xff);

доложно что то типо токого быть токо цифр больше...
И где ешо 8 7 6 5 4 3 2 1

и доложно навернное как то решится по етой формуле old += size;
мб тогда получится где 9 10 11 байты нешифрируются, тогда ключ будет определить легче?

http://coderx.ru/showthread.php?t=165&highlight=%F8%E8%F4%F0%EE%E2%EA%E0

вот по етой теме надо будет определить как расшифровать и ненадо будет искать 200 алгоритмов.

supernewbie
20.03.2011, 15:47
самое сложное будет если алгоритм шифра в пакете приходит)