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
tird — Ferramenta de armazenamento esteganográfico e criptografia de arquivos | Kitploit
Ferramentas/GitHubGitHub/hakavlad/tird
Ferramentas de Criptografia/DescriptografiaAnálise ForenseEsteganografiaRecuperação de DadosCriptografiaPrivacidade
GitHubhakavlad/tird

tird

Ferramenta de armazenamento esteganográfico e criptografia de arquivos

Ver Repositório
222há 2 mesesRevisado 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

🏠 Início    📑 Especificação    📜 página de man    📄 Opções de Entrada    📖 Tutorial    ❓ FAQ    📥 Instalar


Logo: visualização de dados aleatórios

tird & tirdFS

Releases PyPI

tird /tɪrd/ (um acrônimo para "this is random data") é uma ferramenta de criptografia de arquivos que minimiza metadados e oculta dados criptografados.

Com o tird, você pode:

  1. Criar arquivos preenchidos com dados aleatórios para usar como contêineres ou arquivos-chave.
  2. Sobrescrever o conteúdo de dispositivos de bloco e arquivos regulares com dados aleatórios para preparar contêineres ou destruir dados residuais.
  3. Criptografar conteúdos de arquivos e comentários com arquivos-chave e senhas. O formato de dados criptografados (cryptoblob) é um blob aleatório uniforme preenchido (PURB): parece dados aleatórios e tem um tamanho randomizado. Isso reduz o vazamento de metadados do formato e comprimento do arquivo e permite que cryptoblobs sejam ocultados entre dados aleatórios.
  4. Criar sistemas de arquivos orientados pelo usuário esteganográficos (ocultos, indetectáveis) (tirdFS) dentro de arquivos contêiner e dispositivos de bloco. Diferentemente do VeraCrypt e do Shufflecake, os contêineres tirdFS não possuem cabeçalhos; o usuário especifica as localizações dos dados dentro do contêiner e é responsável por manter essas localizações separadas. Qualquer região de aparência aleatória de um arquivo ou dispositivo de bloco pode ser usada como contêiner.
  5. Impedir o acesso rápido a dados descriptografados usando criptografia com trava de tempo.

O tird oferece negação plausível integrada, mesmo quando arquivos criptografados são armazenados fora de contêineres. Também ajuda a resistir a ataques coercivos de divulgação de chave (criptoanálise de mangueira de borracha, xkcd 538).

[!WARNING] Antes de usar o tird, leia a seção "Avisos". A segurança depende não apenas da ferramenta, mas de suas ações: armazenamento seguro de chaves, operação em um ambiente seguro e evitar o modo de depuração com dados reais.

A estabilização do formato e uma especificação formal estão planejadas para a v1.0.0.

Objetivos

  1. Proteção de arquivos: Garantir a proteção de arquivos individuais, incluindo:
    • Confidencialidade e integridade usando criptografia simétrica autenticada.
    • Minimizar o vazamento de metadados, incluindo ocultar a presença de dados criptografados.
    • Prevenir ou resistir a ataques coercivos.
  2. Formato estável: Manter um formato de dados criptografados estável sem agilidade criptográfica para armazenamento de longo prazo.
  3. Simplicidade: Priorizar a simplicidade e evitar aumento descontrolado de funcionalidades; recusar-se a implementar recursos não diretamente relacionados aos objetivos primários de segurança.

Características

  • Blobs criptografados em formato PURB: tamanho randomizado e conteúdo uniformemente aleatório; metadados limitados (apenas o tamanho total vaza — sem cabeçalhos, tipos ou dicas de texto simples).
  • Comentários preenchidos e criptografados: sem dicas de texto simples sobre o conteúdo.
  • Incorporação de dados ocultos (opcional): ocultar cryptoblobs dentro de contêineres aleatórios/criptografados para negação plausível.
  • Criptografia com trava de tempo (opcional): derivação de chave baseada em PoW lenta e offline para atrasar a descriptografia (anticoerção).
  • Criptografia autenticada robusta: AEAD ChaCha20-BLAKE2b totalmente comprometedora e à prova quântica.
  • Fortalecimento de chave forte: Argon2id (perfil "sensível" do libsodium) — 1 GiB de memória, 1 trilha, 4 passes (padrão e mínimo).
  • Material de chave arbitrário: derivar chaves a partir de senhas, arquivos, dispositivos de bloco ou diretórios — a ordem não importa.
  • CLI baseada em prompts: intuitiva e interativa, sem necessidade de memorizar flags.
  • [TODO] Formato estável e documentado: planejado para arquivamento e interoperabilidade de longo prazo.

Uso

Você não precisa memorizar opções de linha de comando para usar o tird. Esta ferramenta possui uma CLI baseada em prompts: basta iniciá-la, selecionar uma opção do menu e responder às perguntas que se seguem.``` $ tird

root@kitploit:~
                   MENU
———————————————————————————————————————————
0. Exit              1. Info & Warnings
2. Encrypt           3. Decrypt
4. Embed             5. Extract
6. Encrypt & Embed   7. Extract & Decrypt
8. Create w/ Random  9. Overwrite w/ Random
———————————————————————————————————————————

A0. SELECT AN OPTION [0-9]:

root@kitploit:~
## Opções de Entrada

Existem 4 grupos de opções de entrada: A (Action), D (Data), K (Keys), P (Proceed). Eles são numerados para facilitar a descrição.```
+——————————————————————+————————————————————————+
| A0. SELECT AN OPTION | A. Select an action    |
+——————————————————————+————————————————————————+
| D1. INPUT FILE PATH  |                        |
| D2. COMMENTS         | D. Enter data,         |
| D3. OUTPUT FILE PATH |    data location,      |
| D4. OUTPUT FILE SIZE |    data size           |
| D5. START POSITION   |                        |
| D6. END POSITION     |                        |
+——————————————————————+————————————————————————+
| K1. KEYFILE PATH     | K. Enter values        |
| K2. PASSPHRASE       |    related to          |
| K3. TIME COST        |    key derivation      |
+——————————————————————+————————————————————————+
| P0. PROCEED?         | P. Confirm to continue |
+——————————————————————+————————————————————————+

Uma descrição detalhada destas opções com exemplos pode ser encontrada aqui.

Carga útil

A carga útil que será criptografada durante a criação do cryptoblob consiste em:

  • Conteúdo de um arquivo (opcional): Um arquivo regular ou um dispositivo de bloco (disco/partição inteiro). Se omitido, um payload de arquivo vazio é criptografado.
  • Comentários (opcional): String UTF‑8 arbitrária, até 1 KiB. Por padrão, o nome do arquivo de entrada é usado. Os comentários descriptografados são exibidos durante a descriptografia.

Especificar o payload na UI é feito da seguinte forma:``` D1. FILE TO ENCRYPT (OPT): files.zip I: path: 'files.zip'; size: 2,824,230,648 B (2.6 GiB) D2. COMMENTS (DEFAULT='files.zip'): The X-Files, zip (секретные материалы) I: comments will be shown as ['The X-Files, zip (секретные материалы)']

root@kitploit:~
## Material de Chaveamento de Entrada

`tird` fornece a opção de usar o conteúdo de arquivos-chave e uma senha para derivar chaves de uso único.

- **Arquivos-chave (opcional):** Zero, um ou múltiplos caminhos de arquivos-chave; a ordem das entradas não importa. Um caminho de arquivo-chave pode ser:
  - Um <ins>arquivo regular</ins>. O conteúdo do arquivo-chave será hashado, e seu digest será usado para alongamento de chave e derivação de chave adicionais.
  - Um <ins>dispositivo de bloco</ins>. Tratado da mesma forma que um arquivo-chave regular: o conteúdo será hashado.
  - Um <ins>diretório</ins>. Todos os arquivos dentro do diretório serão hashados e usados como arquivos-chave.
- **Senha (opcional):** Até 2048 bytes após a normalização [normalização](https://www.unicode.org/reports/tr15/) (forma C); pode ser omitido.

Especificar IKM na interface do usuário aparece da seguinte forma:```
K1. KEYFILE PATH (OPT): key 
    I: path: 'key'; size: 32 B
    I: reading and hashing contents of 'key'
    I: keyfile accepted
K1. KEYFILE PATH (OPT): 
K2. PASSPHRASE (OPT): 
K2. CONFIRM PASSPHRASE: 
    I: passphrase accepted

Formato de Dados Criptografados

  • Formato PURB:
    • Dados que parecem aleatórios e não contêm cabeçalhos identificáveis; não podem ser distinguidos de dados aleatórios sem as chaves correspondentes. Essa propriedade permite que cryptoblobs sejam ocultados entre outros dados aleatórios.
    • Tamanho aleatório: o comprimento do preenchimento é escolhido uniformemente entre 0% e 25% do tamanho do cryptoblob não preenchido (equivalentemente, até 20% do tamanho final do cryptoblob).
  • Comentários são preenchidos (ou truncados) para um tamanho fixo de 1 KiB antes da criptografia, ocultando completamente seu comprimento original.
  • Sais aplicados bilateralmente: sobrescrever o início ou o final do cryptoblob (ou armazenar um cryptoblob incompleto) torna a descriptografia bem-sucedida impossível.
 Mostrar esquema do cryptoblob``` +————————————————————————————————————————————————————————+ | CSPRNG output: | | Salt for key stretching used with Argon2 (16 B) | +————————————————————————————————————————————————————————+ | ChaCha20 output: | | Encrypted pad_ikm (8 B) | +————————————————————————————————————————————————————————+ | CSPRNG/BLAKE2 output: | | Randomized padding (0-25% of the unpadded size) | | + MAC tag (32 B) | +————————————————————————————————————————————————————————+ | ChaCha20/BLAKE2 output: | | Encrypted payload file contents + MAC tags (0+ B) | +————————————————————————————————————————————————————————+ | ChaCha20/BLAKE2 output: | | Encrypted padded comments (1 KiB) + MAC tag (32 B) | +————————————————————————————————————————————————————————+ | CSPRNG output: | | Salt for pre‑hashing IKM used with BLAKE2 (16 B) | +————————————————————————————————————————————————————————+ ```

Para mais detalhes, consulte a especificação.

Baixa Observabilidade e Minimização de Metadados

Embora o conteúdo de uma mensagem criptografada esteja protegido, seu tamanho, sua origem, seu destino… não estão. Os dados estão ocultos, os metadados são exibidos. Às vezes, isso é tudo que seu inimigo precisa para descobrir seus segredos.

— Loup Vaillant

Matamos pessoas com base em metadados.

— Michael Hayden


Vs.
  • Formato PURB:
    • Arquivos criptografados parecem dados aleatórios.
    • Arquivos criptografados têm tamanho aleatório: não revelam o tamanho da carga útil.
    • Comentários têm preenchimento constante, não revelam seu tamanho ou existência.
    • Não prova que as chaves inseridas estão incorretas.
    • CLI baseada em prompt: nenhum vazamento de opções usadas através do histórico do shell.
    • O caminho do arquivo de saída é definido pelo usuário e não está relacionado ao caminho do arquivo de entrada por padrão.
    • Opcional: ocultar dados criptografados em contêineres.

tirdFS — Sistema de Arquivos Esteganográfico Orientado pelo Usuário

tird emprega uma técnica que é descrita da seguinte forma:

Ocultar dados dentro de dados criptografados ou dentro de dados aleatórios. A mensagem a ocultar é criptografada e, em seguida, usada para sobrescrever parte de um bloco muito maior de dados criptografados ou de um bloco de dados aleatórios (uma cifra inquebrável como o one-time pad gera textos cifrados que parecem perfeitamente aleatórios sem a chave privada).

Você pode criptografar arquivos e incorporar cryptoblobs em contêineres começando em posições arbitrárias. Após escrever o cryptoblob, você precisará lembrar sua localização no contêiner (as posições inicial e final), que serão usadas posteriormente para extrair os cryptoblobs. Dessa forma, você pode criar tirdFS — sistema de arquivos oculto, sem cabeçalho e orientado pelo usuário dentro de um contêiner:

  • É oculto porque é impossível distinguir entre dados aleatórios do contêiner e dados de cryptoblob, bem como determinar a localização dos cryptoblobs escritos sem conhecer as posições e chaves.
  • É sem cabeçalho porque os contêineres não contêm nenhum cabeçalho; todos os dados sobre as localizações dos cryptoblobs devem ser armazenados separadamente pelo usuário.
  • A posição inicial do cryptoblob no contêiner é definida pelo usuário, e o usuário deve armazenar as posições inicial e final separadamente do contêiner. É por isso que é chamado de sistema de arquivos orientado pelo usuário.

tirdFS não é um sistema de arquivos montado com estruturas de metadados internas. É um modelo de armazenamento oculto gerenciado pelo usuário construído a partir de cryptoblobs colocados independentemente.

Qualquer arquivo, disco ou partição maior que o tamanho mínimo do cryptoblob (1160 B) pode ser um contêiner válido. Cryptoblobs podem ser incorporados em qualquer área.

Exemplos de Contêineres Válidos incluem:

  1. Arquivos gerados especialmente com dados aleatórios.
  2. Áreas de disco contendo dados aleatórios. Por exemplo, você pode sobrescrever um disco com dados aleatórios, formatá-lo em FAT32 ou exFAT e usar uma grande parte do disco, deixando algumas dezenas de MB do início. O disco parecerá vazio a menos que você adicione alguns arquivos.
  3. Volumes criptografados LUKS.
  4. Contêineres VeraCrypt, mesmo aqueles que já contêm volumes ocultos.

Exemplo de Estrutura de Contêiner:``` +—————————+—————————————+ <— Position 0 of the container | | | | | Random data | | | | | +—————————————+ <— Cryptoblob1 start position | Header- | | | less | Cryptoblob1 | | | | | Layer +—————————————+ <— Cryptoblob1 end position | | Random data | | Cake +—————————————+ <— Cryptoblob2 start position | | | | | Cryptoblob2 | | | | | +—————————————+ <— Cryptoblob2 end position | | Random data | +—————————+—————————————+

root@kitploit:~
**Cabeçalho gerenciado pelo usuário**

Um cabeçalho de texto separado gerenciado pelo usuário `tirdFS` pode se parecer com o seguinte:```
[100000000:100345765] secret_video.mp4
[100345765:234765345] various_secrets.zip
[12654876456:14765345098] Epstein_files_part1.zip

Isso é, normalmente deve conter a localização de cada criptobloco no contêiner mais um breve comentário. No entanto, o usuário é livre para determinar como armazenar as posições e o que incluir em tal cabeçalho.

Visualização da Incorporação

A imagem a seguir visualiza como é difícil distinguir uma entrada de dados aleatória de outra e o processo de incorporar criptoblocos em um contêiner.

 Mostrar Imagens

Contêiner vazio com dados aleatórios: Contêiner

Um criptobloco incorporado no contêiner: Incorporado1

Dois criptoblocos incorporados no contêiner: Incorporado2

Três criptoblocos incorporados no contêiner: Incorporado3

Animação: visualização da incorporação: GIF: visualização da incorporação

Armazenando e Transportando Dados Criptografados Ocultos

Carregue para todos os lados. É seu direito.

— Kyle Rittenhouse

Por favor, veja a seguinte captura de tela.

Captura de tela

Parece que este volume de 16 GB contém apenas um arquivo de 8,7 MiB. Será que é realmente verdade? Talvez sim, talvez não.

O sistema de arquivos nos diz que há apenas um arquivo aqui. Mas será que realmente há apenas um arquivo no volume? Não podemos determinar isso usando o sistema de arquivos. Na verdade, os dados podem estar localizados fora do sistema de arquivos e serem indetectáveis pelas ferramentas do sistema de arquivos. Os 15,2 GiB de espaço marcados como livres podem estar ocupados por um sistema de arquivos oculto. Este espaço "livre" pode estar ocupado por dados criptografados ocultos.

Podemos refutar a existência desses dados? Sim, por exemplo, examinando o nível de entropia desse espaço livre usando binwalk. Baixa entropia indica uma provável ausência de dados ocultos. Alta entropia não, por si só, prova a presença de dados criptografados ocultos. Áreas com alta entropia podem ser apenas dados residuais ou dados criptografados ocultos.

Se você está interessado em ocultar dados fora do sistema de arquivos visível, então o tird está ao seu serviço para fornecer uma Capa de Invisibilidade para seus arquivos.

Criptografia com Bloqueio de Tempo

Imagem TLE

A criptografia com bloqueio de tempo (TLE) pode ser usada para impedir que um adversário acesse rapidamente os textos simples no caso de um comprometimento do IKM (em caso de coerção do usuário, por exemplo). Em nossa implementação, é na verdade uma derivação de chave com bloqueio de tempo baseada em PoW. A opção de entrada "Time cost" especifica o número de passagens do Argon2. Se você especificar um número suficientemente alto de passagens, levará um tempo significativo para executá-las. No entanto, um invasor exigirá a mesma quantidade de tempo ao usar hardware semelhante. A execução do Argon2 não pode ser acelerada por paralelização, portanto, espera-se que o tempo gasto por um invasor seja aproximadamente o mesmo que o gasto pelo defensor.

Esta implementação de TLE funciona offline, ao contrário do tlock.

Defina o valor desejado de TIME COST:``` K3. TIME COST (DEFAULT=4): 1000000 I: time cost: 1,000,000 W: decryption will require the same "TIME COST" value!

root@kitploit:~
**Plausible TLE:** O adversário não conhece o valor real do custo de tempo, então você pode deturpar de forma plausível o número de passes. O adversário não pode refutar sua afirmação até tentar descriptografar o cryptoblob usando o valor de custo de tempo especificado.

## Opções de Linha de Comando

`tird` não requer opções de linha de comando para uso normal.```
$ tird --help
tird v0.30.0
        A tool for encrypting files and hiding encrypted data.
        Homepage: https://github.com/hakavlad/tird

Usage:
    tird [--unsafe-debug] [--unsafe-decrypt]

    Start without options for normal usage.

Options:
    --help            print this help message and exit
    --unsafe-debug    enable unsafe debug mode
    --unsafe-decrypt  release plaintext even if MAC verification
                      failed (dangerous)

Examples:
    $ tird
    $ tird --unsafe-debug

Modo de Depuração Inseguro

[!WARNING] O modo de depuração não deve ser usado em produção!

Inicie o tird com a opção --unsafe-debug para ver sob o capô enquanto o programa está em execução.

Ativar o modo de depuração mostra adicionalmente:

  • Operações de arquivo:
    • Abertura e fechamento de descritores de arquivo.
    • Caminhos reais para arquivos abertos.
    • Movimento de ponteiros de arquivo.
  • Strings de bytes relacionadas a operações criptográficas: salts, frases-passe, digests, chaves, nonces e tags.
  • Algumas outras informações, incluindo vários tamanhos.

Modo de Descriptografia Inseguro

[!WARNING] Neste modo, o texto simples retornado pode ter sido modificado ou substituído por um atacante!

No modo de descriptografia inseguro, o tird liberará o texto simples mesmo se a autenticação falhar. Use apenas se você priorizar a disponibilidade sobre a integridade, quando não conseguir descriptografar um criptobloco com sucesso no modo normal.

Compensações e Limitações

  • tird não suporta:
    • Criptografia de chave pública.
    • Compressão de arquivos.
    • Saída blindada em ASCII.
    • Correção de erros Reed–Solomon.
    • Divisão da saída em blocos.
    • Uso de fluxos padrão para processar arquivos (não destinado a scripts automatizados).
    • Leitura e gravação de dispositivos de bloco de baixo nível no MS Windows. Como resultado, esses dispositivos não podem ser usados como keyfiles, não podem ser sobrescritos e não podem ser criptografados ou incorporados.
  • tird não fornece:
    • Uma interface gráfica do usuário.
    • Um gerador de senhas.
  • tird não pode lidar (criptografar/incorporar) mais de um arquivo em uma única passagem. Não é suportada a criptografia de diretórios e múltiplos arquivos.
  • tird não sanitiza metadados do sistema de arquivos (atime, mtime, ctime).
  • A velocidade de criptografia do tird não é muito alta (até 730 MiB/s em meus testes em hardware moderno).

Avisos

A criptografia pode ajudar, mas não vai salvá-lo de uso indevido, vulnerabilidades, engenharia social ou ameaças físicas.

— Loup Vaillant

PERIGO MINAS
  • ⚠️ O autor não tem formação em criptografia.
  • ⚠️ O código não possui cobertura de testes automatizados.
  • ⚠️ tird não passou por uma auditoria de segurança independente por humanos.
  • ⚠️ tird é ineficaz em um ambiente comprometido; executá-lo nesses casos pode causar vazamentos de dados desastrosos.
  • ⚠️ tird provavelmente não será eficaz quando usado com chaves curtas e previsíveis.
  • ⚠️ tird não apaga seus dados sensíveis da memória após o uso; as chaves podem persistir na memória após a saída do programa.
  • ⚠️ Dados sensíveis podem vazar para o espaço de swap.
  • ⚠️ Os timestamps do sistema de arquivos não são sanitizados — podem vazar metadados operacionais.
  • ⚠️ tird não ordena digests de keyfiles e frases-passe em tempo constante.
  • ⚠️ Sobrescrever o conteúdo dos arquivos não garante a destruição segura dos dados na mídia.
  • ⚠️ Você não pode provar a um adversário que seus dados aleatórios não contêm informações criptografadas.
  • ⚠️ tird protege dados, não o usuário; não pode evitar tortura se você estiver sob suspeita.
  • ⚠️ A derivação de chave consome 1 GiB de RAM, o que pode levar a problemas de desempenho ou falhas em sistemas com pouca memória.
  • ⚠️ Integridade/autenticidade sobre disponibilidade — alterar até mesmo um único byte de um criptobloco impede a descriptografia.
  • ⚠️ O desenvolvimento não está completo e pode haver problemas de compatibilidade com versões anteriores.

Requisitos

  • Python >= 3.9.2
  • cryptography >= 2.1 (fornece HKDF e uma implementação rápida de ChaCha20)
  • PyNaCl >= 1.2.0 (fornece implementações rápidas de Argon2 e BLAKE2)
  • colorama >= 0.4.6 (específico para Windows)

Documentação

  • 📜 página man de tird(1)
  • 📑 Especificação
  • 📄 Opções de Entrada
  • 📖 Tutorial/Demo
  • ❓ FAQ/Justificativa
  • 📥 Instalação

TODO

Melhorar a documentação.

Feedback

Sinta-se à vontade para fazer perguntas, deixar feedback ou fornecer críticas na seção Discussões.

Baixar ferramenta