Как сделать дамп флешки

Как сделать копию “Флешки”, а затем восстановить её на другой USB-накопитель

У Вас есть загрузочная флешка, и Вы хотите сделать копию на другую флешку, которая отличается моделью и размером, возможно ли это? Отвечаю, Да!

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

Создаем образ USB флеш-накопителя, (сокращенно UFD)

Скачиваем, разархивируем и запускаем программу щелкнув на файле imageUSB.exe. Не забудьте перед запуском вставить в компьютер USB флеш-накопитель (флешку)!

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

1. Выбираем ваше устройство, установив галочку. Пожалуйста не перепутайте, если у Вас несколько USB устройств.

2. Выбираем создание образа UFD, установив точку на “Greate from UFD”.

3-4. Нажимаем кнопку “Browse” и указываем место куда программа сохранит образ флешки и даем ему название. В моем примере, это место диск D:, и название Моя флешка.

5. Нажимаем кнопку создать образ “Greate image”.

Программа информирует и требует подтвердить правильность вашего выбора.Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

6. Для запуска процесса создания образа нажимаем на кнопке “Yes”.

7. В случае правильно созданного образа процесс завершится показом информационного окна “Imaging Completed!”, нажимаем “OK” и закрываем программу.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешкиВы создали точную копию (образ) вашей флешки, теперь можно спокойно отформатировать её и пользоваться ей по своему усмотрению.

Записываем образ на USB флеш-накопитель (флешку)

ВНИМАНИЕ! Записать образ можно только на флешку такого же размера или большего! В случае, если ваша флешка большего размера, то после записи, размер вашей флешки будет равняться = размеру образа, но только ВРЕМЕННО!

Объясню на пальцах: вы скачали образ флешки 512 Мбайт и записываете его на 8 Гбайтную флешку. После записи размер вашей флешки будет отображаться в проводнике Windows как 512 Мбайт. Не беспокойтесь, настоящий размер возвращается в несколько кликов.

И так, есть образ, созданный вами или скаченный из Интернета, и Вы хотите записать (восстановить) его на вашу флешку, возможно отличающуюся моделью и размером.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

1. Вставляете вашу флешку в компьютер, запускаете программу и выбираете ваше устройство, установив галочку, Пожалуйста не перепутайте, если у Вас несколько USB устройств.

2. Выбираем запись на UFD, установив точку на “Write to UFD”.

5. Нажимаем кнопку записать образ “Write to UFD”.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Программа информирует и требует подтвердить правильность вашего выбора. Согласны ли Вы, что указанный образ будет записан на выбранную флешку и все данные на ней будут потеряны.

6. Для запуска процесса записи образа нажимаем на кнопке “Yes”.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Последнее предупреждение! Все файлы будут заменены данными из образа, объём и целостность носителя может быть повреждена.

7. Нажимаем кнопку “Да” и ждем окончания процесса записи образа.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

8. В случае правильно созданного образа процесс завершится показом информационного окна “Imaging Completed!”, нажимаем “OK” и закрываем программу.

Восстанавливаем объём USB флеш-накопитель (флешки)

Если после восстановления или записи образа, ваша флешка стала меньшего объёма проделайте следующие действия.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

1. Вставляете вашу флешку в компьютер, запускаете программу и выбираете ваше устройство, установив галочку, Пожалуйста не перепутайте, если у Вас несколько USB устройств.

2. Выбираем обнулить только загрузочную запись UFD, установив точку на “Zero UFD”.

3. Нажимаем кнопку “Zero UFD”.

4. Нажимаем кнопку “Yes”, подтверждая, что хотим обнулить главную загрузочную запись MBR.

5. В случае правильного обнуления устройства процесс завершится показом информационного окна “Imaging Completed!”, нажимаем “OK” и закрываем программу.

6. Запускаем проводник Windows и щелкаем на USB устройстве (флешке), нам будет предложено отформатировать устройство (1), соглашаемся форматировать (2), нажимаем кнопку “Начать” (3), Подтверждаем (4), Завершаем (5).

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешкиВот такой, в принципе не сложный процесс, создания, записи и обнуления образа USB флеш-накопитель в простонародной речи “ФЛЕШКА” программой ImageUSB.

Источник

Гадкий утенок. Превращаем обычную флешку в USB Rubber Ducky

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Содержание статьи

Как-то давно мы делали в журнале обзор девайсов, которые было бы желательно иметь в своем чемоданчике хакера. Среди прочих девайсов там был и USB Rubber Ducky — устройство, внешне напоминающее обычную флешку, которое притворяется клавиатурой и при подключении к компьютеру быстренько набирает все заданные в нем команды. Штука крутая и очень полезная при проведении пентестов, но зачем выкладывать за нее 40 баксов (да еще и при текущем курсе), если аналогичным трюкам можно научить обычную флешку?

WARNING

Предисловие

Прошлогодний Black Hat принес много интересных докладов. В числе наиболее обсуждаемых был доклад, посвященный неисправимой уязвимости USB-устройств, позволяющей превращать обычные флешки в инструмент распространения вредоносных программ. Атаку назвали BadUSB, но позже в Сети появились шуточки на тему «USBola», сравнивающие эту атаку с известным вирусом.

Подобные идеи использования HID-девайсов для корыстных целей были уже давно. Грех не воспользоваться тем, что ОС система доверяет устройствам, подключаемым к USB-интерфейсу. Если покопаться в памяти, то в журнале уже была статья по сходной тематике, в которой говорилось, как с помощью специального устройства Teensy можно взять под контроль машину с Windows 7 (в принципе — с любой ОС на борту). Устройство по внешнему виду напоминало собой обычную флешку, под которую собственно и маскировалось. Все это наводило на мысли, что с флеш-накопителями тоже можно провернуть такой трюк.

Предпосылки

Вообще, USB — очень универсальный интерфейс. Только подумай, сколько устройств мы к нему подключаем и в состав каких девайсов он входит! Мышки, клавиатуры, принтеры, сканеры, геймпады, модемы, точки доступа, веб-камеры, телефоны и т.д. и т.п. Мы не задумываясь вставляем коннектор в нужный разъем, ОС автоматически определяет тип устройства и подгружает необходимые драйвера.

Но как она это делает?

Устройство Flash накопителей

На самом деле, ОС ничего не знает о подключаемом устройстве. Ей приходится ждать, пока девайс сам не сообщит, к какому классу устройств он принадлежит. Если взять простейший пример, когда мы втыкаем флешку в USB-разъем, то флешка сообщает операционной системе не только что является накопителем, но и свой объем. Тут сразу вспоминаются хитрожелтые китайские товарищи, которые таким образом научились выпускать флешки повышенной емкости (встречались чуть ли не на пару терабайт). Чтобы разобраться, как такое возможно, давай вспомним (или узнаем), как система распознает USB-устройства.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Флешка без красивой обертки

Xakep #200. Тайная жизнь Windows 10

Алгоритм инициализации USB устройств

Назначение USB-устройств определяется кодами классов, которые сообщаются USB-хосту для загрузки необходимых драйверов. Коды классов позволяют унифицировать работу с однотипными устройствами разных производителей. Устройство может поддерживать один или несколько классов, количество которых определяется количеством конечных точек (USB endpoints). В момент подключения хост запрашивает у устройства ряд стандартизованных сведений (дескрипторов), на основании которых принимает решение, как с этим устройством работать. Дескрипторы содержат сведения о производителе и типе устройства, на основании которых хост подбирает программный драйвер.

Обычная флешка будет иметь код класса 08h (Mass Storage Device — MSD), в то время как веб-камера, снабженная микрофоном, будет характеризоваться уже двумя: 01h (Audio) и 0Eh (Video Device Class).

При подключении USB-устройства оно регистрируется, получает адрес и отправляет свой дескриптор/дескрипторы, чтобы ОС загрузила необходимые драйвера и отправила обратно необходимую конфигурацию. После этого начинается непосредственное взаимодействие с устройством. По завершении работы происходит дерегистрация девайса. Важный момент, который стоит тут отметить: устройства могут иметь несколько дескрипторов, а также могут дерегистрироваться и регистрироваться в качестве другого устройства.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Единственная часть устройства, видимая пользователю

Bad USB или немного истории

Итак, на конференции Black Hat в прошлом году двое исследователей (Karsten Nohl и Jakob Lell) поделились с общественностью опытом, как перепрошить контроллер флешки своей прошивкой. По истечении некоторого времени такая флешка регистрировалась в качестве клавиатуры и набирала заданные команды. Из-за серьезности проблемы ребята не стали выкладывать код эксплойта. Однако, спустя некоторое время, двое других исследователей (Adam Caudill и Brandon Wilson) уже на конференции Derbycon представили миру работоспособный РоС, заточенный под микроконтроллер Phison 2251-03. Код доступен на github.

Трансформация

Прежде всего нам понадобится подходящий девайс. Так как код выложен только для конкретного микроконтроллера, то у нас есть два варианта — либо найти флешку, управляемую данным контроллером, либо провести очень непростую работу по исследованию и перепрошивке любого другого микроконтроллера. В этот раз мы выберем более легкий путь и попробуем найти подходящую флешку (а вот и список узявимого оборудования). Контроллер достаточно распространенный, так что даже каким-то чудом у меня дома среди десятка флешек нашлась подходящая.

Начинаем колдовать

Найдя подходящий девайс (который не жалко в случае неудачи потерять), можно приступать к его перевоплощению. Прежде всего нам потребуется скачать исходники, которые выложили ребята. В принципе, содержание расписано у них в официальной вики, но на всякий случай еще раз напомню, что же они выложили на гитхаб:

Подготавливаем систему

Скомпилировав все инструменты, входящие в архив, можно будет еще раз проверить, подходит ли данная флешка для перепрошивки:

где F — соответственно, буква накопителя.

Если эксперименты пошли не так и с флешкой творится что-то непонятное, то можно попытаться вернуть ее к жизни, вручную переведя ее в boot-режим, и воспользовавшись утилитой для восстановления оригинальной прошивки. Для этого надо перед ее подключение замкнуть 1 и 2 (иногда 2 и 3) контакты контроллера, расположенные по диагонали от точки (чтобы было понятней смотри соотвествующий рисунок). После этого можно попытаться восстановить устройство с помощью официальной утилиты MPAL

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Переводим флешку в boot-режим, замыкая указанные контакты

Получаем burner image

Следующим важным шагом является выбор подходящего burner image-а (8051 бинарник, ответственный за действия по дампу и заливке прошивки на устройство). Обычно их имена выглядят примерно так:

Где xx — номер версии контроллера (например, в случае PS2251-03 это будет 03), yyy — номер версии (не важно), а z отражает размер страницы памяти и может быть следующим:

Где искать подходящий burner image для своей флешки, можно посмотреть по этой ссылке.

Дампим оригинальную прошивку

Подготавливаем payload

Теперь настало время подумать о том, какой функционал мы хотим получить от нашей флешки. Если вспомнить Teensy, для него есть отдельный тулкит Kautilya, который позволяет автоматизировать создание пейлоадов. Для USB Rubber Ducky тут есть целый сайт, позволяющий посредством удобного веб-интерфейса прямо в онлайне создавать скрипты для девайса по своему вкусу. И это помимо списка уже готовых скриптов, которые лежат на гитхабе проекта. На наше счастье, Ducky-скрипты можно сконвертировать в бинарный вид, чтобы затем встроить их в прошивку. Для этого нам пригодится утилита Duck Encoder.

Что же по поводу самих скриптов, то тут есть сразу несколько вариантов:

Для того чтобы перевести скрипт в бинарный вид, необходимо выполнить следующую команду:

где keys.txt — Ducky-скрипт, а inject.bin — выходной бинарник.

Заливаем прошивку

Как только у нас на рукам появится готовый пейлоад, настанет время внедрять его в прошивку. Выполняется это следующими двумя командами:

После такой манипуляции у нас на руках будет файл кастомной прошивки hid.bin с внедренной в него полезной нагрузкой. Остается только залить полученную прошивку на флешку:

где F — опять же, буква накопителя.

Альтернативные варианты

Помимо использования HID-природы флешки и превращения ее в клавиатуру, набирающую наши пэйлоады, можно сотворить еще несколько трюков. Например, можно создать на устройстве скрытый раздел, уменьшив место, которое будет видеть ОС. Для этого сначала надо получить размер устройства в логических блоках:

Аналогичным образом делается Password Path и No Boot Mode Patch, про которые ты можешь подробней посмотреть на гитхабе проекта. Моей же основной целью было научить флешку выполнять заданные действия, чего мы с тобой и добились.

Поставленной цели мы добились. Более того: думаю, ты теперь понял, что флешки (да и прочие USB-девайсы) нельзя больше рассматривать как просто абстрактный накопитель, хранящий твою информацию. На самом деле — это уже практически компьютер, который можно научить выполнять определенные действия. Хотя на данный момент РоС выложен только для одного конкретного контроллера, будь уверен, что в момент чтения статьи кто-то наверняка ковыряет другие.

Так что будь осторожен при подключении USB-устройств и держи ухо востро.

Источник

Хардкорный взлом самошифрующегося HDD. Реверсим и хакаем внешний накопитель Aigo

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Содержание статьи

Доступ к сохраненным на диске данным, которые якобы зашифрованы, дается после ввода ПИН-кода. Несколько вводных замечаний по этому девайсу:

Аппаратная архитектура

Сначала препарируем девайс на части, чтобы понять, из каких компонентов он состоит. Самое нудное занятие — вскрывать корпус: много микроскопических винтиков и пластика. Вскрыв корпус, видим следующее (обрати внимание на припаянный мной пятиконтактный разъем):

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Основная плата

Основная плата довольно проста.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Наиболее примечательные ее части (сверху вниз):

SPI-флешка хранит прошивку для JMS539 и некоторые настройки.

Плата ЖК-индикатора

На плате ЖК нет ничего примечательного.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки
Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Клавиатурная плата

А вот это уже интереснее!

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Вот здесь, на задней стороне, мы видим ленточный соединитель, а также Cypress CY8C21434 — микроконтроллер PSoC 1 (далее по тексту будем звать его просто PSoC).

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

CY8C21434 использует набор инструкций M8C (см. документацию). На странице продукта указано, что он поддерживает технологию CapSense (решение от Cypress для емкостных клавиатур). Здесь виден припаянный мной пятиконтактный разъем — это стандартный подход для подключения внешнего программатора через ISSP-интерфейс.

Смотрим на провода

Разберемся, что с чем здесь связано. Для этого достаточно прозвонить провода мультиметром.

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Пояснения к этой на коленке нарисованной схеме:

Последовательность шагов атаки

Теперь когда мы знаем, из каких компонентов состоит этот накопитель, нам необходимо:

Для этого я проделал следующие шаги:

Снимаем дамп данных SPI-флешки

Эта процедура очень проста:

Обрати внимание, что такой подход в случае с JMS539-контроллером работает в особенности хорошо, поскольку этот контроллер на этапе инициализации загружает с флешки всю прошивку.

Сняв дамп с SPI-флешки, я пришел к выводу, что ее единственная задача — хранить прошивку для устройства управления JMicron, которая встраивается в 8051-микроконтроллер. К сожалению, снятие дампа SPI-флешки оказалось бесполезным:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Raphaёl Rigo

С 1999 года занимается аппаратным реверсингом, исследуя причудливые архитектуры и системы безопасности

Источник

Как сделать дамп флешки

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Как из дампа MStar сделать USB-прошивку

И также из дампа легко сделать файл для аварийного восстановления (а точнее автоматического обновления прошивки) — flash.bin. Подробно рассказано в конце: Восстановление приставки на MStar после неудачной прошивки.

Но — реагировать или нет на flash.bin — определяется текущей прошивкой, находящейся в приставке.
Если в ней изначально отключена реакция на flash.bin, то этот файл будет проигнорирован.

Некоторые пользователи (например, прошившие чужой прошивкой приставку и при этом она загрузилась) хотели бы иметь возможность не искать программатор, выпаивать флеш-память, прошивать дамп и запаивать обратно, а попробовать — из уже имеющегося дампа — сделать обычную прошивку для USB.

Кроме того, USB-прошивку можно заливать не только через меню, но и подключившись к UART процессора, ведь у многих, чужая прошивка приводит к тому, что приставка уже не загружается до конца, останавливаясь на заставке.

Ранее о формировании USB-прошивки в общих чертах уже не раз было рассказано. Да и многие давным-давно всё это умели и умеют.

На первый взгляд может показываться, что всё очень сложно, потому что так много всего написано, но на самом деле — всё легко, и это можно сделать буквально за 15 минут. И описать в 3 предложениях.

Просто это своего рода — Инструкция, поэтому всё так подробно, с картинками и примерами.

Сначала будет рассмотрено воссоздание USB-прошивки для процессоров MSD, как наиболее известное:

Структура USB-прошивки для MSD:

• Заголовок, 4096 байт.
• Данные.
• Контрольная сумма Заголовка + Данные, CRC32 (4 байта, в обратном порядке).

А во второй части — для новых процессоров MSA, но действия примерно те же, вплоть до парадоксальных (на осознание несуразности которых ушло время).

Итак, в чём особенность приставок на процессоре MStar: файл USB-прошивки имеет Заголовок, в котором находится загрузочный скрипт, содержащий команды для загрузки прошивки в приставку.

Все эти команды хранятся в обычном текстовом виде.

Сразу подчёркнуты самые важные 3 числа (а 4 = 3), которые и предстоит найти.

Например, 323b7cобъём Данных (это без учёта 0x1000 (4096) байт Заголовка и 4 байт CRC32).

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки или всё тоже самое в более привычном для чтения виде:

cusid 169b 3b 1 SMC_U01 0x0CFF 1244054
spi_wrc 0x80001000 0 323b7c
setenv usb_complete 1
setenv usb_upgrade 0
setenv bootcmd ‘ spi_rdc 0x80b00000 0x7001c 0x2b3b60 ; LzmaDec 0x80b00000 0x2b3b60 0x80000180 0x81000000; go 0x80000224;
saveenv
reset

Вот примерно подобное и надо создать, но только уже без первой строки cusid (поэтому и перечеркнуто).

cusid — команда проверки «свой-чужой», поэтому лучше воссоздать USB-прошивку уже без неё.

Проблема восстановления в том, что после исполнения загрузочного скрипта, Заголовок USB-прошивки — нигде в дампе не сохраняется.

Поэтому основная задача — воссоздание заголовка для будущей прошивки — из той текстовой информации, которая всё-таки есть в дампе.

Несмотря на то, что заголовок текстовый, создавать его надо только в HEX-редакторе.

В конце дампов процессоров MSD/MSA можно увидеть текстовые данные — это переменные окружения.

Искать лучше всего, например, по команде — spi_rdc

Пример переменных в дампе от MSD:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки или всё тоже самое в более привычном для чтения виде:

bootdelay=0
baudrate=115200
preboot=echo;echo Type «help» for more commands.
MS_BOARD=BD_MST204A_D01A_S
stdin=serial
stdout=serial
stderr=serial
logo_cmd=boot_logo 0 0 1 1
bootcmd=usb exit;spi_rdc 0x80B00000 0x5001C 0x2DE303 ; LzmaDec 0x80B00000 0x2DE303 0x80000180 0x81000000; go 0x80000224;
info_exchange=spi
CUSTOMER_OUI=0x169B
AP_SW_MODEL=0x0001
AP_SW_VERSION=0x0001
HW_MODEL=0x0001
HW_VERSION=0x0001

Выделенные числа как раз и являются одними из важных для заголовка. Но тут нет самого 1 числа — объёма Данных.

Раньше получить 1 было очень просто: 2 + 3 (например, как видно у заголовка в самом начале).

Но в современных прошивках стали добавлять ещё какой-то дополнительный блок данных, связанный с сетевыми приложениями.

И если повезёт, то среди переменных окружения будет готовая — общая длина файла будущей USB-прошивки:

filesize

Например, filesize=336DF8 (это уже с учётом 0x1000 (4096) байт Заголовка + 4 байта Контрольной суммы).

И, соответственно, разыскиваемый нами объём блока Данных [ 1 ] = filesize–0x1000–4

Но наличие переменной filesize большая редкость, поэтому придётся прикинуть просто на глаз примерное окончание блока Данных в дампе, на собственное усмотрение.

Дамп лучше листать — с конца (не обращая внимание на пустышки с повторяющимися 00, FF или какой-то рыхлый мусор) до тех пор, пока не начнётся плотный поток различных кодов:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки В качестве конца блока Данных сам выбрал 36BB2C — теперь это и есть объём блока Данных. А весь остальной выделенный хвост дампа, начиная с 36BB2C — теперь можно и нужно удалить.

При желании можно оставить 00 и побольше (допустим несколько 00-строк), главное, запомнить Смещение (Offset).

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Пример этого файла заголовка в архиве.

И добавляем заголовок в начало нашего уже обрезанного с конца дампа. Ешё раз напомню:

Структура USB-прошивки для MSD:

• Заголовок, 4096 байт.
• Данные.
• Контрольная сумма Заголовка + Данные, CRC32 (4 байта, записанные в обратном порядке).

У общего файла Заголовка + Данные подсчитываем его контрольную сумму CRC32.

Подсчет можно сделать с помощью одной из программ или же в Интернете, выбрав вариант CRC-32B :
нажимаем кнопку Выберите файл и указываем на подготовленный файл:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки и затем внизу нажимаем кнопку Преобразовать файл:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки После загрузки подготовленного файла и подсчёта CRC-32 результат будет выглядеть примерно так:

Теперь полученные 4 байта: B8 C5 12 6C добавляем к файлу в обратном порядке: 6C 12 C5 B8:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Всё, прошивка готова.

А теперь для процессоров MSA. Напомню, ключевое отличие — Заголовок стал длиной 16384 байта.

Структура USB-прошивки для MSA:

• Заголовок, 16384 байт.
• Данные, выровненные до ближайшего старшего адреса (как правило, до 0x*****000).
• Контрольная сумма Заголовка, CRC32 (4 байта, записанные в обратном порядке).
• 20 нулевых байт (0x00).

Парадокс, над которым пришлось долго ломать голову, в том, что здесь считается Контрольная сумма только Заголовка.

По привычке, пытался подсчитать CRC32 у различных вариантов Заголовка + Данные, но приставка упорно ругалась — Error: CRC error!
Потому что, как оказалось, у прошивок MSA проверяется только целостность Заголовка.
Видимо, целостность самого блока Данных проверяется позже.

Итак, как и у MSD, в заголовке у MSA — текстовый загрузочный скрипт, но с гораздо бОльшим числом команд и различных переменных.

Сразу отмечу наиболее важные, которые потом и предстоит определить из дампа.

И это всё те же самые — 3 числа :

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки или всё тоже самое в более привычном для чтения виде:

setenv usb_complete 1
setenv usb_upgrade 0
setenv OAD_NEED_UPGRADE 0
setenv OAD_TRIGGER_TYPE 0
setenv bootcmd ‘ spi_rdc 0x80b00000 0x39028 0x338f16 ; LzmaDec 0x80b00000 0x338f16 0x80000180 0x81000000; go 0x80000224;
setenv upgrade_mode null
setenv MstarUpgrade_complete 1
setenv bl_jpd_read_addr 0x01f1c800
setenv bl_jpd_read_size 0x00100000
setenv bl_jpd_write_addr 0x0201c800
setenv bl_jpd_write_size 0x003fc000
setenv bl_jpd_inter_addr 0x02418800
setenv bl_jpd_inter_size 0x00630000
setenv bl_dfb_framebuffer_addr 0x01b28000
setenv ve_buffer_addr 0x02a48800

Сразу оговорюсь о последних 8 переменных: во многих официальных прошивках их значения равны 0x00000000, при этом потом уже в дампе — они имеют конкретные значения, т.е. сама прошивка всё равно знает их значения (можно посмотреть и через команду printenv). Поэтому не вижу смысла восстанавливать их значения из дампа. Но кто желает, может вбить точные значения из дампа.

Итак, как обычно, идём в конец дампа или просто через Поиск строки, например, spi_rdc

Находим область с переменными окружения и видим там нужные нам 2 и 3 число:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Также как у MSD, если повезёт, то среди переменных окружения будет готовая — общая длина файла будущей USB-прошивки:

filesize

Например, filesize=3C6018 (это уже с учётом 0x4000 (16384) байт Заголовка, 0x4 (4) байт Контрольной суммы и 0x14 (20) нулевых байт).

И тогда, разыскиваемый нами объём блока Данных [ 1 ] = filesize–0x4000–0x4–0x14

Но, как уже отмечалось, наличие переменной filesize большая редкость, поэтому также как и с MSD, просматривая с конца дампа, ищем плотный поток различных кодов:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Но, в отличие от MSD, у MSA официальный конец Данных — ближайший старший адрес строки, как правило, оканчивающийся на 0x*****000:

Итак, все 3 числа определили, вбиваем их в файл заголовка длиной 16384 байта:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки Пример этого файла заголовка в архиве.

Подсчитываем контрольную сумму CRC32 файла Заголовка. В данном случае — 4D 95 D9 32.

Структура USB-прошивки для MSA:

• Заголовок, 16384 байт.
• Данные, выровненные до ближайшего старшего адреса (как правило, до 0x*****000).
• Контрольная сумма Заголовка, CRC32 (4 байта, записанные в обратном порядке).
• 20 нулевых байт (0x00).

Итак, всё собираем вместе: добавляем Заголовок в начало нашего уже обрезанного с конца дампа,
затем сзади добавляем 4 байта CRC32 в обратном порядке (т.е. 32 D9 95 4D ) и ещё 20 нулевых байт.

Т.е. концовка получившийся USB-прошивки выглядит вот так:

Как сделать дамп флешки. Смотреть фото Как сделать дамп флешки. Смотреть картинку Как сделать дамп флешки. Картинка про Как сделать дамп флешки. Фото Как сделать дамп флешки

Если что-то непонятно в структуре начала и конца USB-прошивок и дампов MSD и MSA, то можно посмотреть на различные заводские прошивки и слитые дампы.

Напомню, что прошивки можно загружать не только в полностью работающую приставку через меню, но и подключившись с помощью любой терминальной программы с обычными параметрами порта 115200 8N1 — через любой преобразователь TTL-RS232 (например, в программаторе CH341A) — к контактам UART процессора MStar.

В момент включения приставки быстро нажимать, например, Enter и попадём в консоль загрузчика.

Загрузка USB-прошивки процессора MSD:

« MStar »# setenv usb_upgrade_path usb_MSD.bin
« MStar »# setenv usb_upgrade 1
« MStar »# saveenv
« MStar »# reset

Название файла прошивки может быть любым.

Загрузка USB-прошивки процессора MSA:

k5ap# usb start 0
k5ap# fatload usb 0 80000000 usb_MSA.bin
k5ap# spi_wrc 80004000 0 3c2000 (где 3c2000 — длина блока Данных [ 1 ] прошивки, видна в заголовке)

offset 0x0, size 0x3C2000
initialization done!
Erasing…
Writing…
Verifying…

k5ap# setenv usb_complete 1
k5ap# setenv usb_upgrade 0
k5ap# setenv upgrade_mode null
k5ap# setenv MstarUpgrade_complete 1
k5ap# saveenv
k5ap# reset

т.е. по сути сделать всё то же самое, что указано в заголовке.

На всякий случай, напомню, что у MSA команда help не работает:

Стандартное обновление через меню или же через UART помогает и в тех случаях, когда микросхема флеш-памяти — слишком новая и программатор о ней ещё ничего не знает, дамп не прошивается, приходится пытаться указывать другие какие-то более известные микросхемы и пробовать.
А когда обновляете через приставку, то она об этом типе флеш, естественно, знает.

После любых прошиваний не забудьте — сбросить в заводские настройки.

Все вышеуказанные операции проводить с флешкой, отформатированной FAT32.
Если что-то не получается, пробовать с другой флешкой, отформатированной FAT32.

И как всегда стоит ещё раз напомнить:

ВСЁ, ЧТО ВЫ ДЕЛАЕТЕ СО СВОЕЙ ПРИСТАВКОЙ, ВЫ ДЕЛАЕТЕ НА СВОЙ СТРАХ И РИСК!

Если что-то пойдёт не так и приставка вообще не загрузится, то всегда надо быть готовым обратиться к программатору: Восстановление приставки на MStar после неудачной прошивки.

Офф-топ: О работе приложения IPTV

У новых процессоров MSA среди переменных окружения (printenv) появилась интересная:

IPTV_data_size=23644

Если её там нет, то при запуске приложения IPTV будет ошибка:

и она будет создана автоматически.

А если она уже была, то при запуске IPTV будет показано:

Судя по названию, связана с размером какого-то буфера IPTV, но смущает очень маленький размер.

В любом случае, теперь появилась возможность для экспериментов с размером буфера, заходя в консоль и устанавливая свой размер, например:

k5ap# setenv IPTV_data_size 64000
k5ap# saveenv
k5ap# reset

и при запуске IPTV видно:

==== Memory usage====================
u32PoolSize = 0x95ae40
u32FreeSize = 0x8c4a90
u32LargestFreeBlockSize = 0x8c4a84
max usage = 0x8c4a90
min block free size = 0x0

Start decode DB …Decodesize = 0x8
szbuf = 64000

Причём, например, если у приставки изначально размер IPTV_data_size был 292 байта, то после загрузки плейлиста на 107 каналов стало:

Но когда подставил плейлист уже на 282 канала, то размер буфера так и остался прежним:

Пока сложно сказать однозначно за какой именно буфер IPTV она отвечает. Но тот факт, что IPTV_data_size добавили в переменные окружения, говорит о том, что она действительно важна.

И эта же переменная используется для приложения YouTube:

==== Memory usage====================
u32PoolSize = 0x8ca000
u32FreeSize = 0x836ec0
u32LargestFreeBlockSize = 0x836eb4
max usage = 0x836ec0
min block free size = 0x0

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *