
Embed a payload inside a PNG file
Incrusta una carga útil dentro de un archivo PNG dividiendo la carga útil en múltiples secciones IDAT. Cada sección se cifra individualmente con su propia clave de 16 bytes mediante el algoritmo de cifrado RC4.
Plan de estudios de Maldev Academy
Este repositorio consta de dos implementaciones:
EmbedPayloadInPng.py - Script de Python para incrustar una carga útil de entrada en un archivo PNG especificado.FetchPayloadFromPng - Extrae la carga útil del archivo PNG generado por EmbedPayloadInPng.py y la descifra utilizando la función ExtractDecryptedPayload.EmbedPayloadInPng.py para crear el archivo PNG con la carga útil incrustada:
El archivo PNG con la carga útil incrustada Output.png es el mismo archivo .PNG que el original.
https://github.com/user-attachments/assets/bec6f597-9955-4552-80f7-f484bd5754c3
MARKED_IDAT_HASH generada por EmbedPayloadInPng.py y reemplázala por la existente en el proyecto FetchPayloadFromPng aquí.Como se mencionó anteriormente, EmbedPayloadInPng.py es el encargado de incrustar el archivo de carga útil dentro de un archivo PNG. A continuación se muestra la estructura de un archivo PNG con carga útil incrustada.

Dado que el tamaño máximo de una sección IDAT es de 8192 bytes, nuestra carga útil se divide en múltiples secciones IDAT. Cada sección tiene un tamaño equivalente a (8192 - 16 [longitud de la clave RC4]). Además, la última sección IDAT contendrá los bytes restantes de la carga útil.
Las siguientes imágenes explican la salida de EmbedPayloadInPng.py y la comparan con la estructura del archivo PNG creado:


IDAT de la carga útil, que sigue a nuestra sección aleatoria (en azul). Esta imagen también muestra la posición del hash CRC y el tamaño de la sección IDAT aleatorizada de antemano (en amarillo).

