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.
Затем идёт сектор, где указывается фрмат и размер карты памяти.
есть прога http://www.ice-graphics.com/ICEECC/IndexR.html ICE ECC, ее автор (по мылу) утверждает что она может с этой задачей справиться, у меня пока не получилось, может еще кто потыкает!?
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,763
Вы сказали Спасибо: 823
Поблагодарили 3,894 раз(а) в 2,043 сообщениях
Сила репутации: 1
Репутация: 3894 
(репутация неоспорима)
Сообщение от ErikPshat
2 ответ тоже верный - там вначале сектора MSID закодирован алфавит.
И это подтверждает, что данные верны, т.к. мы получили строго закономерную и читабельную последовательность, значит первые 2 байта из 10-значного ECC отвечают за операцию XOR.
Так и не понял почему. Если вдруг какой-то мусор поксорился в другой мусор, но для человека (подчеркну, не консоли/контроллера/etc) чуть более понятный - это не показатель. Данные хранятся "как есть" и ничуть не защищены ксором. Так что ничего расшифровывать и не стоило. Нужно подобрать только некий хэш (т.к. есс меньше данных). По ссылке с якобы алгоритмом есс просто пример использования оператора ксор, не более.
Yoti, согласен, что конечно там никакой защиты нет.
Но это служебный сектор и по моему единственный, поэтому там содержится всё - и VendorID и PendorID и MSID и серийный номер, а соответственно, как обычно бывает во всех независимых областях, Алфавит с циферками.
В данном случае, думаю это не случайный мусор, а вполне закономерные данные.
Вот эта область в реале:
Это не сказать бы, что случайность. Вдруг всплыл алфавит, а за ним символы скобок, наклонной черты, знака ксора, знака подчёркивания... И причём такое появляется именно с этими двумя байтами D1BF. Но если в этих байтах поменять хоть одну циферку, то мы уже увидим действительно неупорядоченный мусор. Поэтому считаю, что это преобразование над первыми 64 байтами происходит не случайно.
Думаю это матрица, которая может используется для восстановления данных.
Это аналогично тому, что такие матрицы есть, например в BMP. Там все цвета лежат отдельно в матрице, и на её основе строится изображение. Такая же матрица существет во многих других форматах, например в GIF, JPEG, RAR, ZIP.
На основе некой таблицы производится сжатие и восстановление информации.
Последний раз редактировалось ErikPshat; 18.11.2011 в 19:09.
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,763
Вы сказали Спасибо: 823
Поблагодарили 3,894 раз(а) в 2,043 сообщениях
Сила репутации: 1
Репутация: 3894 
(репутация неоспорима)
Сообщение от ErikPshat
Это не сказать бы, что случайность. Вдруг всплыл алфавит, а за ним символы скобок, наклонной черты, знака ксора, знака подчёркивания... И причём такое появляется именно с этими двумя байтами D1BF. Но если в этих байтах поменять хоть одну циферку, то мы уже увидим действительно неупорядоченный мусор. Поэтому считаю, что это преобразование над первыми 64 байтами происходит не случайно.
Это для тебя алфавит (что-то привычное и понятное), а для программы простая последовательность байт. К примеру, человеческое сознание легко обмануть вот так: синий, красный. Тем более, что кроме этого куска ничего не "защищено". Прекрасно же знаешь, что мы оперируем страницами и блоками, а не произвольными кусками.
Сообщение от ErikPshat
Это аналогично тому, что такие матрицы есть, например в BMP. Там все цвета лежат отдельно в матрице, и на её основе строится изображение. Такая же матрица существет во многих других форматах, например в GIF, JPEG, RAR, ZIP.
На основе некой таблицы производится сжатие и восстановление информации.
Ну во-первых, таблица цветов должна быть если файл преднамеренно сохранён с ограниченным числом цветов. Не помню, чтобы BMP имел что-то подобное. И если эта таблица имеет 4 цвета (кол-во умещается в байт), а изображение 16*16=256 точек - то само "тело" и будет описано 256 (совпадающее число) байтами, просто вместо цвета будет указана позиция в таблице.
Я вполне мог опустить или упустить моменты, но самая база мне более-менее известна.
Ну вот, думаю посмотрев на картинку ты всё-таки сумеешь в хексе отсчитать 512 байт и увидеть 16 байт ECC в конце каждого сектора
0x200 + 0x10
Нужно вычислить/найти алгоритм подсчёта этой контрольной суммы на сектор.
Собственно там первые 4 байта указывают на порядковый номер блока, к которому относятся сектора.
Все сектора одного блока имеют этот номер одинаковый.
Блок не может быть разделимым, т.е. не может полблока находиться в одном месте, а другая часть в другом. Он всегда пишется непрерывно.
После 4-ёх байт, ещё идут 2 байта FFFF
Остальные 10 байт и есть контролка.
Сохранить сектор 512 байт с изменённым MSID, без контролки, в бинарный файл.
Припаять микросхему обратно.
Сделать соединение по USB.
Записать бинарный файл на карту памяти в корень.
Отпаять микросхему.
Снять дамп.
Найти этот файл.
Файл то 512 байт, он ровно ляжет в один сектор. Контроллёр сам подсчитает и запишет контрольную сумму на этот сектор. Там только первые 4 байта контролки будут иметь не тот порядковый номер блока.
Записать этот сектор в исходный дамп, с правильной контролкой и нужным MSID, оставив родные первые 4 байта оригинала.
Прошить микросхему и впаять на место.
Сектор с изменённым MSID должен стать легитимным.
Все файлы, программы, музыку, видео, картинки, которые мы копируем по USB на карту памяти логическим способом (обывательски), мгновенно контроллёр пишет в свободные места по порядку и на каждый сектор 512 байт тут же подсчитывает контрольную сумму сам с порядковым номером блока.
Если файл не помещается целиком в свободное место, то контроллёр пропускает это место и пишет в следующее свободное место.
Занятые места посреди карты образуются, если мы заполняем карту памяти до середины или до конца, к примеру, а затем удаляем файлы, записанные ранее. Таким образом, в начале освобождается место, а файлы, записанные позднее, остаются в конце или середине карты памяти.
Проверил я данный способ на практике - он не катит, т.к адрес блока учавствует в расчете ECC (как и говорил Erema36)
НЕТ! После смены MSID ошибочными будут данные, а ECC валидный остается, по которому контроллер может восстановить старые данные!
Это с какой стороны посмотреть )))
Если сменить в секторе MSID, то ECC уже не будет соответствовать этому сектору, то есть, ECC уже будет не тот.
А если сменть ECC на не тот, то сектор не будет соответствовать ECC.
Таким образом, оригинальный ECC восстановит сектор к его прежнему значению.
Изменённый ECC восстановит сектор к тому значению, по мнению которого должна быть такая ECC.
Если сменить в секторе MSID, то ECC уже не будет соответствовать этому сектору, то есть, ECC уже будет не тот.
А если сменть ECC на не тот, то сектор не будет соответствовать ECC.
Таким образом, оригинальный ECC восстановит сектор к его прежнему значению.
Изменённый ECC восстановит сектор к тому значению, по мнению которого должна быть такая ECC.
Он не восстановит данные по кривому ЕСС - он выдаст что ошибка ЕСС, может быть пересчитает ЕСС согласно этим данным!
Другие консоли: XBOX 360, PlayStation®3 500Gb 3.55
Регистрация: 30.01.2007
Адрес: Москва
Возраст: 33
Сообщений: 623
Вы сказали Спасибо: 205
Поблагодарили 157 раз(а) в 115 сообщениях
Сила репутации: 1
Репутация: 159 
(весьма и весьма положительная личность)
Yokel, есть идея круче) подходящие карты используют тупые контроллеры. есть другие карты, которые используют точно такой-же алгоритм расчёта контрольной суммы, но намного умнее. вот как-раз на них и можно попробовать всё провернуть.
в любом случае в мск я вернулся только что, доберусь до проггера и буду пробовать
Yokel, есть идея круче) подходящие карты используют тупые контроллеры. есть другие карты, которые используют точно такой-же алгоритм расчёта контрольной суммы, но намного умнее. вот как-раз на них и можно попробовать всё провернуть.
в любом случае в мск я вернулся только что, доберусь до проггера и буду пробовать