• Что делает этот скрипт?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    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:])
    Ответ написан
    Комментировать