![]() |
|
![]() ![]() ![]() |
|
okulski |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.8.2007 Репутация: нет Всего: нет |
в общем всё достаточно просто
есть файл состоящий из блоков определённой длинны колличество блоков может быть различным(зависит от размера архива который поделён на блоки) размер последнего блока так же может быть любым но обязательно (чётным или нечётным точно не помню но нужно бля правильности работы программы проверки) в каждом блоке есть контрольная сумма рассчитывается(проверяется) она по формуле CHECKSUMb = 65535 - SUMMb(32бит целое) +1 у файла тоже есть контрольная сумма рассчитывается(проверяется) она по формуле CHECKSUMf = 65535 - SUMMf(32бит целое) +1 проблема в том что контрольная сумма файла включает в себя контрольную сумму блока и контрольная сумма последнего блока включает в себя сумму файла выглядит это так CHECKSUMb = 65535 - (SUMMb(32бит целое) + CHECKSUMf )+1 CHECKSUMf = 65535 - (SUMMf(32бит целое) + CHECKSUMb )+1 народ подкажите как посчитать эту формулу реально уже мозг в раскоряку ![]() |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Походу систему уравнений надо решить?
CHECKSUMb=x CHECKSUMf=y x = 65535 - SUMMb(32бит целое) - y +1 y = 65535 - SUMMf(32бит целое) - x +1 x+y = 65535 - SUMMb(32бит целое) +1 x+y = 65535 - SUMMf(32бит целое) +1 в твоих условиях, если SUMMb(32бит целое)!=SUMMf(32бит целое), нерешаемое уравнение получается... |
|||
|
||||
okulski |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.8.2007 Репутация: нет Всего: нет |
в том то и смысл что математики так и говорят
но факт остаётся фактом что когда проверяеш по формуле проверки каждую контрольку а надостающее число берёш из файла то всё сходится а коли прошивки всётаки существуют в огромном множестве должен быть вариант для вычисления данных контрольных сумм для примера ftp.dlink.ru wireless dwl-2100ap к примеру, там файлов гора с расширением .tfp |
|||
|
||||
Onyma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.11.2009 Репутация: нет Всего: нет |
подскажите, что обозначает SUMM(b/f) (какую точно функцию)?
|
|||
|
||||
okulski |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.8.2007 Репутация: нет Всего: нет |
SUMM(b/f)
f - file блок данных всего файла в который включено несколько блоков b (всего в файле "заголовок файла + блок f один + контрольная сумма f") b - block один из блоков данных в файле f (количество блоков зависит от объёма начального файла "заголовок блока(включая контрольную сумму блока b) + блок b" последний же блок "заголовок блока(включая контрольную сумму блока b) + блок b(включает контрольную сумму блока f)") SUMM - сумма байтов блока данных с логикой вычислений 32бит целое. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
а контрольная сумма всего файла точно входит в последний блок?
|
|||
|
||||
okulski |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.8.2007 Репутация: нет Всего: нет |
в том то вся и проблема
я уже всяко проверял |
|||
|
||||
slowmen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 21.7.2010 Репутация: нет Всего: нет |
Может последний блок модифицируется? Добавляется байт для подгонки.
|
|||
|
||||
okulski |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.8.2007 Репутация: нет Всего: нет |
нет
во многих прошивках проверено не однократно |
|||
|
||||
nmn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: нет Всего: 1 |
||||
|
||||
okulski |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.8.2007 Репутация: нет Всего: нет |
это когда 65536+1=0 (или 1 не помню точно) тоесть цифра увеличивается до предела 32битного целого числа после чего идёт обнуление
|
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 7 Всего: 386 |
Контрольная сумма блока и файла строится так, чтобы сумма всех слов в блоке/файле была равна 0 ? Тогда какая разница сколько блоков и какая контрольная сумма файла? Посчитай контрольную сумму блоков и предварительно поставь случайную контрольную сумму файла
![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
nmn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: нет Всего: 1 |
может не 65536, а 2^32-1? как то неопределенно, может 0, а может и 1... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |