Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
tird — Strumento di archiviazione steganografica e crittografia dei file | Kitploit
Strumenti/GitHubGitHub/hakavlad/tird
Strumenti di Crittografia/DecrittografiaInformatica ForenseSteganografiaRecupero DatiCrittografiaPrivacy
GitHubhakavlad/tird

tird

Strumento di archiviazione steganografica e crittografia dei file

Vedi Repository
2222 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🏠 Home    📑 Specifiche    📜 man page    📄 Opzioni di Input    📖 Tutorial    ❓ FAQ    📥 Installa


Logo: visualizzazione di dati casuali

tird & tirdFS

Releases PyPI

tird /tɪrd/ (acronimo di "this is random data" — "questi sono dati casuali") è uno strumento di crittografia dei file che minimizza i metadati e nasconde i dati crittografati.

Con tird puoi:

  1. Creare file pieni di dati casuali da usare come contenitori o file chiave.
  2. Sovrascrivere il contenuto di dispositivi a blocchi e file regolari con dati casuali per preparare contenitori o distruggere dati residui.
  3. Crittografare il contenuto dei file e i commenti con file chiave e passphrase. Il formato dei dati crittografati (cryptoblob) è un blob casuale uniforme imbottito (PURB): appare come dati casuali e ha una dimensione randomizzata. Ciò riduce la perdita di metadati dal formato e dalla lunghezza del file e consente di nascondere i cryptoblob tra dati casuali.
  4. Creare filesystem steganografici (nascosti, non rilevabili) guidati dall'utente (tirdFS) all'interno di file contenitore e dispositivi a blocchi. A differenza di VeraCrypt e Shufflecake, i contenitori tirdFS non contengono intestazioni; l'utente specifica le posizioni dei dati all'interno del contenitore ed è responsabile di mantenere separate tali posizioni. Qualsiasi regione dall'aspetto casuale di un file o di un dispositivo a blocchi può essere usata come contenitore.
  5. Prevenire l'accesso rapido ai dati decifrati utilizzando la crittografia a tempo (time-lock).

tird offre negabilità plausibile integrata, anche quando i file crittografati sono memorizzati al di fuori dei contenitori. Aiuta anche a resistere ad attacchi coercitivi di divulgazione delle chiavi (crittanalisi con metodi brutali, xkcd 538).

[!AVVISO] Prima di usare tird, leggi la sezione "Avvertenze". La sicurezza non dipende solo dallo strumento ma dalle tue azioni: conservazione sicura delle chiavi, operare in un ambiente sicuro ed evitare la modalità di debug con dati reali.

La stabilizzazione del formato e una specifica formale sono previste per v1.0.0.

Obiettivi

  1. Protezione dei file: Garantire la protezione dei singoli file, inclusi:
    • Riservatezza e integrità mediante crittografia simmetrica autenticata.
    • Minimizzare la perdita di metadati, inclusa la presenza di dati crittografati.
    • Prevenire o resistere a attacchi coercitivi.
  2. Formato stabile: Mantenere un formato di dati crittografati stabile senza agilità crittografica per la conservazione a lungo termine.
  3. Semplicità: Dare priorità alla semplicità ed evitare il feature creep; rifiutare di implementare funzionalità non direttamente correlate agli obiettivi primari di sicurezza.

Caratteristiche

  • Blob crittografati in formato PURB: dimensione randomizzata e contenuti uniformemente casuali; metadati limitati (solo la dimensione totale trapela — nessuna intestazione, tipo o suggerimento in chiaro).
  • Commenti imbottiti e crittografati: nessun suggerimento in chiaro sul contenuto.
  • Incorporamento di dati nascosti (opzionale): occultare i cryptoblob all'interno di contenitori casuali/crittografati per negabilità plausibile.
  • Crittografia a tempo (opzionale): derivazione lenta della chiave basata su PoW offline per ritardare la decifratura (anti-coercizione).
  • Crittografia autenticata robusta: AEAD completamente impegnativa, quantum-safe ChaCha20-BLAKE2b.
  • Stretching della chiave robusto: Argon2id (profilo "sensibile" di libsodium) — 1 GiB di memoria, 1 lane, 4 passaggi (default e minimo).
  • Materiale chiave arbitrario: derivare chiavi da passphrase, file, dispositivi a blocchi o directory — l'ordine non ha importanza.
  • Interfaccia a riga di comando basata su prompt: intuitiva e interattiva, nessun flag da memorizzare.
  • [TODO] Formato stabile e documentato: previsto per archiviazione e interoperabilità a lungo termine.

Utilizzo

Non devi memorizzare opzioni da riga di comando per usare tird. Questo strumento presenta una CLI basata su prompt: basta avviarlo, selezionare un'opzione dal menu e rispondere alle domande che seguiranno.``` $ 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:~
## Opzioni di Input

Ci sono 4 gruppi di opzioni di input: A (Azione), D (Dati), K (Chiavi), P (Procedi). Sono numerati per facilità di descrizione.```
+——————————————————————+————————————————————————+
| 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 |
+——————————————————————+————————————————————————+

Una descrizione dettagliata di queste opzioni con esempi può essere trovata qui.

Carico utile

Il carico utile che verrà crittografato durante la creazione del cryptoblob è composto da:

  • Contenuto di un file (opzionale): Un file regolare o un dispositivo a blocchi (disco/partizione intero). Se omesso, viene crittografato un carico utile di file vuoto.
  • Commenti (opzionale): Stringa UTF‑8 arbitraria, fino a 1 KiB. Per impostazione predefinita, viene utilizzato il nome del file di input. I commenti decifrati vengono mostrati alla decifratura.

La specifica del carico utile nell'interfaccia utente appare come segue:``` 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:~
## Materiale di Chiave di Input

`tird` offre l'opzione di utilizzare il contenuto di file chiave e una passphrase per derivare chiavi monouso.

- **File chiave (opzionali):** Zero, uno o più percorsi di file chiave; l'ordine degli input non conta. Un percorso di file chiave può essere:
  - Un <ins>file regolare</ins>. Il contenuto del file chiave verrà hashato, e il suo digest sarà utilizzato per ulteriore key stretching e derivazione delle chiavi.
  - Un <ins>dispositivo a blocchi</ins>. Gestito come un file chiave regolare: il contenuto verrà hashato.
  - Una <ins>directory</ins>. Tutti i file all'interno della directory verranno hashati e utilizzati come file chiave.
- **Passphrase (opzionale):** Fino a 2048 byte dopo la [normalizzazione](https://www.unicode.org/reports/tr15/) Unicode (forma C); può essere omessa.

Specificare l'IKM nell'interfaccia utente appare come segue:```
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 dei dati crittografati

  • Formato PURB:
    • Dati che sembrano casuali e non contengono intestazioni identificabili; non possono essere distinti da dati casuali senza le chiavi corrispondenti. Questa proprietà consente di nascondere i cryptoblob tra altri dati casuali.
    • Dimensione randomizzata: la lunghezza del padding è scelta uniformemente tra lo 0% e il 25% della dimensione del cryptoblob senza padding (equivalentemente, fino al 20% della dimensione finale del cryptoblob).
  • I commenti vengono riempiti (o troncati) a una dimensione fissa di 1 KiB prima della crittografia, nascondendo completamente la loro lunghezza originale.
  • Salt applicati bilateralmente: sovrascrivere l'inizio o la fine del cryptoblob (o memorizzare un cryptoblob incompleto) rende impossibile la decrittazione riuscita.
 Mostra schema del 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) | +————————————————————————————————————————————————————————+ ```

Per maggiori dettagli, fare riferimento alla specifica.

Bassa osservabilità e minimizzazione dei metadati

Mentre il contenuto di un messaggio crittografato è protetto, la sua dimensione, la sua provenienza, la sua destinazione… non lo sono. I dati sono nascosti, i metadati sono visibili. A volte, questo è tutto ciò di cui il tuo nemico ha bisogno per scoprire i tuoi segreti.

— Loup Vaillant

Uccidiamo persone in base ai metadati.

— Michael Hayden


Vs.
  • Formato PURB:
    • I file crittografati appaiono come dati casuali.
    • I file crittografati hanno una dimensione randomizzata: non rivelano la dimensione del payload.
    • I commenti sono riempiti costantemente, non rivelano la loro dimensione o esistenza.
    • Non dimostra che le chiavi inserite siano errate.
    • CLI basata su richieste: nessuna perdita delle opzioni utilizzate attraverso la cronologia della shell.
    • Il percorso del file di output è definito dall'utente e non è correlato al percorso del file di input per impostazione predefinita.
    • Opzionale: nascondere i dati crittografati nei contenitori.

tirdFS — File System Steganografico Guidato dall'Utente

tird impiega una tecnica che è descritta come segue:

Nascondere dati all'interno di dati crittografati o all'interno di dati casuali. Il messaggio da nascondere viene crittografato, quindi utilizzato per sovrascrivere parte di un blocco molto più grande di dati crittografati o di un blocco di dati casuali (un cifrario indistruttibile come il one-time pad genera testi cifrati che appaiono perfettamente casuali senza la chiave privata).

Puoi crittografare file e incorporare cryptoblob nei contenitori a partire da posizioni arbitrarie. Dopo aver scritto il cryptoblob, dovrai ricordare la sua posizione nel contenitore (le posizioni iniziale e finale), che verranno utilizzate in seguito per estrarre i cryptoblob. In questo modo, puoi creare tirdFS — file system nascosto, senza header, guidato dall'utente all'interno di un contenitore:

  • È nascosto perché è impossibile distinguere tra dati casuali del contenitore e dati del cryptoblob, così come determinare la posizione dei cryptoblob scritti senza conoscere le posizioni e le chiavi.
  • È senza header perché i contenitori non contengono alcun header; tutti i dati sulle posizioni dei cryptoblob devono essere memorizzati separatamente dall'utente.
  • La posizione iniziale del cryptoblob nel contenitore è definita dall'utente, e l'utente deve memorizzare sia la posizione iniziale che quella finale separatamente dal contenitore. Questo è il motivo per cui viene chiamato file system guidato dall'utente.

tirdFS non è un filesystem montato con strutture di metadati interne. È un modello di archiviazione nascosto gestito dall'utente costruito da cryptoblob posizionati indipendentemente.

Qualsiasi file, disco o partizione più grande della dimensione minima del cryptoblob (1160 B) può essere un contenitore valido. I cryptoblob possono essere incorporati in qualsiasi area.

Esempi di contenitori validi includono:

  1. File appositamente generati con dati casuali.
  2. Aree del disco contenenti dati casuali. Ad esempio, puoi sovrascrivere un disco con dati casuali, formattarlo in FAT32 o exFAT e utilizzare una grande porzione del disco, lasciando qualche decina di MB dall'inizio. Il disco apparirà vuoto a meno che non vi aggiungi alcuni file.
  3. Volumi crittografati LUKS.
  4. Contenitori VeraCrypt, anche quelli che già contengono volumi nascosti.

Esempio di struttura del contenitore:``` +—————————+—————————————+ <— 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:~
**Intestazione gestita dall'utente**

Un'intestazione di testo `tirdFS` gestita separatamente dall'utente potrebbe apparire come segue:```
[100000000:100345765] secret_video.mp4
[100345765:234765345] various_secrets.zip
[12654876456:14765345098] Epstein_files_part1.zip

That is, it should typically contain the location of each cryptoblob in the container plus a brief comment. However, the user is free to determine how to store positions and what to include in such a header.

Visualization of Embedding

The next image visualizes how hard it is to distinguish one random data entry from another and the process of embedding cryptoblobs in a container.

 Show Images

Empty container with random data: Container

One cryptoblob embedded in the container: Embedded1

Two cryptoblobs embedded in the container: Embedded2

Three cryptoblobs embedded in the container: Embedded3

Animation: visualization of embedding: GIF: visualization of embedding

Storing and Carrying Concealed Encrypted Data

Porta tutto con te. È un tuo diritto.

— Kyle Rittenhouse

Guarda il seguente screenshot.

Screenshot

Sembra che questo volume da 16 GB contenga un solo file di 8,7 MiB. È davvero così? Forse sì, forse no.

Il filesystem ci dice che qui c'è un solo file. Ma c'è davvero un solo file sul volume? Non possiamo determinarlo usando il filesystem. In realtà, i dati potrebbero trovarsi al di fuori del filesystem ed essere non rilevabili dagli strumenti del filesystem. I 15,2 GiB di spazio contrassegnati come liberi potrebbero essere occupati da un filesystem nascosto. Questo spazio "libero" potrebbe essere occupato da dati crittografati nascosti.

Possiamo confutare l'esistenza di questi dati? Sì, ad esempio esaminando il livello di entropia di questo spazio libero utilizzando binwalk. Bassa entropia indica una probabile assenza di dati nascosti. Alta entropia non, da sola, prova la presenza di dati crittografati nascosti. Aree con alta entropia possono essere solo dati residui o dati crittografati nascosti.

Se sei interessato a nascondere dati al di fuori del filesystem visibile, tird è al tuo servizio per fornire un Mantello dell'Invisibilità per i tuoi file.

Time-lock Encryption

TLE image

La crittografia a blocco temporale (TLE) può essere utilizzata per impedire a un avversario di accedere rapidamente ai plaintext in caso di compromissione dell'IKM (ad esempio, in caso di coercizione dell'utente). Nella nostra implementazione, si tratta in realtà di una derivazione della chiave a blocco temporale basata su PoW. L'opzione di input "Time cost" specifica il numero di passaggi di Argon2. Se si specifica un numero sufficientemente alto di passaggi, ci vorrà una quantità significativa di tempo per eseguirli. Tuttavia, un attaccante impiegherà la stessa quantità di tempo utilizzando hardware simile. L'esecuzione di Argon2 non può essere accelerata tramite parallelizzazione, quindi si prevede che il tempo speso da un attaccante sia approssimativamente lo stesso di quello speso dal difensore.

Questa implementazione TLE funziona offline, a differenza di tlock.

Imposta il valore TIME COST desiderato:``` K3. TIME COST (DEFAULT=4): 1000000 I: time cost: 1,000,000 W: decryption will require the same "TIME COST" value!

root@kitploit:~
**TLE plausibile:** L'avversario non conosce il valore effettivo del costo temporale, quindi è possibile rappresentare in modo plausibile un numero errato di passaggi. L'avversario non può confutare la tua affermazione finché non tenta di decifrare il cryptoblob utilizzando il valore del costo temporale specificato.

## Opzioni da riga di comando

`tird` non richiede opzioni da riga di comando per l'uso normale.```
$ 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

Modalità Debug Non Sicura

[!WARNING] La modalità debug non è pensata per l'uso in produzione!

Avvia tird con l'opzione --unsafe-debug per guardare sotto il cofano mentre il programma è in esecuzione.

L'attivazione della modalità debug mostra inoltre:

  • Operazioni sui file:
    • Apertura e chiusura di descrittori di file.
    • Percorsi reali dei file aperti.
    • Spostamento dei puntatori ai file.
  • Stringhe di byte relative a operazioni crittografiche: salt, passphrase, digest, chiavi, nonce e tag.
  • Alcune altre informazioni, incluse varie dimensioni.

Modalità Decifratura Non Sicura

[!WARNING] In questa modalità, il testo in chiaro restituito potrebbe essere stato modificato o sostituito da un attaccante!

Nella modalità decifratura non sicura, tird rilascerà il testo in chiaro anche se l'autenticazione fallisce. Usala solo se dai priorità alla disponibilità rispetto all'integrità, quando non riesci a decifrare con successo un cryptoblob in modalità normale.

Compromessi e Limitazioni

  • tird non supporta:
    • Crittografia a chiave pubblica.
    • Compressione di file.
    • Output ASCII armato.
    • Correzione d'errore Reed–Solomon.
    • Suddivisione dell'output in blocchi.
    • Utilizzo di stream standard per l'elaborazione di file (non pensato per script automatici).
    • Lettura e scrittura di dispositivi a blocchi di basso livello su MS Windows. Di conseguenza, questi dispositivi non possono essere usati come keyfile, non possono essere sovrascritti e non possono essere crittografati o incorporati.
  • tird non fornisce:
    • Un'interfaccia grafica.
    • Un generatore di password.
  • tird non può gestire (crittografare/incorporare) più di un file in una singola passata. La crittografia di directory e più file non è supportata.
  • tird non igienizza i metadati del filesystem (atime, mtime, ctime).
  • La velocità di crittografia di tird non è molto elevata (fino a 730 MiB/s nei miei test su hardware moderno).

Avvertenze

La crittografia può aiutare, ma non ti salverà da abusi, vulnerabilità, ingegneria sociale o minacce fisiche.

— Loup Vaillant

PERICOLO MINIERE
  • ⚠️ L'autore non ha una formazione in crittografia.
  • ⚠️ Il codice non ha copertura di test automatizzati.
  • ⚠️ tird non è stato sottoposto ad audit di sicurezza indipendente da esseri umani.
  • ⚠️ tird è inefficace in un ambiente compromesso; eseguirlo in tali casi può causare disastrose fughe di dati.
  • ⚠️ È improbabile che tird sia efficace se utilizzato con chiavi brevi e prevedibili.
  • ⚠️ tird non cancella i propri dati sensibili dalla memoria dopo l'uso; le chiavi potrebbero persistere in memoria dopo la chiusura del programma.
  • ⚠️ I dati sensibili potrebbero fuoriuscire nello spazio di swap.
  • ⚠️ I timestamp del filesystem non vengono igienizzati — potrebbero rivelare metadati operativi.
  • ⚠️ tird non ordina i digest dei keyfile e delle passphrase in tempo costante.
  • ⚠️ Sovrascrivere il contenuto dei file non garantisce la distruzione sicura dei dati sul supporto.
  • ⚠️ Non puoi provare a un avversario che i tuoi dati casuali non contengono informazioni crittografate.
  • ⚠️ tird protegge i dati, non l'utente; non può impedire la tortura se sei sospettato.
  • ⚠️ La derivazione della chiave consuma 1 GiB di RAM, il che potrebbe portare a problemi di prestazioni o crash su sistemi con poca memoria.
  • ⚠️ Integrità/autenticità sulla disponibilità — alterare anche un singolo byte di un cryptoblob impedisce la decifratura.
  • ⚠️ Lo sviluppo non è completo e potrebbero esserci problemi di compatibilità con le versioni precedenti.

Requisiti

  • Python >= 3.9.2
  • cryptography >= 2.1 (fornisce HKDF e un'implementazione veloce di ChaCha20)
  • PyNaCl >= 1.2.0 (fornisce implementazioni veloci di Argon2 e BLAKE2)
  • colorama >= 0.4.6 (specifico per Windows)

Documentazione

  • 📜 Pagina man di tird(1)
  • 📑 Specifica
  • 📄 Opzioni di Input
  • 📖 Tutorial/Demo
  • ❓ FAQ/Razionale
  • 📥 Installazione

TODO

Migliorare la documentazione.

Feedback

Sentiti libero di fare domande, lasciare feedback o fornire critiche nella sezione Discussioni.

Scarica lo strumento