?

Log in

No account? Create an account
entries friends calendar profile My Website Previous Previous Next Next
Я сделал это! - Уголок Школьника
scolar
scolar
Я сделал это!
Последняя неделя декабря была посвящена расчистке завалов на многочисленных домашних компьютерах. Началось всё, разумеется, спонтанно, а главное, в духе старого анекдота про танк со слетевшей гусеницей и добрую фею: только я положил ноутбук на колени и подумал: "Как же я затрахался!", как оказалось, что XP на ноутбуке скончалась. Наспех переставив систему, слил содержимое винчестера на 7 DVD+RW, перебрался с семьёй на дачу, где первым же делом случайно сделал Quick Erase именно тому диску, где лежали личные файлы. Длительный поиск информации в сети показал, что всё не безнадёжно, но и не очень просто. Итак, нам понадобились:

1. Программа IsoBuster 1.7 - (подумываю, не купить ли в благодарность, поскольку пришлось воспользоваться креком).
2. Программа UltraEdit (подойдёт любой hex editor, способный работать с файлом размером 4.7 Gb).
3. Описание формата ISO 9660 (он же ECMA-119).
4. Усидчивость и удача.

Выяснилось, что Nero при quick erase стёр следующую служебную информацию: дескрипторы, корневую и бОльшую часть прочих директорий. На наше счастье, диск был записан не в чистом ISO 9660, а в Joliet - расширении от Microsoft, позволяющем хранить длинные имена, unicode и прочая. Для Joliet отдельно хранится вся информация о файловой структуре, которая, как выяснилось, не затирается при quick erase.

Итак:
1. При помощи IsoBuster сливаем image в файл.
2. Открываем его в UltraEdit, не забыв перевести тот в режим редактирования "на месте".
3. Находим Joliet-таблицы (Сильно помогает воспоминание о том, какие директории были в корне). В моём случае, они оказались под смещениями 0x230000, 0x250000 и 0x270000.
4. Записываем номера секторов, где начинаются корневая диретория и две PathTable (одна LSB, вторая MSB).
5. Руками создаём дескрипторы в начале диска (первые 16 секторов - служебные, дальше - дескрипторы), а именно: Supplementary Descriptor, в котором описываем найденные нами Joliet-структуры и сразу за ним Descriptor Set Terminator, который говорит, что больше дескрипторов нет.
6. Настраиваем IsoBuster, чтобы он читал как можно больше всего.
7. Открываем подредактированный image, и, если дескриптор написан правильно, то получаем свои данные. Из-за собственной лени шаги 5-7 я повторил раз 30, пока не сказал себе: RTFM. После этого получилось сразу.

Суммарно потратил часов 14. Подумываю, не написать ли утилитку, но лень. Может, школьникам в качестве задачи на практику подкинем.
4 comments or Leave a comment
Comments
kotya From: kotya Date: January 4th, 2005 01:26 pm (UTC) (Link)
Умный, зараза! :)
А я вот про фею регулярно вспоминаю, но техника регулярно подсовывает новые сваливающиеся башни :)
3opu4 From: 3opu4 Date: January 4th, 2005 05:19 pm (UTC) (Link)
Меня переполняет чувство заслуженной тобою гордости.

(Написала и вспомнила Довлатова, только у него как раз обратное.)
_ai_ From: _ai_ Date: January 4th, 2005 06:06 pm (UTC) (Link)
Neleniv. No nafiga stirat'-to bylo? :)
rshura From: rshura Date: January 5th, 2005 02:49 pm (UTC) (Link)
Мораль: не хрена ХР держать :-) В последовательности случайностей, приведших к проблеме, первым пунктом было что?

А я вчера делал примерно то же, но с машиной. Оказывается у дворников есть своя трансмиссия, и её очень интересно менять :-)))
4 comments or Leave a comment