Тип контенту
Профили
Форум
Календарь
Все, що було написано Roman Pogosyan
-
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
криптер 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; } -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
инициализация 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 -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
очень мало кода .. и все очень совместимо .. по этому как-то тупо не получается -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
нет в 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; } -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
я как раз компилирую клиент на 64 битной платформе у меня для инициализации идёт пароль приведённый в байт. 7 байтов ничего лишнего (или я что то не догнал ?) -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
меня напрягают несколько моментов в реализации у старгайзера 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 -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
скопировал 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)); } нет приведения из байта в блок и обратно , может в этом дело ? -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
переслал ctxS себе и сравнил со своим ctx -ом ... масивыразные -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
у старгайзера Ctx состоит из long у меня из int , единственное в чем разница , взял другую реализацию результат тот же -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
переделал с аналогом из 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 -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
смотрю: 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); -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
плз ткни меня носом в чем разница в коде ? я вызываю функцию 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 + -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
библиотека взята отсюда http://www.google.com/codesearch#qdP7rZ400ag/src/core/&q=blowfish%20lang:%5Ec%23$&type=cs , и полностью идентична с тем что у старгайзера , думаю что у меня что то не то идет с инициализачией -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
исходя из этого 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! -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
inetaccess.cpp > 18:26:13 > User 'p▒ ▒ ▒▒{]ell▒)▒]ell▒)▒]ell▒)▒' NOT found! -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
ne pomoglo -
Кодирование пакета inetaccess
тема ответил в Roman Pogosyan пользователя Roman Pogosyan в Розробка Stargazer
думаю разница тут 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); -
никак не могу закодировать пакет. Нашол уже готовую реализацию алгоритма шифрования, на C# закодировал LoginS сключем "pr7Hhen" на старгайзере получил User '▒N▒$▒▒▒▒▒O▒▒▒▒▒▒O▒▒▒▒▒▒O▒▒▒' NOT found! у старгайзера есть изменения в алгоритме ?
-
напомните плз адрес qia
-
soglasen no dlya billing eto vazhno
-
Я бы ещё добавил поле в бд , которое помнило последние списание денег у абонента, и при снятии абонентки проверялось бы его значение. Это нашло на меня во время тестирования. Пример: снятие абонентки по дням (не знаю как поведёт себя абонентка по месяцам) если на момент срабатывания действия по снятию ядро биллинга ляжет и абонентка не спишется, то после старта системы было бы правильно это проверить , и списать не списанное
-
ps .. na segodnya poka vse
-
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
-
nashel ... naputal ty s vozvratom true i false
-
kstete i vse eto vrode dzhe ne sletaet po tajmautu