Recuperarea unei parole TrueCrypt

Introducere
TrueCrypt e un software open-source pentru encriptarea datelor de pe diskuri, folosit pe mai multe platforme (Windows, Mac , Linux).
Eu il folosesc pentru a imi encripta proiectele pe volume mici de fisiere.

Din pacte, mai de mult am pierdut una dintre parolele mele din truecrypt care era formata din 20 de caractere Alpha + numerice + caractere speciale.
Stiam aproximativ care erau caracterele din parola si ordinea lor, dar nu eram sigur in legatura cu 8 dintre ele, ceea ce reprezenta o multime de posibilitati.
Dupa ce am incercat cateva combinatii devenise destul de enervant, deci am inceput sa caut un cracker pentru parole truecrypt dar nu am reusit sa gasesc unul care sa functioneze.
Atata timp cat nu voiam sa incep un bruteforce pentru o parola lunga de 20 de caractere, am decis sa scriu un mic script in ptyhon, nimic interesant.

Asadar, in tutorialul de azi am sa va explicat cum sa recuperati o parola TrueCrypt printr-un attack mask prin itertools din python.

Pregatiri

In primul rand, voiam sa aflu daca functioneaza in command line, raspunsul fiind "da", toate informatiile necesare le-am gasit aici.

Comanda folosita pentru a deschide un volum truecrypt este:

Code:
TrueCrypt.exe /v cryptedvolume /lx /a /p rstcenter /e /b /s /q
Aceasta comanda incearca sa decripteze si monteze volumul numit cryptedvolume in virtual drive-ul X:\ cu parola rstcenter.
Daca reuseste, va deschide driveul in explorer. Argumentele \s si \q sunt necesare pentru a scapa de casetele de confirmare si pentru a iesi din procesul truecrypt .

Coding

Acum trebuie sa cream snippetul de atac. Am decis sa folosesc python pentru ca e un limbaj usor de folosit in astfel de cazuri.

Code:
import os, sys, itertools 

expression = [['C0unt3r'], ['lo', 'l0','Lo', 'L0'], ['g1c', 'gic']]

# Demontare X:
os.system("\"C:\\Program Files\\TrueCrypt\\TrueCrypt.exe\" /lx /d /s /q");

# Incercarea de combinatii
for x in itertools.product(*expression):
    os.system("\"C:\\Program Files\\TrueCrypt\\TrueCrypt.exe\" /v C:\\Users\\c0unt3rlog1c\\crypted_volume /lx /a /p " + ''.join(x)  + " /e /b /s /q");
    if os.path.exists("x:\\"):
        print  'Password Found : '+ ''.join(x)
        sys.exit(0)
In exemplul de mai sus, el va incerca urmatoarele combinatii:

C0unt3rlog1c
C0unt3rlogic
C0unt3rl0g1c
C0unt3rl0gic
C0unt3rLog1c
C0unt3rLogic
C0unt3rL0g1c
C0unt3rL0gic
Viteza generala este de 8-9 parole pe secunda, ceea ce e destul de incet in cazul unor parole lungi.
Multumesc pentru ca ati citit.

Niciun comentariu: