Расширяемые наборы инструментов или подходы к анализу форматов файлов по грязным данным? - PullRequest
1 голос
/ 22 марта 2012

Существуют ли какие-либо платформы для поддержки анализа форматов файлов с использованием декларативных, нечетких схем и / или синтаксических определений для допустимых форматов? Я ищу что-то, что может обрабатывать грязные или плохо отформатированные файлы, возможно, в разных версиях определений / схем форматов файлов и облегчать написание правил или анализаторов на основе шаблонов, которые позволяют лучше понять типы файлов на основе самоанализа ,

Я ищу что-то декларативное, позволяющее описательно определять форматы, может быть, DSL, что-то вроде:

format A, v1.0:
  is tabular
  has a "id" and "name" column
  may have a "size" column
    with integer values in 1-10 range
 is tab-delimited
 usually ends in .txt or .tab

format A, v1.1:
  is tabular
  has a "id" column
  may have a "name" column
  may have a "size" column
    with integer values in 1-10 range
  is tab- or comma-separated 
  usually ends in .txt, .csv or .tab

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

Например, с учетом приведенных выше определений файл «test.txt», разделенный запятыми, со столбцом «id» и столбцом «size» без значений, приведет к тому, что журнал сниффера будет выглядеть примерно так:

Probably format A, v1.1
  - but "size" column is empty

Possibly format A, v1.0
  - but "size" column is empty
  - but missing "name" column
  - but is comma-delimited

Функциональность Sniffer в стандартной библиотеке Python движется в правильном направлении, но я ищу что-то более общее и расширяемое (не ограничивающееся табличными данными). Любые предложения о том, где искать что-то подобное?

1 Ответ

0 голосов
/ 19 апреля 2012

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

То, что вы называете «сниффер», широко известно как «резчик по файлам», и этот человек очень хорош в резьбы: http://en.wikipedia.org/wiki/Simson_Garfinkel

Мало того, что он разработал выдающегося резчика, он имеетТакже предоставлено определение разных случаев неполных файлов.

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

Надеюсьпомогло.

С уважением

...