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

Да, кроме поддельных денег, паспортов, продуктов бывают и электронные фальшивки. Столкнулся недавно, даже не сразу поверилось. Весьма продвинутый в технике товарищ как-то раз принес несколько флешек, без каких либо фирменных опознавательных знаков, если не считать надпись 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

Projects like this are born from passion and a desire to share how things work. Education is the foundation of a healthy society - especially important in today's volatile world. xDevs began as a personal project notepad in Kherson, Ukraine back in 2008 and has grown with support of passionate readers just like you. There are no (and never will be) any ads, sponsors or shareholders behind xDevs.com, just a commitment to inspire and help learning. If you are in a position to help others like us, please consider supporting xDevs.com’s home-country Ukraine in its defense of freedom to speak, freedom to live in peace and freedom to choose their way. You can use official site to support Ukraine – United24 or Help99. Every cent counts.

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

References