Сообщение от ErikPshat
Можно поступить по другому:
...
(13) Сектор с изменённым MSID должен стать легитимным.
|
ErikPshat, увы не станет.
Что по сути такое [ЕСС]?
Код ЕСС - код коррекции ошибок. Иными словами это СRC с ограниченной возможностью коррекции содержания по которому он высчитан.
Сектор представляет из себя [данные] + [служебка].
Точнее сказать,
[данные] + [служебка контроллера] + [код ЕСС].
Код [ЕСС] защищает не только [пользовательские данные], но и [служебку контроллера]. В частности, [служебка контроллера] - хранит номер блока в банке, ротацию блока и еще бог знает какие служебные биты-флаги.
Поэтому выше предложенный способ не сработает.
Сектор, имеющий одно и то же содержание пользовательских данных, будучи записанным в разные места через стандартный интерфейс, имеет разную [служебку контроллера] и следовательно разный [код ЕСС] (высчитанный из [пользовательских данных] + [служебки контроллера]).
Не зря же пишут:
ECC Code: 512 / 7 / SM325QF AC
Sector: 519/9
или
ECC Code: 514 / 13 / Memory Stick 7
Sector: 527/1
Замете, размер сектора везде 528 (512+16), а вот код ЕСС защищает разное количество байт на странице.
================================================================================ ===============
Сообщение от ErikPshat
(10) Файл то 512 байт, он ровно ляжет в один сектор. Контроллёр сам подсчитает и запишет контрольную сумму на этот сектор. Там только первые 4 байта контролки будут иметь не тот порядковый номер блока.
|
это очень зависит от контроллера, точнее от алгоритма по которому он хранит данные в доступном ему пространстве памяти.