Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Дешифровка и каша для раздумья
#1
Код:
byte Inline(ref uint cry)
{
    cry += 3532013U;
    byte n = (byte)(cry >> 16);
    return (byte)(((int)n == 0) ? 254 : n);
}

byte[] CtoSDecrypt(byte[] BodyPacket, uint UnkKey)
{
    byte[] Array = new byte[BodyPacket.Length];
    uint cry = (uint)((ulong)UnkKey + (ulong)BodyPacket.Length) * UnkKey ^ 1973428001u;
    int n = 4 * (BodyPacket.Length / 4);
    for (int i = n - 1; i >= 0; i--)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    for (int i = n; i < BodyPacket.Length; i++)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    return Array;
}

byte[] StoCDecrypt(byte[] BodyPacket)
{
    byte[] Array = new byte[BodyPacket.Length];
    uint cry = (uint)(BodyPacket.Length ^ 522286496);
    int n = 4 * (BodyPacket.Length / 4);
    for (int i = n - 1; i >= 0; i--)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    for (int i = n; i < BodyPacket.Length; i++)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    return Array;
}

Так как я зашел в тупик и мне не кто не смог помочь, ну что....
Вот собственно то до чего я дошел с Идой.
Ну и собственно сама каша, где или что такое UnkKey который нужен для декрипта C->S пакетов.
Ответ
#2
Лучше зацепится внутри клиента и вытаскивать чистые пакеты после дешифровки. Алгоритм шифрации наверняка будут постоянно усложнять и менять.
Ответ
#3
Увы но для создание емуль мне нужна это декрипт.
Ответ
#4
nikes Написал:
Код:
byte Inline(ref uint cry)
{
    cry += 3532013U;
    byte n = (byte)(cry >> 16);
    return (byte)(((int)n == 0) ? 254 : n);
}

byte[] CtoSDecrypt(byte[] BodyPacket, uint UnkKey)
{
    byte[] Array = new byte[BodyPacket.Length];
    uint cry = (uint)((ulong)UnkKey + (ulong)BodyPacket.Length) * UnkKey ^ 1973428001u;
    int n = 4 * (BodyPacket.Length / 4);
    for (int i = n - 1; i >= 0; i--)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    for (int i = n; i < BodyPacket.Length; i++)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    return Array;
}

byte[] StoCDecrypt(byte[] BodyPacket)
{
    byte[] Array = new byte[BodyPacket.Length];
    uint cry = (uint)(BodyPacket.Length ^ 522286496);
    int n = 4 * (BodyPacket.Length / 4);
    for (int i = n - 1; i >= 0; i--)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    for (int i = n; i < BodyPacket.Length; i++)
        Array[i] = (byte)((uint)BodyPacket[i] ^ (uint)Inline(ref cry));
    return Array;
}

Так как я зашел в тупик и мне не кто не смог помочь, ну что....
Вот собственно то до чего я дошел с Идой.
Ну и собственно сама каша, где или что такое UnkKey который нужен для декрипта C->S пакетов.

лол, что это? Это ксор?:cj:
Ответ
#5
было бы очень офигенно если бы кто-то поделился инфой откуда берется UnkKey
Ответ
#6
Onax Написал:было бы очень офигенно если бы кто-то поделился инфой откуда берется UnkKey
тебе об этом могут рассказать мои друзья Алиса и Боб
Ответ
#7
алиса присылает бобу его?
но я уже перепробовал все варианты типа ворлд-кукисов и прочей мути что идет в первых пакетах

данные меняются при каждом перелогине, ясно это что-то динамическое и присылает сервер(ему же распаков)
трабла что я не шарю в реверсе, если там банально (ворлдкукис ^ 0x25) я никак не найду этот 25
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)