PDA

Visualizza la versione completa : [C] Estrarre RAR criptato da password con funzioni in C


Anaconda25
21-02-2014, 19:40
Salve ragazzi,
ho un problema: sto scrivendo un programma in C per poter scoprire la password che ho smarrito di un mio vecchio archivio .rar.
Premesso che l'algoritmo che scansioni password per password, carattere per carattere, l'ho già scritto e funziona, vorrei sapere se qualcuno ha mai avuto a che fare con il formato RAR.
Ho trovato un sito: http://www.winrar.it/prelievo.php#programmatori dal quale nella sezione Sorgenti/librerie per i programmatori alla voce DLL, 32 e 64 bit, con funzioni di elenco ed estrazione per archivi in formato RAR. Con esempi per molti linguaggi - vers. 5.01 ho prelevato del materiale che mi spiega in Inglese come utilizzare l'estrazione di file .rar ma nulla sulla verifica di password dell'archivio.
Se qualcuno ha del materiale migliore (possibilmente in ita) oppure trova nel link che ho citato qualcosa che possa fare al caso mio, può aiutarmi?? :stordita:

Grazie.

oregon
21-02-2014, 22:47
Insomma, in poche parole vuoi craccare il rar ...

Se la password è abbastanza complessa, rischi di impiegare un bel po' dei tuoi anni ...

Comunque, se non mi sbaglio, la password la puoi passare all'eseguibile sulla linea di comando

Anaconda25
22-02-2014, 02:32
Sì, è possibile estrarre il contenuto passando la password da linea di comando col codice
system("start winrar e [...] "); però da quello che sto notando diventa veramente lento perché chiede ogni volta di estrarre un file e il più delle volte non riesce ad estrarlo per la password errata perciò appare il messaggio d'errore...
L'unico modo per fare qualcosa di efficiente è leggersi quel datasheet che ho postato sopra e cercare di capire qualcosa.
Comunque una lista di comandi con spiegazioni in italiano la metto qua sotto per chiunque fosse interessato:



RAR 4.20 Copyright (c) 1993-2012 Alexander Roshal 9 Giu 2012
Traduzione in italiano (c) Andrea Baitelli
Registrato a: XXXXX

Sintassi: RAR <comando> -<opzione_1> -<opzione_N> <archivio> <file...>
<@lista_file...> <percorso_dove_estrarre\>

<Comandi>
a Aggiungi file all'archivio
c Aggiungi il commento all'archivio
cf Aggiungi i commenti ai file
ch Modifica alcune caratteristiche dell'archivio
cw Scrivi il commento dell'archivio in un file
d Elimina file dall'archivio
e Estrai tutti i file dell'archivio nella cartella corrente
f Aggiorna i file dell'archivio
i[par]=<fras> Trova una frase in uno o più archivi
k Blocca l'archivio da modifiche seguenti
l[t,b] Lista contenuto dell'archivio [formato: T=tecnico, B=solo nome]
m[f] Muovi file e/o cartelle nell'archivio [solo i file]
p Stampa il/i file (verso stdout, solitamente la stampante)
r Ripara l'archivio da eventuali danneggiamenti
rc Ricostruisci i volumi mancanti
rn Rinomina i file presenti nell'archivio
rr[N] Aggiungi i dati per facilitare un eventuale recupero seguente
rv[N] Crea i volumi di ripristino
s[nome|-] Converti l'archivio in auto-estraente
t Verifica i file archiviati
u Aggiorna e aggiungi file all'archivio
v[t,b] Lista contenuto dell'archivio estesa [T=tecnico, B=solo nome]
x Estrai i file dell'archivio comprendenti il percorso archiv.

<Opzioni>
- Interrompi la scansione delle opzioni
@[+] Disabilita [abilita] l'impiego di file di tipo lista_file
ac Cancella l'attributo "Modificato" dopo compressione o estraz.
ad Appende il nome dell'archivio al percorso di destinazione
ag[formato] Genera il nome dell'archivio utilizzando la data corrente
ai Ignora gli attributi dei file archiviati
ao Aggiungi solo i file con l'attributo "Modificato" attivo
ap<percorso> Imposta il percorso all'interno dell'archivio
as Sincronizza il contenuto dell'archivio con l'origine
av Inserisce i dati per la verifica dell'autenticazione (regist.)
av- Disabilita il controllo dei dati di autenticazione
c- Disabilita la visualizzazione del commento
cfg- Disabilita la lettura della configurazione predefinita
cl Converti i nomi di file e cartelle in minuscolo
cu Converti i nomi di file e cartelle in maiuscolo
df Elimina i file dopo essere stati archiviati
dh Apre i file già in uso da altri programmi
dr Elimina i file e li pone nel Cestino di Windows
ds Non ordina i file da inserire in un archivio solido
dw Pulisci lo spazio file dopo l'archiviazione
e[+]<attrib> Non archiviare/archiviare file con uno specifico attributo
ed Non aggiungere le cartelle se sono vuote
en Non aggiunge l'indicazione di 'fine archivio'
ep Escludi i percorsi originali dai nomi dei file e cartelle
ep1 Escludi la cartella base dai nomi dei file e cartelle
ep2 Archivia il percorso completo
ep3 Archivia il percorso, completo della lettera del disco
f Aggiorna i file dell'archivio
hp[par.chiav] Crittografa sia i dati che l'intestazione dell'archivio
id[c,d,p,q] Disabilita la visualizzazione di alcuni o tutti (q) i messaggi
ieml[i1[,i2]] Invia l'archivio via email ad uno o più indirizzi
ierr Invia i messaggi al dispositivo "StdErr"
ilog[nome] Tieni traccia degli errori in un file (solo vers. registrata)
inul Disabilita la visualizzazione di tutti i messaggi
ioff Spegne il PC al termine dell'operazione che va ad iniziare
isnd Abilita i suoni
k Blocca l'archivio da modifiche seguenti
kb Estrai anche i file danneggiati
log[f][=nome] Scrive i nomi dei file processati in un file di tracciato
m<0..5> Livello di compressione (0-memorizza...3-predefin...5-massimo)
mc<par> Abilita i parametri di compressione avanzati
md<dimens.> Dimens. dizionario compres.:64,128,256,512,1024,2048,4096 o A-G
ms[est;est] Specifica le estensioni dei file da inserire senza compressione
mt<processi> Imposta il numero dei processi (threads)
n<file> Include solo i file specificati
n@ Acquisisci i file da includere da tastiera (o StdIn)
n@<lista> Includi i file specificati in una lista a file
o[+|-] Imposta modalità di sovrascrittura [NonChied.|NonSovvr.|Chiedi]
oc Imposta l'attributo 'Compresso' di NTFS, se presente
or Rinomina i file estratti automaticamente
os Salva gli attributi estesi di un file sotto NTFS
ow Salva/ripristina i dati di "proprietario" e di "gruppo"
p[par.chiave] Imposta la parola chiave
p- Non chiedere la parola chiave
r Considera anche le sottocartelle
r- Disabilita la ricorsività delle sotto-cartelle
r0 Considera le sottocartelle solo per nomi con caratteri jolly
ri<P>[:<S>] Priorità esec.(0-predef.,1-min..15-mas) e tempo d'attesa (msec)
rr[N] Aggiungi i dati per facilitare un eventuale recupero seguente
rv[N] Crea i volumi di ripristino
s[<N>,v[-],e] Crea archivio in formato solido(N file,di/indipendenti,estens.)
s- Disabilita l'archiviazione in formato solido
sc<car>[<og>] Specifica il set di caratteri e a quali oggetti applicarli
sfx[nome] Crea un archivio auto-estraente [nome modulo]
si[nome] Preleva i dati d'archiviare da 'stdin',eventualmente in [nome]
sl<dimens.> Processa i file con dimensione minore a quella indicata
sm<dimens.> Processa i file con dimensione maggiore a quella indicata
t Verifica i file dopo l'archiviazione
ta<data> Considera file modificati dopo la <data>,formato AAAAMMGGOOMMSS
tb<data> Considera file modificati prima di <data>,form. AAAAMMGGOOMMSS
tk Tieni come orario quello dell'archivio originale
tl Orario dell'archivio come quell'ultimo file
tn<tempo> Considera i file più recenti del <tempo> specificato
to<tempo> Considera i file più vecchi del <tempo> specificato
ts<m,c,a>[N] Salva/ripristina orari file:Modifica,Creazione,Accesso[precis.]
u Aggiorna e aggiungi file dell'archivio
v Crea un archivio a più volumi autodeterminando la dimensione
v<dimen>[k,b] Crea un archivio a più volumi con dimensione= *1000 [*1024, *1]
vd Cancella il contenuto del disco prima di creare il volume
ver[n] Controllo per la versione dei file
vn Usa il vecchio schema dei nomi per i volumi
vp Introduce una pausa prima di ogni volume seguente
w<percorso> Definisci la cartella di lavoro per i file temporanei
x<file> Escludi i file di seguito specificati
x@ Acquisisci i file da escludere da tastiera (o StdIn)
x@<lista> Escludi i file specificati in una lista a file
y Assumi la risposta 'Si' a tutte le domande
z[<file>] Legge il commento dell'archivio da file

oregon
22-02-2014, 10:37
Più che altro, dovresti scaricare e studiare l'uso della DLL (in fondo alla pagina, UnRar.dll) che consente al programmatore di gestire il rar.

Anaconda25
22-02-2014, 12:08
Ok grazie, adesso provvedo :)

giannino1995
22-02-2014, 17:06
Interessante discussione. Per estrarre un .rar con una password di questo tipo "dgJGH768/(/&%}{[ĸłł²ø" con un pc normale con una buona cpu multicore quanto tempo ci vuole?

oregon
22-02-2014, 19:10
Troppo tempo ... lascia perdere.

Anaconda25
22-02-2014, 20:55
Lo so ma almeno ci provo... sto progettando questo programmino per vedere se
1.Riesco a risolvere questo problema;
2.Posso finalmente smetterla di scaricare inutili programmi fake che promettono di cercare la password e invece sono solo virus.
Per ora la ricerca la faccio su 62 caratteri (26 lettere minuscole,26 maiuscole e 10 numeri) poi magari la si può estendere su quei caratteri strani...

oregon
22-02-2014, 21:28
Con 62 caratteri e 8 caratteri per password avresti 62^8 combinazioni, provandone anche 100 al secondo avresti bisogno di circa 69000 anni ! (SE&O)

E ovviamente è illegale ... ma ho chiuso un occhio (tutti e due) dato che è assurdo provarci con un brute force.

giannino1995
22-02-2014, 21:52
oregon chiudendo il 3° occhio e senza andare oltre, esistono dei programmi che consentono di leggere archivi rar protetti da password?

Loading