J'ai eu récemment à retrouver un mot de passe sur un fichier DOC et un fichier XLS (deux formats propriétaires créés par Microsoft). Il s'agissait d'un mot de passe bloquant l'ouverture des fichiers, stocké dans une méthode basique, le XOR (l'algo est légèrement différent pour les deux formats).
Visiblement lorsque l'on cherche un peu des logiciels pour faire le boulot, on ne trouve pas de logiciel libre (genre John the Ripper ou autres), uniquement des logiciels propriétaires (et pour Windows).
Après avoir lu le support de présentation d'Éric Filiol de Pacsec 2009, jeté un coup d'oeil rapide aux (milliers de pages de) spécifications et retrouvé l'algo en question dans OpenOffice.org/LibreOffice (forcément faut bien qu'ils les ouvrent lui aussi), j'ai commis un petit programme pour vérifier un mot de passe (ou en tester plein si on est motivé).
Le tout est disponible sour licence LGPLv3 (histoire de garder la même licence que les 2 fichiers OpenOffice.org utilisés). Cf http://oumph.free.fr/textes/xor_me-0.1.tar.gz
Voilà, ça n'a pas un intérêt fabuleux en soi, mais bon c'était amusant à faire. Et ça ne fait que ça : du XOR, sur du DOC ou du XLS.
Le résultat :
On récupère un couple clé/hash pour un fichier doc donné.
$ ./xor_doc some.doc
Could be a XOR-ciphered doc file.
nKey d10d
nHash cc1f
On essaie un mot de passe au pif.
$ ./xor_me toto 0xd10d 0Xcc1f
Algorithm XOR MS Word
Key: d10d
Hash: cc1f
FAIL! toto
On essaie le bon mot de passe.
$ ./xor_me 0824 0xd10d 0Xcc1f
Algorithm XOR MS Word
Key: d10d
Hash: cc1f
Good guess: 0824
Même chose sur un XLS :
$ ./xor_xls some.xls
Bored by reading the specs... Just pick up a XOR encryption pattern
Record type FilePass with 2F 00.
followed by 00 06 for size.
followed by 00 00 for wEncryptionType XOR.
followed by what you want: 2 bytes for key, 2 bytes for hash.
WARNING: little endian, you should permute bytes
00000210 06 03 00 00 86 00 00 00 2f 00 06 00 00 00 9a 49 |......../......I|
00000220 61 cc e1 00 02 00 b0 04 c1 00 02 00 ca a4 e2 00 |a...............|
Un mot de passe au pif :
$ ./xor_me 4242 0x499a 0Xcc61 1
Algorithm XOR MS Excel
Key: 499a
Hash: cc61
FAIL! 4242
Le bon mot de passe :
$ ./xor_me 1950 0x499a 0Xcc61 1
Algorithm XOR MS Excel
Key: 499a
Hash: cc61
Good guess: 1950
Comme on dit, « XOR Ne crains rien, il nous protégera ».
# Joli travail !
Posté par Zylabon . Évalué à 6.
Et chouette initiative, j’espère que ta page sera bien référencée dans les moteurs de recherches que ton code puisse servir un maximum de personnes.
Please do not feed the trolls
[^] # Re: Joli travail !
Posté par Grunt . Évalué à 10.
Pour ça faudrait l'aider..
Logiciel cracker mot de passe fichier Excel fichier Word Linux gratuit libre open source
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
[^] # Re: Joli travail !
Posté par Axone . Évalué à 10.
tu as oublié "porn"
[^] # Re: Joli travail !
Posté par ᴼ ᴹᴬᴺᴺ . Évalué à 5.
https://encrypted.google.com/webhp?hl=fr#hl=fr&q=Logiciel+cracker+mot+de+passe+fichier+Word+Linux+gratuit
:)
207829⁶+118453⁶=193896⁶+38790⁶+14308⁶+99043⁶+175539⁶
# ...
Posté par M . Évalué à -6.
arf c'est du c++ tout moche.
Sinon le commentaire dans le code a l'air de dire que c'est que pour les vielles version de Word : jusqu'a 95.
[^] # Re: ...
Posté par snt . Évalué à 9.
Tu peux le faire en ruby si tu veux. Tu testeras 100x moins de cas par secondes, mais si ça t'amuses..
[^] # Re: ...
Posté par BFG . Évalué à 3.
Il existe des moyens intermédiaires, par exemple en Python, il y a Cython, Pyrex, Psyco.
# Utilisation éthique, bien entendu
Posté par Maclag . Évalué à 10.
Il est rappelé que ce type d'application n'a que deux applications possibles:
- vérifier que son mot de passe est difficile à trouver
- retrouver un mot de passe perdu
Il va de soi que comme l'écrasante majorité des utilisateurs de ce logiciel, vous vous engagez à ne pas tenter de trouver le mot de passe d'un fichier auquel vous n'êtes pas censé avoir accès.
[^] # Re: Utilisation éthique, bien entendu
Posté par lolop (site web personnel) . Évalué à 5.
De toutes façons, l'auteur a en plus pensé a ajouter de gros rectangles noirs graphiques par dessus les parties de texte auxquelles on ne doit pas avoir accès. Donc c'est sécurisé, pas de risque de fuite d'info confidentiemlle.
:-)
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Utilisation éthique, bien entendu
Posté par 2PetitsVerres . Évalué à 7.
Si quelqu'un ne veut pas que j'accède à ses documents, il n'a qu'à prendre des mesures efficaces pour ça. Et non, mettre à la fin d'un email qu'il faut le détruire si je n'en suis pas le destinataire n'est pas une mesure efficace (par exemple).
Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.
[^] # Re: Utilisation éthique, bien entendu
Posté par Maclag . Évalué à 5.
Ah ça c'est ce que j'ai toujours aimé sur ces protections légales "corporate":
Mettre un message à la fin pour dire que si t'es pas le destinataire prévu, faut pas garder le mail sinon poursuites légales et tout ça.
Pourquoi ne pas le mettre carrément au début du mail et demander de ne pas lire au-delà de la certitude que le mail ne vous est pas destiné?
On sait bien que le mail sera sûrement lu quand même, mais on n'est plus vraiment à ça près...
# C'est beau le libre
Posté par Benoît Sibaud (site web personnel) . Évalué à 5.
NoNo en a déjà fait une version améliorée. Cf https://github.com/nono/xor_me (notamment des optimisations et le brute-force jusqu'à 5 caractères).
[^] # Re: C'est beau le libre
Posté par Bruno Michel (site web personnel) . Évalué à 2.
Le brute force fonctionne jusqu'à 8 caractères si on est patient.
En pratique, avec la dernière version, on met moins d'une seconde pour un mot de passe de 5 caractères, et quelques secondes à quelques dizaines de secondes pour un de 6 caractères. Pour 7, j'imagine que ça doit se compter en heures, et pour 8, en jours.
[^] # Re: C'est beau le libre
Posté par BFG . Évalué à 2.
Ça peut se paralléliser. La façon la plus simpliste (pour rester dans la veine "simple" du reste du code), est de laisser l'utilisateur lancer lui même autant de processus "brute_force" que de processeurs, en passant à l'exécutable un paramètre qui subdivisera l'intervalle de la boucle "o".
# Méthode détournée
Posté par Kerro . Évalué à 4.
J'ai eu à utiliser il y a peu un logiciel pour trouver le mot de passe de fichiers Microsoft Word. Une personne ayant quitté l'entreprise en mauvais termes ne voulait pas donner le mot de passe.
Option 1: démarches administratives, plainte, etc
Option 2: me téléphoner
Ca m'a pris moins de 10 minutes car je connais un logiciel pas trop crade pour faire ça.
Ce logiciel permet de trouver les mots de passe. C'est infaisable si le mot de passe est long.
Il permet également de carrément supprimer la protection de manière instantanée. Ca ne t'indique pas le mot de passe, mais ton fichier devient lisible sans problème.
J'en conclu que le mot de passe ne sert pas à chiffrer le document, ni à chiffre une éventuelle zone permettant de lire le document (donc c'est nul, on avait compris).
C'est méga-rapide. Pour le moment aucun fichier n'a résisté.
[^] # Re: Méthode détournée
Posté par thamieu . Évalué à 2.
Et Patrick se rendit compte que le support de présentation d'Éric Filiol de Pacsec 2009, le coup d'oeil rapide aux (milliers de pages de) spécifications, la trouvaille de l'algo en question dans OpenOffice.org/LibreOffice et le petit programme pour vérifier un mot de passe, tout ça, c'était pour (presque) rien.
Échec !
[^] # Re: Méthode détournée
Posté par Kerro . Évalué à 3.
Certains ont trouvé une astuce pour faire sauter le mot de passe de manière instantanée, ils font payer pour ça. Les libristes n'ont pas encore trouvé (l'intérêt est limité si ce n'est pas pour vendre le logiciel).
Je ne vois pas où est ton problème.
[^] # Re: Méthode détournée
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Déjà ici on teste un mot de passe ou on bruteforce. Y a d'autres méthodes plus subtiles genre cryptanalyse XOR (soyons clair, c'est très faible du XOR avec un mot de passe de quelques caractères sur du texte répétitif, d'ailleurs c'est ce que dit le document cité en référence de É. Filiol http://www.esiea-recherche.eu/data/filiol_pacsec.pdf ). Mais bon pour trouver des mots de passe à 4 chiffres, autant faire simple, là aussi c'est instantané...
J'ai cru voir que certains des logiciels propriétaires vendus vont juste envoyer à un serveur le hash et récupérer des mots de passe possibles précalculés.
Enfin le plus important à mon avis c'est que ça existe en libre et que ça ait été fun... D'une part je me fiche un peu du concours de la plus longue avec un logiciel proprio qui ne tourne pas sur ma machine, et d'autre part j'aurais pu arrêter immédiatement après avoir trouver les mots de passe sans chercher à mettre plus au propre le bout de code.
[^] # Re: Méthode détournée
Posté par Benoît Sibaud (site web personnel) . Évalué à 2.
Il y a plusieurs algo de toute façon (du XOR, du RC4, de l'AES, etc.), plusieurs façons de les utiliser, etc.
# Un bug
Posté par ʭ ☯ . Évalué à 2.
Dans un Excel que j'ai, il trouve pas la zone du mot de passe avec hexdump. Comme quoi, ça peut servir de lire les specs ;-)
⚓ À g'Auch TOUTE! http://afdgauch.online.fr
[^] # Re: Un bug
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Je dirais deux possibilités :
ou
[^] # Re: Un bug
Posté par ʭ ☯ . Évalué à 2.
1: c'est du XLS sur Office XP, par exemple la commande file me dit
2: J'ai cherché, et même coupé sur deux lignes, pas de "2f 00 06".
⚓ À g'Auch TOUTE! http://afdgauch.online.fr
[^] # Re: Un bug
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
En cherchant "00 2f 00" (au pire "00 2f"...) tu devrais trouver la zone FilePass. Si elle n'est pas suivi par "06 00 00" ("00 06 00 00") ce n'est pas du XOR. Tu n'as plus qu'à lire la spéc sur FilePass :).
[^] # Re: Un bug
Posté par ʭ ☯ . Évalué à 2.
Ok, ce n'est donc pas du X-Or, tant que Ooo sait l'ouvrir avec le mot de passe .... je m'en contenterai.
⚓ À g'Auch TOUTE! http://afdgauch.online.fr
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.