LINUX.ORG.RU

Инструменты для опознования файлов по содержимому.

 , ,


0

1

В большинстве случаев помогает расширение. Но иногда, расширение лжет. Как вариант, на расширение претендует куча разных форматов, причем еще далеко не факт, что среди них есть верный вариант. Или даже у файла может не быть расширения ВООБЩЕ.

Короче, нужно рассмотреть под микроскопом содержание файла. Ситуация становится еще сложней, если перед нами файл в бинарном формате. Что делать в такой ситуации?

1)Нужна программа, которая бы автоматически анализировала бы файл, и говорила, что это может быть за тип файла. Например, «вот это HA-архив, а вот это ZIP-архив, просто он с другим расширением. Вот это специальный видеоформат для игрового видео. И т.д.» Насколько мне известно, линуксовская комманда «file» как раз по этой части. Правда мне кажется, что она не распознает достаточно много файлов. По крайней мере на тех файлах, что я ей скормил, она потерпела неудачу. Может быть кто-нибудь посоветует более мощную программу? Или если это возможно, как-то «усилить» «file».

2)Еще как вариант, самому вооружиться HEX-просмоторщиком и внимательно просматривать файл. Особенно первые байты. Но тут уже крайне желателен какой-нибудь источник информации(книга, сайт), который бы помог во всем разобраться, давал бы советы, как все это делать(например, по HEX-коду первых байтов можно было бы определить формат файла. С помощью сайта/книги-справочника, ибо в голове такую информацию не удержешь ). Такие книги/сайты существуют? Если да, может быть кто-нибудь даст ссылочку? Можно на английском

P.S. Крайне желательно, чтобы программа(или справочник) могла опозновать даже редкие и старые типы файлов



Последнее исправление: aaz893 (всего исправлений: 3)

Ответ на: комментарий от aaz893

Чукча не читатель, чукча — писатель.
Если автор формата не позаботился об опознавании, то он точно так же мог тебя не включить в число обладающих 256-битным ключом, которым он зашифровал этот файл. Так что, честно говоря, не очень понимаю, зачем кому-либо могло понадобиться написать нужную (?) тебе программу.

metar ★★★
()
Ответ на: комментарий от metar

«которым он зашифровал этот файл» Нет, файлы врядли зашифрованы. Просто в моем случае речь идет об внутриигровых файлах одной DOS-игры.

Хотя если честно, мне сейчас больше интересны не сколько эти конкретные файлы, сколько сам принцип. Магические числа это хорошо, не спорю. Но только вот далеко не все файлы их имеют. Спрашивается, что делать в таком случае?

aaz893
() автор топика

Между прочим, в базе libmagic содержится куча старых и редких форматов файлов (каждое ложное срабатывание - новое открытие).

На файлах от DOS-игры она могла не сработать, потому что это могли быть, например, пожатые данные без заголовка, а внутри - нечто бинарное, вроде картинки в RGB или WAV-звука, тоже без заголовка. Не представляю, как такое определять.

AITap ★★★★★
()
Ответ на: комментарий от aaz893

Просто в моем случае речь идет об внутриигровых файлах одной DOS-игры.

Если есть бинарник, в дизассемблер его. И смотри, как эти файлы читаются/пишутся.

Я ковырял сохранения от UFO1, там просто сырые данные, без какого либо шифрования или сжатия. Менял байты и смотрел на результат.

i-rinat ★★★★★
()
Ответ на: комментарий от aaz893

мне сейчас больше интересны <skip> сам принцип

Сам принцип чего?
Того как принципиально поступать с файлами в неизвестном формате?

Спрашивается, что делать в таком случае?

Брать hexviewer и разглядывать, сравнивая почти одинаковые (и сильно разные) файлы.

frob ★★★★★
()
Ответ на: комментарий от AITap

в базе libmagic содержится куча старых и редких форматов файлов (каждое ложное срабатывание - новое открытие)

Достаточно впихнуть в начало файла один байт, чтобы сломать обнаружение какой-то доли форматов (ладно если не всех). Или наоборот — оторвать первый байт.

frob ★★★★★
()
Ответ на: комментарий от frob

Логично. Такой файл, скорее всего, перестанет при этом быть правильным файлом данного формата.
Для поиска [повреждённых] файлов со смещением есть foremost и photorec со своими базами типов файлов. Довольно маленькими, впрочем.

AITap ★★★★★
()
Ответ на: комментарий от AITap

Такой файл, скорее всего, перестанет при этом быть правильным файлом данного формата.

Если формат не описан, то «правильность» штука весьма неопределённая.
Часто очередной одноразовый формат — это просто пачка стандартных файлов утоптанных в один с добавленным заголовком. При этом сигнатуры исходных файлов сохранять вовсе не обязательно со всеми вытекающими. Намётанный глаз такое определит достаточно легко, а magic скорее всего никак.

frob ★★★★★
()
Ответ на: комментарий от frob

Часто очередной одноразовый формат — это просто пачка стандартных файлов утоптанных в один с добавленным заголовком.

По крайней мере, GNU file умеет определять OOXML и ODT, которые являются кучкой XML внутри ZIP-архива. Не знаю, как, но может. У меня ошибок в этом не делал ни разу.

AITap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.