Roman Pogosyan 3 Опубліковано: 2011-09-29 12:06:41 Автор Share Опубліковано: 2011-09-29 12:06:41 ну тогда я вообще ничерта не пойму , вспомнил про bloc2byte посмотрел в тесте он в обратном порядке , разозлился , заменил у старгайзера порядок (ведь с тесом сошлось кодирование слова) скомпилировал старгайзер заново , сделал make uninstall для пущей точности, создал чистый пакет в 96 байт (чтоб исключить разницу в структурах C и C#) вписываю в первые 6 байтов "00100", 6-7 > 0 и 8 соответсвенно , с 9 байта вписываю логин остальные до оставляю нулевыми , кодирую байты с 8по 40-ой ... и посылаю inetaccess.cpp > 17:06:40 > User '▒}▒▒ǁ▒▒▒ad▒▒▒▒▒ad▒▒▒▒▒ad▒▒' NOT found! реальный "ад ад ад " Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-29 12:33:31 Share Опубліковано: 2011-09-29 12:33:31 ну тогда я вообще ничерта не пойму , вспомнил про bloc2byte посмотрел в тесте он в обратном порядке , разозлился , заменил у старгайзера порядок (ведь с тесом сошлось кодирование слова) скомпилировал старгайзер заново , сделал make uninstall для пущей точности, создал чистый пакет в 96 байт (чтоб исключить разницу в структурах C и C#) вписываю в первые 6 байтов "00100", 6-7 > 0 и 8 соответсвенно , с 9 байта вписываю логин остальные до оставляю нулевыми , кодирую байты с 8по 40-ой ... и посылаю inetaccess.cpp > 17:06:40 > User '▒}▒▒ǁ▒▒▒ad▒▒▒▒▒ad▒▒▒▒▒ad▒▒' NOT found! реальный "ад ад ад " Злость - плохой помощник Не надо ничего в Stargazer'е менять, там все правильно. А тест (по крайней мере первый) делался специально для BE-платформы. Потому и порядок там обратный. Вообще, если честно, я уже и сам не помню что там в том тесте. Я ним просто хотел продемонстрировать принцип отладки: берем шифруем последовательность на сервере, шифруем на клиенте и сравниваем. Не нужно считать тест эталоном, эталон - stargazer. Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 12:45:04 Автор Share Опубліковано: 2011-09-29 12:45:04 прикол в том что у меня совпало закодированное как раз с обратным порядком как на be платформе Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 13:08:56 Автор Share Опубліковано: 2011-09-29 13:08:56 взял blowgish.c старгайзера , закодировал им строку в 16 байт , закодировал своим криптером в 16 байт совпадают тем же кодирую пакет передаю по сети . User '▒▒▒▒▒da▒▒▒▒▒da▒▒▒▒▒da▒▒▒▒▒da' NOT found! Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-29 13:17:44 Share Опубліковано: 2011-09-29 13:17:44 Покажи как кодируешь Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 13:22:19 Автор Share Опубліковано: 2011-09-29 13:22:19 private void button1_Click(object sender, EventArgs e) { string original = "1234567812345678"; byte[] encrypted; byte[] decrypted; string password = "pr7Hhen"; int length = 16; int i; BlowFish bf = new BlowFish(Encoding.UTF8.GetBytes(password)); richTextBox1.Text += String.Format("Original string: {0}", original); encrypted=bf.Encrypt_ECB(Encoding.UTF8.GetBytes(original)); string encstr=""; for (i = 0; i < 16; ++i) { encstr+=String.Format(" {0:X}", encrypted[i] & 0x000000FF); } richTextBox1.Text += "\n Encrypted " + encstr; } } Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 13:23:31 Автор Share Опубліковано: 2011-09-29 13:23:31 cat test.c #include <stdint.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include "stg/blowfish.h" uint32_t n2l(const unsigned char * c) { uint32_t t = *c++ ; t += *c++ << 8; t += *c++ << 16; t += *c<<24; return t; } void l2n(uint32_t t, unsigned char * c) { *c++ = t & 0x000000FF; *c++ = t >> 8 & 0x000000FF; *c++ = t >> 16 & 0x000000FF; *c = t >> 24 & 0x000000FF; } void Encrypt(BLOWFISH_CTX * ctx, const char * src, char * dst, int length) { uint32_t a; uint32_t b; int i; for (i = 0; i < length / 8; ++i) { a = n2l(src + i * 8); b = n2l(src + i * 8 + 4); Blowfish_Encrypt(ctx, &a, &; l2n(a, dst + i * 8); l2n(b, dst + i * 8 + 4); } } void Decrypt(BLOWFISH_CTX * ctx, const char * src, char * dst, int length) { uint32_t a; uint32_t b; int i; for (i = 0; i < length / 8; ++i) { a = n2l(src + i * 8); b = n2l(src + i * 8 + 4); Blowfish_Decrypt(ctx, &a, &; l2n(a, dst + i * 8); l2n(b, dst + i * 8 + 4); } } int main() { char * original = "1234567812345678"; char * encrypted; char * decrypted; char * password = "pr7Hhen"; int length = 16; int i; BLOWFISH_CTX ctx; Blowfish_Init(&ctx, password, strlen(password)); encrypted = (char *) malloc(17); decrypted = (char *) malloc(17); *(encrypted + 16) = 0; *(decrypted + 16) = 0; // printf("Original string: '%s'\n", *original); for (i = 0; i < 16; ++i) { printf("%.2x ", *(original + i) & 0x000000FF); } Encrypt(&ctx, original, encrypted, 16); printf("Encrypted string: "); for (i = 0; i < 16; ++i) { printf("%.2x ", *(encrypted + i) & 0x000000FF); } printf("\n"); Decrypt(&ctx, encrypted, decrypted, 16); printf("Decrypted string: '%s'\n", decrypted); free(encrypted); free(decrypted); return EXIT_SUCCESS; } Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 13:25:15 Автор Share Опубліковано: 2011-09-29 13:25:15 test out Encrypted string: e7 b0 9e e4 16 21 62 ca e7 b0 9e e4 16 21 62 ca Decrypted string: '1234567812345678' программа Original string: 1234567812345678 Encrypted E7 B0 9E E4 16 21 62 CA E7 B0 9E E4 16 21 62 CA Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 13:29:23 Автор Share Опубліковано: 2011-09-29 13:29:23 кодирование C# отсюда http://www.schneier.com/code/blowfish.cs только / /ToUInt32 requires the bytes in reverse order закоментировал // Array.Reverse(block1); // Array.Reverse(block2); Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 13:31:37 Автор Share Опубліковано: 2011-09-29 13:31:37 прикол только в том что после отсылки этого пакета старгайзер его как то не понимает Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-29 13:52:55 Share Опубліковано: 2011-09-29 13:52:55 Значит проблема в том как ты кодируешь блоки протокола. Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 14:32:56 Автор Share Опубліковано: 2011-09-29 14:32:56 я еще не дошел до того чтоб закодировать весь протокол , я только пытаюсь закодировать первые 32 байта Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-29 14:45:30 Share Опубліковано: 2011-09-29 14:45:30 Первые 32 байта шифровать бессмысленно. Сперва идут 8 байт заголовка, который не шифруется. А уже за ним следует зашифрованный пароль. Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 15:00:07 Автор Share Опубліковано: 2011-09-29 15:00:07 уверен что не там рою .. дабавил в inetaccess.cpp кусок кода для вывода закодированной части LoginS на логин "roman" получил вот что " 5d 4d 95 b9 10 c7 d7 c0 cd 2a 2f 49 b1 e4 0a 91 cd 2a 2f 49 b1 e4 0a 91 cd 2a 2f 49 b1 e4 0a 91" (если пользоватся стандартным авторизатором) ну да я про те 8 не говорю Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 15:02:08 Автор Share Опубліковано: 2011-09-29 15:02:08 когда осылаю своим получаю 3c 0a 17 05 0e a2 b7 e0 80 b8 73 7c 1c a0 87 43 80 b8 73 7c 1c a0 87 43 80 b8 73 7c 1c a0 87 43 test тоже дает 3c 0a 17 05 0e a2 b7 e0 80 b8 73 7c 1c a0 87 43 80 b8 73 7c 1c a0 87 43 80 b8 73 7c 1c a0 87 43 Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-29 15:45:06 Share Опубліковано: 2011-09-29 15:45:06 Попробуй получить результат с помощью EncodeString/DecodeString - именно эти функции используются в авторизаторе и в плагине. Только обрати внимание на то что они хоть и называются *String, но шифруют только 8 байт. По этому должны использоваться примерно так: //----------------------------------------------------------------------------- inline void Decrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8) { for (int i = 0; i < len8; i++) DecodeString(dst + i * 8, src + i * 8, ctx); } //----------------------------------------------------------------------------- inline void Encrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8) { for (int i = 0; i < len8; i++) EncodeString(dst + i * 8, src + i * 8, ctx); } Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 17:32:42 Автор Share Опубліковано: 2011-09-29 17:32:42 без разницы .. тут дело в другом если original из 8 байт то коды совпадают иначе рознятся это в test.c а в старгайзере при посилке того же через клиент (заводской) совсем иное Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-09-29 20:31:23 Автор Share Опубліковано: 2011-09-29 20:31:23 Блин .. это полный писец ... столько мучений и переделок в коде .. опухания и нервов и все из за тупо незамеченной инициализации ... а я все думал почему же у меня ctx разнится .. а оказывается что там не Blowfish_init а InitEncrypt который добавляет pr7Hhen еще много нулевых байтов ) все .. закодировал на конец Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас