|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.03.2011, 11:33 | #1 |
Регистрация: 13.03.2011
Сообщений: 5
|
подобрать алгоритм расчета контрольной суммы
Здравствуйте.
Имеются клиент и сервер которые обмениваются данными по сети. На каждый пакет клиента сервер отвечает пакетом данных по 9 байт. Первые два и последний во всех пакетах одинаковые. Предпоследний - это контрольная сумма вычисленная по 3ему,4,5,6, и 7му байтам. Собственно в этом и проблема, никак не пойму алгоритма расчета. Очень прошу гляньте свежим взглядом, боюсь ответ на поверхности просто у меня "инерция мышления" уже. Прилагаю исходник моей небольшой программки(C++), в которой присутствует моя функция по расчеты к.суммы. Программка Считывает байты из текстового фала №1, рассчитывает по ним к.сумму и сравнивает с к.суммой из этого же файла. Если не совпадает, то записывает в текстовый файл №2. Текстовый файл №1 это пакеты полученный с реального(работающего) сервера этой системы. Код:
http://ifolder.ru/22372843 - Текстовый файл №2(*.zip) Последний раз редактировалось Stilet; 13.03.2011 в 12:47. |
13.03.2011, 12:49 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А если использовать функцию Win API CheckSumMappedFile?
Или программа не под винду?
I'm learning to live...
|
13.03.2011, 13:28 | #3 |
Регистрация: 13.03.2011
Сообщений: 5
|
Наверное я не так изложил задачу.
Имеется работающая клиент-серверная система. Я не имею доступа к исходникам сервера и не располагаю каким-либо описанием протокола обмена между сервером и клиентом. У меня есть клиенты от этой системы и я пишу свой сервер самостоятельно. И застрял на проблеме с контрольной суммой. Неизвестно как она рассчитывается на сервере и проверяется в клиентах, но посылая пакеты на реальный сервер я получил около 260 тысяч ответов и выследил закономерность и составил свою функцию приведенную в исходнике. При расчете к.суммы с помощью моей функции и проверке с реальной суммой полученной с сервера в примерно 90% случаев всё верно, но есть пакеты в которых моя функция считает неправильно. Эти пакеты находятся в текстовом файле №2. Я прошу чтоб вы провели небольшой анализ и помогли мне составить алгоритм, с которым бы рассчитанная к.сумма во всех случаях совпадала с суммой рассчитанной на реальном сервере. P.S. пакеты из текстового файла №2 посылались на сервер еще несколько раз и в разном порядке и контрольная сумма в них действительно рассчитывается НЕ по моему алгоритму, так что это исключает возможность того что пакеты некорректны. Последний раз редактировалось hypertonyc; 13.03.2011 в 15:17. |
13.03.2011, 14:43 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А ты всетки попробуй функцию мною указанную. Вдруг это действительно CRC32.
Кстати у меня с iFolder не качает...
I'm learning to live...
|
13.03.2011, 15:09 | #5 |
Регистрация: 13.03.2011
Сообщений: 5
|
А. так это CRC32. я пробовал CRC8,CRC16 и CRC32 и первым делом это не оно. Если бы вы посмотрели пакеты то стало бы ясно. Сейчас перезалью куда-нибудь.
|
13.03.2011, 15:12 | #6 |
Регистрация: 13.03.2011
Сообщений: 5
|
|
14.03.2011, 08:29 | #7 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Используй rghost.ru или habreffect.ru, у них там и скорость закачивания повыше, и рекламы нету. По теме не помогу.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
14.03.2011, 09:15 | #8 |
Регистрация: 13.03.2011
Сообщений: 5
|
Спасибо, учту. Мне б по теме помощи.
|
02.12.2012, 22:41 | #9 |
Регистрация: 02.12.2012
Сообщений: 6
|
Проблема решена? А то, мне интересно стало а тексты уже не доступны.
|
03.12.2012, 22:26 | #10 |
Регистрация: 02.12.2012
Сообщений: 6
|
Проблема, очевидно в формуле: real_crc = ((real_crc & 0xFF00)>>8) + (real_crc & 0x00FF).
Если real_crc - WORD, то: 0x0002 > 00+02 = 02, и 0x0101 > 01+01 = 02 и т.д. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
рекурсия для расчета суммы | mego4el | Помощь студентам | 2 | 13.02.2011 10:02 |
Интересный пример для расчёта контрольной суммы. | ATAMAN200 | Общие вопросы C/C++ | 0 | 05.10.2010 19:17 |
Нужно вычислить алгоритм подсчета контрольной суммы строки | Walter Reed | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 30.01.2010 19:53 |
Алгоритм вычисления контрольной суммы файлов | young_W | Общие вопросы Delphi | 2 | 11.09.2007 22:22 |