Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > нужно решение циклической формулы


Автор: okulski 8.3.2010, 17:38
в общем всё достаточно просто 

есть файл
состоящий из блоков определённой длинны

колличество блоков может быть различным(зависит от размера архива который поделён на блоки)
размер последнего блока так же может быть любым но обязательно (чётным или нечётным точно не помню но нужно бля правильности работы программы проверки)

в каждом блоке есть контрольная сумма рассчитывается(проверяется) она по формуле CHECKSUMb = 65535 - SUMMb(32бит целое) +1

у файла тоже есть контрольная сумма рассчитывается(проверяется) она по формуле CHECKSUMf = 65535 - SUMMf(32бит целое) +1

проблема в том что контрольная сумма файла включает в себя контрольную сумму блока и контрольная сумма последнего блока включает в себя сумму файла
выглядит это так
CHECKSUMb = 65535 - (SUMMb(32бит целое) + CHECKSUMf )+1
CHECKSUMf = 65535 - (SUMMf(32бит целое) + CHECKSUMb )+1

народ подкажите как посчитать эту формулу 
реально уже мозг в раскоряку  smile 

Автор: nworm 9.3.2010, 19:34
Походу систему уравнений надо решить?

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 21.3.2010, 16:42
в том то и смысл что математики так и говорят

но факт остаётся фактом что когда проверяеш по формуле проверки каждую контрольку а надостающее число берёш из файла то всё сходится

а коли прошивки всётаки существуют в огромном множестве должен быть вариант для вычисления данных контрольных сумм

для примера ftp.dlink.ru wireless dwl-2100ap к примеру, там файлов гора с расширением .tfp


Автор: Onyma 3.7.2010, 18:55
подскажите, что обозначает SUMM(b/f) (какую точно функцию)?

Автор: okulski 4.7.2010, 23:27
SUMM(b/f) 
f - file блок данных всего файла в который включено несколько блоков b (всего в файле "заголовок файла + блок f один + контрольная сумма f")
b - block один из блоков данных в файле f (количество блоков зависит от объёма начального файла "заголовок блока(включая контрольную сумму блока b) + блок b" последний же блок "заголовок блока(включая контрольную сумму блока b) + блок b(включает контрольную сумму блока f)")

SUMM - сумма байтов блока данных с логикой вычислений 32бит целое.

Автор: skyboy 5.7.2010, 10:24
а контрольная сумма всего файла точно входит в последний блок? 

Автор: okulski 5.7.2010, 17:20
в том то вся и проблема
я уже всяко проверял

Автор: slowmen 21.7.2010, 06:28
Может последний блок модифицируется? Добавляется байт для подгонки.

Автор: okulski 22.7.2010, 05:37
нет

во многих прошивках проверено не однократно

Автор: nmn 7.9.2010, 17:30
Цитата(okulski @  4.7.2010,  23:27 Найти цитируемый пост)
сумма байтов блока данных с логикой вычислений 32бит целое.

что такое "логика вычисления 32 бит целое"?

Автор: okulski 9.9.2010, 13:04
это когда 65536+1=0 (или 1 не помню точно) тоесть цифра увеличивается до предела 32битного целого числа после чего идёт обнуление

Автор: ksnk 9.9.2010, 13:26
Контрольная сумма блока и файла строится так, чтобы сумма всех слов в блоке/файле была равна 0 ? Тогда какая разница сколько блоков и какая контрольная сумма файла? Посчитай контрольную сумму блоков и предварительно поставь случайную контрольную сумму файла  smile 

Автор: nmn 9.9.2010, 15:11
Цитата(okulski @ 9.9.2010,  13:04)
это когда 65536+1=0 (или 1 не помню точно) тоесть цифра увеличивается до предела 32битного целого числа после чего идёт обнуление

может не 65536, а 2^32-1?
как то неопределенно, может 0, а может и 1...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)