Pandora (unbricker/downgrader) для PSP-200X TA-088v3
Сервисный комплект для PSP-200X
(включая TA-088v3)
{ НИЧЕГО НЕ ПРОДАЁМ / NO SALES HERE }
После удачного взлома и последующей длительной заморозки в скрытом разделе темы: "Размышления о возможностях взлома ТА88v3"
было решено, что настало время её разморозить и отдать "в народ".
Дабы не нарушать хронологию "размышлений по взлому", инструкция выложена в шапке отдельной темой.
Первое видео от Yoti
Новое видео подтверждение работы сервисной карты JigKick на PSP-2006 TA-088v3!
Скачиваем "MSID Dumper", вставляем карту памяти в PSP и запускаем программу. Видим на экране номер "Серийный номер" и MSProID вашей карточки и записываем, хотя дамп области MSID всё равно сохранится в корне карты памяти и вы можете его потом посмотреть хекс-редактором. Это вам может пригодиться, когда вы будете искать данные MSID в дампе микросхемы.
Тонким скальпелем располовиниваем корпус карты памяти пополам. Не поностью, а только заднюю часть и чуть больше половины по краям.
Затем пинцетом достаём из корпуса плату, она не приклеена, а просто лежит в пазах.
Из платы выпаиваем микросхему памяти (nand), которая самая большая и имеет 48 ножек. Рядом находится небольшой квадратный контроллёр памяти, его не трогаем.
Нужно учитывать, что с виду карты одинаковые, но внутри могут быть разные нанды, например Hynix или Samsung. Поэтому под вашу микросхему уже потом ищется программатор. Смотрим список поддерживаемых микросхем: http://www.soft-center.ru/reader/NAND_List.php.
Hynix, насколько я знаю, практически все имеют одинаковый стандарт выводов по даташиту среди TSOP-48, поэтому если буквы или цифры немного отличаются от списка поддерживаемых моделей, то это вряд ли имеет значение.
Микросхема вставляется в панельку программатора очень просто. Панелька имеет конструкцию прищепки, нажимаем сверху, контакты отходят, ставится микросхема и отпускаем, контакты прижимаются к ножкам микросхемы.
Далее, программатор подключается к компьютеру, с заранее установленной программой и драйверами, поставляемыми с программатором. В программе указывается диапазон страниц, которые нужно сдампить и дампится часть памяти.
Сразу дампить 2 Гб всей памяти очень долго, да и не нужно. Сразу скажу, что нужная нам служебная область, где прописан MSID карты находится либо в самом начале, либо в самом конце микросхемы, обычно в 1-ом банке и не далее 3-4 блоков. Рекомендую сдампить сразу 4 блока - это 256 страниц или 0x100 в шестнадцатеричном виде, что и нужно указывать в диапазоне.
Открываем файл дампа в хекс-редакторе. Вводим в поиск, что нужно искать, а именно кусок хекс-кода MSID: 4D535053, что в буквенном выражении означает первые четыре аббревиатуры MSPS(NY0/DK0/XX0), то есть, это часть 16-значного ключа MSID, которая у всех карт памяти MS PRO DUO одинаковая.
Скриншот MSID
Это логическая область с MSID, снятая программой MSID Dumper, сохраняющаяся в корне карты памяти в файл. По структуре она не имеет ничего общего с настоящей областью MSID, которая находится в физическом чипе памяти.
Требуется только для определения номера MSID для поиска в сыром RAW-дампе ципа карты памяти.
Не путать с оригинальным RAW-дампом(снятым программатором)!
Так выглядет оригинальная сервисная область MSID, сдампленная программатором.
Обратите внимание, что она выглядет совсем иначе, нежели на первом рисунке, снятом программой для PSP - "MSID Dumper".
В стартовом секторе содержится серийный номер и MSID.
Далее идут 3 пустых сектора, полностью заполненных FFFFFFFF.
Затем идёт сектор, где указывается фрмат и размер карты памяти.
labaz, не все контроллеры на китайских стиках поддерживают изменение msid.
...часто контроллер обнаруживает подмену msid и карта умирает
Обнаруживает он ее следующим образом:
(1)теория.
Контроллер работает с памятью большими блоками (512, 1024, 2048 и т.д. страниц).
Каждая страница состоит из полезных данных и служебных (512+16, 512+24, 4096+128(K9GAG08U0M) это 512х8+16х8, 4304 = (512+26)*8 или посложнее (512+26)*2/(512+28)*6/4).
В служебных данных каждой страницы содержится всякая служебная информация, включая код ЕСС (код коррекции ошибок). В даташите на конкретный контроллер есть все сведения. качайте, смотрите.
(2) Практика (или где кроется "подводный камень):
- контроллеру подается команда считать блок данных, в котором находится ИЗМЕНЕННАЯ страница;
- контроллер читает весь блок одним махом в буфер;
- далее он уже в буфере проходит по всем страницам считанного блока и смотрит каждую на предмет сходится ли ЕСС страницы. Если все в норме, эта страницы памяти пропускается;
ДАЛЕЕ ВНИМАНИЕ!!
Если ОБНАРУЖИВАЮТСЯ битовые ошибки, то контроллер ПЫТАЕТСЯ исправить эти ошибки. Так как ВНОСИМЫЕ ВАМИ изменения малы, а алгоритмы коррекции в современных накопителях все мощнее и мощнее, контроллер скорее всего СКОРРЕКТИРУЕТ Ваши изменения в соответствии с прилагаемым к странице ЕСС.
Что делать и как быть???
(1) искать способ править дамп через контроллер (стандартный интерфейс накопителя) без обходного маневра с программатором. Уверен ГЕРОЙ уже появился на свет. Хватит ли ему духу остаться ГЕРОЕМ, изменяющим весь мир, а не БАРЫГОЙ, скрывающим тайну даже от своей второй половинки???;
(2) научиться писать в изменяемую страницу NAND помимо нужных данных еще и корректный код ЕСС. Этот путь очень тернист, т.к. алгоритмы в контроллерах постоянно совершенствуются, размер страницы тоже разнится.
(3) искать старые флешки, в которых контроллер наткнувшись на некорректный сектор, не сможет его на основании ЕСС скорректировать (алгоритм слабоват - слишком много изменений на странице памяти), и после нескольких попыток отдаст некорректный блок в свой интерфейс далее.
Сообщение от gregorio
... ещё большая проблема со считыванием и записью nand.
NAND устроена так, что она ВСЕГДА пишется с ошибками. Это связано с самой технологией частоты производства микросхем (фантомные дефекты плавающего затвора). Их еще называют "битовые ошибки" (что-то вроде временных бэд-блоков, только на уровне одного бита данных). Для компенсации этих процессов изобретены алгоритмы коррекции ЕСС (алгоритмы коррекции битовых ошибок).
Скачайте даташит на любую микросхему (скажем на K9GAG08U0M), рассмотрите его. Вы увидите что в служебке страницы NAND заложено место под код ЕСС (у K9GAG08U0M - Page Size : (4K + 128)Byte, 128байт на страницу в 4096).
Сам алгоритм заложен в контроллере. Для примера, скачайте даташит на контроллер AU6980. Контроллер Мемористик блочно мало отличается от этого.
Сообщение от gregorio
... и снова надо делать на новой карте всё заново
Причина умирания карт кроется в двух моментах:
(1) карты неработоспособны по причине не правильной пайки NAND микросхемы. Если не считать установку не по ключу первой ноги, то "не пропай". Пайка волной + микроскоп все решают.
(2) карты неработоспособны по причине не осторожной разборки корпуса и выковыривании платы.
(3) вероятно, что у контроллера из-за изменений в памяти сорвет крышу (он не отдаст порченный блок в свой интерфейс) и он перейдет в технологический режим. Его можно вывести из этого режима путем замыкания в момент подачи питания соседних выводов шины данных между собой (D0,D1 или D6,D7). Затем форматнуть как обычно.
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,741
Вы сказали Спасибо: 819
Поблагодарили 3,841 раз(а) в 2,015 сообщениях
Сила репутации: 1
Репутация: 3841 
(репутация неоспорима)
Erema36,
в принципе, ничего нового, но ёмко и в одном месте =)
Только вот с пропайкой у нас нет проблем, да и контактов "ГЕРОЯ" не знаем. Подскажешь?))
В моём дампе последовательность 204D5350534E5930 встречается 3 раза
2 раза в первом банке и 1 раз в конце второго
Флешка Toshiba TH58NVG5D4CTG20 4Gb - 2 банка по 2Gb
Возникает вопрос - какой msid менять? Или все три?
Вот скрины
в принципе, ничего нового, но ёмко и в одном месте =)
Спасибо.
Тему прочитал. Задача разжевана и понятна.
На днях раздобуду MS Pro и приступлю к экспериментам.
Вопрос: какие-либо утилиты под MS от производителя у кого-нибудь есть ?
Интернет отдает кучу бестолковых страничек.
Сообщение от labaz
В моём дампе последовательность 204D5350534E5930 встречается 3 раза
2 раза в первом банке и 1 раз в конце второго
Глупо хранить служебные данные накопителя в одном месте. Что будет если блок выйдет из строя и будет подменен транслятором? Пропадут немаловажные данные. Это не логично.
По аналогии с файловыми системами, таких мест должно быть два.
Третье - это, наверняка, как раз брошенный контроллером блок. Ему лень тратить время на затирание.
от самой сони есть проги для востановления "убитых" стиков..тока китайцев они нах посылают..
Тогда логичный вопрос:
как утилита различает китаец перед ней или нет?
Уже ли не кода MSID играет свою роль. Интересно будет посмотреть что те что другие.
Время покажет.
Другие консоли: XBOX 360, PlayStation®3 500Gb 3.55
Регистрация: 30.01.2007
Адрес: Москва
Возраст: 33
Сообщений: 626
Вы сказали Спасибо: 208
Поблагодарили 162 раз(а) в 119 сообщениях
Сила репутации: 1
Репутация: 164 
(весьма и весьма положительная личность)
Boryan, а у меня сия утилита работала с китайцами. только не все восстанавливались, ибо совсем мертвые были.
labaz, первый скрин это файл msid.bin или его остатки. короче этот файл создал дампер и там ничего менять не нужно.
второй скрин странный, не могу точно сказать.. на половину похож на то что должно быть.
третий скрин наиболее похож на то что надо менять, на всех картах примерно так оно и выглядело(когда я пробовал делать)
Erema36, такая штука как magic gate видимо. программа может проверять карты на поддержку его. хотя у меня она кушала все карты
Последний раз редактировалось Yoti; 08.09.2011 в 22:45.
(1)теория.
Контроллер работает с памятью большими блоками (512, 1024, 2048 и т.д. страниц).
Каждая страница состоит из полезных данных и служебных (512+16, 512+24, 4096+128(K9GAG08U0M) это 512х8+16х8, 4304 = (512+26)*8 или посложнее (512+26)*2/(512+28)*6/4).
Не стал цитировать весь пост. Но фактически всё правильно! Наверное первый человек, начавший писать в данной теме по существу =)))
В факе мы не стали расписывать все эти тонкости, т.к. не собираемся писать диссертацию для нубов, а написали инструкцию для более-менее разбирающихся в пайке, микросхемах и радиосхемах, а значит готовым взяться за это дело. Им должно быть и так известно про такие технические подробности.
Конечно же, разобрав карту и обнаружив можель микросхемы, первым делом необходимо ознакомится со спецификацией данного чипа.
Ну а кто никогда не держал в руках паяльник, не собирал хотя бы простейших схем, никогда не программировал микрухи и не в курсе, что такое даташит и считает, что здесь всё так просто - тот всё-таки сильно ошибается )))
Хотя, начинать никогда не поздно, как раз хороший повод бежать в магазин за паяльной станцией с феном или термопинцетом, потому что без неё "ансолдеринг" и "солдеринг" будет ох как затруднительным ))), ну и заодно стоит подкупить немного флюса, оплётку и мозговой жидкости.
Немного стоит уточнить понятия страниц, секторов и блоков.
На примере Hynix HY27UH08AG5M, упоминающейся в факе.
1 сектор = занимает 512 байт + данные позиционирования сектора и контрольная сумма ECC (16 байт) в конце каждого сектора.
1 страница = это 4 сектора со своими служебными данными, т.е. 2048 байт + 64 служебных байта = 2112 байт. Это как раз минимальное значение, которое умеет считывать и писать данный чип по даташиту.
1 блок = 8 страниц или 32 сектора, конечно же вместе с техническими данными. 16384 +512 = 16896 байт или 16,5 килобайт. Это минимальное значение, с которым должен уметь работать контроллёр (чтение/запись), используемый в данной области применения.
А так же, достоверно известно, что в один и тот же блок не может быть записано 2 разных файла/кода данных. Если в начало блока попадает конец файла/кода данных (даже 1 или несколько байт) из предыдущего блока, то следующий файл/код данных начинает писаться только со следующего блока, заполнив неполностью использованный блок значениями FFFFFFFF...
Конечно в разных микросхемах спецификации страниц и блоков может разниться, но чаще всего, в области PSP, её нанде и картах памяти, я постоянно встречаю именно такую структуру.
Если что не так, поправьте, могу и ошибаться.
Короче, самая малая проблема состоит в правильном демонтаже и пайке.
Но самая главная проблема - именно в этих коррекционных 16-ти байтах, которые записаны в конце каждого сектора и подтверждают его целостность. А так как мы заменяем ID номер (фактически 4 уникальных байта) в определённом секторе, не пересчитывая заново контрольную сумму изменившихся данных, отсюда и происходит большой процент брака, т.к. контроллёр отбраковывает данный сектор или даже весь блок (?). Вот с этим и надо разобраться.
Если писать через контроллёр (т.е. логическим способом), то конечно он сам подсчитает и скорректирует нужную контрольную сумму. Но для этого нужно знать команду записи MSID и написать программу. Другой вариант - считать логический блок, сменить ID и обратно записать этот блок с помощью программы, но опять же, нужно знать номер блока и команду записи. Это самый верный вариант, но пока затруднительный. Команды вроде даже есть у нас и мы об этом варианте задумывались, вон Yoti чешет репу, читает каждый день мануалы и коды по MSID Dumper-у, чтобы поменять название программы на Writer
Ну а пока, мы чешем репу, чтобы скорректировать ECC. А получается это пока не совсем корректно, только с помощью поддельных карт памяти, в которых, по нашему мнению, именно эта ECC умышленно не учитывается или просто контроллёр на эти 4 изменившихся байта закрывает глаза.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 09.09.2011 в 03:30.
Немного стоит уточнить понятия страниц, секторов и блоков.
...[*]1 блок = 8 страниц или 32 сектора, конечно же вместе с техническими данными. 16384 +512 = 16896 байт или 16,5 килобайт. Это минимальное значение, с которым должен уметь работать контроллёр (чтение/запись), используемый в данной области применения.
Высчитаем размер блока, как минимальной единицы манипулирования данными:
Block size= 128*1024+4*1024= 135 168 байт
т.е. пишем и читаем полезными кусками данных по 128 Кбайт.
Т.о. именно для этой микросхемы размер блока 64 страницы памяти.
Сообщение от ErikPshat
Но самая главная проблема - именно в этих коррекционных 16-ти байтах, которые записаны в конце каждого сектора и подтверждают его целостность. А так как мы заменяем ID номер (фактически 4 уникальных байта) в определённом секторе, не пересчитывая заново контрольную сумму изменившихся данных, отсюда и происходит большой процент брака, т.к. контроллёр отбраковывает данный сектор или даже весь блок (?)
Согласен с Вами. Алгоритм коррекции ЕСС есть самое громадное препятствие.
Возьмите один из них - Код Рида — Соломона (самый распространенный).
Почитать вот тут - http://ru.wikipedia.org/wiki/%D0%9A%...BE%D0%BD%D0%B0
Провел эксперимент комплекс PC-3000 Flash SSD Edition + дамп 4Гб от MS Pro (вроде бы оригинал)
Микросхема K9HBG08U1M, страница 528 байт (512 +16)
Избыточность кода позволяет корректировать 5 байт любых изменений на странице.
Т.е. я беру и хаотично меняю байты на странице. Затем делаю проверку и коррекцию ЕСС. И моих изменений как не бывало.
Поэкспериментировал далее. Только утвердился в своих выводах: будет ли сделана коррекция ЕСС зависит от того что и на что я меняю. Вот он может поправить и 8 изменений, а то и 3 байта уже не исправляет. Интересно что будет если я микросхему так и впаяю обратно в карту (контроллер то тоже не сможет скорректировать эту страницу).
Сообщение от ErikPshat
Другой вариант - считать логический блок, сменить ID и обратно записать этот блок с помощью программы, но опять же, нужно знать номер блока и команду записи. Это самый верный вариант, но пока затруднительный. Команды вроде даже есть у нас и мы об этом варианте задумывались, вон Yoti чешет репу, читает каждый день мануалы и коды по MSID Dumper-у, чтобы поменять название программы на Writer
Можно мне, на условиях нераспространения, получить исходник/наработки по MSID Dumper?
На чем он написан?
Последний раз редактировалось Erema36; 09.09.2011 в 10:02.
Можно мне, на условиях нераспространения, получить исходник/наработки по MSID Dumper?
На чем он написан?
На условиях чохочешделания.. лежат в шапке https://www.pspx.ru/forum/attachment....6&d=1310272923.
Написано на Си. Только код корявый брр.. вместо табуляции пробелы. Редактировать, как по мне, просто нереал пока не оптимизируешь.
Высчитаем размер блока, как минимальной единицы манипулирования данными:
Block size= 128*1024+4*1024= 135 168 байт
т.е. пишем и читаем полезными кусками данных по 128 Кбайт.
Т.о. именно для этой микросхемы размер блока 64 страницы памяти.
Да, да, да, спасибо за поправку.
Так и есть, 1 блок содержит 64 страницы (256 секторов). Страница спецификации.
Писал по памяти и чё-та попутал, видать с "блочностью"-кластерностью логической записи файлов на карты памяти FAT16 до 2 Гб. Да, именно так, файлы пишутся на карту строго кластерами по 32 сектора (8 страниц (16k)). Если файл заканчивается в начале какого-либо кластера секторов, то следующий файл уже не пишется в данный раздел, а начинается только со следующего кластера. То есть, вот такое нерациональное расходование пространства.
Далее по делу...
Здесь описана процедура чтения и записи, где видно, что это действительно делается страницами - чтение любой страницы или серийно несколько страниц; запись только циклами по одной странице.
Здесь описывается процесс стирания и, как я понял, стирать данные в этой микросхеме можно только блоками, но никак не страницами. Причём новый подготовленный блок, необходимо предварительно загрузить в кэш микросхемы, иначе команда стирания будет игнорироваться, защищая её от случайного стирания в случаях посторонних электрических наводок со стороны.
К чему это я...
Дело в том, что мой программатор "Тритон" умеет считывать микруху страницами. Но когда я произвожу обратную запись исправленной страницы, то он выдаёт запрос на стирание. Если отказаться от стирания, а пытаться писать поверх, то после проверки оказывается, что он ничего не пишет.
Если разрешить стирание предыдущих данных, то он производит цикл стирания-записи и все данные прекрасно переписываются.
Отсюда возникает вопрос: а не стирает ли он полностью блок (64 страницы), прежде чем записать новую одну страницу?
Вот этот момен я как бы не проверял. Я считывал только данную одну страницу под номером 07FFC4 во 2-ом банке памяти и видел, что все данные на этой странице записаны правильно, MSID поменялся точно на своём месте.
А вот что на следующих или предыдущих страницах не проверял. Короче, карты выходят не рабочими.
С другой стороны, если взять программатор "Flash Reader", то на нём карты получаются рабочими, хотя процент брака достаточно велик. Но вот он, как раз, не умеет читать и писать страницами. Он только снимает полный дамп и так же обратно весь дамп и пишет.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
С другой стороны, если взять программатор "Flash Reader", то на нём карты получаются рабочими, хотя процент брака достаточно велик. Но вот он, как раз, не умеет читать и писать страницами. Он только снимает полный дамп и так же обратно весь дамп и пишет.
Да, вариантов там не густо, можно только банки по отдельности читать\писать.
Их софт вообще под другие нужды заточен)
А вот с браком не понял. У меня пока было только пара китайских стиков и контроллеры в них не подходящие. После смены MSID работать отказывались вообще, но после смены MSID на родной работают как прежде.
labaz, ты вписывал оригинальный дамп при восстановлении? Попробуй сменить 1 байт во второй части MSID и проверить, потом записать, но не оригинальный дамп а предыдущий байт. Может с записью чото косячит... но странно.
Вот тут что то не понял.
Прежде чем в уже нерабочую флешку лить родной дам, сливал уже второй раз
там всё верно как и записывал (id заменён)
Он наверное имеет в виду, пробовать заменять по 1 байту и заливать, потом каждый раз проверять.
Я думаю, что это контроллёр обнаруживает критическое количество ошибок - несоответствие хеш-суммы в 16-ти байтах после этого сектора, которые контролируют целостность данных этого же сектора (это как MD5 сектора). На самом деле там не все 16 байт контрольных, а кроме первых 4-ёх, которые во всех секторах одинаковые.
Поэтому, я так думаю, некоторые контроллёры замечают изменение 4-ёх байт MSID и заносят этот сектор, как бэд-блок в свою таблицу. Но вот некоторые контроллёры, почему-то этого не замечают и пропускают подвох, и прекрасно дают работать сервисной карте.
Frostegater, предлагает попробовать заменить только 1 байт и проверить на работоспособность карты. Если всё нормально, то заменить следующий байт и т.д.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram