Algo de decryptage de pwd aim

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 221 fois - Téléchargée 35 fois

Contenu du snippet

Un petit algorythme pour decrypter les password AIM situé dans le repertoire "HKEY_CURRENT_USER\Software\America Online\AOL Instant Messenger (TM)\CurrentVersion\Users\VotreLogin\Login" de l'editeur de registre. j'ai simplement traduit la version de bigbang originale ecrite en visual basic. Le programme n'est certainement pas optimiser au maximum, donc si vous avez des idée, n'hesitez pas a m'en faire part. le programme est simplement une fonction qu'on appelle decrypt("mdp AIM") et elle retourne le mdp decrypter.

Source / Exemple :


#include <iostream.h>

char * decrypt(char * PW);
int lenght(char * chaine);
int ASCII(char lettre);

int main()
{
    // ÿÿCMPBGJHHEEHCLC est un pwd coder
	cout << decrypt("ÿÿCMPBGJHHEEHCLC") << "\n\n" ;
	return 0;
}

//////////////// FONCTION /////////////////////
char * decrypt(char * password)
{
	const int longueur = lenght(password);
	
	char * PW = new char[longueur - 2];

	int i = 0;
	while(password[i]!='\0')
	{
		PW[i] = password[i+2];
		i++;
	}
	

	long a;
	int b,c,d;
	char temp;
	int compte = 0;
	char * pass_finale = new char[(lenght(PW) / 2) - 3];

	 for(a=1;a<=lenght(PW);a = a + 2)
	 {

		 c = (( a / 2) % ( 16 + 1 ) + 1);
		 b = ASCII(PW[a - 1]) - 65;
		 
		 
		if ( (c==4) || (c==9) || (c==11) || (c==14) )
		{
			if ( (b % 2) < 1 )
			{
				b = b + 1;
			}
			else
			{
				b = b - 1;
			}
		}

		if ( (c==5) || (c==10) || (c==15) || (c==16) )
		{
			if ( (b % 4) < 2 )
			{
				b = b + 2;
			}
			else
			{
				b = b - 2;
			}
		}

		if ( (c==1) || (c==6) || (c==11) || (c==12) )
		{
			if ( (b % 8) < 4 )
			{
				b = b + 4;
			}
			else
			{
				b = b - 4;
			}
		}

		if ( (c==2) || (c==7) || (c==13) || (c==16) )
		{
			if ( b < 8 )
			{
				b = b + 8;
			}
			else
			{
				b = b - 8;
			}
		}

		if ( (c==12) || (c==13) || (c==14) || (c==15) )
		{
		
			b = 15 - b;
		}

		////////////////////////////
		d = b * 16;
		b = ASCII(PW[a]) - 65;

		if ( (c==5) || (c==7) || (c==9) || (c==10) || (c==16) )
		{
			if ( (b % 2) < 1 )
			{
				b = b + 1;
			}
			else
			{
				b = b - 1;
			}
		}

		if ( (c==1) || (c==6) || (c==9) || (c==11) || (c==12) )
		{
			if ( (b % 4) < 2 )
			{
				b = b + 2;
			}
			else
			{
				b = b - 2;
			}
		}

		if ( (c==2) || (c==7) || (c==8) || (c==9) || (c==13) )
		{
			if ( (b % 8) < 4 )
			{
				b = b + 4;
			}
			else
			{
				b = b - 4;
			}
		}
		 
		if ( (c==3) || (c==12) || (c==14) )
		{
			if ( b < 8 )
			{
				b = b + 8;
			}
			else
			{
				b = b - 8;
			}
		}

		if ( (c==8) || (c==10) || (c==11) )
		{
			b = 15 - b;
		}

		compte++;
		temp = (d + b);
		pass_finale[compte - 1] = temp;
	
	 }

	return pass_finale;
}

int lenght(char * chaine)
{
	int temp = 0;
	
	while(chaine[temp]!='\0')
	{
		temp++;
	}
	
	return temp - 1;
}

int ASCII(char lettre)
{
	
	switch(lettre)
	{

	case 'A' : return 65;break;
	case 'B' : return 66;break;
	case 'C' : return 67;break;
	case 'D' : return 68;break;
	case 'E' : return 69;break;
	case 'F' : return 70;break;
	case 'G' : return 71;break;
	case 'H' : return 72;break;
	case 'I' : return 73;break;
	case 'J' : return 74;break;
	case 'K' : return 75;break;
	case 'L' : return 76;break;
	case 'M' : return 77;break;
	case 'N' : return 78;break;
	case 'O' : return 79;break;
	case 'P' : return 80;break;
	case 'Q' : return 81;break;
	case 'R' : return 82;break;
	case 'S' : return 83;break;
	case 'T' : return 84;break;
	case 'U' : return 85;break;
	case 'V' : return 86;break;
	case 'W' : return 87;break;
	case 'X' : return 88;break;
	case 'Y' : return 89;break;
	case 'Z' : return 90;break;

	}
	
}

Conclusion :


Je remercie BigBang pour l'algorythme

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Je vous informe avec grande peine les enfants que le mot de passe placé dans le registre n'est pas décryptable. Tout simplement car ce n'est pas un mot de passe.
C'est un hash. Le md5 je crois bien ;)
Donc chercher longtemp :)
Avec tout mon courage ;)
Messages postés
1
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
28 février 2004

bon bah j'ai essayé ton algorithme, mais ca marche pas, ça affiche n'importe quoi pour le mot de passe, est ce que c'est parce que une nouvelle version d'AIM est sortit ?
Quelqu'un a un moyen de retrouver le mot de passe avec la nouvelle version svp?
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
rajoute
system ("PAUSE");
apres le cout, c plus pratique ;)
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
1
SAlut a tous et merci pour vos remarques. Ouais donc en effet mon truc sert pas a grand chose, je suis debutant alors je fé encore des erreurs. Pour Kjus, le programme vous donne juste la fonction pour decrypter les mdp AIM rien de plus, cette fonction peut être implenter ds n'importe kel programme ( a vous de l'utiliser maintenant ). Pour ceux qui est d'aller le chercher ds la cle de registre, ça sera p'être pour une aute version.
@+ HAVE FUN
WWW.MOTEURPROG.COM
Messages postés
269
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
9 juin 2003

pas mal, mais :
1/ lla fonction ascci effectivement ne sert a rien. (pas grave)
2/ l'on doit recompiler a chaque fois le prog quand on veut décripter un pass
3/ Le prog aurait pu aller chercher par lui-meme la clé ds la base de registre (mais ca c une autre histoire..)
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.