У меня возникла проблема, которая гласила:
Мы извлекли один из 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")
Я явно что-то делаю не так, но не могу понять, что это.Это проблема с циклом?Как я могу использовать магические байты для идентификации файлов?