Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2025, 15:08   #81
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Некоторые мысли по структуре файла прошивки (Arher C24v2, Arher C54v1). В binwalk описан 148 байтовый tp-link rtos заголовок, но я бы рассматривал их как два заголовка. В начале файла первый заголовок размером 20 байт (в описании указываю hex-адрес относительно начала структуры, а потом остальные данные):
0x0000: 4 байта - сигнатура - 00 14 2F C0;
0x0004: 16 байтов - md5 проверочная сумма файла (можно проверить, подставив на это место байты CC 96 28 EE 8D FB 21 BB 3D EF 6C B5 9F 77 4C 7C, взятые отсюда https://forum.archive.openwrt.org/vi...p?id=41040&p=1, и посчитав md5 получившегося файла).
Потом идёт второй заголовок размером 128 байт:
0x0000: 4 байта - сигнатура - 49 4D 47 30 (т.е. строка "IMG0" для прошивок, в имени которых IMG0) или 28 76 C4 4D (т.е. строка "(vДM" для прошивок, в имени которых TPOS);
0x0004: 4 байта - размер данных (вместе с заголовком);
0x0008: 2 байта - модель (но, например, для C24v2 и C54v1 указано одинаковое число 0C 54);
0x000A: 1 байт - старшая версия ревизии; 0x000B: 1 байт - младшая версия ревизии (например, для C20v6.20 указано 06 20, а для C54v1 указано 00 01);
...
0x0024: 4 байта - смещение относительно адреса конца заголовка - предположительно, адрес следующего заголовка (например, для C54v1 указано 00 02 00 00, а для wr820v2 указано 00 00 D0 00);
...
0x0058: 4 байта - смещение относительно адреса начала заголовка; 0x005С: 4 байта - размер - предположительно, секция с описанием регионов, для которых предназначена прошивка;
...

В прошивках с именем noboot есть 20 байтовый заголовок и только один 128 байтовый заголовок, а в прошивках с именем boot 20 байтовый заголовок и два 128 байтовых заголовка. Можно предположить, что нужно отрезать 0x20094 (для C54v1) байт (20 байтовый заголовок, один 128 байтовый заголовок и все данные до второго заголовка), а затем добавить в начало файла новый 20 байтовый заголовок. Но меня смущает, что строка "U-Boot" встречается как после первого заголовка, так и после второго, будто в файле прошивки есть два загрузчика. Может быть нужно еще во втором заголовке занулить 4 байта по адресу 0x0068 и 4 байта по адресу 0x006С (в этом состоит отличие прошивки C20v6.20-TPOS-up-noboot от c24v2-TPOS-up-boot). Чтобы разобраться в таких тонкостях без документации, нужно изучать ассемблерный код, чтобы установить, что откуда читается и куда записывается.
BDA, вот я тоже, весь мозг сломал, а документации нет, от слова совсем, бывалые тоже не всё знают и не всё пробовали... Похоже сам tp-link тоже сам запутался и не знает...
Пока ассемблер изучишь, разберёшься, уже всё по другому будет, с очередным обновлением, или новой линейкой. Это утопия....
А noboot, мне вообще не понятно , если нет там boot то зачем вообще подписывать прошивку так, просто без всяких boot в названии и всё ясно ?
А раз подписали, значит в чём то подвох есть, либо заголовок 148 байт вырезать только, либо ещё чего то... А гадать нельзя, ошибся хоть на байт и всё , вместо восстановления окирпичиш полностью.... Тут гадать и предполагать нельзя, тут , как в аптеке должно быть....
sergey.serg-72 вне форума Ответить с цитированием
Старый 11.03.2025, 15:57   #82
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Но если в этой модели нету ftp recovery, то для прошивки через uart, насколько понимаю, можно ничего не обрезать (если не использовать команду mtd, а только cp.b), но нужно будет верно указывать адреса.
В том то и дело BDA, все бывалые спецы, в один голос утверждают, что для ftpd, что для Uart прошива обязательно обрезается, так как восстановление прошивки идёт не с 0 адреса, по этому boot обрезается, а только сама прошива идёт при восстановлении.

И тут новая засада настигла, в результате тестов проги выяснилось следующее :
Что есть прошивы , в названии которых вообще нет слова boot, а по факту в этих прошивах есть загрузчик boot.

Вот пример : wr820rv1-ru-up_2018-10-11_17.43.46.bin как видим слова boot нет, как в такой же , но на версию больше. wr820v2-ru-up-boot_2021-10-13_10.38.30.bin здесь есть слово boot.
А теперь откройте редактор и увидите что загрузчик есть и там и там, только во втором случаи загрузчик чуть длиннее...
И таких как выяснилось много.

TP-MR100v13_Upgrade_Build_230726_Rel_7 n_2023-07-26_16.52.13.bin слова boot нет, а заголовок в 512 для обрезки есть и структура как у прошивки с boot в названии.
При чём есть на одну версию и модель идёт с boot и без в названии, а структура одна....
И таких при тестах всё больше появляется.
Разница в отсутствии в названии слова boot и чуть короче ( на несколько строк) сам загрузчик.
Но факт, даже в прошивках в которых нет в названии слова boot, по факту в прошивке, он есть.
Это как ?

Допустим эти прошивки не поддерживают восстановление по ftpd, ( только в аварийном режиме, через веб-интерфейс), но человек решил восстановить по Uart, так как поддерживают все, это однозначно и что делать тогда?
Человек скачал прошивку, в названии нет слова boot, человек пытается по Uart восстановить, а в прошивке загрузчик есть и запись естественно произойдёт не по нужным адресам и кирпич....
Я вообще не понимаю tp-link , в одних пишут что типа нет boot, а по факту он есть, в других пишут что есть, в третьих зачем то писать noboot, вместо того, чтоб просто невключать в название слово boot, чтоб не вводить в заблуждение.

Они сами уже запутались в своём бренде, вот и ходят по ресурсам, а потом дают рекомендации по восстановлению, если у кого получилось, на свой страх и риск.
Логики в бренде нет совсем...
Вот это как понимать?

Вот ещё для тренировки логики :
mr6400v1_up_boot_23020701_2023-02-27_13.50.33.bin
По названию загрузчик есть, как в первой, так и во второй версии, но загоните, его в редактор и попробуйте найти конец, этого загрузчика. Да и на полноценный загрузчик не тянет.
А вот начиная с 3 версии и дальше, вырезается 131584 байта и загрузчик нормальный.
Вот как тут быть, предполагать что 131584?, а вдруг не так ?....
sergey.serg-72 вне форума Ответить с цитированием
Старый 11.03.2025, 16:13   #83
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Вот тебе и мега проект получается, как не крути, приходится упражняться не в программировании, а в работе с редактором, калькулятором и мозгами с логикой...
А если бы не взялся за проект, то не выяснились многие тонкости, о которых даже бывалые, не знали.
Что бут есть даже в прошивках, в названии которых, его вроде нет.
Вот теперь, мне понятны откуда кирпичи при восстановлении, хотя всё, правильно делал пользователь....

Я уже не говорю, про то, что уже обрезка не в два типа, как любят на ресурсах обсуждать, 512 , или 131584 байта, а уже семь включены в программу. И про них молчок, вроде таких роутеров и не существует, а они есть и есть другие варианты.
На этом фоне, такие мелочи, как запись в три окна и так далее, теряет свою актуальность....
Вот главные моменты, это точно определить сколько и где вырезать.
И без предположений, а точно.
А записать можно и с одного окна, в три клика....Это не главное.
Но пока прога проходит тесты на ура и отлавливает прошивы с бутом и другие варианты, о которых я не подозревал.
sergey.serg-72 вне форума Ответить с цитированием
Старый 11.03.2025, 16:53   #84
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию продолжение

Бесит многих выделение в комбобоксе синим цветом, я с ними согласен, совсем некрасиво....
Как избавится, чего только не пишут в советах и функции и длинные коды....
А меня тут осенило решение простое, как избавится, может кому пригодится, но только для тех случаев, если в программе есть не один edit, или memo.
Просто при клики, переводить курсор и выделения не будет синим.

Код:
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
Edit1.SetFocus;
end;
Хотя можно, если надо кинуть пустой едит и сделать его не видимым, чтоб на него курсор перемещать, это так, быстрое решение.
Может так уже кто делал ?
sergey.serg-72 вне форума Ответить с цитированием
Старый 13.03.2025, 23:02   #85
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
В прошивках с именем noboot есть 20 байтовый заголовок и только один 128 байтовый заголовок, а в прошивках с именем boot 20 байтовый заголовок и два 128 байтовых заголовка. Можно предположить, что нужно отрезать 0x20094 (для C54v1) байт (20 байтовый заголовок, один 128 байтовый заголовок и все данные до второго заголовка), а затем добавить в начало файла новый 20 байтовый заголовок. Но меня смущает, что строка "U-Boot" встречается как после первого заголовка, так и после второго, будто в файле прошивки есть два загрузчика. Может быть нужно еще во втором заголовке занулить 4 байта по адресу 0x0068 и 4 байта по адресу 0x006С (в этом состоит отличие прошивки C20v6.20-TPOS-up-noboot от c24v2-TPOS-up-boot). Чтобы разобраться в таких тонкостях без документации, нужно изучать ассемблерный код, чтобы установить, что откуда читается и куда записывается.
Да, BDA я изначально без всяких openwrt и википендии сделал для : C54v1 и C24v2 вырезка 131220 байт, а для wr820v2, wr844v1 53396 байт, в редакторе это видно. И это логично.
Но... мы знаем что есть 840v6 и другие, у которых вырезается не полностью бут, а только заголовок в 512 байт. А вдруг здесь так же , только заголовок 148 байт, а не полностью бут ? Ну,или хотя бы для одной из них?
Что касается nooboot тут тоже логики нет.
С одной стороны идёт в комплекте с прошивками с boot, на одну модель и версию, всё вроде логично, типа для восстановления такая и там бута нет. Но опять на большинстве нет бута, а вот на трёх есть бут и в этих прошивках и в редакторе, это видно. a54v1-up-noboot1_tpimg_2023-03-08_17.39.53.bin бут есть, не смотря на nooboot в названии. Как тут быть игнорить эти прошивы, типа нет бута и вырезать не надо? так сейчас и стоит в программе, но теперь меня смущает, этот момент. А вдруг и в этих прошивках вырезается заголовок в 148 байт? Там логика как раз есть. Информации ноль на ресурсах, в темах ответить не могут, если нет в openwrt,или википендии, то типа и проблемы нет, а она есть.
Для чего эти прошивки тогда идут, типа, без бута?
Для чего то производитель их выпускает?
Допустим эти модели не поддерживают восстановление по ftpd, тогда зачем выпускать прошивки без бута? Если аварийное, или обычное обновление через веб-интерфейс там с бутом заливаются, тогда смысла не было бы выпускать прошивки с nooboot?
Что то тут не то, зачем идёт так : up_boot , up-boot, nooboot ?
Может в одних полностью бут вырезается, а в других только заголовок в 148 байт?
В общем логики нет, от слова совсем, информации тоже ноль.

Программа готова, полностью протестировал со всеми прошивками с сайта, все тесты прошла на отлично. Но эти моменты не дают покоя, а вдруг не 131220 байт, а только заголовок в 148 байт? так же и по прошивам с nooboot. Тут гадать нельзя, тут как в аптеке, точность нужна.
В серию пускать нельзя, пока не прояснились эти моменты.
Придётся только мастерам и продвинутым пользователям, ограниченно, пока не подтвердятся, или опровергнутся эти моменты. Но ждать можно долго.Жалко, хорошая, нужная получилась программа.
sergey.serg-72 вне форума Ответить с цитированием
Старый 24.03.2025, 02:14   #86
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,428
По умолчанию

Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Пока ассемблер изучишь, разберёшься, уже всё по другому будет, с очередным обновлением, или новой линейкой. Это утопия....
Если без ассемблера, то тогда снять дамп флеша с работающего роутера, подсовывать по-разному обрезанные прошивки в ftp recovery и смотреть какие варианты окирпичили, а какие - нет.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
А noboot, мне вообще не понятно , если нет там boot то зачем вообще подписывать прошивку так, просто без всяких boot в названии и всё ясно ?
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Но факт, даже в прошивках в которых нет в названии слова boot, по факту в прошивке, он есть.
Это как ?
Ну так производитель как хочет, так и обзывает файлы. Допустим, сначала был только один вид прошивок с загрузчиком (и в названии не указывалось ни boot, ни noboot), потом появилось два вида прошивок с загрузчиком и без загрузчика (и в названии стали указывать boot/noboot). Поэтому и нужно разбирать структуру файла, проверяя количество и виды заголовков, а на название обращать внимание в последнюю очередь. Или вот еще есть жалобы на работу tftp recovery (https://openwrt.org/toh/tp-link/archer_c7 - недотирает секторы, проблемы с ARP) - поэтому и получается, что проще залить дамп целиком, чем разбираться с имеющимся загрузчиком.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Вот ещё для тренировки логики :
mr6400v1_up_boot_23020701_2023-02-27_13.50.33.bin
Этот файл сам является zip архивом. А вот внутри уже есть файл router.bin с двумя tp-link заголовками первой версии. Вот тут пишут тоже об обрезке 0x20200 байтов для подсовывания в tftp recovery - https://openwrt.org/toh/tp-link/tl-mr6400_v1.
Цитата:
Сообщение от sergey.serg-72 Посмотреть сообщение
Бесит многих выделение в комбобоксе синим цветом, я с ними согласен, совсем некрасиво....
Можно так убрать:
Код:
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
  PostMessage(ComboBox1.Handle, CB_SETEDITSEL, Cardinal(-1), 0);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 25.03.2025, 01:39   #87
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Если без ассемблера, то тогда снять дамп флеша с работающего роутера, подсовывать по-разному обрезанные прошивки в ftp recovery и смотреть какие варианты окирпичили, а какие - нет.
А я уже дкмал что забыли BDA про тему ...
В десятку попали, так и пришлось делать, закупать пришлось 4 роутера, нужной версии и методом экспериментов приходить к истине , прога золотая уже стала, всю премию потратил, а роутеры раздарил по друзьям, после эксперимента. Я сам Кинетики люблю и только их , всегда покупаю.
sergey.serg-72 вне форума Ответить с цитированием
Старый 25.03.2025, 01:51   #88
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну так производитель как хочет, так и обзывает файлы. Допустим, сначала был только один вид прошивок с загрузчиком (и в названии не указывалось ни boot, ни noboot), потом появилось два вида прошивок с загрузчиком и без загрузчика (и в названии стали указывать boot/noboot). Поэтому и нужно разбирать структуру файла, проверяя количество и виды заголовков, а на название обращать внимание в последнюю очередь. Или вот еще есть жалобы на работу tftp recovery (https://openwrt.org/toh/tp-link/archer_c7 - недотирает секторы, проблемы с ARP) - поэтому и получается, что проще залить дамп целиком, чем разбираться с имеющимся загрузчиком.
Да этот производитель сам использует прошивки и коды от третьих лиц, я это понял работая с этим брендом, ни логики, ни смысла....Один кодер, до обеда писал, потом ушёл, пришёл второй продолжил, после ужина третий, на выходе, лебедь,рак и щука....
sergey.serg-72 вне форума Ответить с цитированием
Старый 25.03.2025, 01:57   #89
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Этот файл сам является zip архивом. А вот внутри уже есть файл router.bin с двумя tp-link заголовками первой версии. Вот тут пишут тоже об обрезке 0x20200 байтов для подсовывания в tftp recovery - https://openwrt.org/toh/tp-link/tl-mr6400_v1.
С этим вариантом, коллега подсказал, он где то с бытовухой сталкивался и такое было, я попробовал и действительно, не бин, а архив 7-зип, вот кому такая идея могла в голову придти?
После распаковки там файл под названием royter, вот его и обрезать надо + папки.
sergey.serg-72 вне форума Ответить с цитированием
Старый 25.03.2025, 02:10   #90
sergey.serg-72
Форумчанин
 
Регистрация: 12.03.2019
Сообщений: 432
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
PostMessage(ComboBox1.Handle, CB_SETEDITSEL, Cardinal(-1), 0);
end;
Да, можно и так, но вас не было, мне в голову мой вариант только пришёл.

Ну что сказать, работа трудная оказалась, там и 148 заголовок вырезать надо и другие варианты, которых нет , даже в openwrt поддержке.

А потом я, не пользовался поддержкой openwrt принципиально, нужна была своя победа, без плагиата и она удалась. Ни какое изучение асемблера не понадобилось, опыт, смекалка и чуть бестолковку напрячь, ну и зксперименты потребовались. Зато чистая победа, а главное, аналогов нет и быть первым , это тоже не последний момент.
Прога, прошла, все тесты у мастеров, пока осечек нет. Довольны ребята и девчата.
Долго правда проект писался, очень долго. Я думал , что быстрей будет...
А то что не стал три окна на запись, оказалось правильным, есть прошивки от провайдера, или альтернативные там что мак на 5 адресов разных прописывается, что пин.
А три окна мешали бы, а делать 5 тоже не правильно, осталась середина золотая.
Добавил ещё изюминки и не большой фитч, для оригинальности, всем, вроде понравилось.
А вот не было бы у вас BDA, ни openwrt, ни википендии, а писать надо что тогда бы делали ?
Зато опыт большой, я теперь сам openwrt консультировать могу, не смотря на то, что они больше 10 лет занимаются, я всё , освоил за 2 месяца. Век живи, век учись, в нашем деле это вечный студент, так как окончания обучения нет, всё течёт и постоянно изменяется....
В общем все ставят 5 (зачёт), а я себе поставил тройку, во первых долго возился, это уже не зачёт,
спотыкался там, где не должен был, три раза пришлось изменять , что тоже не айс.
Правда жёсткий цензор (парень поофи кодер работавший в майкрософте Голандец), сказал очень не плохо, обычно сильно критикует всегда, а тут не плохо.... Порадовало конечно, но всё ровно 3 ставлю себе.

Последний раз редактировалось sergey.serg-72; 25.03.2025 в 02:34.
sergey.serg-72 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтобы я мог вводить данные не только в Memo ALEXandr20333 Общие вопросы Delphi 9 04.11.2014 19:04
Считывание из поля Memo Qwerik Помощь студентам 8 07.11.2012 11:29
Считывание из Memo в массив WiseElrond C++ Builder 1 24.10.2011 00:00
Построчное считывание информации memo xpams Компоненты Delphi 2 16.09.2011 19:36
Как сделать посточное считывание с Memo Sanek777 Общие вопросы Delphi 19 25.09.2008 23:43