FFD9
- последние байты изображения формата jpg.
Код вытаскивает второе изображение из файла
fimrin.jpg
и сохраняет в
better_fimrin.jpg
Допустим у нас есть два jpg файла: orange.jpg и apple.jpg (апельсин и яблоко соответственно). Если мы их склеим в 1 файла таким кодом:
f1 = open('orange.jpg', 'rb')
f2 = open('apple.jpg', 'rb')
with open('out.jpg', 'wb') as out:
out.write(f1.read()+f2.read())
то получим файл
out.jpg
, который в просмоторщике фото будет выглядеть как апельсин. Хотя на самом деле, после апельсина дописаны байты яблока. Очень упрощено
orangeblablablaFFD9applelalalalaFFD9
Код находит индекс FFD9, которые являются концом первого изображения (апельсина), смещает курсор до этих байт (f.seek), затем читает оставшиеся байты, которые являются байтами изображения с яблоком. И сохраняет эти байты в виде нового файла. В общем, вытаскивает скрытое второе изображение из файла. Может быть как часть какого нибудь легкого задания, связанного с криптографией.
В принципе, код легко ужимается до
f = open('fimrin.jpg', 'rb')
content = f.read()
with open('better_fimrin.jpg', 'wb') as out:
out.write(content[content.index(bytes.fromhex('FFD9')) + 2:])