d-link dfl-600 прошивку по косточкам

Здравствуйте!

Пробую тут разобрать прошивку на dfl-600, с целью залить openwrt, готового нет. Пока результаты таковы:

Инфо:
RedBoot(tm) bootstrap and debug environment [ROM]
Red Hat certified release, version 1.92p1 - built 16:07:44, Jan 3 2005
Platform: IXDP425 Development Platform (XScale)

Структура образа:
0: -2b предположительно общая контрольная сумма
-4b версия прошивки
-2b 00 00
-4b длина rootfs
-4b длина kernel

0x10: rootfs+kernel, где
rootfs (без checksum)
0x0rootfs_len+0x10
kernel, где
0x0 - 00000000000000000
0x00c - 4b длина kernel (как и в заголовке)
0x010 - 00000
0x014 - 2b предположительно контрольная сумма образа ядра
0x018 - 8b строка "1.00-B01", в разных прошивках одно и то же
0x020 - 000000000000000000000000000000000
0x200 - тело kernel
end

Застрял на этапе вычисления чексумм. Причём, достаточно даже одной, которая вторая, для ядра. Образа, выдранные из родной прошивки, благополучно работают ,будучи залиты напрямую, через загрузчик (redboot). Первую чексумму (общую) мы сделали))) А вот со своим ядром засада. В redboot-e имеется встроенный cksum (32bit posix), думаю, используется именно он, но по каким границам они брали, для подсчёта, и ещё чего туда намешали - неизвестно. Пример загрузки с неверной чексуммой:
RedBoot> fis load kernel
kernel total len = c9ce4 826596
data_checksum != 0
Load firmware from pc to ram !

Каким образом действовать? Можно на примере родных ядер (есть несколько разных из родных прошивок). Но как алгоритм подобрать?
Слишком много вариантов для перебора получается. Целая бесконечность)))
Накидайте, пож-ста, вариантов, которые используют производители в таких случаях. Ну там делить на 256, сдвиг на 3 бита влево с переносом и т.д.)))
Возможно ли победить в принципе, или бесперспективно?

Читайте ЖЖ Пудеева, там правда другая модель, но для общего понимания полезно. Особенно Часть III и дальше.
pudeev.livejournal.com/26499.html

Аватар пользователя yoric

Попадалось это раньше, показалось не заслуживающим внимания в моём случае, так и есть после повторного просмотра))) С исходниками от производителя и медведь в цирке может смочь))) На dfl-600 их уже нету (видимо, давно сошёл со сцены). Рою дальше...

Аватар пользователя yoric

Накропал тут скрипт, результата отрицательный((( Видимо, дохлый номер вычислить всё это дело... Аналоги от других фирм у DFL-600 никто не подскажет, может на них исходники найдутся?
#!/bin/bash
if [ -e $1 ]; then
echo 'Error: Filename must be typed'
exit
fi
typeset -i CRC SKIP COUNT MEMCOUNT RSTEP PASS
DIR=/home/globus/mia/FR/distrib/openwrt/img-work
#DIR=/home/globus/tmp/dfl-600/img-work
SKIP=0
IBS=1


COUNT=`wc -c $DIR/$1 | cut -f 1 -d ' '`
MEMCOUNT=$COUNT
RSTEP=0
PASS=0

until [ $RSTEP == 16 ]; do
until [ $SKIP == 24 ]; do
<------>CRC=`dd ibs=$IBS skip=$SKIP count=$COUNT if=$DIR/$1 2>/dev/null | cksum | cut -f 1 -d ' '`
<------>echo $CRC
<------> if [ $CRC == 0 ]; then
<------><------>echo 'Offset from begin: '$SKIP
<------><------>echo 'Length from offset: '$COUNT
<------><------>exit
<------> fi
<------> SKIP=$(($SKIP+1))
<------> COUNT=$(($COUNT-1))
<------> PASS=$(($PASS+1))
done
COUNT=$(($MEMCOUNT-1))
MEMCOUNT=$COUNT
RSTEP=$((RSTEP+1))
SKIP=0
done
echo 'Pass: '$PASS

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей