Я нашел простой способ выяснить магические байты специального типа файла:
- Мне нужны файлы одного типа, например, BMP
- Я считываю первые 128 байтов каждого файла и сохраняю его в сетке
- Я нашел, какие из байтов (столбцов) равны, и эти байты и их позиции являются очевидными "магическими байтами"
Пример
file1.bmp: 13 14 16 17 00 00 00 ...
file2.bmp: 13 15 16 17 01 00 02 ...
file3.bmp: 13 16 14 17 02 00 10 ...
магических байтов: 13 - - 17 - 00 - ...
Но нет никакой гарантии, что другие файлы этого типа имеют эти магические байты
поэтому я использую диапазон вероятности: если файл достиг 80% моих магических байтов, то это, вероятно, файл этого типа.
Эти данные сетки могут храниться в файле или около того, и анализатор типов файлов может «научиться» вычислять по каждому анализу