Опубликован релиз набора утилит mmc-utils 1.0, предназначенного для низкоуровневой настройки карт памяти MMC, eMMC, SD и SDIO из пространства пользователя. Выпуск отмечен как первый официальный релиз (проект развивается с 2012 года). Код написан на языке Си и распространяется под лицензией GPLv2...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=63472
И что позволяет делать простому смертному эта штука?
Как-то видеорегистратор переводил флешки в режим "только для чтения". Вероятно это должно помочь. Где взять нужные ридеры?
Во втором абзаце новости написано.
> И что позволяет делать простому смертному эта штука?Простому смертному лучше не трогать лапками низкоуровневые сервиснвые утилиты типа этого, hdparm, всяких flashrom, утилсов scsi и проч. Целее оборудование будет.
Менее простому смертному это позволяет например настроить ряд параметров (u)SD/(e)MMC. Кроме всего прочего - они все например умеют ReadOnly. Как временный - так и перманентный. Ахтунг: перманентный readonly реально - перманентный. И снять его потом - нельзя.
С другой стороны так можно сделать себе "верифицированную" бутявку с например линем, где софт 100% тот который задумано и никакой руткит-буткит-малварь не сможет это переписать вот хоть там что. Правда и обновить этот софт вы тоже не сможете.
Перманентный б̶а̶н̶ readonly это какая-то фьюза пережигается?
Тогда оно, по идее, должно быть в стандарте.
Следовательно у китайцем может быть, а может нет)
> Перманентный б̶а̶н̶ readonly это какая-то фьюза пережигается?Как минимум, карты где-то внутри, в out of band области запоминают эту настройку - и по регламенту перманантный readonly - one-way! Временный - снимается. Постоянный - нет.
> Тогда оно, по идее, должно быть в стандарте.
А оно и есть в стандарте.
> Следовательно у китайцем может быть, а может нет)
Контроллеры и его фирмвару не так уж много фирм делают и скорее всего - они спеки все же реализовали. Можете поэкспериментировать и посмотреть. Только учтите что снять пермарентнй RO реально - не получится потом.
Есть ссылка на "прочитать" об этом? Не понимаю как работает. Т.е. прошивка на карте памяти такую функцию реализовывает?
> Есть ссылка на "прочитать" об этом? Не понимаю как работает.Накормить поискарь словами типа SD Memory Card Specification 2.0 - и изучайте себе что оно там умеет. Аналогично для eMMC. Официально для SD урезанные спеки доступны легально но там все есть. Для eMMC вроде и полные - официально.
> Т.е. прошивка на карте памяти такую функцию реализовывает?
SD/eMMC состоит из микроконтроллера который рюхает команды интерфейса и массива флешпамяти за ним. Микроконтроллер делает
1) Парсинг команд по интерфейсу и ответы на них.
2) Вещи типа wear leveling, и вообще FTLКоманды регламентированы в стандарте SD или eMMC. И конечно у него на самом деле куча настроек, своя фирмварь и что там еще. Часть настроек задефайнены в стандартном виде как регистры карты. На самом деле их конечно больше.
С формальной точки зрения защита карты от записи - запись в карту содержимого регистра CSD (он частично записываемый), где установлен бит 13 (перманентный WP) или 12 (временный WP) - через CMD 27. Временный можно снять, постоянный - фигвам. По крайней мере, через официально специфицированный интерфейс снять уже не получится. Где CSD физически хранится и можно ли его переписать какими-то вендорспецифичными приколами и все же откатить эту диверсию - вопрос номер два, конечно. Но это настолко сложно и вендорспецифично - что в целом можно уповать что буткиты и проч обломаются. Особенно если потом это в usb ридер вставить, где отсылка команд SD/MMC не предусмотрена чисто технически и CMD27 и тем более вендорспецифика - до карты не долетит.
В принципе если карту потом в usb ридер сунуть - можно и временный, ибо как всякие умники через usb ридер то CMD27 пропихнут? :) Правильно - скорее всего никак, в usb mass storage штатно такой абстракции - нет. Для этого придется карту в mmc host сунуть и там это снять.
Про перманентный ридонли, не знал, круто! Реально открывает ряд возможностей, как раз идеально для загрузочных флешек(если нужен софт по новее, просто покупается новая флешка), а так же для эмбедовки всякой - тот самый вариант лечения всех болезней перезагрузкой.
Лично использую сабж чисто для мониторинга износа флешек.
> Про перманентный ридонли, не знал, круто! Реально открывает ряд возможностей,Именно. Readonly boot loader, вохможно с вшитым "root of trust" который не получится заменить вот хоть там что. И перезпписать на более удобный для хацкера - тоже не получится.
Так можно сделать схему доверяемой загрузки наподобие того что гугл в хромобуках практикует. С поправкой на то что служит это все тому кто такую штуку скроил, и это довольно сложно оспорить вот так сразу.
может, скажем ему? А, не, улыбаемся и машем...
А если перевёл память телефона в перманентный read only? Один клиент так сделал и в результате чего ничего не помогает... Ни боксы, jtag, edl, isp... Только перепайка чипа памяти на плате телефона...
> А если перевёл память телефона в перманентный read only?Если ему именно перманентный WP выставили через CSD бит 13 - упс, тогда вам все же придется отпаять eMMC, и на другой заменить, в общем случае. В eMMC _свой_ микроконтроллер встроен, рюхающий MMC интерфейс, с _своим_ набором настроек и мнением что и кому (не)льзя делать, на JTAG основного проца ему...
Правда не очень понятно как клиент на такое вообще из#$%нуться сумел. Иногда sd/eMMC и сами в ридонли уходят - когда резервных блоков не осталось на ремап. Тут упс, оно просто отжило свое, это "safe mode" такой. Данные выцепить можно а сверх того - фиг.
Если что вон те утилсы - умеют SD/MMC команды в "MMC хост" пулять. Но для этого они должны быть ессно запущены на проце девайса. И перманентный WP они все же не снимут. Но может дело не в нем?
Посмотреть CSD как минимум в норм линухе можно cat /sys/class/mmc_host/mmc0/mmc0:aaaa/csd
Выдаст CSD (128 бит регистр). Вместо aaaa может быть другое число, ls /sys/class/mmc_host/mmc0/ - и смотрите как оно обозвано.> Один клиент так сделал и в результате чего ничего не помогает...
> Ни боксы, jtag, edl, isp... Только перепайка чипа памяти на плате телефона...Ну вот блин да. Если выставить перманентный readonly через CSD - бит 13 - тогда официально его вообще не того. Можно ли неофициально такое откатить - извратом с вендорскими командами - кто ж его там знает, оно вендорспецифично и такое исследование будет стоить - как товарный состав этих телефонов.
Я сейчас нуб в этом, а как там с долговечностью хранения, ведь вроде нужна периодическая перечитка полного содержимого (перезарядка кондеров) нужна, это не считается на низком уровне записью?
Тут скорее вопрос, помогут ли и как эти приблуды, например, восстановить данные с помершей карты памяти( иные флешки, кстати, содержали внутри микро-сд + микро-картридер с юсб-выходом )
Ибо из статьи оущение, что предлагается даром ненужный функционал - вроде чтения никому ненужных регистров и перевод карты памяти/ отдельных блоков на только_чтение. Ну ахренеть просто - взять - и сделать карту памяти незаписываемой!
Ровно нихрена. Откуда у простого смерда mmcblk устройство возьмется?
У меня на ноуте, если во встроенный картридер вставить microSD, появляется mmcblk-устройство.
> У меня на ноуте, если во встроенный картридер вставить microSD, появляется mmcblk-устройство.Тебе кажись повезло и походу тебе настоящий MMC HCI подогнали, им можно с сабжевыми утилсами поразвлечься. Если перспектива превратить какую-нибудь карту в тыкву не пугает :)
Заодно можешь смотреть всякие CID, CSD, mfd ID карты или что там еще, /sys/class/mmc_host/... живет, линух вывешивает что с карты прочитал.
Ноуты на памяти emmc, одноплатники, кардридеры.
В SLC-режим память перевести. Теоретически.
https://forums.raspberrypi.com/viewtopic.php?p=1118280&sid=9...
Например у меня планшет работает только с одной картой на 16 гб на полной скорости, с остальными(не зависимо от размера) работает на низкой скорости. Чем эта одна карта отличается от остальных как раз и смогу узнать с помощью этой программы
Выравниванием раздела при форматировании? Прошивку копать для этого вообще не нужно.
годно, нужно, но я уже забыл когда последний раз полнорамерной SD пользовался... да и вообще SD/MMC.
> годно, нужно, но я уже забыл когда последний раз полнорамерной SD пользовался...
> да и вообще SD/MMC.Это вообще прежде всего для eMMC сватается, но до кучи частично рюхает и (u)SD. Они на самом деле близкородственные стандарты, просто от разных стандартизаторов. Электрически и логически примерно одно и то же, плюс-минус несколько команд.
Утилита полезна для создания защищённых электронных журналов встраиваемых устройств.
1. Как понять "настоящий"? Картридер ноутбука к нему относится?
2. С microSD работает?
> 1. Как понять "настоящий"? Картридер ноутбука к нему относится?Скорее всего нет, обычно они на USB-шине сидят, а внутри он точно такой же как купленный за $5 на Амазоне.
> 2. С microSD работает?
Чего ж нет-то?
> 1. Как понять "настоящий"? Картридер ноутбука к нему относится?Если видите что-то типа
[ 3.823027] mmc0: host does not support reading read-only switch, assuming write-enable
[ 3.835794] mmc0: new high speed SD card at address aaaa...и у вас есть /dev/mmcblk* - значит это оно. Но у ноутов ридер часто бывает тоже usb-бриджом и тогда это не лучше usb картридера, кроме того что оно - встроено.
Такое часто есть на одноплатниках. Ну и мобилках, черт знает насколько сложно затолкать сабж утилиты на ведроида, но если у вас есть ведрофон с uSD слотом и дистр линя в чруте - возможно прокатит запустить сабж и там.
> 2. С microSD работает?
До некоторой степени. Readonly ставить вроде умеет, и CSD смотреть и проч. Технически (u)SD и (e)MMC это близкие и довольно плотно связанные стандарты. У них есть _некоторые_ отличия в _деталях_. И вот тут конечно возможны некоторые варианты на тему что в конкретнйо ситуации сабж рюхает. А для понимания о чем все это вообще - можно почитать стандарты на SD и eMMC. Да, если в вашем ведрофоне eMMC и удалось сабж завести - ктулху вас упаси параметры eMMC крутить, если вы кирпича не хотите получить. При том в некоторых случаях - перманентного.
То есть так?
/dev/mmcblk0: 7,45 GiB, 7994343424 байт, 15613952 секторов
> /dev/mmcblk0: 7,45 GiB, 7994343424 байт, 15613952 секторовПоходу настоящий mmc hci. См /dev/mmcblk* и вон там написано как например его CID/CSD посмотреть например.
>Код написан на языке Си и распространяется под лицензией GPLv2Скажите разрабам, чтобы лицензию переводили на GPLv3.
А дампануть прошивку MMC, eMMC и SD на диск эта утилита может?
> А дампануть прошивку MMC, eMMC и SD на диск эта утилита может?Вот именно эта, именно так сразу - врядли. Но если вы накопаете вендорские команды для такогого то можете на ее примере посмотреть как это слать и - подпатчить.
В какой-то из спек eMMC вроде как запилили команды для аплоада новой фирвари, по типу как для SATA, но про ее чтение там вроде ничего не было. Чисто для апдейта. И тоже вероятно вендорспецифично весьма.