
Embed a payload inside a PNG file
Incorporare un payload all'interno di un file PNG suddividendo il payload in più sezioni IDAT. Ogni sezione viene crittografata singolarmente utilizzando la propria chiave a 16 byte con l'algoritmo di crittografia RC4.
Questo repository è composto da due implementazioni:
EmbedPayloadInPng.py - Script Python per incorporare un payload di input in un file PNG specificato.FetchPayloadFromPng - Estrae il payload dal file PNG generato da EmbedPayloadInPng.py e lo decripta utilizzando la funzione ExtractDecryptedPayload.EmbedPayloadInPng.py per creare il file PNG con payload incorporato:
Il file PNG con payload incorporato Output.png è lo stesso file .PNG dell'originale.
https://github.com/user-attachments/assets/bec6f597-9955-4552-80f7-f484bd5754c3
MARKED_IDAT_HASH generata da EmbedPayloadInPng.py e sostituiscila con quella esistente nel progetto FetchPayloadFromPng qui.Come accennato in precedenza, EmbedPayloadInPng.py è responsabile dell'incorporamento del file payload all'interno di un file PNG. Di seguito è riportata la struttura di un file PNG con payload incorporato.

Poiché la dimensione massima di una sezione IDAT è di 8192 byte, il nostro payload viene suddiviso in più sezioni IDAT. Ogni sezione ha una dimensione equivalente a (8192 - 16 [lunghezza della chiave RC4]). Inoltre, l'ultima sezione IDAT conterrà i byte rimanenti del payload.
Le seguenti immagini spiegano l'output di EmbedPayloadInPng.py e lo confrontano con la struttura del file PNG creato:


IDAT del payload, che segue la nostra sezione casuale (in blu). Questa immagine mostra anche la posizione dell'hash CRC e la dimensione della sezione IDAT casualizzata in precedenza (in giallo).

