Aller au contenu

Fonction crack(): test de mots de passe


MS-DOS_1991

Sujets conseillés

Bonjour, :)

Avant tout, je ne suis qu'un collégien débutant, donc svp, soyez patient avec moi :whistling:

Voila. Je suis en train de faire mon site web et aimerais vérifier systématiquement les mots de passe de mes utilisateurs.

J'ai entendu parler de la fonction php crack(): [crack_opendict(), crack_check(), crack_closedict(), etc.].

Je voudrais savoir ce qu'elle vaut, où trouver une version stable pour Windows (j'ai essayé mais c'est super compliqué), et comment construire un dictionnaire de mots à partir d'un simple fichier texte (1 mot par ligne) ? ^_^

Merci d'avance pour vos réponses. ;)

Lien vers le commentaire
Partager sur d’autres sites

A mon humble avis, ce doit être exactement la même verification que les mots de passe des systèmes UNIX. A savoir contrôle sur la longueur, la diversité lettres/chiffres et contrôle dans dictionnaire.

Au sujet des dictionnaires, c'est simplement un fichier texte avec un mot par ligne.

Bonne chance pour la suite!

Lien vers le commentaire
Partager sur d’autres sites

La fonction 'crack' est utile pour 'cracker' un mot de passe. Donc, officiellement, pour tester si un mot de passe est 'solide', ou facile à trouver.

De plus, il faut que le serveur soit configuré pour utiliser les fonctions 'crack'.

Pour tester si des utilisateurs entrent le bon mot de passe, il n'y a pas de fonctions prédéfinies. Il faut juste faire un test, avec des variables de session, ou autre.

Il y a des discussions, dans le forum, sur les espaces membres.

;)

Lien vers le commentaire
Partager sur d’autres sites

Petit truc : ne stocke JAMAIS des mots de passe en clair.

Tu les cryptes, tu les stockent cryptés. Quand on te saisit un mot de passe, tu le crypte et tu compares.

<{POST_SNAPBACK}>

Je faisais toujours ça puis quelques réflexions me sont venus à l'esprit et également des contraintes clients.

Les contraintes tout d'abord : certains clients EXIGENT d'avoir un système renvoyant le mot de passe.

Puis la réflexion: tu cryptes pourquoi? pour empêcher toi même de voir le mot de passe? car si un hacker est déjà dans ta base pour lire le mot de passe, tu peux être sûr qu'il est pas loin de pouvoir tout faire à d'autres niveaux.

Alors si vraiment pour une question d'éthique tu veux empêcher tes yeux de lire sans faire exprès, passes juste un petit coup d'encodage base 64 ^^

Modifié par solo
Lien vers le commentaire
Partager sur d’autres sites

Je faisais toujours ça puis quelques réflexions me sont venus à l'esprit et également des contraintes clients.

Les contraintes tout d'abord : certains clients EXIGENT d'avoir un système renvoyant le mot de passe.

Puis la réflexion: tu cryptes pourquoi? pour empêcher toi même de voir le mot de passe? car si un hacker est déjà dans ta base pour lire le mot de passe, tu peux être sûr qu'il est pas loin de pouvoir tout faire à d'autres niveaux.

Alors si vraiment pour une question d'éthique tu veux empêcher tes yeux de lire sans faire exprès, passes juste un petit coup d'encodage base 64 ^^

<{POST_SNAPBACK}>

Le hacker verra de fait un truc comme gfdhg5454q6gf5d64g6df mais qui sera dur à déchiffrez, si pas impossible avec un md5.

Pour retrouver le mot de passe, moi j'en genere un new, qui s'envoit par email et se modifie en md5 tjrs celui de la base. Par après, tu laisse un form pour modifier les info perso dans la zone membre où il peut re mettre son mdp favoris.

Lien vers le commentaire
Partager sur d’autres sites

D'accord avec Lafosca : Je n'ai encore jamais vu aucun client qui exige de pouvoir récupérer son mot de passe. Ce que j'ai déjà vu, c'est des clients qui exigent de pouvoir récupérer UN mot de passe valable s'ils perdent le leur, ce qui n'est pas pareil.

Il suffit alors d'utiliser la méthode indiquée par Lafosca : tu génères un nouveau mot de passe, tu l'envoies au client, et tu stockes le nouveau crypté dans la base. Et libre au client de modifier son pass s'il le souhaite.

Lien vers le commentaire
Partager sur d’autres sites

Re,

Pareil pour moi, je stock en MD5 tous les mots de passe et en génère un nouveau en forcant l'utilisateur à le changer par le sien.

Dans une boite où j'ai bossé, le mec était tout fier de me montrer son schéma de base de donnée. Hormis le fait qu'il était banqual, le mec stockait le mot de passe crypté ... et décrypté dans la même table :fou::fou::fou:

Y a des fois je vous jure... :rolleyes::rolleyes:

++

Portekoi

Lien vers le commentaire
Partager sur d’autres sites

Dans une boite où j'ai bossé, le mec était tout fier de me montrer son schéma de base de donnée. Hormis le fait qu'il était banqual, le mec stockait le mot de passe crypté ... et décrypté dans la même table  :fou:  :fou:  :fou:

<{POST_SNAPBACK}>

Incroyable! vous utilisez plutôt MD5 ou la fonction Password de MySQL ?

Lien vers le commentaire
Partager sur d’autres sites

En fait, le client rentre son mot de passe dans l'interface d'admin. Il est facile de le lui renvoyer sous forme visible.

le mot de passe qui est dans la base ne doit effectivement pas être visible. Si les risques devaient se limiter au client et au développeur, ils seraient bien minces.

Seulement, en général, ils sont tout de même beaucoup plus importants.

Le fait que le client ait à entrer son mot de passe est normal, et le fait que le client se voit renvoyer un mot de passe en cas d'oubli du sien est normal et suffisant.

Par contre, il demande peut etre à voir les mots de passe de ses clients, et ca, ce n'est pas sain.

la méthode utilisée par php pour calculer, controler et retourner un mot de passe est... quasiment impossible à cracker. Si un hacker entre dans ta base, alors il n'aura que des mots de passe inutilisables. C'est déjà un pas de franchi.

Les protections sont un peu comme des escaliers, qu'il faut gravir marche après marche, et ceci en est une.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

J'ai réessayé avec un truc tout simple mais ça ne marche pas:


<?php
/* Ouverture du dictionnaire CrackLib */
$dico = crack_opendict("dictionnaire_fr_1.txt");
$mot_de_passe = "abandonner";
/* Vérification du mot de passe */
$check = crack_check($dico, $mot_de_passe);
$message = crack_getlastmessage();
echo $message;
/* Fermeture du dictionnaire */
crack_closedict($dico);
?>

pour le script (simplifié bien entendu :rolleyes: ) et comme dico un truc du genre:


Aaron
abaissé
abaissement
abaisser
abandon
abandonnant
abandonne
abandonné
abandonnée
abandonnées
abandonnent
abandonner
abandonnés
abasie
abasourdi
abasourdir
abasourdissement
abat-jour
abats
abattage
abatteur
abattoir
abattre
abattu
abattus
abbatial
abbaye
abbé
abbesse
abc
abcéder
abcès
Abdel
abdication
abdiquer
abdomen
abdominal
abécédaire
abeille
aber
aberrant
aberration
abêtir
abhorrer
Abidjan
abîme
abîmer
abject
abjection
abjurer
ablation
aboiement
aboli
abolir
abolition
abolitionnisme
abolitionniste
abomination
abominer
abondamment
abondance
abondant
abondante
abonné
abonnée
abonnement
abonnements
abonner
abonnés
abord
abordable
abordage
aborde
abordé
aborder
abordés
abords
aborigène
aborigènes
abortif
about
abouti
aboutir
aboutirait
aboutissement
aboutissent
aboutit
aboyer
abracadabrant
abrasif
abrasion
abrasive
abrégé
abrégée
abréger
abreuver
abréviation
abréviations
abri
abricot
abricotier
abrite
abrité
abriter
abroger
abrupt
abruti
absence
absent
absente
absentéisme
absents
absinthe
absolu
absolue
absolument
absolution
absolutisme
absorbé
absorber
absorption
absoudre
abstention
abstentions
abstenu
abstenus
abstinence
abstraction
abstrait
abstraite
abstraitement
abstraits
absurde
absurdement
absurdité
abus
abuser
abusif
abusive
abyssin
Abyssin
Abyssine
Abyssinie
abyssinien
Abyssinien
Abyssinienne
acacia
académicien
académie
Académie
académies
académique
académiques
académisme
acajou
accablant
accabler
accalmie
accède
accédé
accéder
accélération
accéléré
accélérée
accélérer
accent
accents
accentuation
accentue
accentué
accentuer
acceptable
acceptait
acceptant
acceptation
accepte
accepté
acceptée
acceptées
acceptent
accepter
accepterait
accepteront
acceptés
acception
accès
accessible
accessibles
accession
accessoire
accessoirement
accessoires
accident
accidenté
accidentel
accidents
accise
acclamation
acclamer
acclimatation
acclimatement
accommodation
accommoder
accompagnant
accompagne
accompagné
accompagnée
accompagnées
accompagnement
accompagnent
accompagner
accompagnés
accompli
accomplie
accomplir
accomplis
accomplissement
accomplit
accord
accordait
accordant
accorde
accordé
accordée
accordées
accordent
accordéon
accordéoniste
accorder
accordés
accordeur
accords
accore
accoster
accouchement
accoucher
accoucheuse
accroché
accrocher
accroissement
accroître
accru
accrue
accrues
accrus
accueil
accueillant
accueille
accueillent
accueillera

... je précise que dans le vrai dico, il y a 22 708 lignes ;)

Quelqu'un aurait-il une idée ? :unsure:

Lien vers le commentaire
Partager sur d’autres sites

Tu veux vraiment tester la solidité d'un mot de passe ??

As tu la configuration de ton serveur qui te permette de te servir de la librairie 'crack' ?

Lien vers le commentaire
Partager sur d’autres sites

Tu veux vraiment tester la solidité d'un mot de passe ??

As tu la configuration de ton serveur qui te permette de te servir de la librairie 'crack' ?

<{POST_SNAPBACK}>

En fait je veux que lors de l'inscription de mes futurs utilisateurs (j'espère qu'il y en aura :lol: ), un script php compare le mot de passe avec un fichier (du meme type que celui que j'ai affiché plus haut à savoir un mot par ligne) et qu'il affiche un message d'erreur si le mot de passe a été trouvé dans le fichier (c'est donc que le mot de passe est trop faible)

Je tourne sous EasyPhp 1.7 et j'ai activé l'extension depuis l'icone de la barre des taches "configuration" -> "Extensions PHP".

P.S: Merci de m'avoir répondu :)

Lien vers le commentaire
Partager sur d’autres sites

En fait ce que je voulais dire :

si le hacker est déjà dans ta base, il va pas se gêner pour aller plus loin et foutre le zouk.

Lien vers le commentaire
Partager sur d’autres sites

Lu,

Pour moi, crypter les mots sert surtout à éviter tout danger si le "hacker" fais une injection Sql.

Par exemple, vous passez de page en page un "Id_page". Si vous ne protégez pas votre "main", on peut facilement injecter une requete (avec un "Union" par exemple) pour que, au lieu de sortir le titre d'un article, c'est le mot de passe d'un membre qui sors :)

Donc s'il est crypté... ben il pourra aller se brosser ^_^

++

Portekoi

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...