HACKME PART ONE (HACKERS ET MOT DE PASSE)

DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009 - 22 août 2002 à 22:41
cs_valentin50 Messages postés 1 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 4 mars 2008 - 4 mars 2008 à 14:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12085-hackme-part-one-hackers-et-mot-de-passe

cs_valentin50 Messages postés 1 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 4 mars 2008
4 mars 2008 à 14:49
je les telecharger est jarrive pas a voir comment sa marche
brado12696 Messages postés 1 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 mai 2007
30 mai 2007 à 01:14
dsl je ne conprend rien je suis un débutent pouvé vous mexpliquer
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
24 août 2002 à 04:45
Eneffet DeeJay,

tu as raison l'algorithme inverse est impossible (pour les raison que tu explique d'ailleur).

J'ai parler de "moyen de généré des mot de passe" (jaurais du ajoutè calculè) et pas d'algo inverse, an tappant votre password et le bou de code ci dessus, le showmessage affiche le résultat du calcul de votre password, que vous pouvez réutiliser plus tard.

Je rapelle, que cette sèrie est destinée a apprendre des techniques, ce n'est pas un défit, si je veux faire un défit, il y a des sites pour ca !

et tu veras dans HACKME PART TWO, quelques techniques anti-hacking, a vous de les compliquées, c'est les bases et non un travail fini ;o))

(L'algo de cryptage de hackme part II est tres tres basic, je montre simplement la technique, a vous d'utiliser des algos complexes).

Bon Coding...

ManChesTer
cs_DeeJay Messages postés 23 Date d'inscription mercredi 17 avril 2002 Statut Membre Dernière intervention 23 décembre 2003
23 août 2002 à 15:51
lol ManChesTer,

DelphiCool voulait le générateur inverse je pense: à partir du code obtenir le mot de passe. Dans un commentaire tu as écrit:

"Je communiquerai le mot de passe et le moyen de généré des mot de passe pour cet exemple dans une semaine"

"le moyen de généré des mots de passe" est dans le zip, donc on a tous supposé que tu parlais de l'algorithme inverse. Enfin, je ne croit pas qu'il en existe un, le mot de passe est beaucoup trop long pour qu'à la fin de la boucle, le nombre obtenu tienne sur 64 bits... A moins d'inventer les bits perdus, c'est impossible.

En tout cas, j'attend le "générateur inverse de code" avec impatience si il existe :) Et bravo pour TomRipley qui a trouvé le bon mot de passe en 15 minutes du "HACKME PART TWO". C'était plus un défi de crackeur que de programmeur :-)
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
23 août 2002 à 13:14
Ajoute dans le code, avant le test if :

procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(Inttostr(calcpassword(edit1.text)));
.... lasuite du code ....
end;

Je pensais que tous le monde avais trouvé ;o))

Bon Coding

ManChesTer
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
22 août 2002 à 22:41
Manchester, où est le generateur de code que tu avais promis?
cs_DeeJay Messages postés 23 Date d'inscription mercredi 17 avril 2002 Statut Membre Dernière intervention 23 décembre 2003
19 août 2002 à 08:34
Il n'y a aucun algorithme inverse pour ce mot de passe... Fallait prévenir que le seul moyen de le trouver c'était le Brute Force :)
C'était un défi perdu d'avance pour tout le monde (à moins de laisser son pc tourner pendant toute la semaine, voir plus).

Enfin, je suis quand même content d'avoir trouver l'algo inverse pour les mots de passe court :p
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
19 août 2002 à 06:14
bon, le mot de passe est : "Je Suis Un Vrai Neuneu" sans les guillemets

lol,

Bon coding....

ManChesTer
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
14 août 2002 à 09:39
bravo deejay

l'uation que j'avais trouvé ressemble à la tienne

somme actuelle = x + (y * x) + y
x est la lettre
y est la somme precedente
cs_DeeJay Messages postés 23 Date d'inscription mercredi 17 avril 2002 Statut Membre Dernière intervention 23 décembre 2003
14 août 2002 à 05:53
Je viens de mettre à jour le zip en rajoutant les fonctions utilisées.

Si c'est plus dur que ça le 18, je ne serai certainement pas à la hauteur ;) Sinon avec sum := -1 c'est beaucoup plus compliqué en effet, mon algorithme est inefficace :-)
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
14 août 2002 à 04:02
Deejay, ce serais sympa de mettre aussi la lib sFonctionsChaines dans ton zip.

de toute facon, on complique un peux les choses le 18 ;o))

et on ne parleras plu en secondes/minutes/heures mais en jours/semaine/mois pour trouvè 1 mot de passe +- valide ;o)), sinon fèlicitation pour ta rèflection.

ps: remplace le sum=1234 par sum=-1;

bon coding ...

ManChesTer
cs_DeeJay Messages postés 23 Date d'inscription mercredi 17 avril 2002 Statut Membre Dernière intervention 23 décembre 2003
13 août 2002 à 22:55
Ca y est, j'ai trouvé une sorte d'algorithme inverse :) Il fonctionne sur tout les mots de passe dont le cryptage donne un nombre positif (ou négatif mais sans bit perdu). En effet, si le nombre obtenu est négatif, cela signifie que lors de l'addition (et de la multiplication), le résultat a dépassé les 63 bits (modifiant donc le 64ième réservé au signe), et les bits situés après le 64ième bit ont été perdu. Donc à part inventer les bits perdu je ne vois pas trop de solution.



--- Explication de l'algorithme ---
Nous avons en boucle: sum := sum + (ord( psw[j] ) * sum) + ord( psw[j] )
Soit x0 le sum de départ (c'est à dire 1234 lors du premier passage dans la boucle)
Soit x1 le sum d'arriver et "a" la valeur de ord(psw[j]), et l'on obtient:
x1 = x0 + ax0 + a

On a la valeur du Sum final (x1), c'est à dire -8401839074697527297 pour le cas du code de ManChesTer, mais on va utiliser comme exemple le Sum final obtenu avec le code 'abcde', soit 12343825493999.
On connait x1 et on cherche le sum précédent (x0). Donc:
x1 = x0(1 + a) + a
x0 = (x1 - a) DiviserPar (1 + a)

Or, on sait que le résultat de cette division est un entier, c'est à dire (x1 - a)mod(1 + a) = 0. On teste toutes les valeurs de a dont on obtient un résultat sans reste.
Avec 12343825493999, on obtient "abcdeghkmoqtvw" comme lettre minuscule possible. On en extrait x0 pour chaque lettre, et on recommence avec le Sum obtenu dans x0. (En recommençant on cherche biensûr la valeur du Sum situé avant x0, donc x0 prend la place de x1 dans la fonction).

Si à la fin on arrive avec x0 < 1234 cela signifie que l'on a fait fausse route
Si on a x0 = 1234 alors le code est valide
Et si on a x0 > 1234 alors on continue (on cherche encore le Sum précédent).

Pour 'abcde' on obtient comme code équivalent 'abced' ou encore 'AYdv‹', '2bd‹‹', ' !""Gd', 'Adhvw', :)



Je ne vois pas où DelphiCool a put trouver une équation du second dégrès... Au début j'ai aussi essayé de résoudre le problème de façon mathématique, mais j'obtenais des équations que je n'arrivais pas à réoudre. Par exemple pour un mot de passe de 4 lettres:
a(1 + b + c + d + bc + bd + cd + bcd) + b(1 + c + d + cd) + c(1 + d) + d = C
avec a, b, c et d la valeur de chaque lettre et C une constante que l'on connait (C = 0x1CE5662AC6B7B4 pour le mot de passe de ManChesTer)

Pour télécharger la source du programme, c'est ici:
http://membres.lycos.fr/verygood/download/algo.zip

Etant donné que toutes les solutions suceptible d'être correctes sont testées, le programme met quelques secondes, voir quelques minutes (ou quelques heures si on fait le test avec les caractères ASCII de 1 à 255) pour trouver un code correct.
Pour ceux que ça intéresse, il y a une fonction qui convertie un nombre int64 en binaire et une autre qui fait l'inverse (binaire à int64) dans le zip.

Voilà :-)
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
11 août 2002 à 19:40
hihi
cs_zmc Messages postés 147 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 26 avril 2008 1
11 août 2002 à 18:34
lol si ta deja des pb sur celui la le part 3 ca va etre bo ;o)
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
11 août 2002 à 18:08
lol

je vais essayer de faire le keygen

j'ai deja l'equation du second degres, reste plus qu'a la resoudre et c'est bon

le bleme c'est que je e suis pas un matheux :-(
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
10 août 2002 à 12:55
lol, DelphiCool

Quelque chose empêche d'utiliser cette technique pour une application internet ?

Il me semble que non.

Elle est donc généraliste, et c'est fait pour.... Et puis je lui donne le nom que j'ai envie. si j'avais voulu l'appelé PasswordProtect c'étais bon aussi, le but c qu'on pige de quoi ça parle et tu verras (mon titre n'est pas choisis pour la frime).

la hackme fait référence aux hackers DelphiCool, et non a autre chose, tu ne crois pas que ça intéresse certaines personnes de comprendre les base de la protection par mot de passe ?

Tu verra, l'épisode 2 seras un peux + hard et l'épisode 3 encore plus etc...

Pour info sache que je donne des cours sur le sujet toute l'année et que les étudiants payent très cher ces infos que je place ici gratuitement.

La protection d'applications c'est mon métier. Bien sur, je ne vais pas dévoilé ici les techniques les plus hard, mais une base qui permet de protéger par mot de passe assez efficacement une application sharware par exemple (sur le net ou non).

On essayeras notamment d'apprendre comment décourager la plupart des hackers avec des techniques assez simple a mette en œuvre qui vont compliqué la vie des crakers, hackers et autres lamers, et en décourager un grand nombre.

Voilà, vous savez ce qui vous attend.

Je communiquerai le mot de passe et le moyen de généré des mot de passe pour cet exemple dans une semaine ...

En attendant essayez de trouver un mot de passe valide....

Bon coding

Manchester.
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
10 août 2002 à 09:54
zmc look ton crackme ;-)

Manchester, ce n'est un hackme mais un crackme

le hack c'est pour les pass internet
cs_zmc Messages postés 147 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 26 avril 2008 1
10 août 2002 à 00:19
oui camarade j'offre une recompense a celui qui me ramene le mot de passe, mort ou vif !
cs_jado Messages postés 25 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 18 mai 2008
9 août 2002 à 23:41
Pas mal ton truc :)
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
9 août 2002 à 17:53
lol, bgk, merci de me l'avoir signalè ...

je l'ai ajouter ;o)) voila

bon coding ....
cs_bgK Messages postés 131 Date d'inscription vendredi 7 juin 2002 Statut Membre Dernière intervention 19 janvier 2004
9 août 2002 à 11:51
y manquerait pas un petit truc dans le zip ??
rien de bien important, juste le fichier dfm de la form...
Rejoignez-nous