
Embed a payload inside a PNG file
Embuta um payload em um arquivo PNG dividindo o payload em várias seções IDAT. Cada seção é criptografada individualmente usando sua própria chave de 16 bytes com o algoritmo de criptografia RC4.
Página inicial da Maldev Academy
Este repositório consiste em duas implementações:
EmbedPayloadInPng.py - Script Python para embutir um payload de entrada em um arquivo PNG especificado.FetchPayloadFromPng - Extrai o payload do arquivo PNG gerado por EmbedPayloadInPng.py e o descriptografa usando a função ExtractDecryptedPayload.EmbedPayloadInPng.py para criar o arquivo PNG com payload embutido:
O arquivo PNG com payload embutido Output.png é o mesmo arquivo .PNG que o arquivo original.
https://github.com/user-attachments/assets/bec6f597-9955-4552-80f7-f484bd5754c3
MARKED_IDAT_HASH gerada por EmbedPayloadInPng.py e substitua a existente no projeto FetchPayloadFromPng aqui.Como mencionado anteriormente, o EmbedPayloadInPng.py é responsável por embutir o arquivo de payload dentro de um PNG. Abaixo está a estrutura de um arquivo PNG com payload embutido.

Como o tamanho máximo de uma seção IDAT é de 8192 bytes, nosso payload é dividido em várias seções IDAT. Cada seção tem um tamanho equivalente a (8192 - 16 [comprimento da chave RC4]). Além disso, a última seção IDAT conterá os bytes restantes do payload.
As imagens a seguir explicam a saída do EmbedPayloadInPng.py e a comparam com a estrutura do arquivo PNG criado:


IDAT do payload, após a nossa seção aleatória (em azul). Esta imagem também demonstra a posição do hash CRC e o tamanho da seção IDAT aleatória calculado antecipadamente (em amarelo).

