Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Blade & Soul (https://forum.zone-game.info/forumdisplay.php?f=183)
-   -   Blade and Soul Source (https://forum.zone-game.info/showthread.php?t=33595)

Dolwin 26.01.2014 18:54

Re: Blade and Soul Source
 
В общем в клиенте изменена функция SHA256
Она позволяет установить "глубину" хеша!
Для логина она дописывает "@plaync.co.kr" и вычисляется с глубиной в один проход и в три прохода
Пока что не могу понять для чего 3 и для чего 1...
Если кто то разобрался - помогите плиз
Код:

  H0 = 1779033703;
  H1 = -1150833019;
  H2 = 1013904242;
  H3 = -1521486534;
  H4 = 1359893119;
  H5 = -1694144372;
  H6 = 528734635;
  H7 = 1541459225;
  if ( loopCount )
  {
    i = loopCount;
    do
    {
      sub_1001A4A0(*(v4 + a3 - a4), &v8, *v4);
      ++v4;
    }
    while ( i-- != 1 );
  }
  return SHA2MLoop(a1, &v8);


Dizband 26.01.2014 19:17

Re: Blade and Soul Source
 
Цитата:

Сообщение от Dolwin (Сообщение 348399)
Для логина она дописывает "@plaync.co.kr"

Постфикс берется из конфига.

Dolwin 26.01.2014 19:18

Re: Blade and Soul Source
 
Цитата:

Сообщение от n0nam3 (Сообщение 348401)
Постфикс берется из конфига.

Кажись понял что это:
Код:

do
    {
      sub_1001A4A0(*(v4 + a3 - a4), &v8, *v4);
      ++v4;
    }
    while ( i-- != 1 );

Сначало вызывается sub_1001A4A0 для логина потом для какой то константы а потом дял пароля
После чего вызывается финальный метод

Добавлено через 8 минут
Ееееее
успех!!!!!
Хеш шифруется в обычном SHA256 в виде:
LOGIN@plaync.co.kr:PASSWORD
например
admin@plaync.co.kr:root

Добавлено через 2 часа 29 минут
Код:

signed int __thiscall splitKeyData(void *this, int a2, int a3, unsigned int a4, int a5)
{
  unsigned int v5; // eax@1
  void *v6; // edi@1
  int v7; // ebx@2
  int v8; // eax@3
  unsigned int *v9; // esi@5
  int v10; // ebx@6
  int v11; // eax@12
  int v12; // eax@12
  signed int result; // eax@14
  int v14; // eax@14
  char v15; // [sp-Ch] [bp-ECh]@12
  int v16; // [sp-8h] [bp-E8h]@12
  char v17; // [sp-4h] [bp-E4h]@12
  char v18; // [sp+Ch] [bp-D4h]@12
  char v19; // [sp+2Ch] [bp-B4h]@1
  char v20; // [sp+40h] [bp-A0h]@1
  char v21; // [sp+54h] [bp-8Ch]@1
  char v22; // [sp+68h] [bp-78h]@1
  char v23; // [sp+7Ch] [bp-64h]@14
  char v24; // [sp+90h] [bp-50h]@12
  char v25; // [sp+A4h] [bp-3Ch]@1
  char v26; // [sp+B8h] [bp-28h]@13
  char v27; // [sp+CCh] [bp-14h]@1
  unsigned int v28; // [sp+F0h] [bp+10h]@1

  v6 = this;
  sub_1001C8C0(&v25);
  sub_1001C8C0(&v27);
  sub_1001C8C0(&v22);
  sub_1001C8C0(&v19);
  sub_1001C8C0(&v21);
  sub_1001C8C0(&v20);
  v5 = a4;
  v28 = a4 + a5;
  if ( v5 < 4 || (v7 = *a5 + 4, v5 < v7) )
  {
    sub_1001BD70(&v25);
    v8 = 0;
  }
  else
  {
    subArray(&v25, *a5, a5 + 4);
    v8 = v7;
  }
  v9 = (v8 + a5);
  if ( v28 - (v8 + a5) < 4 || (v10 = *v9 + 4, v28 - v9 < v10) )
  {
    sub_1001BD70(&v27);
    v10 = 0;
  }
  else
  {
    subArray(&v27, *v9, (v9 + 1));
  }
  if ( (v9 + v10) == v28 && sub_1001BC40(&v27, 0) && sub_1001BC80(&unk_1004578C) < 0 )
  {
    (*(v6 + 2))(32, &v18);
    subArray(&v22, 0x20u, &v18);
    sub_1001CCE0(v6 + 76, 2u, &v22, &unk_1004578C);
    v16 = sub_1001BCD0(&v17);
    v11 = sub_1001BCD0(&v15);
    sub_10031530(&v19, v11, *&v15, v16, *&v17);
    v16 = (v6 + 44);
    *&v17 = 32;
    v12 = sub_1001BCD0(&v15);
    sub_10031530(&v21, v12, *&v15, v16, *&v17);
    sub_1001C8C0(&v24);
    sub_1001C8E0(&v27);
    sub_1001CCE0(&v24, 2u, &v21, &unk_1004578C);
    sub_1001D0D0(&v24, &unk_100457B4, &unk_1004578C);
    while ( sub_1001BC80(&v24) < 0 )
      sub_1001BF20(&v26, &unk_1004578C);
    sub_1001C7F0(&v26, &v24);
    sub_1001C8C0(&v23);
    sub_1001C180(&v19, &v21);
    sub_1001BF20(&v23, &v22);
    sub_1001D0B0(&v23, &unk_1004578C);
    sub_1001D190(&v26, &v23, &unk_1004578C);
    sub_1001BEF0(&v23);
    sub_1001BEF0(&v26);
    sub_1001BEF0(&v24);
    v14 = sub_1001BCD0(&v17);
    sub_10031400(v6 + 128, v14, *&v17);
    sub_100315B0(v6 + 96, v6 + 12, v6 + 76, &v27, v6 + 128);
    *&v15 = &v17;
    *(a3 + 8) = 0;
    v16 = sub_1001BCD0(*&v15);
    sub_100318C0(a3, v16, *&v17);
    sub_100318C0(a3, (v6 + 96), 32);
    *(v6 + 1) = 2;
    *a2 = 0;
    sub_1001BEF0(&v20);
    sub_1001BEF0(&v21);
    sub_1001BEF0(&v19);
    sub_1001BEF0(&v22);
    sub_1001BEF0(&v27);
    sub_1001BEF0(&v25);
    result = 1;
  }
  else
  {
    sub_1001BEF0(&v20);
    sub_1001BEF0(&v21);
    sub_1001BEF0(&v19);
    sub_1001BEF0(&v22);
    sub_1001BEF0(&v27);
    sub_1001BEF0(&v25);
    result = 0;
  }
  return result;
}

Парсинг ключа от сервера
Пока что нихрена не понятно кроме того что клиент юзат операции закрытого ключа(
Код:

BOOL __cdecl sub_1001D720(DWORD dwLen, BOOL a2)
{
  BOOL result; // eax@2
  DWORD v3; // esi@3
  char v4; // [sp+0h] [bp-10h]@2
  HCRYPTPROV hProv; // [sp+8h] [bp-8h]@1
  unsigned int v6; // [sp+Ch] [bp-4h]@1
  int v7; // [sp+10h] [bp+0h]@1

  v6 = &v7 ^ __security_cookie;
  hProv = 0;
  if ( CryptAcquireContextA(&hProv, 0, 0, 1u, 0xF0000028u) )
  {
    v3 = dwLen;
    _alloca_probe_16(v4);
    if ( CryptGenRandom(hProv, dwLen, &v4) )
    {
      result = CryptReleaseContext(hProv, 0);
      if ( !result )
        result = sub_1001E120(2, "CryptReleaseContext failed", v4);
      if ( dwLen )
      {
        result = a2;
        do
        {
          *result ^= *(&v4 + result - a2);
          ++result;
          --v3;
        }
        while ( v3 );
      }
    }
    else
    {
      result = sub_1001E120(2, "CryptGenRandom failed", v4);
    }
  }
  else
  {
    result = sub_1001E120(2, "CryptAcquireContext failed", v4);
  }
  return result;
}


luna9966 28.01.2014 01:36

Re: Blade and Soul Source
 
Решил немного помогать этому проекту и делиться некоторыми наработками. Так что дела пойдут в гору.

hex1r0 28.01.2014 10:26

Re: Blade and Soul Source
 
рад что комьюнити объединяется

Dolwin 31.01.2014 15:23

Re: Blade and Soul Source
 
Добавлены базовые роуты и базовые ключи для обмена ключами
https://github.com/OpenBNS/server/bl...etHandler.java
https://github.com/OpenBNS/server/bl...eyManager.java


Текущее время: 14:12. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot