IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

decrypter de la data avec openssl sans connaitre le cypher


Sujet :

Sécurité

  1. #1
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut decrypter de la data avec openssl sans connaitre le cypher
    voilà

    j'ai un fichier dans un format binaire générée par une application X. ce fichier contient plusieurs informations. Qd on ouvre le fichier au notepad, la plupart des infos sont en clair, mais on voit bien que certains passages sont encodés ou plus vraisemblablement cryptés.

    Or la personne qui m'a filé ce fichier (c'est un backup en fait) m'a dit que l'application qui a généré ce backup lui a demandé un mot de passe avant de créer le fichier.

    or son application au moment de restaurer ce fichier de backup lui demande le mot de passe en question. si le mot de passe n'est pas bon, l'appli ne restaure pas le backup.

    mon intuition est que l'appli a encrypté un valeur précise attendue dans le fichier de backup, elle cherche à décrypter le contenu, si elle retrouve la valeur précise attendue dans la data décryptée, alors elle considère que c'est bon et restore au passage tout le backup ainsi decrypté.

    j'ai le mot de passe (12345), j'ai la data, j'ai une idée du format de sortie décryptée ==> à tous les coups il y a de l'ascii dedans, et je suis meme assez sur que "Raj" devrait se trouver dans le resultat decrypté (c'est un prenom)...

    il reste à trouver l'algo d'encryption et l'algo de rérivation de clé à partir du password.

    je me dis que ca doit pouvoir s'imaginer de tenter tous les cypher de openssl avec le fichier et le password, voir si derrière on voit de l'ascii sortir ou pas. N'étant pas tres à l'aise avec sed, j'ai fait un petit script ruby qui filtre stdin pour m'attraper ce qui ressemble à un mot ([A-Za-z]+).

    au final ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    openssl.exe enc -d -aes-128-cbc      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-128-cfb8     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-192-cbc      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-192-cfb8     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-256-cbc      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-256-cfb8     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes128           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -bf               -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -bf-ecb           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -cast             -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -cast5-cfb        -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des              -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-cfb1         -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede-ofb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede3-cfb     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede3-ofb     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -desx             -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc2-40-cbc       -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc2-cfb          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc4              -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-128-cfb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-128-ecb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-192-cfb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-192-ecb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-256-cfb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-256-ecb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes192           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -bf-cbc           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -bf-ofb           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -cast-cbc         -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -cast5-ecb        -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-cbc          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-cfb8         -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede-cbc      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede3         -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede3-cfb1    -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ofb          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -desx-cbc         -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc2-64-cbc       -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc2-ecb          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc4-40           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-128-cfb1     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-128-ofb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-192-cfb1     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-192-ofb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-256-cfb1     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes-256-ofb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -aes256           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -bf-cfb           -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -blowfish         -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -cast5-cbc        -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -cast5-ofb        -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-cfb          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ecb          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede-cfb      -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede3-cbc     -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des-ede3-cfb8    -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -des3             -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc2              -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc2-cbc          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    openssl.exe enc -d -rc2-ofb          -in decodeme.crypt -pass pass:13245 -nosalt   | ./countWord.rb
    j'ai essayé avec tous les cyphers par défaut, mais plusieurs points me laissent supposer que le programmeur a probablement utilisé des3 ou AES.

    je précise que j'ai essayé avec et sans salt au cas où.
    mais bon je n'ai que du bruit avec cette approche, ca ne suffit pas.

    y'a-t'il un moyen d'utiliser le parametre -pass autrement (pour lui mettre un autre algo de dérivation de clé à partir du pass peut-etre) ?

    qqn a une idée là dessus ?


  2. #2
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    nb: ah oui...

    je le vois venir d'ici donc je préfère préciser.

    j'ai toute confiance dans la personne qui m'a donné ce fichier, la data lui appartient bien (ie le fichier n'est pas volé). c'est juste que l'éditeur de l'appli n'est pas tres rapide ni cooperatif sur ses formats/techniques d'encryption.

    et on a vérifié dans les détails de sa licence logicielle, l'editeur de l'appli n'a pas laissé de mention où le reverse engineer de son format de backup etait une violation de la licence.

    ahh le vendor lockin...

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/03/2013, 12h26
  2. Réponses: 3
    Dernier message: 02/05/2010, 11h32
  3. [Débutant] Plot/Extraction data avec condition sur texte sans boucle
    Par hervé_débutant dans le forum MATLAB
    Réponses: 3
    Dernier message: 02/12/2009, 16h22
  4. Réponses: 1
    Dernier message: 05/09/2007, 13h54
  5. Lister le contenu d'une table sans connaitre ses champs
    Par Google.be dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 30/03/2004, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo