Фальшивые флешки, или еще одна технология ремонта

Да, кроме поддельных денег, паспортов, продуктов бывают и электронные фальшивки. Столкнулся недавно, даже не сразу поверилось. Весьма продвинутый в технике товарищ как-то раз принес несколько флешек, без каких либо фирменных опознавательных знаков, если не считать надпись 4G и некий логотип. Все четыре флешки сильно сбоили, при записи относительно больших (больше нескольких мегабайт) файлов их нельзя было уже считать. Записанный фильм отказывался проигрываться, и т.п. Быстрая внешняя проверка одной из флешек ничего подозрительного не выявила, кварц выдавал положенные 12МГц, питание было в порядке, контроллер тоже. Флешки были отложены, до поры до времени.

И вот, судьба вновь вернулась к ним. Тут стоит сделать небольшое отступление. Физически флешка состоит из USB-контроллера и подключенной к нему микросхемы памяти. Контроллер универсальный, и поддерживает различные объемы, а задание конкретных параметров флеш-накопителя осуществляется уже после его изготовления, при помощи процедуры программирования. В это же время мне довелось изученать подключение микросхем памяти NAND Flash к внешней шине у микроконтроллера с архитектурой ARM (AT91SAM7SE512) на нашей плате CIIISE256-1.0.3, и провозившись некоторое время с чипом Samsung K9F5608U0B-YCB0 (как впоследствии оказалось, неисправным) от карточки CompactFlash 128MB, решил отпаять чип от одной из глюкавых флешек и подключить к ARM. Еще бы, 4GB NAND в распоряжение микроконтроллера, огромное поле для экспериментов. За минуту чип был отпаян, еще через пару минут занял свое место на самодельной плате xDevs.com.

Работа сразу заладилась в нужном ключе, микросхема памяти исправно отвечала на запросы ID, и читалась. Вот тут то и началось самое интересное. Каждая модель микросхема памяти, по крайней мере у Samsung, имеет уникальный код, так называемый идентификатор, который позволяет определять процессору какая именно микросхема была подключена, и какие у нее параметры и размеры блоков,страниц и подобная служебная информация. А интересное было в том, что этот код не совпадал с написанным в datasheet на микросхему. Неправильный алгоритм чтения кода? Помехи на линиях данных? Но изучение сигналов с помощью логического анализатора (все та же плата xDevs EP2C8DBRD с ПЛИС ALTERA Cyclone II, что и в статье о ремонте материнской платы Intel DP35DP) показало – что все считывается совершенно верно. Вот выдержка из терминала обмена с микроконтроллером.

-- Basic NandFlash Project 1.4 --
SkipBlockNandFlash_Initialize()
RawNandFlash_Initialize()
RawNandFlash_Reset()
No model provided, trying autodetection ...
RawNandFlash_ReadId()
Nandflash ID is 0x2514D3EC
Retrieving bad block information ...
-I- 	Nandflash driver initialized
-I- Size of the whole device in bytes : 0x40000000 
-I- Size in bytes of one single block of a device : 0x40000 
-I- Number of blocks in the entire device : 0x1000 
-I- Size of the data area of a page in bytes : 0x800 
-I- Number of pages in the entire device : 0x80 
-I- Bud width : 0x8 
-I- Test in progress on block:      0

Код идентификации – 0×2514D3EС, или если развернуть байты – 0xECD31425. А микросхема с флешки имеет маркировку Samsung K9HBG08U0M. Даташита на именно такой чип найти не удалось даже на сайте производителя, но нашелся ДШ на K9HBG08U*1*M, которые представляют собой 16 гигабитную флеш-память. ID этой микросхемы – 0xECD55525, даже близко не похож на наш. Копаем дальше.. Как все мы знаем, 8 бит составляют 1 байт, и емкость микросхемы равна 2 ГБайтам. Откуда же взялось 4, так смело написанные на корпусе чудо-флешек? И определенный микроконтроллером размер памяти в байтах равный 0×40000000 – в переводе на десятичное представление – как раз 1 073 741 824 байт, т.е. 1ГБайт. Однако это еще не все.
Как принято у Samsung, предпоследняя цифра в маркировке 1 означает количество банков. В документации об этом вполне недвусмысленно написано:

The K9HBG08U1M is composed of two K9LAG08U0M chips which are selected separately by each CE1 and CE2

То есть, на русском языке это значит что внутри корпуса две микросхемы Flash, а выбор чипа происходит с помощью раздельных сигналов CE. Все отлично, все понятно, но наша U0M имеет только 1 CE, что подтверждается также изучением PCB флешек. Т.е. даже если у нас и стоят K9HGB08U1M, то доступ можно получить только к половине памяти. Но все оказалось еще проще.

Небольшой поиск в Google, выдал ссылку на PDF-документ, в котором перечислены маркировки микросхем, и соответствующие им ID и параметры. В документе все совпадает с даташитами, K9HBG08U1M имеет код 0xECD55525, маркировки K9HBG08U0M вообще не существует, а вот считанному нами ECD31425 соответсвует микросхема K9G8G08U0B. Маркировка на поверхности чипа – сказки, не имеющие никакого отношения к реальной начинке микросхемы. Емкость K9G8G равна 1ГБайт, ID в официальном ДШ от Samsung тоже такой же, следовательно причина найдена совершенно однозначно.

Хитрые поддельщики перепрограммировали контроллер флешки, чтобы тот сообщал компьютеру объем 4ГБ, а память установили на 1ГБ. В итоге мелкие файлы, записанные на такой накопитель успешно сохранялись, если бы размером равным или меньше чем 1 страница. А если больше – тогда в файле просто были дыры, ведь на самом деле 75% информации никуда и никогда не записывалось.

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

Что же делать с чудофлешками? Снова помог Google, путем нехитрых ключевых слов были найдены различные программы для программирования микроконтроллеров, применяемых в флешках. В наших был применен iCreate i5128, и нашлась именно подходящая для него программа.

Немного манипуляций, и контроллеры флешек были перепрошиты на 1ГБайт. Тестовая проверка записью фильма проблем в работе “отремонтированных” флешек не выявила. Итого из четырех фальшивых флешек на “4ГБ” получили три рабочих исправных по 1ГБ, а одной пришлось пожертвовать, т.к. микросхема NAND от нее теперь прописалась в стенде xDevs.com на базе микроконтроллера AT91SAM7SE512. Как заключение, результаты тестирования одной из флешек после ремонта.

Что поучительно – подобные флеш-фальшивки повально продаются на ebay нечистыми на руку продавцами, преимущественно из Китая. Люди которых волнует сложившаяся ситуация даже создали специальное сообщество [10], с целью выявить подделки и предостеречь незадачливых покупателей от возможных проблем и потерь информации. В целом ситуация во многом соответствует популярной поговорке – “Дешевый сыр только в мышеловке”. Будьте внимательны при покупках, особенно на различного рода аукционах.

Перечень использованных источников:

ATMEL AT91SAM7SE512 datasheet
Hexus.net
FixFakeFlash
SOSFakeFlash

Author: Ilya Tsemenko
Created: Aug. 3, 2009, 1 a.m.
Modified: July 5, 2015, 5 a.m.

References