Перейти до

Roman Pogosyan

Сitizens
  • Всього повідомлень

    255
  • Приєднався

  • Останній візит

Все, що було написано Roman Pogosyan

  1. криптер public void Encipher(ref uint xl, ref uint xr) { uint Xl; uint Xr; uint temp; short i; Xl = xl; Xr = xr; for (i = 0; i < N; ++i) { Xl = Xl ^ P[i]; Xr = F(Xl) ^ Xr; temp = Xl; Xl = Xr; Xr = temp; } temp = Xl; Xl = Xr; Xr = temp; Xr = Xr ^ P[N]; Xl = Xl ^ P[N + 1]; xl = Xl; xr = Xr; }
  2. инициализация public Blowfish(byte[] key) { short i; short j; short k; uint data; uint datal; uint datar; P = _P.Clone() as uint[]; S = _S.Clone() as uint[,]; j = 0; for (i = 0; i < N + 2; ++i) { data = 0x00000000; for (k = 0; k < 4; ++k) { data = (data << 8) | key[j]; j++; if (j >= key.Length) { j = 0; } } P[i] = P[i] ^ data; } datal = 0x00000000; datar = 0x00000000; for (i = 0; i < N + 2; i += 2) { Encipher(r
  3. очень мало кода .. и все очень совместимо .. по этому как-то тупо не получается
  4. нет в C# при перекодировке стринга в байт выходит 7 байтов которые используются тут for (i = 0; i < N + 2; ++i) { data = 0x00000000; for (k = 0; k < 4; ++k) { data = (data << 8) | key[j]; j++; if (j >= key.Length) { j = 0; } } P[i] = P[i] ^ data; }
  5. я как раз компилирую клиент на 64 битной платформе у меня для инициализации идёт пароль приведённый в байт. 7 байтов ничего лишнего (или я что то не догнал ?)
  6. меня напрягают несколько моментов в реализации у старгайзера 1) масивы для ctx static const uint32_t ORIG_P[16 + 2] = { 0x243F6A88L, 0x85A308D3L, 0x13198A2EL, 0x03707344L, 0xA4093822L, 0x299F31D0L, 0x082EFA98L, 0xEC4E6C89L, 0x452821E6L, 0x38D01377L, 0xBE5466CFL, 0x34E90C6CL, 0xC0AC29B7L, 0xC97C50DDL, 0x3F84D5B5L, 0xB5470917L, 0x9216D5D9L, 0x8979FB1BL }; у них на конце L , то биш они long но описание масива идет как unsigned int (думаю отсюда идет разница ctx) 2) Инициализация ctx void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen) { int i, j, k; uint32_t data, data
  7. скопировал blowfish.cpp перевёл его в вид для C# 100% теперь реализация не отличается .. но все равно inetaccess.cpp > 11:45:41 > User '2▒▒▒u\▒▒▒▒▒da▒▒▒▒▒da▒▒▒▒▒da' NOT found! но появилась мысля .. в // Шифруем LoginS int db = sizeof(HDR_8);for (int i = 0; i < IA_LOGIN_LEN/8; i++) { Blowfish_Encrypt(&ctxHdr, (uint32_t*)(buffer + db + i*8), (uint32_t*)(buffer + db + i*8 + 4)); } нет приведения из байта в блок и обратно , может в этом дело ?
  8. переслал ctxS себе и сравнил со своим ctx -ом ... масивыразные
  9. у старгайзера Ctx состоит из long у меня из int , единственное в чем разница , взял другую реализацию результат тот же
  10. переделал с аналогом из common , и так функции private uint byte2block(byte[] c) { int pos = 0; uint t = (uint)c[pos]; pos++; t += (uint)c[pos] << 8; pos++; t += (uint)c[pos] << 16; pos++; t += (uint)c[pos] << 24; pos++; return t; } void block2bytes(uint t, byte[] c) { int pos = 0; c[pos] = (byte)(t ); pos++; c[pos] = (byte)(t >> 8 ); pos++; c[pos] = (byte)(t >> 16 ); pos++; c[pos] = (byte)(t >> 24 ); pos++; } само шифрование string strkey = "pr7Hhen";//pr7Hhen UTF8En
  11. смотрю: int32_t bytes2block(const char * c) { uint32_t t = static_cast<unsigned char>(*c++); t += static_cast<unsigned char>(*c++) << 8; t += static_cast<unsigned char>(*c++) << 16; t += static_cast<unsigned char>(*c) << 24; return t; } если представить что *с это массив из 4-х элементов то выходит xl = (uint)((data[i]) | (data[i + 1] << 8) | (data[i + 2] << 16) | data[i + 3]<<24); И обратное преобразование data[i] = (byte)(xl ); data[i + 1] = (byte)(xl>>8); data[i + 2] = (byte)(xl >> 16);
  12. плз ткни меня носом в чем разница в коде ? я вызываю функцию private void Encipher(ref uint xl, ref uint xr) (сделал ее пабликом) вроде никаких расхождений со старгайзеровой Blowfish_Encrypt там уже вместо int db = sizeof(HDR_8); for (int i = 0; i < IA_LOGIN_LEN/8; i++) { Blowfish_Encrypt(&ctxHdr, (uint32_t*)(buffer + db + i*8), (uint32_t*)(buffer + db + i*8 + 4)); } for (int i = 0; i < IA_LOGIN_LEN/8; i++){ xl = (uint)((data[i*8] << 24) | (data[i*8 + 1] << 16) | (data[i*8 + 2] << 8) | data[i*8 + 3]); xr = (uint)((data[i*8 + 4] << 24) | (data[i*8 +
  13. библиотека взята отсюда http://www.google.com/codesearch#qdP7rZ400ag/src/core/&q=blowfish%20lang:%5Ec%23$&type=cs , и полностью идентична с тем что у старгайзера , думаю что у меня что то не то идет с инициализачией
  14. исходя из этого for (int i = 0; i < IA_LOGIN_LEN/8; i++) { Blowfish_Encrypt(&ctxHdr, (uint32_t*)(buffer + db + i*8), (uint32_t*)(buffer + db + i*8 + 4)); } должно получится следущее for (int i =0;i< length/8;i ++) { но в данном случае выходит inetaccess.cpp > 18:40:37 > User '▒z▒▒' NOT found!
  15. inetaccess.cpp > 18:26:13 > User 'p▒ ▒ ▒▒{]ell▒)▒]ell▒)▒]ell▒)▒' NOT found!
  16. думаю разница тут public void Encipher(byte[] data, int length) { uint xl, xr; if ((length % 8) != 0) throw new Exception("Invalid Length"); for (int i = 0; i < length; i += 8) { // Encode the data in 8 byte blocks. xl = (uint)((data[i] << 24) | (data[i + 1] << 16) | (data[i + 2] << 8) | data[i + 3]); xr = (uint)((data[i + 4] << 24) | (data[i + 5] << 16) | (data[i + 6] << 8) | data[i + 7]); Encipher(ref xl, ref xr); // Now Replace the data. data[i] = (byte)(xl >> 24);
  17. никак не могу закодировать пакет. Нашол уже готовую реализацию алгоритма шифрования, на C# закодировал LoginS сключем "pr7Hhen" на старгайзере получил User '▒N▒$▒▒▒▒▒O▒▒▒▒▒▒O▒▒▒▒▒▒O▒▒▒' NOT found! у старгайзера есть изменения в алгоритме ?
  18. Roman Pogosyan

    InetAccess на tcp

    напомните плз адрес qia
  19. Roman Pogosyan

    stg-2.408-rc1

    soglasen no dlya billing eto vazhno
  20. Roman Pogosyan

    stg-2.408-rc1

    Я бы ещё добавил поле в бд , которое помнило последние списание денег у абонента, и при снятии абонентки проверялось бы его значение. Это нашло на меня во время тестирования. Пример: снятие абонентки по дням (не знаю как поведёт себя абонентка по месяцам) если на момент срабатывания действия по снятию ядро биллинга ляжет и абонентка не спишется, то после старта системы было бы правильно это проверить , и списать не списанное
  21. Roman Pogosyan

    stg-2.408-rc1

    ps .. na segodnya poka vse
  22. Roman Pogosyan

    stg-2.408-rc1

    v obshem dolzhno byt' if (!users->Authorize(ui->GetLogin(), packet->ip, 0xffFFffFF, this)) tak kak if dolzhen srabaryvat' kogda oshibka avtorizacii a ne kogda ona proshla udachno
  23. Roman Pogosyan

    stg-2.408-rc1

    nashel ... naputal ty s vozvratom true i false
  24. Roman Pogosyan

    stg-2.408-rc1

    kstete i vse eto vrode dzhe ne sletaet po tajmautu
×
×
  • Створити нове...