sonyps4.ru

Обход встроенной защиты PIC-микроконтроллеров. Стоит ли открывать

Если вы занимаетесь ремонтом сложной бытовой техники или другой аппаратуры вы столкнётесь с необходимостью чтения и записи NAND Flash. В действительности сложностей в данном процессе нет, основная проблема заключается в качественном оборудование и качественных комплектующих, имею ввиду микросхемы NAND флеш. Очень часто, покупая в Китае микросхемы мы надеемся на то что нам придет все в идеальном состоянии, но за годы работы мы убедились в обратном, к примеру из последней партии микросхем NAND K9GAG08UOE-SCBO все были ненадлежащего качества.
По сути они работают в них записывается ПО, но, из-за большого количества BAD блоков толку от этих микросхем нет.

Теперь разберем сам процесс записи и чтения. Нам понадобится программатор, тут все зависит от вашего бюджета и предпочтений к тому или иному производителю. Мы остановились на программаторе от фирмы Phyton (ChipProg-481) плюс две панельки TSOP-48: AE-TS48U и AE-TS48-NAND-4.

Подключаем программатор к компьютеру, запускаем программное обеспечение для работы с программатором. Первое, выбираем микросхему их списка с которой мы будем работать - > Select Divice


В открывшемся окне вбиваем название микросхемы с которой будем работать. В нижней части окна нам подсвечивается основная информация, объём микросхемы и панелька которая будет использована для работы с ней. нажимаем ОК.

Вставляем микросхему в панельку, а панельку уже в программатор. Если микросхема вставлена верно вы увидите следующую надпись.Колодка: Микросхема вставлена

Теперь проверим нашу микросхему на количество неисправных блоков (BAD блоков). Для этого нажимаем All Default в редакторе параметров микросхемы (это делается для того что если какие то параметры изменены их нужно выставить по умолчанию), выбираем пункт Стирание -> Выполнить. В нижней части окна видим информацию о успешном завершение операции и информацию о количестве BAD Block, в нашем случае их 121. Открываем карту плохих блоков и видим где они находятся. К сожалению для установки в аппаратуру данная микросхема не подойдет, так как она имеет большое количество сбойных секторов и располагаются они в самом начале микросхемы. На практике было установлено что сбойных секторов не должно быть более 10 и располагаться они должны в конце.

Теперь разберем процесс чтения микросхемы и записи, они по сути одинаковы, точнее параметры одинаковы выставляемые для микросхемы.
P.S. для каждой микросхемы нанд параметр User Area - Number of Block разный и выставляется согласно datasheet микросхемы.
Выставляем параметры для работы с микросхемой следующим образом:

После того как вы выставили параметры представленные на картинке вы можете делать копию ПО записанного в микросхему (при условии что они исправно и вы хотите просто его сохранить на будущее) и записать ранее сохраненное программное обеспечение!
Все спасибо за внимание, если у вас есть какие либо вопросы пишите ниже!

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

Взлом МК PIC18F1320

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

Я купил четыре PIC18F1320 и начал их мучать. Вот так выглядит PIC18F1320 в первозданном, не раскуроченном виде:

Первое, что предстоит сделать, это внять верхнюю часть корпуса, чтобы стали доступны кремниевые внутренности микроконтроллера. Хотя существует достаточно много любительских способов сделать это, но обычно они основаны на применении азотной или серной кислоты. Во-первых, это, скорее всего, не те вещи, которые вы очень хотите видеть рядом с собой. Во-вторых, их непросто достать, поскольку, например, азотная кислота является одним из компонентов для изготовления взрывчатых веществ. Я решил, что самый простой и надежный способ - отправить микроконтроллеры в лабораторию анализа отказов, такую как MEFAS , и за $50 и 2 дня получить на руки уже «обезглавленные» компоненты. Для этого проекта я удалил компаунд с трех микроконтроллеров. Два из них остались полностью рабочими, а один лишился корпуса полностью, т.е. остался только сам чип. Это было продиктовано конструктивными особенностями моего микроскопа при больших увеличениях.


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


Видны (по часовой стрелке): 8 KB flash-памяти, источник опорного напряжения, зарядовый насос для программирования flash/EEPROM памяти, 256 байт EEPROM памяти, втроенные таймеры и цепи тактирования, вычислительное ядро, ПЗУ с микрокодом, массив с fuse-битами, 256 байт ОЗУ, АЦП. (

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


Немного подумаем об этих металлических экранах. Для чего они нужны? Во-первых, вспомним некоторые интересные факты о технологии flash (этот тип памяти применяется в том числе и в PIC-микроконтроллерах для хранения fuse-бит). Flash-технология подразумевает использование транзисторов с плавающим затвором, очень похожие на те, что применялись в старых микросхемах ПЗУ с ИФ-стиранием (вы же помните 2616-е в керамическом корпусе и с кварцевым стеклом?). И во flash, и в УФ-ППЗУ данные сохраняются путем инжектирования электронов на плавающий затвор при помощи тоннельного эффекта, где эти электроны могут находиться десятилетиями. Дополнительные электроны в плавающем затворе создают заметные изменения в характеристиках транзистора. Разница заключается в том, что во flash-памяти для стирания информации достаточно электрических импульсов, в то время как в УФ-ППЗУ для того чтобы «выгнать» электроны с плавающего затвора необходимы фотоны с высокой энергией. Для этого необходим ультрафиолет с длинной волны примерно 250 нм. Для того, чтобы УФ-излучение не слишком сильно ослабевало, применяются кварцевые стекла (те самые окошечки на старых микросхемах ПЗУ).
Важный вывод, который можно сделать из вышеуказанных фактов: flash память тоже может быть стерта при помощи УФ-излучения, т.к. она имеет практически ту же транзисторную структуру, что и УФ-ППЗУ устройства. Корпус устройств с flash-памятью обычно мешает попаданию ультрафиолета на поверхность кристалла, но так как наш PIC микроконтроллер теперь лишен пластиковой верхушки корпуса, то мы может применить УФ-излучение и посмотреть, что из этого выйдет.
Я провел эксперимент, в котором запрограммировал PIC-контроллер последовательными значениями от 0x00 до 0xFF, и затем проэкспонировал его в моем УФ-ППЗУ стирателе, пока принимал душ и проверял почту.
Когда я извлек контроллер из стирателя, то обнаружил, что flash-память действительно была очищена и вернулась в изначальное состояние (все значения 0xFF), и что защитные fuse-биты так же были деактивированы. Так же следует учитывать, что УФ-излучение действует и на EEPROM-память.
Ясно, что металлические пластины над защитными fuse-битами как раз служат защитой от того, чтобы сбросить их отдельно от flash-памяти программ.


Картинка иллюстрирует проблему (и ее решение), с которой я столкнулся. Для того чтобы стереть информацию на транзисторе flash-памяти, сильное УФ-излучение должно достигать его плавающего затвора. А металлические экраны препятствуют этому, эффективно отражая УФ-лучи.
Однако, благодаря разности между коэффициентами преломления света для оксида и кремния, свет, падая под некоторым углом, будет отражаться от его поверхности. Чтобы получше понять этот эффект можете прыгнуть в бассейн и посмотреть на воду почти на уровне глаз. Вода будет обладать очень хорошей отражательной способностью как раз из-за разницы коэффициентов преломления воды и воздуха. Это называется полное внутреннее отражение.
Это отражение как раз можно использовать, чтобы заставить УФ-излучение отражаться от металлической поверхности экрана и падать обратно на плавающий затвор транзистора. Итак, поворачивая PIC-микроконтроллер внутри ПЗУ-стирателя, я могу направить достаточно света для того чтобы он, отразившись в области транзистора flash-памяти, вызвал его стирание. После нескольких попыток я разработал технологию, которая кажется работает вполне неплохо.

Это фото микроконтроллера внутри ПЗУ-стирателя (синее свечение вокруг контроллера обусловлено работой УФ-лампы). Микроконтроллер закреплен под углом в антистатическом материале.
Но все это не может защитить от стирания нужных данных в той части flash-памяти, где хранится программа микроконтроллера. Для того чтобы предотвратить стирание этих данных используется сплошная маска, которая была очень аккуратно вырезана из изоленты и прикреплена к кристаллу с помощью двух пинцетов, микроскопа и недрогнувшей руки) Изолента эффективно блокирует прохождение ультрафиолета, тем самым защищая закрытую область памяти от стирания, а так же поглощает отраженный от кремниевой подложки ультрафиолет.


Это фото кристалла с прикрепленной маской над областью flash-памяти.
Используя эту технику я наконец смог сбросить защитные fuse-биты без стирания основной программы микроконтроллера. Этим же способом можно стирать только некоторую часть flash-памяти. Ура!
Замечания
Очевидно, что описанный способ подходит только для тех устройств, которые содержат перепрограммируемые fuse-биты. Если биты защиты программируются лишь однократно (а такое бывает), то такая методика не подходит. В этих устройствах просто пережигаются тонкие проводники на кристалле. Однако мой коллега сказал, что и на этот случай разработаны свои методы борьбы (я думаю, восстанавливают контакт каким-то схожим микрохирургическим образом). Знаю так же, что эта операция стоит ой как недешево.
Так же хочется заметить, что во всенародно любимых микроконтроллерах AVR fuse-биты имеют похожую структуру (точно так же перепрограммируются), что позволяет надеяться, что описанная методика пригодна и для них!

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

UPD 2: эта же тема, но для микроконтроллеров AVR, затрагивается

Существует несколько способов того, чем открыть bin файл, и в данном материале эти программы представлены в формате ТОП 5.

Бывают самые разнообразные типы таких файлов, имеющие в себе разное содержимое.

Например, в системных папках компьютера могут найтись десятки документов с таким разрешением.

Особенности

Что же это за формат. Говоря коротко, такое сочетание букв – это начало слова «binary». Это говорит о том, что все данные в таком файле сохранены в двоичном формате. И это все, то есть такой тип документа совершенно ничего не говорит о его содержимом, ведь оно может быть самым разным.

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

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

  • Образ DVD-диска или CD-диска. В этом случае он хранится в директории рядом с документом формата cue. В комплексе они представляют собой образ диска, напоминающий iso;
  • Документ, содержащий данные об архиве игры. Такой находится в корневой директории диска с игрой и отвечает за порядок воспроизведения последовательностей;
  • Ресурсные данные от компьютера в сжатом виде. Это наиболее значимый тип документа, находящийся в одной из корневых директорий жестокого диска. Его удаление или изменение может привести к сбоям в работе системы;
  • Исполняемые файлы систем типа Юникс;
  • Данные прошивки роутера;
  • Игровые данные для приставок Сега, Нинтендо и других.

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

<Рис.1 Файл>

Стоит ли открывать?

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

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

Как открыть файл?

Как было сказано выше, это зависит от того, о каком типе файлов идет речь. Онлайн-ресурсов для этого в настоящее время не разработано. Кроме того, в Windows нет базовых утилит для открытия таких документов, а значит, для открытия их придется скачивать и устанавливать дополнительный софт.

5 место. Блокнот

Как не странно, но открыть такой документ иногда помогает простой Блокнот. Он является, по сути, универсальным способом открыть практически любые данные в текстовом формате. Для того чтобы проделать это, следуйте алгоритму:

  • Кликните по файлу правой кнопкой мыши;
  • В выпавшем меню нажмите на строчку «Открыть с помощью»;
  • В появившемся списке программ для открытия файла укажите Блокнот;
  • После этого файл откроется, представляя систему кодов, ключей и последовательностей в текстовом формате;
  • Часто результат выглядит как кодировка – множество иероглифов и непонятных символов, но нередко в этой информации можно найти и нужную, представленную цифрами и латинскими буквами;
  • Если вы знаете, какие изменения нужно внести, то внесите их и закройте Блокнот с сохранением файла (однако, перед внесением изменений сохранить изначальную копию);
  • Если вы не уверены в том, что нужно менять, лучше ничего не трогать.

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

Недостаток же способа в том, что он работает далеко не всегда и не со всеми типами bin. Он бывает эффективен лишь примерно в 20% случаев.

<Рис. 2 Блокнот>

4 место. Nero

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

Как же определить, что bin – это образ DVD-диска? Руководствоваться здесь нужно его размером. Большие и очень большие по объему файлы, чаще всего, являются файлами образов.

Nero – хорошая, функциональная программа, которая реализуется бесплатно. Она работает со множеством «сложных» форматов данных. Софт постоянно обновляется, выходят новые версии, что позволяет ему более или менее стабильно работать с разными форматами.

Чтобы открыть файл, проделайте следующее:

  • Запустите программу;
  • В верхнем левом углу в шапке меню найдите кнопку «Запись данных»;
  • Укажите файл, который хотите открыть;
  • Или просто перетяните его мышью в рабочее пространство программы;
  • После этого информация, имеющаяся в файле, отобразится автоматически;
  • Далее можно делать то, что необходимо, например, записать образ на диск.

Тем не менее, данный способ все равно не является универсальным. Программа иногда дает сбои и не может открывать некоторые типы bin.

<Рис. 3 Nero>

3 место. Daemon Tools

Этот больше всего подходит для игровых bin. То есть, если обнаружились такие данные в диске с игрой или в папке с ней, то открывать их лучше через этот софт. Программа имеет бесплатный пробный период с практически неограниченным функционалом и стабильно работает.

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

  • Скачайте программу Daemon Tools версии, подходящей для вашего компьютера;
  • Установите программу, следуя указаниям мастера установки;
  • Запустите программу;
  • В левом верхнем углу главного окна программы, в шапке меню, найдите кнопку Файл;
  • Нажмите на нее и выбирайте Открыть в развернувшемся меню;
  • После нажатия кнопки Открыть, запустится стандартный Проводник Windows;
  • Через него укажите путь к файлу, который вы хотите открыть;
  • После этого в главном окне программы отобразится содержимое файла.

При необходимости, вы можете не только ознакомиться с ним, но и внести изменения.

Программа работает гораздо стабильнее всех, перечисленных выше. Она поддерживает bin многих типов и позволяет корректно отображать их содержимое.

<Рис. 4 Daemon Tools>

2 место.Ultra ISO

Отличается от предыдущих программ топа наиболее стабильной работой. Кроме того, способна отображать содержимое большего числа типов bin. Благодаря постоянным обновлениям, работает стабильно и не дает сбоев почти никогда.

Кроме того, она не требовательна к ресурсам компьютера, не создает значительной нагрузки на «железо». Распространяется бесплатно и имеется во многих видах, для разных версий программного обеспечения компьютера.

Принцип работы в этой программе похож на все остальные:

  • Скачайте и установите данный софт, следуя указаниям Мастера установки;
  • Запустите программу и в левом верхнем углу главного окна найдите кнопку Файл;
  • Нажмите на нее и в выпавшем меню укажите Открыть;
  • В открывшемся Проводнике Виндовс укажите путь до файла, который вы хотите открыть;
  • Как и в программах, описанных выше, на экране отобразится содержимое рассматриваемого bin.

Хотя принцип работы такой программы не отличается от предыдущих, ее скачать предпочтительнее. Так как она работает почти с любыми типами bin.

<Рис. 5 UltraISO>

1 место. Оригинальный софт

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

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

<Рис. 6 Оригинальный софт>

Если вы не знаете, чем открыть bin файл, то шансов узнать это не так уж и много. Если в файле bin при просмотре текстовым редактором не удалось прочитать название программы, для которой он предназначен, то придется перепробовать их все. Корректно открыть bin файл может только программа, для которой он предназначен. Файл bin формата может быть просто файлом с любыми данными, прошивкой BIOS, архивом игры или даже образом диска.

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

Но прежде чем писать умные мысли - всё надо проверять, чем я и занялся. Эксперименты я проводил с Arduino Mega 2560. О ней дальше я и буду писать.
Поначалу я попытался пойти привычным способом "влоб", достал программатор китайский (на заглавной фотке), подключился по ISP, и скачал прошивку. Попытался её залить назад... Льётся, но верификацию не проходит. Битых несколько часов рыл интернет, чтобы понять, как же можно нормально скачать прошивку с Меги по ISP. Толком ничего вразумительного не нашёл, но зато понял, что прошивку можно скачать и залить обратно и без программатора. Об этом опыте я и напишу ниже. А вот о том, как скачивать прошивку не с Arduino платы, да так чтобы она потом назад заливалась я напишу как-нибудь в следующий раз, когда у меня появится плата, которую можно безбоязненно пускать и в огонь и в воду.
Ладно, к делу. Для начала нам нужна утилита Avrdude, она входит в поставку Arduino IDE и в моей версии лежала в папке "%appdata%\Arduino15\packages\arduino\tools\avrdude\6.0.1-arduino2\bin". Открываем папку, жмём на пустом месте SHIFT + правая кнопка мыши, а в меню выбираем "Открыть окно команд". Теперь приведу простую команду, которая проверяет, что контроллер читается.

avrdude.exe -p atmega2560 -c wiring -P COM5

Если всё в порядке, то вы должны увидеть примерно такой текст (см. скриншот).

Атрибуты команды:
-p atmega2560 - установка типа контроллера.
-c wiring - установка программатора. Это внутренний программатор в плате Arduino Mega 2560. Может я и не правильно выразился, но тот же атрибут использует IDE, когда заливает скомпилированный скетч.
-P COM5 - настройка порта, в который воткнут USB шнурок от Arduin"ы. Подглядеть можно из IDE.

avrdude.exe -p atmega2560 -c wiring -PCOM5 -b115200 -Uflash:r:"printer_firmware".hex:i

Если всё хорошо, ориентируемся на скриншот, прошивка сохраниться в файле "printer_firmware.hex" рядом с avrdude.exe.

Новые атрибуты команды:
-b115200 - скорость порта для программатора.

Uflash:r:"printer_firmware".hex:i - указание считать прошивку в файл "printer_firmware.hex".



Загрузка...