Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tird — Herramienta de almacenamiento esteganográfico y cifrado de archivos | Kitploit
Herramientas/GitHubGitHub/hakavlad/tird
Herramientas de Cifrado/DescifradoAnálisis ForenseEsteganografíaRecuperación de DatosCriptografíaPrivacidad
GitHubhakavlad/tird

tird

Herramienta de almacenamiento esteganográfico y cifrado de archivos

Ver Repositorio
2224hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

🏠 Inicio    📑 Especificación    📜 página man    📄 Opciones de entrada    📖 Tutorial    ❓ Preguntas frecuentes    📥 Instalar


Logo: visualización de datos aleatorios

tird y tirdFS

Lanzamientos PyPI

tird /tɪrd/ (acrónimo de "this is random data") es una herramienta de cifrado de archivos que minimiza los metadatos y oculta los datos cifrados.

Con tird, puedes:

  1. Crear archivos llenos de datos aleatorios para usar como contenedores o archivos de clave.
  2. Sobrescribir el contenido de dispositivos de bloque y archivos regulares con datos aleatorios para preparar contenedores o destruir datos residuales.
  3. Cifrar el contenido de archivos y comentarios con archivos de clave y frases de contraseña. El formato de datos cifrados (cryptoblob) es un blob uniforme aleatorio con relleno (PURB): parece datos aleatorios y tiene un tamaño aleatorio. Esto reduce la filtración de metadatos del formato y la longitud del archivo y permite ocultar cryptoblobs entre datos aleatorios.
  4. Crear sistemas de archivos esteganográficos (ocultos, indetectables) controlados por el usuario (tirdFS) dentro de archivos contenedores y dispositivos de bloque. A diferencia de VeraCrypt y Shufflecake, los contenedores tirdFS no contienen cabeceras; el usuario especifica las ubicaciones de los datos dentro del contenedor y es responsable de mantener esas ubicaciones separadas. Cualquier región de aspecto aleatorio de un archivo o dispositivo de bloque puede utilizarse como contenedor.
  5. Prevenir el acceso rápido a datos descifrados mediante cifrado con bloqueo por tiempo.

tird ofrece negación plausible incorporada, incluso cuando los archivos cifrados se almacenan fuera de contenedores. También ayuda a resistir ataques coercitivos de divulgación de claves (criptoanálisis por coerción, xkcd 538).

[!ADVERTENCIA] Antes de usar tird, lee la sección "Advertencias". La seguridad no depende solo de la herramienta, sino de tus acciones: almacenamiento seguro de claves, operar en un entorno seguro y evitar el modo de depuración con datos reales.

Se planea la estabilización del formato y una especificación formal para la v1.0.0.

Objetivos

  1. Protección de archivos: Garantizar la protección de archivos individuales, incluyendo:
    • Confidencialidad e integridad mediante cifrado simétrico autenticado.
    • Minimizar la filtración de metadatos, incluyendo ocultar la presencia de datos cifrados.
    • Prevenir o resistir ataques coercitivos.
  2. Formato estable: Mantener un formato de datos cifrados estable sin agilidad criptográfica para almacenamiento a largo plazo.
  3. Simplicidad: Priorizar la simplicidad y evitar la acumulación de características; negarse a implementar funciones no relacionadas directamente con los objetivos de seguridad primarios.

Características

  • Blobs cifrados en formato PURB: tamaño aleatorio y contenido uniformemente aleatorio; metadatos limitados (solo se filtra el tamaño total — sin cabeceras, tipos ni pistas en texto claro).
  • Comentarios rellenados y cifrados: sin pistas en texto claro sobre el contenido.
  • Inserción de datos ocultos (opcional): ocultar cryptoblobs dentro de contenedores aleatorios/cifrados para negación plausible.
  • Cifrado con bloqueo por tiempo (opcional): derivación de clave lenta basada en PoW fuera de línea para retrasar el descifrado (anti-coerción).
  • Cifrado autenticado robusto: AEAD completamente comprometedor, seguro frente a computación cuántica ChaCha20-BLAKE2b.
  • Estiramiento de clave fuerte: Argon2id (perfil "sensible" de libsodium) — 1 GiB de memoria, 1 carril, 4 pasadas (por defecto y mínimo).
  • Material de clave arbitrario: derivar claves de frases de contraseña, archivos, dispositivos de bloque o directorios — el orden no importa.
  • CLI basada en indicaciones: intuitiva e interactiva, sin banderas que memorizar.
  • [PENDIENTE] Formato estable y documentado: planeado para archivo e interoperabilidad a largo plazo.

Uso

No necesitas memorizar las opciones de la línea de comandos para usar tird. Esta herramienta cuenta con una CLI basada en indicaciones: simplemente iníciala, selecciona una opción del menú y responde las preguntas que seguirán.``` $ 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:~
## Opciones de entrada

Hay 4 grupos de opciones de entrada: A (Acción), D (Datos), K (Claves), P (Proceder). Están numerados para facilitar la descripción.```
+——————————————————————+————————————————————————+
| 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 |
+——————————————————————+————————————————————————+

Se puede encontrar una descripción detallada de estas opciones con ejemplos aquí.

Carga útil

La carga útil que se cifrará durante la creación del cryptoblob consiste en:

  • Contenido de un archivo (opcional): Un archivo normal o un dispositivo de bloque (disco/partición completo/a). Si se omite, se cifra una carga útil de archivo vacía.
  • Comentarios (opcional): Cadena UTF‑8 arbitraria, de hasta 1 KiB. Por defecto, se utiliza el nombre del archivo de entrada. Los comentarios descifrados se muestran tras el descifrado.

Especificar la carga útil en la interfaz de usuario se ve así:``` 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 introducción de claves

`tird` ofrece la opción de usar el contenido de archivos de clave y una frase de contraseña para derivar claves de un solo uso.

- **Archivos de clave (opcional):** Cero, uno o múltiples rutas de archivos de clave; el orden de las entradas no importa. Una ruta de archivo de clave puede ser:
  - Un <ins>archivo normal</ins>. El contenido del archivo de clave será sometido a hash, y su resumen se usará para un mayor estiramiento y derivación de claves.
  - Un <ins>dispositivo de bloque</ins>. Se maneja igual que un archivo de clave normal: el contenido se someterá a hash.
  - Un <ins>directorio</ins>. Todos los archivos dentro del directorio serán sometidos a hash y usados como archivos de clave.
- **Frase de contraseña (opcional):** Hasta 2048 bytes después de la normalización [Unicode](https://www.unicode.org/reports/tr15/) (forma C); puede omitirse.

Especificar IKM en la interfaz de usuario se ve de la siguiente manera:```
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 Datos Cifrados

  • Formato PURB:
    • Datos que parecen aleatorios y no contienen cabeceras identificables; no se pueden distinguir de datos aleatorios sin las claves correspondientes. Esta propiedad permite que los criptoblobs se oculten entre otros datos aleatorios.
    • Tamaño aleatorizado: la longitud del relleno se elige uniformemente entre el 0% y el 25% del tamaño del criptoblob sin relleno (equivalentemente, hasta el 20% del tamaño final del criptoblob).
  • Los Comentarios se rellenan (o truncan) a un tamaño fijo de 1 KiB antes del cifrado, ocultando completamente su longitud original.
  • Sales aplicadas bilateralmente: sobrescribir el inicio o el final del criptoblob (o almacenar un criptoblob incompleto) hace imposible el descifrado exitoso.
 Mostrar esquema de criptoblob``` +————————————————————————————————————————————————————————+ | 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 más detalles, consulta la especificación.

Baja observabilidad y minimización de metadatos

Aunque el contenido de un mensaje cifrado está protegido, su tamaño, su procedencia, su destino… no lo están. Los datos están ocultos, los metadatos son visibles. A veces, eso es todo lo que tu enemigo necesita para descubrir tus secretos.

— Loup Vaillant

Matamos personas basándonos en metadatos.

— Michael Hayden


Vs.
  • Formato PURB:
    • Los archivos cifrados se ven como datos aleatorios.
    • Los archivos cifrados tienen un tamaño aleatorizado: no revelan el tamaño de la carga útil.
    • Los comentarios tienen relleno constante, no revelan su tamaño ni existencia.
    • No demuestra que las claves ingresadas sean incorrectas.
    • CLI basada en prompts: no hay filtración de opciones usadas a través del historial de shell.
    • La ruta del archivo de salida es definida por el usuario y no está relacionada con la ruta del archivo de entrada por defecto.
    • Opcional: ocultar datos cifrados en contenedores.

tirdFS — Sistema de archivos esteganográfico impulsado por el usuario

tird emplea una técnica que se describe de la siguiente manera:

Ocultar datos dentro de datos cifrados o dentro de datos aleatorios. El mensaje a ocultar se cifra, luego se usa para sobrescribir parte de un bloque mucho más grande de datos cifrados o un bloque de datos aleatorios (un cifrado irrompible como la libreta de un solo uso genera textos cifrados que se ven perfectamente aleatorios sin la clave privada).

Puedes cifrar archivos e incrustar criptoblobs en contenedores comenzando en posiciones arbitrarias. Después de escribir el criptoblob, deberás recordar su ubicación en el contenedor (las posiciones inicial y final), que se usarán más tarde para extraer los criptoblobs. De esta manera, puedes crear tirdFS — sistema de archivos oculto, sin cabecera, impulsado por el usuario dentro de un contenedor:

  • Es oculto porque es imposible distinguir entre datos aleatorios del contenedor y datos del criptoblob, así como determinar la ubicación de los criptoblobs escritos sin conocer las posiciones y las claves.
  • Es sin cabecera porque los contenedores no contienen ninguna cabecera; todos los datos sobre las ubicaciones de los criptoblobs deben ser almacenados por separado por el usuario.
  • La posición inicial del criptoblob en el contenedor es definida por el usuario, y el usuario debe almacenar tanto la posición inicial como la final por separado del contenedor. Por eso se llama sistema de archivos impulsado por el usuario.

tirdFS no es un sistema de archivos montado con estructuras de metadatos internos. Es un modelo de almacenamiento oculto gestionado por el usuario construido a partir de criptoblobs colocados independientemente.

Cualquier archivo, disco o partición más grande que el tamaño mínimo de criptoblob (1160 B) puede ser un contenedor válido. Los criptoblobs pueden incrustarse en cualquier área.

Ejemplos de contenedores válidos incluyen:

  1. Archivos generados especialmente con datos aleatorios.
  2. Áreas de disco que contienen datos aleatorios. Por ejemplo, puedes sobrescribir un disco con datos aleatorios, formatearlo en FAT32 o exFAT, y usar una gran parte del disco, dejando unas pocas decenas de MB desde el principio. El disco parecerá vacío a menos que añadas algunos archivos.
  3. Volúmenes cifrados LUKS.
  4. Contenedores de VeraCrypt, incluso aquellos que ya contienen volúmenes ocultos.

Ejemplo de estructura de contenedor:``` +—————————+—————————————+ <— 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:~
**Encabezado gestionado por el usuario**

Un encabezado de texto `tirdFS` gestionado por el usuario podría verse así:```
[100000000:100345765] secret_video.mp4
[100345765:234765345] various_secrets.zip
[12654876456:14765345098] Epstein_files_part1.zip

Eso es, debería contener típicamente la ubicación de cada criptobloque en el contenedor más un breve comentario. Sin embargo, el usuario es libre de determinar cómo almacenar las posiciones y qué incluir en dicho encabezado.

Visualización de la incrustación

La siguiente imagen visualiza lo difícil que es distinguir una entrada de datos aleatoria de otra y el proceso de incrustar criptobloques en un contenedor.

 Mostrar imágenes

Contenedor vacío con datos aleatorios: Contenedor

Un criptobloque incrustado en el contenedor: Incrustado1

Dos criptobloques incrustados en el contenedor: Incrustado2

Tres criptobloques incrustados en el contenedor: Incrustado3

Animación: visualización de la incrustación: GIF: visualización de la incrustación

Almacenar y transportar datos cifrados ocultos

Llévalo a todas partes. Es tu derecho.

— Kyle Rittenhouse

Por favor, observe la siguiente captura de pantalla.

Captura de pantalla

Parece que este volumen de 16 GB contiene solo un archivo de 8.7 MiB. ¿Es realmente cierto? Quizás sí, quizás no.

El sistema de archivos nos dice que aquí solo hay un archivo. Pero ¿realmente solo hay un archivo en el volumen? No podemos determinarlo usando el sistema de archivos. De hecho, los datos pueden estar ubicados fuera del sistema de archivos y ser indetectables por las herramientas del sistema de archivos. Los 15.2 GiB de espacio marcados como libres pueden estar ocupados por un sistema de archivos oculto. Este espacio "libre" podría estar ocupado por datos cifrados ocultos.

¿Podemos refutar la existencia de estos datos? Sí, por ejemplo, examinando el nivel de entropía de este espacio libre usando binwalk. Una entropía baja indica una probable ausencia de datos ocultos. Una entropía alta no, por sí misma, prueba la presencia de datos cifrados ocultos. Las áreas con alta entropía pueden ser solo datos residuales o datos cifrados ocultos.

Si está interesado en ocultar datos fuera del sistema de archivos visible, entonces tird está a su servicio para proporcionar una Capa de Invisibilidad para sus archivos.

Cifrado con bloqueo de tiempo

Imagen de TLE

El cifrado con bloqueo de tiempo (TLE, por sus siglas en inglés) se puede utilizar para evitar que un adversario acceda rápidamente a los textos planos en caso de compromiso de la IKM (en caso de coacción del usuario, por ejemplo). En nuestra implementación, es en realidad una derivación de clave con bloqueo de tiempo basada en PoW. La opción de entrada "Time cost" especifica el número de pases de Argon2. Si especifica un número suficientemente alto de pases, llevará una cantidad significativa de tiempo realizarlos. Sin embargo, un atacante requerirá la misma cantidad de tiempo al usar hardware similar. La ejecución de Argon2 no se puede acelerar mediante paralelización, por lo que se espera que el tiempo empleado por un atacante sea aproximadamente el mismo que el empleado por el defensor.

Esta implementación de TLE funciona sin conexión, a diferencia de tlock.

Establezca el valor deseado 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:~
**TLE verosímil:** El adversario no conoce el valor real del costo de tiempo, por lo que puedes tergiversar de forma verosímil el número de pasadas. El adversario no puede refutar tu afirmación hasta que intente descifrar el cryptoblob utilizando el valor de costo de tiempo especificado.

## Opciones de línea de comandos

`tird` no requiere opciones de línea de comandos 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 depuración inseguro

[!ADVERTENCIA] ¡El modo de depuración no está diseñado para usarse en producción!

Inicie tird con la opción --unsafe-debug para ver el funcionamiento interno mientras el programa se ejecuta.

Habilitar el modo de depuración muestra adicionalmente:

  • Operaciones de archivos:
    • Apertura y cierre de descriptores de archivo.
    • Rutas reales a los archivos abiertos.
    • Movimiento de los punteros de archivo.
  • Cadenas de bytes relacionadas con operaciones criptográficas: sales, frases de paso, resúmenes, claves, números de uso único y etiquetas.
  • Alguna otra información, incluidos varios tamaños.

Modo de descifrado inseguro

[!ADVERTENCIA] ¡En este modo, el texto plano devuelto puede haber sido modificado o sustituido por un atacante!

En el modo de descifrado inseguro, tird liberará texto plano incluso si la autenticación falla. Úselo solo si prioriza la disponibilidad sobre la integridad, cuando no pueda descifrar con éxito un criptoblob en modo normal.

Compensaciones y limitaciones

  • tird no admite:
    • Criptografía de clave pública.
    • Compresión de archivos.
    • Salida blindada en ASCII.
    • Corrección de errores Reed–Solomon.
    • Dividir la salida en fragmentos.
    • Uso de flujos estándar para procesar archivos (no está diseñado para scripts automatizados).
    • Lectura y escritura de dispositivos de bloque de bajo nivel en MS Windows. Como resultado, estos dispositivos no se pueden usar como archivos clave, no se pueden sobrescribir, ni cifrar ni incrustar.
  • tird no proporciona:
    • Una interfaz gráfica de usuario.
    • Un generador de contraseñas.
  • tird no puede manejar (cifrar/incrustar) más de un archivo en una sola pasada. No se admite el cifrado de directorios y múltiples archivos.
  • tird no desinfecta los metadatos del sistema de archivos (atime, mtime, ctime).
  • La velocidad de cifrado de tird no es muy alta (hasta 730 MiB/s en mis pruebas en hardware moderno).

Advertencias

La criptografía puede ayudar, pero no lo salvará del mal uso, vulnerabilidades, ingeniería social o amenazas físicas.

— Loup Vaillant

PELIGRO MINAS
  • ⚠️ El autor no tiene experiencia en criptografía.
  • ⚠️ El código no tiene cobertura de pruebas automatizadas.
  • ⚠️ tird no ha sido auditado de seguridad de forma independiente por humanos.
  • ⚠️ tird es ineficaz en un entorno comprometido; ejecutarlo en tales casos puede causar filtraciones de datos desastrosas.
  • ⚠️ Es poco probable que tird sea efectivo cuando se usa con claves cortas y predecibles.
  • ⚠️ tird no borra sus datos sensibles de la memoria después de su uso; las claves pueden persistir en la memoria después de la salida del programa.
  • ⚠️ Los datos sensibles pueden filtrarse al espacio de intercambio.
  • ⚠️ Las marcas de tiempo del sistema de archivos no se desinfectan; pueden filtrar metadatos operativos.
  • ⚠️ tird no ordena los resúmenes de los archivos clave y las frases de paso en tiempo constante.
  • ⚠️ Sobrescribir el contenido de los archivos no garantiza la destrucción segura de los datos en el medio.
  • ⚠️ No puede demostrar a un adversario que sus datos aleatorios no contienen información cifrada.
  • ⚠️ tird protege los datos, no al usuario; no puede evitar la tortura si está bajo sospecha.
  • ⚠️ La derivación de claves consume 1 GiB de RAM, lo que puede provocar problemas de rendimiento o fallos en sistemas con poca memoria.
  • ⚠️ Integridad/autenticidad sobre disponibilidad: alterar incluso un solo byte de un criptoblob impide el descifrado.
  • ⚠️ El desarrollo no está completo y puede haber problemas de compatibilidad hacia atrás.

Requisitos

  • Python >= 3.9.2
  • cryptography >= 2.1 (proporciona HKDF y una implementación rápida de ChaCha20)
  • PyNaCl >= 1.2.0 (proporciona implementaciones rápidas de Argon2 y BLAKE2)
  • colorama >= 0.4.6 (específico de Windows)

Documentación

  • 📜 Página de manual de tird(1)
  • 📑 Especificación
  • 📄 Opciones de entrada
  • 📖 Tutorial/Demo
  • ❓ Preguntas frecuentes/Justificación
  • 📥 Instalación

POR HACER

Mejorar la documentación.

Comentarios

No dude en hacer preguntas, dejar comentarios o proporcionar críticas en la sección Discusiones.

Descargar herramienta