4991

Скрытый монолит или Seagate Seatools – убийца флешек.

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


Новогодние подарки подарены, салаты съедены, а на работу ещё рано! Значит, есть время рассказать об интересных случаях из будней DR, благо неопубликованного материала накоплено прилично. Буду потихоньку публиковать. Пишу по памяти, часть фотографий сделаны на тапок, по этому не обижайтесь, могу чего-то и позабыть.


Летом написал мне один пикабушник (пожелал остаться анонимным), с проблемой. Запустил он утилиту «Seagate Seatools» для проверки своего диска, при этом забыл вынуть флешку. Флешка после такого неуважения взяла, да и приказала долго жить. А там…. да как обычно, вся жизнь и ещё половинка чужой.


Сначала сам не поверил в такие странности, с чего бы утилите для проверки дисков убивать флешку? Понимаю ещё, при неправильном использовании, можно потереть содержимое, но убить флешку… Чудеса, да и только, либо что-то недоговаривают.


Оказывается, чудеса случаются, и случаи такие не единичны, есть даже темы на «профильных» форумах flashboot.ru/forum/index.php?topic=61036.0 и www.usbdev.ru/f/index.php?topic=787.0 (Не знаю, можно ли тут публиковать ссылки на сторонние ресурсы, если не прав – дорогие модераторы, прошу меня простить и удалить ссылки.)

Видимо, программа какими-то командами портит служебку или фирмварю флешки при попытке получить от неё идентификаторы или ещё какую-то информацию.


Вот какой мне показали новопреставленную флешку + бонусом лапку кота пикабушника:

Пока флешка ещё хоть как-то определялась, но с нулевым объёмом, с неё успели снять идентификаторы через программу «Chip Genius»:


Description: [W:]Запоминающее устройство для USB(USB MEMORY BAR)

Device Type: Mass Storage Device


Protocal Version: USB 2.00

Current Speed: High Speed

Max Current: 100mA


USB Device ID: VID = 090C PID = 3000


Device Vendor: Silicon Motion,Inc.

Device Name: SM3255AA MEMORY BAR

Device Revision: 0100


Product Model: USB MEMORY BAR

Product Revision: 1000


Controller Vendor: SMI

Controller Part-Number: SM3257ENAA - ISP NONE

Flash ID code: ECD798CE - Samsung K9ABGD8U0B - 1CE/Single Channel [TLC-8K] -> Total Capacity = 4GB

Ну, в принципе, ничего страшного и смертельного. Флешка по фотографии не монолит. Внутри SM3257EN + одна микросхема памяти. Хотя память и TLC, но умерла флешка не из-за износа ячеек памяти, поэтому особых проблем с вычитыванием битовых ошибок не должно быть. Да и лапа котейки на фотке красивая. Как тут можно отказать? В общем, договорились о пересылке трупика мне.


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

Вот таким он предстал передо мной:

«Гм, обычная рекламная флешка, сейчас мы её раздербаним», - подумал я.

«А вот @#$%& тебе!» - подумал остывший трупик флешки.

Поддеваем пластик со стороны usb-порта, а там:

Упс! Внутри затаился страшный зверь - монолит.

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


Дальше всё по накатанной. Гладим пузико трупа наждачкой, располагаем его на «операционном столе», распаиваем проводами питание. На этот раз используем новый «операционный стол» под названием «Spider board» из комплекта комплекса «PC-3000 Flash»:

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

Расставляем иглы на монолит под микроскопом и подключаем адаптер к основному блоку комплекса:

После подключаем к компьютеру, запускаем комплекс, назначаем иглам определённые сигналы, пытаемся читать идентификатор микросхемы памяти. И получаем неизвестный идентификатор. Гхм… Попробуем пошевелить иголки, возможно не все хорошо контактируют. Шевелим пинцетом под микроскопом, снова подключаем и читаем идентификатор. Ура, идентификатор прочитан правильно. Читаем содержимое микросхемы памяти:

Дальше корректируем по ECC содержимое, перечитываем страницы с нескорректированными битовыми ошибками. Как и ожидалось, ошибок было немного и все они удачно скорректировались\перечитались.


Кто из коллег имел дело с «PC-3000 Flash», тот знает, что построение правильного графа преобразований и транслятора в нём частенько не такая уже и тривиальная задача. Поэтому, для начала, грузанём считанный образ микросхемы памяти в комплекс «Flash-Extractor». Благо там есть хорошо работающий мастер для сборки флешек на контроллерах SM3257:

Комплекс ругается на несоответствие объёма подсунутого образа и записей в его внутренней базе, но отрабатывает корректно:

ECC зелёное, микс собран, сборщик настроен. Давайте взглянем на то, как собралась флешка:

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


Переходим обратно в ПС-3000 и начинаем колдовать с графом преобразований. Пару-тройку часов колдовства над графом Дракулой и получаем вот такого кровопийцу:

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

Теперь посмотрим на то, что у нас собралось:

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

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

На этом восстановление можно считать завершённым.


Засим разрешите откланяться. В следующий раз расскажу историю про восстановление длиною в полтора года.


Если кому-то понадоблюсь – всегда welcome ко мне в вк odinokij_kot или в телегу @Odinokij_Kot

Сообщество Ремонтёров

8.1K поста44.1K подписчиков

Правила сообщества

ЕСЛИ НЕ ХОТИТЕ, ЧТОБЫ ВАС ЗАМИНУСИЛИ НЕ ПУБЛИКУЙТЕ В ЭТОМ СООБЩЕСТВЕ ПРОСЬБЫ О ПОМОЩИ В РЕМОНТЕ, ДЛЯ ЭТОГО ЕСТЬ ВТОРОЕ СООБЩЕСТВО:


Посты с просьбами о помощи в ремонте создаются в дочернем сообществе: https://pikabu.ru/community/HelpRemont

К публикации допускаются только тематические статьи с тегом "Ремонт техники".

В сообществе строго запрещено и карается баном всего две вещи:

1. Оскорбления.

2. Реклама.

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

Вы смотрите срез комментариев. Показать все
DELETED
Автор поста оценил этот комментарий

А не поделится ли уважаемый автор мыслями по поводу самоблокирующихся в ReadOnly microSD? Существуют ли в открытом доступе хотя бы на Samsung и SanDisk команды разблокировки? (понятно, что слать такие команды можно только через Arduino или типа того)

Или оно лечится только полным форматированием утилитами, которых не существует за пределами заводов? (по типу как "burn-ы" для HDD Samsung-ов были?)

раскрыть ветку (16)
0
Автор поста оценил этот комментарий

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

раскрыть ветку (15)
0
Автор поста оценил этот комментарий

о, хоть немного разумных мыслей

DELETED
Автор поста оценил этот комментарий

Хочу с вами поспорить, хоть уже понял, что вы ответа не знаете, и дальнейший разговор не имеет смысла...


Во первых не из-за износа памяти! Целых три НОВЫХ microSD Verbatim сдохло при выключении питания телефона Samsung Galaxy S1, во время просмотра фильма, в момент "батарейка села, выключаюсь"... Хорошо, что на них была местная гарантия...


А во вторых даже, если из-за износа (1шт Samsung EVO 64Gb, желтая; 2шт из 3 шт SanDisk  32Гб с распродажи JD  за $0.05), то это означает, что никакого "алгортма равномерного износа свободных ячеек" не существует (т.е. проклятые маркетологи брешут) и каждая новая запись на флешку (в FAT/NTFS в первую очередь) идут в первую свободную ячейку/группу (не знаю как там у флешек "сектора" называются)!!!!

раскрыть ветку (13)
2
Автор поста оценил этот комментарий

Никто не отменяет неисправностей флешки. При неожиданном отключении питания микропрограмма флешки может что-то не успеть дописать в служебные области и по этому "сломаться" изза повреждения той самой служебной области.

Как это починить именно sd карты любых форм-факторов я не знаю. С usb флешками проще, нашёл утилиту заводского преформата, прогнал ею и она опять в строю. С SD хуже, утилит преформата для них я встречал крайне мало, и для них нужен "правильный" картридер, который в системе появляется не как "Mass Storadge Device", а как полноценный "SD Host adapter". Такие раньше встречались в ноутбуках. Сейчас же даже в ноутах ставят дешёвые usb-ридеры. А обычные usb-ридеры не пропускают служебные команды к флешке, и какая либо работа с ними служебным софтом не возможна.

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

За такой ответ спасибо! Насчёт интерфейса знаю, поэтому и писал, что "команду можно послать через Arduino".

Главное разобраться что слать! Или что-то типа как в HDD "Sequrity Lock/Unlock с паролем" - не прлучится скорее всего, или просто что-то исправить "в каком-нибудь паспорте" тупым Read/Write.

И да, я понимаю, что "без пересчёта транслятора" или как там оно у флешек называется - это вероятно напрасная трата сил. Но не выкидывать же 32/64 Гб microSD-шки!!!

0
Автор поста оценил этот комментарий

а кто сказал что новая память обязана быть исправной ? вы читали непосредственно нанд с этих накопителей, оценивали ecc статус всех блоков ?

раскрыть ветку (10)
0
DELETED
Автор поста оценил этот комментарий

Если цена $20 за 1шт microSD 64Gb, то как бы,обязана быть исправной... Но личный опыт говорит об обратном... Поэтому я решил пойти другим путём - полностью отказаться от брендовых microSD (по любой цене), а брать только самые дешовые, но с положительными отзывами. Для экспреримента взял Mixza 32Гб по $3.25...

раскрыть ветку (9)
1
Автор поста оценил этот комментарий

Бренд и"китай"... Это ровным счётом ничего не значит, делают их все на одних и тех же известных заводах из одних и тех же комплектующих. Брак есть везде, больший риск нарваться на брак купив дешёвую флешку, а там как раз таки и будет TLC, эти могут умирать в тот же день и никакие отзывы от этого не спасут... А глюки вари что у брендов, что у дешёвых китайских одни и те же, потому как бренды и "китайцы" вари не пишут, их пишет производитель контроллера продающий контроллеры как брендам, так и "китайцам", а в случае mSD так вообще продают уже готовые карты на которые как бренд, так и "китай" только лепит свои наклейки и делает упаковки. Правда есть правила работы с любыми твердотельными накопителями что бы они жили долго и счастливо, но это не место о них рассказывать, да и я не заинтересован в их вечной жизни.

0
Автор поста оценил этот комментарий

Понимаешь какая штука с этими флешками. Чем дешевле накопитель, тем дешевле память в него ставят. Контроллеры бывают тоже чёрт знает какие, но обычно это самые дешёвые из линеек нормальных производителей, SM, Phison, InnoStor и тд. А вот на памяти можно круто съэкономить, взяв память из отбраковки, а не с нормальной приёмкой.

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

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

Живой пример - сейчас все распродают за копейки флешки фирмв Netac. Заказал я себе на разбор и опыты разных объёмов u903. Внешне одинаковые модели, но разного объёма, чисто логически должны быть одинаковые, и отличаться количеством микросхем памяти. Вскрываю одну - внутри контроллер от Phison, вскрываю другого объёма флешку - внутри совсем другая начинка и контроллер от SiliconMotion. Память в обоих случаях немаркированная заводом, не помню уже чьего производства по fid. Да, флешка работает, но много она не протянет и годится разве что детям мультики на телеке смотреть.

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

раскрыть ветку (7)
0
DELETED
Автор поста оценил этот комментарий

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

К сожалению я не знаю как смотреть количество ECC ошибок на ещё живой флешке (это ж наверное как-то надо снять дамп и уже с него каким-то платным софтом смотреть....) ...Понятно что чисто для себя лечить платными утилитами и инструментами мусорные флешки экономически не выгодно. Лучше пачку НеТаков купить  или один Transcend :-)


...Но с microSD все по другому. Всё случаи сдыхания что я видел - это однозначно принудительная блокировка записи какой-то командой (изнутри)!!! Должна же быть возможность разблокировать запись!!! Если оно повторно будет блокироваться, то понятно, что microSD в мусорку. Но ведь с большой вероятностью проблема там в другом - нежиданное пропадание питания, плохой контакт в разъеме и т.п...

раскрыть ветку (6)
1
Автор поста оценил этот комментарий

Думаю и на эти флешки есть заводские утилиты преформата, но, как Вы будете с ними работать? Все технокоманды будут идти по протоколу sdio. А 99,9% современных карт-ридеров и внешних, и встроенных в ноутбуки работают по порту usb и прокотолу Mass Storage Device.

На моей памяти и в моих руках были только старые ноуты с картридером-контроллером sd-bus на чипах ricoh, и старые отдельные картридеры в слот pcmcia. В них через вызов винапишной функции DeviceioControl можно посылать различные сырые sdio команды карте.

Я в своё время писал свой софт под это дело и специально для работы с этим софтом держу такие ноуты и картридер в подсобке. Будет свободное время - переделаю себе это всё дело на stm32f4. Там и аппаратный sdio есть, и usb. Сделать имитацию картридера + софт для отправки служебных комманд вопрос времени и свободных рук.

В новых ноутах всё поголовно на usb сидит.

Собственно как и чем Вы хотите отправлять эти волшебные команды разблокировки, даже при условии того, что они Вам будут известны?

раскрыть ветку (5)
0
DELETED
Автор поста оценил этот комментарий

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

https://www.aliexpress.com/item/Micro-SD-card-mini-TF-card-r...

и любой процессорной платы Arduino (от $2 до $10 самые дешовые).

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

...Беда там в другом - писать свою программу - это ад, потому что компилятор там внешний (оболочка его через коммандную строку вызывает). И поэтому никаких отладочных средств нет! Но программы в стиле "Hellow world!" там не плохо получаются с выводом результатов на терминал через встроенный UART-TTL > USB.


В этой теме (где в основном тусуются только конечные пользователи):

http://forum.ixbt.com/topic.cgi?id=27%3A8738

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

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

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

Я с такими флешками уже экспериментировал, попытка очистки через подсистему sd security не проходит. Дальше всё нештатные средства для каждого контроллера.

По этому только преформат, всё как на обычных usb-флешках.


"...Беда там в другом - писать свою программу - это ад, потому что компилятор там внешний (оболочка его через коммандную строку вызывает)." - а вот это уже без коментариев. Ну запускает внешний компилятор, и что? Да например та же MS Visual studio запускает из среды разработки тоже консольный компилятор. Нет, я конечно с лёгкой долей юмора и иронии отношусь к IDE Arduino. Слишком тяжеловесные библиотеки, код работает медленно, жрёт много ресурсов, часто библиотеки написаны быдлокодерами, а "пользователи" пытаются использовать SoftwareSerial библиотеку прямо на пинах нормального аппаратного сериал порта. Аналогичное, написанное мной от руки на чистом си и прямой работой с перефирийкой без библиотек прямо в той же среде разработки работает в десятки раз быстрее.

Например тупо мигание светодиодом в цикле без задержек через digitalWrite() даёт не больше 100кГц меандр на ножке, а прямой работой с регистрами порта - легко больше 1 МГц. И это без использования асма. На всяких attiny2313 приходилось вообще на асме писать, из-за малого размера памяти.

Но это нормальная среда для "рисования программ" и прототипирования, для проверки идей и концептов. Там даже можно писать на чистом си, так как оно gcc как кросс-компилятор использует. Да и зачем Вам полноценная отладка с полноценной отладкой, если для Вас написание программы - ад? Да нормальный программист даже светодиод может использовать для отладки. Ну возьмите AVR studio, там есть полноценная отладка с эмуляцией процессора, протэус для эмуляции всей схемы....

Да и в конце концов, тот бандл для карт всё равно где применять, подключите к stm32. Там за копейки можно получить и арм ядро и полноценную отладку в реальном времени.

раскрыть ветку (3)
0
DELETED
Автор поста оценил этот комментарий

Я понял. Действительно, если там полноценные (или даже не очень) бурны, то руками такое не впихнуть. Не буду вас больше отвлекать от работы.

Скажу только о программировании.


Начинал я с Spectrum128 мне там программирование очень нравилось за счёт особенностей среды - одновременно доступны и дисковые операции, и исполнение написанного кода (любыми кусками), и типа скрипты на встроенном Бейсике. Конечно компилировать не так удобно, но терпимо... Самое большое мое достижение - сам (интернета тогда не было) сломал защиту игры "Звёздное наследие" - там было дорожка дискеты необычным образом записана. Я научился писать такую же точно!..


Позже, когда появился ПК с x86 процессором, программы стало писать немного сложнее, за счёт того, что в MS-DOS основными действиями являются файловые операции, и в это же время исполнять что-либо трудно, позже я узнал о TSR-COM программах, и жизнь почти наладилась :-)


...Но пришла Win95, 98, ME. Долго мучался, пока не разобрался с Delphi7. Почти идеальный язык программирования, за исключением того, что плохо сопрягатья с DLL-ками, которые имеют заголовки на всяких разновидностях C...


...Потом пришла WinXP со своим запретом на доступ к любым портам, и прогаммировать смысл пропал. ...Я конечно сразу не бросил программировать, пытался мучать всякие программы. Даже самостоятельно нашёл как GoogleEarth шифрует "картинки", и потом несколько утилит чисто для себя сделал, чтоб и другие типы данных понять как там устроенны... Но с приходом NET программирования в чужих программах стало невозможно ковыряться, так что забросил и это...


...И я надеялся на свет в конце тунеля в виде Ардуинок. Но оказалось, что внешний компилятор очень глючный. Например в WinXP вообще некорретные результаты даёт. А некоторые ошибки в программе не "озвучивает" никак! Только говорит "ошибка компиляции"... Я так хотел с библиотекой LCD разобраться, до оптимизировал (поудалял) и докоментировал всё до чего мог добраться, а как дошло дело до удаления лишних методов у этого объекта - так сразу полезли "ошибки компиляции", я конечно догадываюсь, что это от того что LCD как-то пересекается с объектом Print (или чёто типа того), но где эти пересечения искать или исправлять х.з., а Delphi можно было тупо открыть исходники всяких system.pas, и все проблемы увидеть и решить... Выход из всего этого есть - нужно переходить на родные компиляторы этих всяких Atmega328p, но меня пугает, что прежде, чем скопи-пастить всего одну строку программы "Hellow Word", нужно создать весь скелет "типа ОСи" - заполнить все данные о частоте, о прерываниях, о назначении портов и т.п... Боюсь не осилю столько ручной работы для безнадёжно устаревших Атмег... Интереснее было бы всё то же самое сделать для многоядерных PC, но там, сцука, всё под NDA (как например работает видеокарта Процессора, и где она там вообще спрятана; со всякими nVidia чуть попроще, но где-то так же - как например самому ускоренные треугольники рисовать? ...Конечно есть специальные VESA-BIOS функции, но там больше половины всего тоже под NDA, и возможно уже не поддерживается, так как устарело), а МSR регистры (где спрятана частота процессора, памяти) ещё и физически отрубили даже для ОСи, только BIOS имеет доступ туда. Так что ковыряться с копирастическими PC тоже смысла уже нет :-(


Вобщем, как-то так с программированием у меня...

раскрыть ветку (2)
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку