Как извлечь документы Word из данных, восстановленных с USB-устройства? - PullRequest
1 голос
/ 10 декабря 2008

Мне удалось скопировать необработанные данные с недоступного в противном случае USB-накопителя в монолитный файл размером около 250 МБ. Где-то в этом блоке байтов находится около 40 документов Word.

  1. Где найти документацию о внутренней структуре документов Word, чтобы я мог проанализировать поток байтов, определить, где начинается и заканчивается документ Word, и извлечь копию?

  2. Существуют ли библиотеки на каком-либо языке программирования, специфичном для этой задачи?

  3. Кто-нибудь может предложить уже существующее программное решение для этой проблемы?

Ответы [ 2 ]

5 голосов
/ 10 декабря 2008

Два подхода:

Вы можете монтировать файлы как тома в Linux. Если ваш двоичный двоичный объект не слишком поврежден, вы, вероятно, сможете сломать файловую систему, чтобы узнать, где находятся ваши файлы. Является ли (был) это раздел FAT или NTFS?

Если это не сработает, я буду искать эту строку байтов :

D0 CF 11 E0 A1 B1 1A E1

Это «волшебные байты» сигнатур файлов офисных документов. Они могут появляться случайно в других данных, но это только начало. Вы столкнетесь с ОСНОВНЫМИ проблемами, если файлы фрагментированы.

Кроме того, попробуйте воссоздать части документа (ов) в Word как есть, сохранить его в файл и извлечь фрагменты для поиска в BLOB-объекте (используя двоичный файл grep или любой другой). При условии, что у вас есть информация из всех частей файла, вы сможете декодировать ГДЕ в этом двоичном объекте. Передача его обратно в работающий двоичный файл DOC кажется надуманной, но восстановление остальной части текста не должно быть невозможным.

2 голосов
/ 10 декабря 2008

В проекте Apache POI имеется библиотека для чтения и записи всех видов документов MS Office. Если файлы в новом формате XML base OOXML , вы будете искать начало файла zip, так как XML сжат.

...