Sam & Max » password http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Solution de l’exercice d’hier sur shadow 9 http://sametmax.com/solution-de-lexercice-dhier-sur-shadow/ http://sametmax.com/solution-de-lexercice-dhier-sur-shadow/#comments Wed, 29 Jan 2014 15:25:53 +0000 http://sametmax.com/?p=8917 Ça va de soit, mais ça va mieux en le disant, ceci n’est pas la solution unique de l’exercice d’hier, mais une solution possible parmi d’autres.

On note l’usage de crypt, qui évite de se faire chier à trouver le bon algo de hashing et gère le salt automatiquement. spwd, c’est vraiment pour le grosses larves comme moi qui veulent même pas faire un split.

Et c’est du Python 3, yo dog !

import io
import os
import crypt
import spwd
 
from urllib.request import FancyURLopener
from zipfile import ZipFile
 
PASSWORDS_SOURCE = "http://xato.net/files/10k%20most%20common.zip"
PASSWORDS_LIST = '10k most common.txt'
 
# Le fichier ZIP est derrière cloudflare, qui vous ferme la porte au nez si
# vous n'avez pas de User-Agent. On va donc créer un UrlOpener, un objet qui
# ouvre des ressources en utilisant leurs URLs, qui a un User-Agent 'TA MERE'.
# CloudFlare ne check pas que le UA est valide.
class FFOpener(FancyURLopener):
   version = 'TA MERE'
 
# Si le dictionnaire de passwords n'est pas là, on le télécharge
# via FFOpener().open(PASSWORDS_SOURCE).read(). C'est verbeux, c'est urllib.
# Normalement je ferais ça avec requests. Ensuite on lui donne une interface
# file-like object avec io.BytesIO pour que ZipFile puisse le traiter en mémoire
# sans avoir à le sauvegarder dans un vrai fichier sur le disque, et on
# extrait le ZIP.
if not os.path.isfile(PASSWORDS_LIST):
    ZipFile(io.BytesIO(FFOpener().open(PASSWORDS_SOURCE).read())).extractall()
 
# On extrait les mots de passe de la liste sous forme de tuple car c'est rapide
# à lire. Un petit rstrip vire les sauts de ligne.
passwords = tuple(l.rstrip() for l in open(PASSWORDS_LIST))
 
# spwd.getspall() nous évite de parser le fichier shadow à la main.
for entry in spwd.getspall():
    print('Processing password for user "%s": ' % entry.sp_nam, end='')
 
    # Pas de hash ? On gagne du temps avec 'continue'
    if not '$' in entry.sp_pwd:
        print('no password hash to process.')
        continue
 
    # On teste chaque password avec la fonction crypt, qui accepte en deuxième
    # paramètre le hash du mot de passe complet. Pas besoin de se faire chier
    # à le spliter, il va analyser les '$' et se démerder avec ça. On a juste
    # à comparer le résultat avec le hash d'origine.
    for pwd in passwords:
        if crypt.crypt(pwd, entry.sp_pwd) == entry.sp_pwd:
            print('password is "%s".' % pwd)
            # On break pour gagner quelques tours de boucles, et pouvoir
            # utiliser la condition 'else'.
            break
    else:
        print('fail to break password.')

Télécharger le code.

]]>
http://sametmax.com/solution-de-lexercice-dhier-sur-shadow/feed/ 9
C’est l’heure de faire de l’exercice 28 http://sametmax.com/cest-lheure-de-faire-de-lexercice/ http://sametmax.com/cest-lheure-de-faire-de-lexercice/#comments Tue, 28 Jan 2014 16:19:48 +0000 http://sametmax.com/?p=8910 Le dernier exercice avait bien été apprécié, alors je remet ça.

Consigne :


Créer un script de brute force de passwords Unix par dictionnaire.

Puisqu’on est pas non plus des Kevin Mitnick en puissance, on va supposer que vous êtes connectés sur la machine, que vous avez les droits root dessus et que vous avez localisé les mots de passe comme étant dans “/etc/shadow”.

Votre script va vérifier si il possède un dictionnaire de mots de passe. Si ce n’est pas le cas, il va télécharger celui-ci et le décompresser : http://xato.net/files/10k%20most%20common.zip.

Ensuite vous parcourez le fichier shadow, et vous essayez de trouver quel mot de passe se cache derrière chaque hash. Si il n’y a pas de hash, vous pouvez ignorer l’utilisateur.

Exemple de sortie:

Processing password for user "root": no password hash to process.
Processing password for user "daemon": no password hash to process.
Processing password for user "bin": no password hash to process.
Processing password for user "sys": no password hash to process.
Processing password for user "www-data": no password hash to process.
Processing password for user "sam": fail to break password.
Processing password for user "test": password is "cheese".
Processing password for user "messagebus": no password hash to process.
Processing password for user "avahi-autoipd": no password hash to process.
Processing password for user "avahi": no password hash to process.
...

Afin de simplifier l’exercice, il n’est pas demandé de gestion d’erreur ou de passage en a paramètre du script.

Comme d’habitude, il n’y a pas de solution ultimate de la mort qui tue, c’est juste pour le fun.

La soluce demain.

]]>
http://sametmax.com/cest-lheure-de-faire-de-lexercice/feed/ 28
Éviter d’avoir la queue à l’air en publique avec TrueCrypt 8 http://sametmax.com/eviter-davoir-la-queue-a-lair-en-publique-avec-truecrypt/ http://sametmax.com/eviter-davoir-la-queue-a-lair-en-publique-avec-truecrypt/#comments Thu, 28 Jun 2012 11:26:38 +0000 http://sametmax.com/?p=1001 On cite toujours des raisons sécuritaires pour justifier l’usage de la cryptographie, mais comme vous n’êtes pas un espion, il est peu probable que vous vous sentiez concernés. Je vais vous en donner une bonne raison de chiffrer certains dossiers sur votre disque dur: pour ne pas vous retrouver à oualpé devant des inconnus.

Attaché à un lit

Sortir avec une vraie cochonne ne veut pas dire qu’elle va faire tout le boulot. Or Max et moi sommes tout à fait ouvert à l’expérimentation, même si ce n’est probablement pas pour les mêmes choses. Ainsi je me suis un jour retrouvé menotté à un lit avec divers accessoires et résidus de nourritures sur des parties variées de mon anatomie, quand quelque chose s’est mal passé.

Avec le recul, c’était marrant. D’ailleurs, la miss qui avait les clés a trouvé ça tellement poilant qu’elle a pensé à prendre une photo AVANT de me détacher. J’ai voulu une copie du cliché, parce qu’il y a des performances qui méritent un souvenir, et le transfert a eu lieu par clé USB.

Quand la dite clé a été utilisée par la demoiselle pour faire passer un Power Point à un collègue de travail, elle a pu comprendre toute l’utilité des thumbnails de preview automatique des fichiers JPEG sur les OS récents.

Les olympiades de la salle de bains

Dans un de mes appartements précédents, j’avais une salle de bain avec un petit muret et un grand miroir. On pouvait y faire toute sorte de choses à deux, que j’ai pris en photos avec mon portable pour faire passer les moments de solitude pendant les voyages.

J’ai supprimé les clichés du téléphone pour les mettre sur mon ordinateur. Machine que j’ai perdu lors d’un voyage. Je me demande encore aujourd’hui si celui qui a trouvé mon sac a reformaté la machine. A-t-il la main sur les photos de mes acrobaties en tandem ? Les a-t-il mis en ligne ?

Truecrypt, la fin du voyeurisme inopiné…

Honnêtement, je ne suis pas très pudique, sinon je n’écrirais pas ce blog. Sauf que non seulement ce genre de situation est dangereux pour sa propre crédibilité, mais en plus je ne suis pas seul sur ces images. Et généralement, la gente féminine accepte beaucoup moins bien ce genre de pub.

Truecrypt est un logiciel libre qui fonctionne sous Windows, Mac et Linux. Il permet de créer un fichier de taille personnalisable (plusieurs Go si besoin) chiffré, qui peut être monté comme une partition. Sans le mot de passe, le fichier ressemble à une soupe de bits (sans jeu de mot). Une fois monté avec le mot de passe, il devient une partition ordinaire, et on peut l’utiliser comme telle de manière parfaitement transparente: créer des dossiers et des fichiers, copier, coller, etc.

Inutile de dire que je met maintenant systématiquement tout matériel d’ordre intime sur cette partition. En cas de fuite, je sais qu’une personne non autorisée aura bien du mal à lire son contenu. Cela ne me dispense pas de faire la chasse aux restes sur les supports amovibles, et ça ne me libère pas de l’idée que les copies en la possession de mes ex partenaires ne sont pas aussi bien protégées. Mais c’est un bon début.

… et le début du multimédia vraiment privé

Voilà un vrai argument pour l’usage de TrueCrypt: pas l’attaque des chinois du FBI ou votre soudaine reconversion en terroriste suicidaire, mais l’existence même du cul.

Car on peut faire bien plus que ça: copiez par exemple le dossier .mozilla, .thunderbird et .purple sur la partition puis faites un lien dans le dossier utilisateur. Et hop, voilà votre historique de navigateur, vos fichiers mails et vos traces de chats chiffrés. Votre historique qui contient des URL de sites douteux, vos alertes mails de “Adopte un mec” non désactivées alors que vous êtes en couple depuis 6 mois et les archives de la création de nouveaux smileys hyper novateurs avec votre maîtresse sur Gtalk: ils sont maintenant protégés. Si en plus vous utilisez OTR et GPG, vous gagnez 2 de TAC0 en back stab.

Et le double effet kisscool, c’est que faire un backup de toutes ces données précieuses ne prend qu’un copier/coller du fichier TrueCrypt (vous faites des sauvegardes, hein ?). Backup qui par nature est lui aussi protégé. Tous ces bénefs sans ralentir votre ordinateur, puisque seules des données très précises sont chiffrées, pas toute votre partition utilisateur (ce qui en plus est le plus sur moyen de tout perdre si votre ordi grille). Bon ok, peut être que l’affichage du browser en cas d’usage du cache prend 0.1 ms de plus.

Au passage j’ai aussi mon dossier .ssh et .bitcoin dedans, ça ne mange pas de pain. Le prix à payer est seulement d’entrer son mot de passe (que vous avez choisi bien long et compliqué) quand on désire utiliser un logiciel qui lit ou écrit dans ces dossiers.

Certes, ont peut toujours vous baiser en installant un keylogger, un rootkit bien vicieux ou avec une clé à molette. Mais c’est tellement mieux que d’avoir les données en clair sur le disque.

]]>
http://sametmax.com/eviter-davoir-la-queue-a-lair-en-publique-avec-truecrypt/feed/ 8
Un mot de passe facile à retenir 29 http://sametmax.com/un-mot-de-passe-facile-a-retenir/ http://sametmax.com/un-mot-de-passe-facile-a-retenir/#comments Fri, 22 Jun 2012 19:08:51 +0000 http://sametmax.com/?p=975 Last pass est génial, mais tout le monde n’a pas forcément envie de l’installer, et parfois on a juste pas l’occasion de l’utiliser (machine d’entreprise sur intranet mais pas sur internet par exemple).

Seb a une proposition assez sympas pour créer des mots de passe pour chaque service en ligne qui soient robustes et faciles à retenir. Mais je n’arrive pas à m’y faire: c’est un système qui me demande de trop réfléchir. De plus ça ne fonctionne pas aussi bien quand on a pas de site Web sur lequel appliquer le principe.

XKCD propose une autre approche. Ca marche niquel, mais choisir 4 mots au hasard ne me parle pas.

Voici deux autres approches que j’utilise, l’important étant d’en offrir une variété pour rendre le piratage plus délicat.

Les pages roses du dictionnaire

Si vous ouvrez le Larousse, vous verrez qu’en son centre il y a des pages roses qui correspondent à une liste de proverbes et de locutions latines ou étrangères. En les parcourant vous vous apercevrez qu’il y en a plein que vous connaissez par cœur, car elles sont ancrées dans notre culture.

Il suffit tout simplement d’utiliser une de ces phrases comme mot de passe, en incluant la ponctuation.

Par exemple:

Qui vole un oeuf, vole un boeuf.

Ce mot de passe est très facile à retenir, mais il contient 29 caractères, parmi lesquels 5 espaces, 2 caractères spéciaux et une majuscule. C’est naturellement difficile à cracker, mais facile à retenir, et assez rapide à taper une fois qu’on l’a rentré une dizaine de de fois.

Bien sûr un attaquant pourrait bruteforcer le mot de passe en utilisant toutes les locutions les plus connues, mais qui va savoir que vous utilisez une locution ?

Quand bien même, on peut très facilement pimenter le mot de passe:

Qui vole un oeuf, vole un boeuf, bordel de merde !

Et voilà un mot de passe solide comme un roc, et léger comme une plume pour votre cerveau. Cela marche aussi avec une citation célèbre (Life is hard and then you die.), un extrait de chanson (Petit frère veut grandir trop vite…), ou la réplique d’un personnage dans un film (Cours Forrest, cours !).

Mot de passe ex nihilo

Si vous n’êtes pas du genre culturé, ou que vous avez comme moi un humour bizarre, il existe une autre technique.

  1. Choisir une personne
  2. Choisir un animal
  3. Choisir un smiley
  4. Mélanger le tout dans un ordre aléatoire

Ex: José Bové vache \o/

21 caractères dont 2 majuscules, 2 caractères non ASCII, 3 espaces et 2 caractères spéciaux. Et en plus vous allez vous poiler à chaque saisie. Le plus beau, c’est qu’il suffit de saisir le mot de passe une seule fois pour s’en souvenir tellement c’est débile.

Sachant que le personnage et l’animal peuvent être imaginaires, je vous laisse imaginer les combinaisons possibles.

  • Gaston Lagaffe ornithorynque O_o
  • Brontosaure :-* Charly Chaplin
  • ;-) Licorne Sam et Max !

 

]]>
http://sametmax.com/un-mot-de-passe-facile-a-retenir/feed/ 29
jQuery Visual Password: créer hash un visuel d’un password en cours de frappe 3 http://sametmax.com/jquery-visual-password-creer-hash-un-visuel-dun-password-en-cours-de-frappe/ http://sametmax.com/jquery-visual-password-creer-hash-un-visuel-dun-password-en-cours-de-frappe/#comments Sat, 05 May 2012 01:40:57 +0000 http://sametmax.com/?p=547 Comment s’assurer que l’on a pas fait une faute de frappe quand la page de login se bloque après trois essais infructeux ? Comme être certains que le password choisi à la création d’un compte est bien ce lui que l’on veut ?

jQuery Visual Password est un plugin jQuery qui répond à cette question sans avoir à mettre le mot de passe en clair : il créé une image unique depuis le mot de passe, puis l’affiche. L’image se met à jour au fil de la frappe.

Impossible de se tromper, l’image change radicalement si on change le moindre caractère. Et pour cause, ça utilise VizHash.js :-)

Essayez :

On me sussure à l’oreille que ça peut être pratique pour les mails aussi, car c’est plus facile de voir si une image est changée que de chercher une faute de frappe.

On pourrait imaginer la même chose pour un champ d’adresse bitcoin, ou une signature PGP, un clé SSH, un hash de commit Git, etc.

]]>
http://sametmax.com/jquery-visual-password-creer-hash-un-visuel-dun-password-en-cours-de-frappe/feed/ 3