Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
File-Injector — File Injector é um script que permite armazenar qualquer arquivo em uma imagem usando esteganografia | Kitploit
Ferramentas/GitHubGitHub/carlospuenteg/file-injector
Ferramentas de Criptografia/DescriptografiaExfiltração de DadosEsteganografiaCriptografia
GitHubcarlospuenteg/file-injector

File-Injector

File Injector é um script que permite armazenar qualquer arquivo em uma imagem usando esteganografia

Ver Repositório
44329há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

File Injector

Se quiser usar uma versão anterior (1.0.2 ou inferior), em que precisava da imagem original para extrair o arquivo, pode descarregá-lo aqui.

Índice

  • 1. Descrição
  • 2. Começando
    • Instalar requisitos
    • Executar o script
    • Escolher entrada
      • Escolher uma imagem/áudio base
      • Escolher um arquivo de entrada
      • Escolher/Gerar uma chave de criptografia
  • 3. Resultados
  • 4. Exemplos de uso
    • Injeção
    • Extração
  • 5. Configuração
  • 6. O que faz
  • 7. Como funciona
    • Opções
    • inject_file_func
    • extract_file_func
    • get_fernet
    • decrypt_content
    • inject_file
    • extract_file

1. Descrição

File Injector é um script que permite armazenar qualquer arquivo (.zip, .png, .txt, .gba...) e o seu nome de arquivo numa imagem/áudio como ruído, usando esteganografia.

Também pode optar por criptografar o arquivo de entrada antes de armazená-lo.

Depois, para extrair o arquivo da imagem/áudio modificada, você NÃO precisa da imagem/áudio original, apenas da chave de criptografia se o arquivo tiver sido criptografado.

2. Começando

Instalar requisitos

root@kitploit:~
python3 -m pip install -r requirements.txt

Se isso não funcionar, pode tentar:

root@kitploit:~
py -m pip install -r requirements.txt

Executar o script

root@kitploit:~
python3 main.py

Escolher entrada

Escolher uma imagem/áudio base

Escolha uma imagem/áudio base para armazenar o arquivo a partir da pasta files/base.

Você também pode adicionar suas próprias imagens/áudios a esta pasta.

  • As imagens podem ser .png ou (.jpg/.jpeg), mas serão convertidas para .png quando o script for executado.
  • Os áudios precisam ser .mp3 ou .wav, mas serão convertidos para .mp3 quando o script for executado.

Escolher um arquivo de entrada

Escolha um arquivo para ser armazenado na imagem/áudio a partir da pasta files/input.

Você pode adicionar seus próprios arquivos a esta pasta. Eles podem ser de qualquer tipo.

Escolher uma imagem/áudio modificada

Escolha uma imagem/áudio modificada para extrair o arquivo a partir da pasta files/modified.

Você também pode adicionar suas próprias imagens/áudios modificadas a esta pasta.

Escolher/Gerar uma chave de criptografia

Você pode escolher uma chave da pasta files/$encryption-keys ou gerar uma nela.

O arquivo de chave deve ter a extensão .key

Você não precisa escolher uma específica ao descriptografar um arquivo; ela será selecionada automaticamente da pasta.

3. Resultados

Esta imagem de 17.1MP contém um arquivo .zip de 9MB criptografado e o seu nome de arquivo armazenados como ruído.

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/17"1MP_mod.png" width=500>

Esta imagem de 1.7MP contém um arquivo .zip de 0.93MB criptografado e o seu nome de arquivo armazenados como ruído.

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/1"7MP_mod.png" width=500>

Este arquivo de áudio de 42MB contém um arquivo .zip de 9MB criptografado e o seu nome de arquivo armazenados como ruído.

https://user-images.githubusercontent.com/65092569/202014519-24514110-4bd2-4c2b-9307-237964df0c2b.mp4

4. Exemplos de uso

Injeção

root@kitploit:~
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file

Option: 1
File to be stored: images.zip
Filename of the base image: 2'2MP
Encrypt the file? (y/n): y

Do you want to use an existing key or generate a new one?
[0] Existing key
[1] New key

Option: 1
Filename of the new key file (blank for default): 
Key generated and saved to files/$encryption-keys/key9.key

Preparing...

Modified bits per channel: 2
Image modification: 1.56%

✅ Storing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [100.0%]

Generating random values...

Storing random values...

Reshaping...

Modified image saved in files/modified-images/2'2MP_mod.png

Done in 7.5892 seconds

Extração

root@kitploit:~
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file

Option: 2
Filename of the modified image: 2'2MP_mod

Preparing...

Retrieving filename...

Retrieving input file...
Decrypted with "files/$encryption-keys/key2.key"

Output file saved in files/output-files/images.zip

Done in 1.4083 seconds

5. Configuração

Você pode alterar a configuração no arquivo config.py.

6. O que faz

A injeção é feita armazenando o arquivo nos X bits menos significativos de cada elemento do array criado ao achatar o array da imagem/áudio.

  • Cada elemento tem 8 bits (se o arquivo base for uma imagem) ou 16 bits (se o arquivo base for um áudio)
  • Este script altera de 1 a todos os bits de cada elemento, dependendo do tamanho do arquivo a ser armazenado em comparação com a imagem/áudio base.
  • Se você armazenar um arquivo maior ou se a imagem/áudio base for menor, mais bits serão alterados e as alterações ficarão mais perceptíveis.
  • Se você armazenar um arquivo menor ou se a imagem/áudio base for maior, menos bits serão alterados e as alterações ficarão menos perceptíveis.
  • Se a imagem/áudio base for pequena demais para armazenar o arquivo, o script será interrompido e avisará você.
  • Se você escolher criptografar o arquivo, o tamanho dele aumentará em ≈1/3.

7. Como funciona

Opções

OpçãoDescrição
[0] EXITSair do script
[1] Inject fileChama inject_file_func()
[2] Extract fileChama extract_file_func()

inject_file_func()

  1. Se TEST_MODE == True, será usada a imagem/áudio base e o arquivo de entrada predefinidos. Caso contrário, será pedida a imagem/áudio base e o arquivo de entrada.
  2. Ler o arquivo (em bytes)
  3. Ler a imagem/áudio e armazená-la em um numpy array
  4. Ler o nome do arquivo (em bytes)
  5. Se o usuário quiser criptografar o arquivo:
    1. Obter a chave com get_fernet()
    2. Criptografar o arquivo e o nome do arquivo
  6. Tentar injetar o arquivo e o nome do arquivo na imagem/áudio com inject_file().
    1. Se a imagem/áudio for pequena demais para armazenar o arquivo, gerar um erro
    2. Caso contrário, retornar a imagem/áudio modificada.
  7. Salvar a imagem/áudio modificada

extract_file_func()

  1. Se TEST_MODE == True, será usada a imagem/áudio modificada predefinida. Caso contrário, será pedida a imagem/áudio modificada.
  2. Ler a imagem/áudio modificada
  3. Extrair o arquivo e o nome do arquivo como bytes com extract_file()
  4. Se o arquivo e o nome do arquivo tiverem sido criptografados (começam com gAAAAA), descriptografá-los com decrypt_content
  5. Decodificar o nome do arquivo para UTF-8
  6. Salvar o arquivo com o nome do arquivo decodificado

get_fernet()

OpçãoDescrição
[0] Existing keyUsar uma chave existente
[1] New keyGerar uma nova chave

[0] Existing key

  1. Escolher uma chave para usar na pasta files/$encryption-keys

[1] New key

  1. Escolher um nome de arquivo para a nova chave (ou deixar em branco para o padrão (ex.: key8.key))
  2. Gerar uma nova chave e salvá-la com o nome de arquivo escolhido
  3. Retornar o objeto Fernet com a nova chave

decrypt_content()

  1. Para cada chave na pasta files/$encryption-keys:
    1. Tentar descriptografar o arquivo e o nome do arquivo com ela
    2. Se for gerado um InvalidToken:
      1. Isso significa que a chave não é a correta
      2. Tentar com outra chave
    3. Caso contrário, retornar a chave
  2. Se nenhuma chave for encontrada, lançar uma Exceção

inject_file()

Retorna o array da imagem/áudio modificada (np.ndarray, com a mesma forma de arr)

extract_file()

ParâmetroTipoDescrição
mod_arr_flatnp.ndarrayImagem/áudio modificada achatada

Retorna um dicionário com o arquivo e o nome do arquivo extraídos, ambos no formato (bytes)

Baixar ferramenta
ConstanteDescriçãoValor padrão
MOD_PREFIXPrefixo que a imagem/áudio modificada terá""
MOD_SUFFIXSufixo que a imagem/áudio modificada terá"_mod"
STORE_RANDOMArmazenar dados aleatórios na imagem modificada para que o limite entre a parte com os dados armazenados e a parte sem eles não seja tão óbvioTrue
TEST_MODEAtiva/Desativa o Modo de Teste: testar com imagens/áudios e arquivos predefinidosTrue
ParâmetroTipoDescrição
arrnp.ndarrayImagem/áudio como um numpy array
filebytesArquivo como bytes
filenamebytesNome do arquivo como bytes
store_randombooleanIndica se os dados aleatórios devem ou não ser armazenados na imagem/áudio modificada