Как использовать магические байты для идентификации файлов с помощью Python - PullRequest
1 голос
/ 09 апреля 2019

У меня возникла проблема, которая гласила:

Мы извлекли один из zip-файлов пришельцев, это набор файлов PNG, но мы думаем, что только один из них действителен.Используйте магический байт, чтобы определить, что это такое.Совет: найдите и прочитайте правильный файл, чтобы получить флаг.

Все файлы png хранятся в каталоге / tmp.После пары попыток решить проблему я дошел до сих пор.Мой код работает нормально, но печатает no для каждого файла, и ни один из них не является правильным в соответствии с моим кодом.

Вот мой код:

import glob,os

magic_numbers = {'.png': bytes([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])}
max_read_size = max(len(m) for m in magic_numbers.values()) # get max size of magic numbers of the dict
os.chdir("/tmp")
for x in glob.glob("*.png"):
    with open(x, 'rb') as fd:
            file_head = fd.read(max_read_size)

    if file_head.startswith(magic_numbers['.png']):
            print("It's a PNG File")
    else:
            print("no")

Я явно что-то делаю не так, но не могу понять, что это.Это проблема с циклом?Как я могу использовать магические байты для идентификации файлов?

...