Jump to content

Восстановить битый бинарный файл visio


Recommended Posts

Добрый вечер. Задача нетривиальная, из серии "было бы просто - не стал бы спрашивать". При сохранении на собирающемся зависнуть компе документа visio он больше не открывается и выдает ошибку открытия файла (внутренняя ошибка # 2132) с предложением закрыть visio и открыть снова. На другом компе не открывается, libre office draw и смотрелка от Асмографа рисуют один пустой листочек. По счастью, это не рабочий документ, а набор корешков для папок с бумажными документами - неприятно, но не смертельно. Но хотелось бы спасти содержимое хотя бы в виде картинок. Ситуация осложняется тем, что это бинарный файл vsd, а не vsdx, который можно было бы открыть архиватором и распаковать папку с картинками. Есть ли какие-то программы, которые это могут открыть / восстановить?

 

Упреждая попытки дать лёгкий рецепт решения проблемы - временных файлов похожего размера и с содержимым в формате visio на компе не найдено.

Edited by Иван О. С.
Link to comment
Share on other sites

Приложи, пожалуйста, битый файл vsd и для сравнения с ним любой хороший файл vsd.

Link to comment
Share on other sites

Posted (edited)

А что это даст, если файл бинарный? Битый файл отличается тем, что там в какой-то момент обрывается смысловая часть и идет куча пробелов, которых в хорошем файле нет. И да, размер файла 68 МБ, из них 6 МБ пробелов в конце.

А файл тяжелый, потому что там много картинок в виде OLE объектов. Хотя бы их оттуда вытащить бы.

Чтобы приклеить концовку от файла с другим содержимым - нужно понимать, где начинается конец файла и на каком месте оборвался битый файл, не нужно ли отгрызть ещё что-то.

Edited by Иван О. С.
Link to comment
Share on other sites

Вот я и хотел посмотреть, что там в конце, только вряд ли там пробелы, скорей всего нулевые байты (0x00), пробел - это 0x20.

 

Да, нужно найти парсер vsd с исходным кодом и смотреть, в каком месте парсер запнётся из-за ошибки структуры vsd, ну а затем минимально доработать парсер, чтобы обойти проблему и экспортировать всё, что нужно. Вот я нашёл один проект, который работает с парсером vsd от LibreOffice:

 

https://github.com/kakwa/libvisio2svg?tab=readme-ov-file

Link to comment
Share on other sites

 

23 минуты назад, Trotil сказал:

Да, нужно найти парсер vsd с исходным кодом и смотреть, в каком месте парсер запнётся из-за ошибки структуры vsd, ну а затем минимально доработать парсер

То есть инструмент для восстановления нужно родить самому, готовых решений не будет?

Link to comment
Share on other sites

Posted (edited)

Насколько я понял, можно попытаться с помощью HEX-редактора вытащить рисунки в формате jpg, они вроде в теле файла кучей лежат как есть. Выяснить бы теперь, в каком виде туда попадают emf файлы и доступны ли они к изъятию.

В принципе, я нашёл предыдущую версию этого файла, которую скидывал коллеге, там процентов 80 сохранилось, так что актуальность задачи ощутимо снизилась.

Edited by Иван О. С.
Link to comment
Share on other sites

22 часа назад, Иван О. С. сказал:

То есть инструмент для восстановления нужно родить самому, готовых решений не будет?

Каждый случай индивидуальный, обычно допиливать руками приходится

 

15 часов назад, Иван О. С. сказал:

можно попытаться с помощью HEX-редактора вытащить рисунки в формате jp

Если там действительно jpg лежат, можно попробовать binwalk, очень удобный инструмент по извлечению файлов

Он выдаёт смещение и описание того, что нашёл, примерно так:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 780 x 720, 8-bit/color RGBA, non-interlaced
41            0x29            Zlib compressed data, best compression
153493        0x25795         PNG image, 802 x 118, 8-bit/color RGBA, non-interlaced

Экспорт данных, разумеется, он тоже поддерживает.

binwalk проще всего установить как готовый пакет в ubuntu, например

Edited by Trotil
  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

Жизнь показала, что Project тоже умеет портить файлы таким же образом - в конце куча пустых байтов. Файл про работу, но чужой, рисую план-график по мотивам, но срисовываю со скана.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.