Как файловые менеджеры определяют тип файла?

Тема в разделе "WASM.HEAP", создана пользователем osrootd, 9 дек 2008.

  1. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    AndreyMust19
    Спасибо, почитаем.. Хотя я уже много форматов понимать научился.

    Ваау. Я нашел вхождение в одном из пяти файлов. Правильно, спасибо.
    То есть все файлы document/msword еще сканируем на excel:)

    Класс. Пошел писать.

    ----offtop----

    О, кстати, где-то видел фигню, которая сканирует проги (бинарники) на наличие тех или иных инструкций, потом объединяет результаты в кластеры и подвергает анализу на предмет вероятности что в проге может совершиться то или иное действие.
    Исходнички бы найти... Просто для изучения.
     
  2. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Эти сигнатуры я просто сам искал чтобы у файла без расширения можно было определить тип. На некоторые из них (например видео) сильно не закладывайся - видео меня не сильно интересует, поэтому сигнатуры я слабо проверял (если файл очень большой, то это скорее всего видео).
    А офисные документы я просто так для интереса смотрел - как их отличить друг от друга если форматы одинаковые!
    Если знаешь ещё какие сигнатуры (которых нет в архиве) - скинь мне на почтовый ящик или представь здесь в виде приложения. Буду благодарен!
     
  3. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Еще есть вот какой способ определения сигнатур для тех файлов, в которых сигнатура хранится не в начале файла - тупого перебора. Изменяешь пару байтов в файле и открываешь его программой, знающей этот формат. Если она говорит что формат правильный, а сам файл "невоспроизводится", значит ты незатер сигнатуру. А если программа стала говорить что файл неизвестного формата, значит ты попал в точку.
    Лучше всего затирать методом двоичного дерева:
    1) Затираем первую половину файла.
    2) Если не попали, значит сигнатура во второй половине файла. Восстанавливаем содержимое и затираем половину из оставшейся части файла
    То есть за каждый шал мы будем затирать в 2 раза меньшие кусочки и в конце концов попадем в саму сигнатуру. Не обязательно затирания делать самому - можно написать программу, которая по нажатию на кнопку запускает программу, указывая ей открыть файл. А потом ты ей отвечаешь - попала он в сигнатуру или нет и снова нажимаешь на кнопку.

    Кстати, если нужны уже известные сигнатуры, тебе пригодятся исходники программы file в Юникс. Эта программа определяет тип файла, значит в ней должны быть и сами сигнатуры! Кроме типа она ещё может определить кодировку текстового файла!
    Если ее исходники уже у тебя есть - дай их мне пожайлуста (не тебе одному нужны сигнатуры)!
     
  4. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Вот тебе
     
  5. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Уже скачал, но там ниче интересного кроме алгоритма поиска нет

    А тот файл что я прислал - это как раз то что надо
    утилита file использует libmagic
     
  6. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Кстати, всем кто скачал magic.mime балшой салам
    file:///usr/share/file/magic.mime

    )))
     
  7. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Мало! Это я и так знаю!