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
bkcrack — Decifra la crittografia legacy dei file ZIP con l'attacco a testo in chiaro noto di Biham e Kocher. | Kitploit
Strumenti/GitHubGitHub/kimci86/bkcrack
Password CrackingStrumenti di Crittografia/DecrittografiaAnalisi delle VulnerabilitàCrittografia
GitHubkimci86/bkcrack

bkcrack

Decifra la crittografia legacy dei file ZIP con l'attacco a testo in chiaro noto di Biham e Kocher.

Vedi Repository
2.2k18852 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

bkcrack

CI badge coverage badge release badge license badge GitHub Sponsors badge

Attacca la crittografia legacy dei zip con l'attacco a testo noto di Biham e Kocher.

Panoramica

Un archivio ZIP può contenere molte voci il cui contenuto può essere compresso e/o crittografato. In particolare, le voci possono essere crittografate con un algoritmo di crittografia simmetrica basato su password, chiamato crittografia PKWARE tradizionale, crittografia legacy o ZipCrypto. Questo algoritmo genera un flusso pseudo-casuale di byte (keystream) che viene XORed con il contenuto della voce (testo in chiaro) per produrre dati crittografati (testo cifrato). Lo stato del generatore, composto da tre interi a 32 bit, viene inizializzato usando la password e poi continuamente aggiornato con il testo in chiaro man mano che la crittografia procede. Questo algoritmo di crittografia è vulnerabile agli attacchi a testo noto, come dimostrato da Eli Biham e Paul C. Kocher nell'articolo di ricerca A known plaintext attack on the PKZIP stream cipher. Dati il testo cifrato e 12 o più byte del corrispondente testo in chiaro, è possibile recuperare lo stato interno del generatore di keystream. Questo stato interno è sufficiente per decifrare completamente il testo cifrato, così come altre voci crittografate con la stessa password. Può anche essere usato per forzare la password con una complessità di nl-6 dove n è la dimensione del set di caratteri e l è la lunghezza della password.

bkcrack è uno strumento a riga di comando che implementa questo attacco a testo noto. Le principali funzionalità sono:

  • Recuperare lo stato interno dal testo cifrato e dal testo in chiaro.
  • Rimuovere o cambiare la password di un archivio ZIP usando lo stato interno.
  • Recuperare la password originale dallo stato interno.

Installazione

Pacchetti precompilati

Puoi ottenere l'ultima release ufficiale su GitHub.

Sono disponibili per il download pacchetti precompilati per Ubuntu, MacOS e Windows. Estrai l'archivio scaricato dove preferisci.

Su Windows, le librerie di runtime Microsoft sono necessarie per eseguire bkcrack. Se non sono già installate sul sistema, scarica e installa l'ultimo pacchetto Microsoft Visual C++ Redistributable.

Compilare dal sorgente

In alternativa, puoi compilare il progetto con CMake.

Prima, scarica i file sorgente o clona il repository git. Quindi, eseguendo i seguenti comandi nell'albero dei sorgenti verrà creata un'installazione nella cartella install.

root@kitploit:~
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=install
cmake --build build --config Release
cmake --build build --config Release --target install

Pacchetti di terze parti

bkcrack è disponibile nei repository di pacchetti elencati di seguito. Questi pacchetti sono forniti da manutentori esterni.

Packaging status

Utilizzo

Elencare le voci

Puoi vedere un elenco di nomi di voci e metadati in un archivio chiamato archive.zip in questo modo:

root@kitploit:~
bkcrack -L archive.zip

Le voci che usano la crittografia ZipCrypto sono vulnerabili a un attacco a testo noto.

Recuperare le chiavi interne

L'attacco richiede almeno 12 byte di testo in chiaro noto. Almeno 8 di essi devono essere contigui. Maggiore è il testo in chiaro contiguo noto, più veloce sarà l'attacco.

Caricare dati da archivi zip

Avendo un archivio zip encrypted.zip con la voce cipher come testo cifrato e plain.zip con la voce plain come testo in chiaro noto, bkcrack può essere eseguito così:

root@kitploit:~
bkcrack -C encrypted.zip -c cipher -P plain.zip -p plain

Caricare dati da file

Avendo un file cipherfile con il testo cifrato (che inizia con i 12 byte corrispondenti all'intestazione di crittografia) e plainfile con il testo in chiaro noto, bkcrack può essere eseguito così:

root@kitploit:~
bkcrack -c cipherfile -p plainfile

Offset

Se il testo in chiaro corrisponde a una parte diversa dall'inizio del testo cifrato, puoi specificare un offset. Può essere negativo se il testo in chiaro include una parte dell'intestazione di crittografia.

root@kitploit:~
bkcrack -c cipherfile -p plainfile -o offset

Testo in chiaro sparso

Se conosci poco testo in chiaro contiguo (tra 8 e 11 byte), ma conosci alcuni byte ad altri offset noti, puoi fornire queste informazioni per raggiungere il requisito di un totale di 12 byte noti. Per fare ciò, usa il flag -x seguito da un offset e byte in esadecimale.

root@kitploit:~
bkcrack -c cipherfile -p plainfile -x 25 4b4f -x 30 21

Decifrare

Se l'attacco ha successo, i dati decifrati associati al testo cifrato usato per l'attacco possono essere salvati:

root@kitploit:~
bkcrack -c cipherfile -p plainfile -d decipheredfile

Se le chiavi sono note da un attacco precedente, è possibile usare bkcrack per decifrare i dati:

root@kitploit:~
bkcrack -c cipherfile -k 12345678 23456789 34567890 -d decipheredfile

Decomprimere

I dati decifrati potrebbero essere compressi a seconda che la compressione sia stata usata o meno quando il file zip è stato creato. Se è stata usata la compressione deflate, uno script Python 3 fornito nella cartella tools può essere usato per decomprimere i dati.

root@kitploit:~
python3 tools/inflate.py < decipheredfile > decompressedfile

Rimuovere la password

Per ottenere l'accesso a tutte le voci dell'archivio crittografato in un unico passaggio, puoi generare un nuovo archivio con lo stesso contenuto ma senza crittografia. Si presuppone che ogni voce sia stata originariamente crittografata con la stessa password.

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -D decrypted.zip

Cambiare la password

È anche possibile generare un nuovo archivio crittografato con la password che preferisci:

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -U unlocked.zip new_password

Puoi anche definire la nuova password tramite la sua rappresentazione interna corrispondente.

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 --change-keys unlocked.zip 581da44e 8e40167f 50c009a0

Questi due comandi possono essere usati insieme per modificare i contenuti di un archivio crittografato senza conoscere la password ma conoscendo solo le chiavi interne: puoi fare una copia crittografata con la password che scegli, poi modificare la copia con un gestore di archivi inserendo la password scelta quando richiesto, e infine fare una copia dell'archivio modificato di nuovo con le chiavi di crittografia originali.

Recuperare la password

Date le chiavi interne, bkcrack può provare a trovare la password originale.

Recupero della password tramite brute force

Puoi cercare una password usando caratteri in un determinato set di caratteri:

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p

Puoi limitare la ricerca a password di una data lunghezza o a un intervallo di lunghezze:

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 9
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 8..10

L'opzione -r <length> <charset> è una scorciatoia per -l 0..<length> -b <charset>:

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -r 10 ?p

Recupero della password basato su maschera

Se hai qualche conoscenza su come è formata la password, puoi specificare una maschera per restringere lo spazio di ricerca e rendere il recupero molto più veloce. Questo è rilevante per password lunghe (come quelle con 12 o più caratteri) per le quali il brute force diventa molto dispendioso in termini di tempo.

Ad esempio, supponendo di ricordare vagamente che la tua password è composta da 8 lettere minuscole, un trattino e 6 cifre decimali, puoi usare questo comando:

root@kitploit:~
bkcrack -k 1940e266 d3fd3d89 71ce9871 -m ?l?l?l?l?l?l?l?l-?d?d?d?d?d?d

Questo viene eseguito in millisecondi, mentre l'alternativa del brute force richiede ore.

Set di caratteri

Lo spazio di ricerca sia per il brute force che per il recupero basato su maschera è definito con set di caratteri. Un set di caratteri è una sequenza di caratteri o scorciatoie per set di caratteri esistenti. I set di caratteri predefiniti sono elencati di seguito.

Oltre ai set di caratteri predefiniti, puoi definire set di caratteri personalizzati con l'opzione -s. I set di caratteri personalizzati possono fare riferimento a set predefiniti o ad altri set personalizzati. I set di caratteri personalizzati sono particolarmente utili per la specifica precisa dello spazio di ricerca del recupero basato su maschera.

Ad esempio, se sai che la tua password è composta da 10 lettere (maiuscole o minuscole) e 5 cifre binarie, puoi usare questo comando:

root@kitploit:~
bkcrack -k b8c377a6 f603160f 1832a78b -m ?x?x?x?x?x?x?x?x?x?x?y?y?y?y?y -s x ?u?l -s y 01

Impara

Un tutorial è fornito nella cartella example.

Per ulteriori informazioni, dai un'occhiata alla documentazione e leggi il codice sorgente.

Contribuisci

Non esitare a suggerire miglioramenti o inviare pull request su GitHub.

Se desideri mostrare il tuo supporto al progetto, sei il benvenuto a fare una donazione o sponsorizzare il progetto tramite GitHub Sponsors.

Licenza

Questo progetto è fornito secondo i termini della licenza zlib/png.

Scarica lo strumento
ScorciatoiaDescrizioneValore
?llettere minuscoleabcdefghijklmnopqrstuvwxyz
?ulettere maiuscoleABCDEFGHIJKLMNOPQRSTUVWXYZ
?dcifre decimali0123456789
?scaratteri speciali !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?acaratteri alfanumericicome ?l?u?d
?pcaratteri ASCII stampabilicome ?l?u?d?s
?btutti i byte0x00 .. 0xff