Page 2 of 3
Re: Восстановление неизвестного типа
Posted: 24 Jan 2013, 14:00
by SlamLayer
Вот такой конец файла.
Code: Select all
20 20 20 20 20 20 20 20 20 0a 3c 3f 78 70 61 63
6b 65 74 20 65 6e 64 3d 22 77 22 3f 3e fd ce db
70 f7 86 4b 4f a4 d3 c7 28 b3 41 71 06 01 00 00
80 00 00 00 c0 7d c0 00 00 48 d2 fc 14 00 00 00
Re: Восстановление неизвестного типа
Posted: 24 Jan 2013, 20:39
by Alt
SlamLayer wrote:Вот такой конец файла.
Code: Select all
20 20 20 20 20 20 20 20 20 0a 3c 3f 78 70 61 63
6b 65 74 20 65 6e 64 3d 22 77 22 3f 3e fd ce db
70 f7 86 4b 4f a4 d3 c7 28 b3 41 71 06 01 00 00
80 00 00 00 c0 7d c0 00 00 48 d2 fc 14 00 00 00
1. Такое окончание точно у ВСЕХ индизайновских файлов?
2. Если по пункту 1 - да, то конечный блок должен быть таким:
Code: Select all
<End combine="AND">
<Signature offset="8">
\x00\x48\xd2\xfc\x14\x00\x00\x00
</Signature>
</End>
если - нет, то надо искать одинаковые строки у всех файлов в конце и чтобы они были на одинаковом расстоянии от конца.
3. Если по пунктам 1 и 2 все кажется нормальным, но файлы не находятся или оказываются битыми, то, возможно, файлы фрагментированы, тогда восстановление по file signatures не работает.
Re: Восстановление неизвестного типа
Posted: 25 Jan 2013, 10:49
by SlamLayer
Спасибо большое, все заработало!
Подскажите пожалуйста для общего развития:
1.Если со смещением ОТ все понятно, то зачем нужно смещение ДО?
2.Если единственно возможная выбранная сигнатура повторяется в файле два раза (всегда два на одном и том же месте), как сделать чтобы поиск пропускал вторую. А то получается два файла, второй из которых не рабочий.
3.Зачем нужны логические операторы AND и OR?
Re: Восстановление неизвестного типа
Posted: 25 Jan 2013, 14:21
by SlamLayer
На примере поиска файла PDF
Code: Select all
<FileTypeList version="2.0">
<FileType id="50001" group="Graphics, Picture" description="PDF" features="" extension="pdf">
<Begin combine="AND">
<Signature>
\x25PDF
</Signature>
<Signature offset="8">
\x25\x25EOF; хочу чтобы при обнаружении 1й сигнатуры конца файла, программа решила что это еще не конец и продолжила поиск дальше.
</Signature>
</Begin>
<End combine="AND">
<Signature offset="5">
\x25\x25EOF; после второго обнаружения сигнатуры конца файла, запись файла в папку.
</Signature>
</End>
</FileType>
</FileTypeList>
По этой программе ничего не находит. Если делать стандартную программку. Находить первую-неверную сигнатуру конца и обрезает по ней файл.
Re: Восстановление неизвестного типа
Posted: 26 Jan 2013, 20:21
by Alt
SlamLayer wrote:
1.Если со смещением ОТ все понятно, то зачем нужно смещение ДО?
Сигнатура может быть и не на конце файла, а на определенном расстоянии от него. В этом случае смещение поможет.
SlamLayer wrote:
2.Если единственно возможная выбранная сигнатура повторяется в файле два раза (всегда два на одном и том же месте), как сделать чтобы поиск пропускал вторую. А то получается два файла, второй из которых не рабочий.
3.Зачем нужны логические операторы AND и OR?
А вот для этого и нужны логические операторы. Файл определяется как сигнатура на одном смещении AND сигнатура на другом смещении. А может быть так, что сигнатуры не всегда одинаковы во всех файлах. Тогда файл определяется как сигнатура 1 OR сигнатура 2.
Re: Восстановление неизвестного типа
Posted: 26 Jan 2013, 20:28
by Alt
SlamLayer wrote:На примере поиска файла PDF
Я в понедельник посмотрю более внимательно.
Re: Восстановление неизвестного типа
Posted: 28 Jan 2013, 12:09
by SlamLayer
Я в понедельник посмотрю более внимательно.
Спасибо, буду ждать.
Re: Восстановление неизвестного типа
Posted: 29 Jan 2013, 12:58
by Alt
Тут некоторая проблема нарисовалась с поиском 2-х файловых сигнатур, сейчас ее решаем.
Re: Восстановление неизвестного типа
Posted: 29 Jan 2013, 14:12
by SlamLayer
Спасибо, за внимание к моей проблеме. А еще очень любопытно узнать как работают встроенные поисковики по типам файлов. Они тоже работают на базе xml? Если да, очень бы хотелось увидеть к ним листинги программ.
Re: Восстановление неизвестного типа
Posted: 31 Jan 2013, 12:44
by Alt
Да нет, обычный С-шный код, особо много не насмотришь.