Pull to refresh

Comments 19

Два раза прочитал, но так и не понял, как включение транзистора в цепь питания МК позволяет считывать данные, и тем более выполнять команды?

Он просаживает питание на микроконтроллере. Если это сделать кратковременно и в нужный момент, то контроллер не перезагрузится, но может неправильно выполнить что-то, чем был занят. Например, при чтении установленного где-то бита защиты прочитать не то значение, что заставит его работать, будто защиты нет.

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

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

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

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

Если в больших и сложных ARM-контроллерах есть начальный загрузчик, который считывает из флеша состояние бита защиты и конфигурирует SFR регистры соответственным образом, то в простых МК часто ничего кроме пользовательской программы и не запускается, нет там никаких других скрытых программ (у пиков только одна лишняя инструкция исполнялась, считывающая калибровку, насколько помню). И блокировка от считывания программы программатором выполняется аппаратно. Причём нетривиальными способами: Fuse-биты (ячейки flash-памяти) могут быть продублированы, причём в инверсном виде (в итоге массовое обнуление или объединичивание не приводит к успеху) и прикрыты слоем металла (чтоб сверху рентгеном не светили). Где-то блокировка -- вообще пережигаемые перемычки. Пережигаемые один раз в жизни чипа.

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

Метод, тем не менее, вполне ходовой. Одно из известных и массовых его применений — Xbox 360 Glitch hack.


Знает ли о такой возможности TI? Догадывается:


Компании Texas Instruments об этой уязвимости не сообщалось, поскольку у них уже есть инструкция по безопасности (security advisory), где учтены атаки методом внесения неисправностей (fault injection attacks) во все микросхемы: она находится по адресу TI-PSIRT-2021-100116, озаглавлена Physical Security Attacks Against Silicon Devices и опубликована 31 января 2022.

Интересно, а нельзя ли написать производителю ценников и спросить как их программировать?

А как же интерес?)

Ведь гораздо интереснее оставить резюме на рабочем столе написать производителю, и рассказать, как их программировать... :)

Это скорее надо читать, как описание "атаки по питанию", правда качество текста так себе, но необходимо сделать скидку на универсализм переводчика.

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

А тут как тренировка.

Прямо на заглавной картинке девайса имеется значок и надпись NFC. Поиск в яндекс по: "трехцветный e-ink ценник NFC", немедленно обнаружил ссылку на магазин:
https://aliexpress.ru/item/1005004638714316.html
где такие девайсы свободно продаются. Без всяких "удалось приобрести", покупаешь сколько надо. Цена умеренная.
Картинка на них обновляется со смартфона, через — кто бы мог подумать! — NFC, через соответствующее приложение. Есть и более продвинутые варианты, с централизованным обновлением картинок у многих девайсов, с сервера.
Конечно, если вот это всё, описанное в статье, есть самоцель, то остается только снять шляпу и подобрать челюсть...

Ну на самом деле я так думаю что цель - потренироваться в глитчинге. Другие чуваки таким же способом взломали аппаратный bitcoin кошелек, например. Где-то на ютубе есть видео.

Они не все программируются по NFC. В данном случае, если я правильно понимаю, девайс содержит только NFC-метку, которую можно считать. Вместо штрихкода — это ж ценник. А программируется он через некий 2,4 ГГц радио-интерфейс. Об этом говорит и выбор чипа и характерная антенна на плате. Может это Bluettoth, может Zigbee, может проприетарщина. Я когда-то хотел кукпить такие для использования в качестве информеров в умном доме и тоже не нашёл информации как с ними работать.

От обычных ЖК-экранов e-ink отличается тем, что энергия расходуется только при изменении содержимого. Это позволяет оснастить ценники батареей небольшой ёмкости и работать без замены батареи несколько лет...

"Карусель", которая X5 retail group, более 15 лет тому назад имела в магазинах электронные ценники на батарейках. Без всякого E-ink. Там была литиевая батарейка CR2302 или подобная. На сколько точно хватало не знаю, но надолго. Ценники ещё через инфракрасный порт загружали новые цены.

Дисплей там был -- самый обычный LCD, а не E-ink. Без излишеств, только цифры (излишества и динамическая индикация быстро бы съели батарейку).

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

И ещё можно вспомнить любые электронные часы. Не современные "смарт часы" которые каждый день заряжать нужно, а уже теперь "антикварные", 30-летней давности, где будет серебряно-цинковая батареечка со смешной ёмкостью порядка 30ма*Ч. И которой хватит на год. И да, там LCD-дисплей.

Поэтому утверждения, что дескать только E-ink позволяет что-то там сделать работающее по году на одной батарейке -- они совершенно не справедливы. Приборы с LCD-дисплеями тоже запросто работают по году на одной батарейке.

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

E-ink-ценники программируемые через NFC способны работать вообще без батарейки. Ещё они гораздо более контрастны и не имеют проблем с углами обзора. Но и дороже намного. В остальном да, LCD без подсветки очень экономичны.

Поэтому утверждения, что дескать только E-ink позволяет что-то там сделать работающее по году на одной батарейке -- они совершенно не справедливы

Справедливы. Если сравнивать обьемы отображения информации. На e-ink хоть картинку выводи, хоть цифры - без разницы. А lcd только заведомо известную информацию, и не много, а то батарейки надолго не хватит...

Ну и если говорить что информация не обновляется долгое время - так вообще.

Почему заведомо известную? Цену покупатель до взгляда на дисплей не знает. Как и время до взгляда на часы.

Разряд батареи от количества отображаемых элементов не очень зависит, скорей от их совокупной площади (и электрической ёмкости).

И буквы на LCD-дисплее (наименование товара) запросто можно сделать. Ну немного прямоугольные и не очень много... Поэтому E-ink и лучше, что там наименование товара можно полноценно отобразить.

Если информация не обновляется, что как и E-ink, так и LCD-дисплей -- одинаковые примерно свойства. Цифровой LCD-дисплей может хранить картинку без питания многие часы (в часах и калькуляторах цифры гаснут, т.к. разряжаются через электронную схему, можно от батарейки зажечь циферку на дисплее, убрать батарейку -- а циферка останется гореть и потускнеет только завтра). И там и там для обновления картинки нужно контроллеру лишь иногда проснуться и перезаписать содержимое (в LCD неплохо бы ещё с другой полярностью, чтоб дисплей не деградировал).

В e-ink статичную картинку перезаписывать не нужно. Нужно иногда делать полное обновление экрана при смене картинки, чтобы не накапливался "мусор". А вот для ЖК, да, контролер вынужден регулярно менять полярность и тратить на это энергию, даже если изображение статичное.

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

Я конечно не настоящий сварщик, но почему вы не записали в начало памяти код который прочитает все содержимое памяти на какую-нибудь ногу?

Т.е. прочитали например килобайт вашим способом. А потом записали в этот килобайт программу которая вычитывает память. Тем более что у вас есть стертая микросхема потренироваться.

Это невозможно. Операции чтения и записи блокированы. Только все стирать. Или игры с отладочным интерфейсом с кодом в памяти.

Sign up to leave a comment.