Citando una frase famosa…
Il mondo è bello perché è vario
possiamo dire con certezza che anche nell’informatica è così; grazie alla nascita di sistemi operativi liberi è stato possibile sviluppare migliaia di applicativi adatti alle più svariate esigenze.

Nel mondo dell’ Instant messaging, le applicazioni non si sono risparmiate; tra queste oggi voglio parlarvi di Emesene:
client di messaggistica istantanea abbastanza famoso, presente di default nei repository di Ubuntu, deve la sua notorietà alla semplicità d’uso e alla grafica accattivante. Soffre però di noto problema che a mio parere lo penalizza molto dal lato della sicurezza, i dati di login sono memorizzati in formato esadecimale in una path prestabilita.
Vediamo come decriptare e scoprire le password degli account:
1) Compilazione dei sorgenti:
a. Copiare e incollare il seguente code in un file con estensione ‘.c’ (senza apici), per compatibilità con il tutorial chiamatelo ‘emesene_pwdfinder.c’ :
/*
Author: darkjoker
Program: Emesene password finder
Emesene saves users passwords in
/home/username/.config/emesene1.0/users.dat
in hexadecimal value.
This program only read that file and
convert the password.
Have fun ^^
*/
#include <stdio.h>
#include <string.h>
#define PRE_USR "/home/"
#define POST_USR "/.config/emesene1.0/users.dat"
int str2hex (char* str)
{
int c, dec = 0, exp = 1;
int l = 0;
while (l < 2)
{
if ((str [l] > 64) && (str [l] < 71))
c = str [l] - 55;
else
c = str [l] - 48;
if (exp)
dec += c*16;
else
dec += c;
exp--;
l++;
}
return dec;
}
int main (int argc, char* argv [])
{
if (argc != 2)
{
printf ("\n[?] Emesene password finder"
"\n[?] Author: darkjoker"
"\n[?] Usage : %s <email address>"
"\n\n", argv [0]);
return -1;
}
FILE *usr = popen ("whoami", "r");
char user [15];
int c, o, l;
fgets (user, sizeof (user), usr);
fclose (usr);
user [strlen (user)-1] = '';
char path [34+strlen (user)];
strcpy (path, PRE_USR);
strcat (path, user);
strcat (path, POST_USR);
FILE *emesene = fopen (path, "r");
char str [100];
while (!feof (emesene))
{
fgets (str, sizeof (str), emesene);
if (!strncmp (argv [1], str, strlen (argv [1])))
{
char passwd [strlen (str)];
c = 0;
o = 0;
l = 0;
while (c < strlen (str))
{
if (str [c] == ':')
o++;
if (o == 1)
{
if (str [c] != ':')
{
passwd [l] = str [c];
l++;
}
}
c++;
}
passwd [l] = '';
c = 0;
char ch [2];
printf ("\n[+] Email : %s\n[+] Password : ", argv [1]);
while (c < strlen (passwd))
{
ch [0] = passwd [c];
ch [1] = passwd [c+1];
printf ("%c", (char) str2hex (ch));
c += 2;
}
printf ("\n\n");
return 0;
}
}
printf ("\n[-] Password not found.\n\n");
return 0;
}
N.B.: il codice va indentato per bene.
.b Aprire il terminale e compilare l'eseguibile con il seguente comando:
gcc emesene_pwdfinder.c -o emesene_pwdfinder2) Avvio dell'eseguibile e find della password:
./emesene_pwdfinder <email_account>L'output del programma sarà simile a questo:
![]()

















AleXThEBesT : 14 ottobre 2009 alle 17:53
Ma io sulla scrivania dovrei fare crea documento e poi file vuoto? Io ho fatto così ho incollato quello che dovevo incollare poi l’ho rinominato… Ma poi dal terminale digitando gcc emesene_pwdfinder.c -o emesene_pwdfinder esce scritto
gcc: emesene_pwdfinder.c: No such file or directory
gcc: no input files
Come posso fare?