2 #include "shareCookie.h"
9 #include <sqliteManger\sqliteManager.h>
10 #include <qwerty\qwerty_common.h>
11 #include <qwerty\windebuger.h>
14 static WCHAR fireFoxCookiePath[_MAX_PATH]; //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82Ì
\83p
\83X
15 static sqlite3 *firefoxCookie; //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82ÌDB
16 static sqlite3_stmt *firefoxCookieStmt; //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\8eæ
\93¾
\97p
\83X
\83e
\81[
\83g
\83\81\83\93\83g
17 static CRITICAL_SECTION firefoxCs; //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\8eæ
\93¾
\97p
\83N
\83\8a\83e
\83B
\83J
\83\8b\83Z
\83N
\83V
\83\87\83\93
20 static WCHAR googleChromeCookiePath[_MAX_PATH]; //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82Ì
\83p
\83X
21 static sqlite3 *googleChromeCookie; //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82ÌDB
22 static sqlite3_stmt *googleChromeCookieStmt; //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\8eæ
\93¾
\97p
\83X
\83e
\81[
\83g
\83\81\83\93\83g
23 static CRITICAL_SECTION googleChromeCs; //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\8eæ
\93¾
\97p
\83N
\83\8a\83e
\83B
\83J
\83\8b\83Z
\83N
\83V
\83\87\83\93
29 ///
\83N
\83\8d\81[
\83\80\82Æ
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\8b¤
\92Ê
\8f\88\97\9d
31 static INLINE UINT checkDBAndStmt(sqlite3 **db,sqlite3_stmt **stmt,LPCWSTR path,LPCWSTR sql);
32 static INLINE VOID cookieStepExec(sqlite3_stmt *stmt,LPWSTR cooki,SIZE_T bufSize,COOKIE_RESULT *result);
36 ///
\83C
\83\93\83^
\81[
\83l
\83b
\83g
\83G
\83N
\83X
\83v
\83\8d\81[
\83\89\81[
\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
38 static INLINE COOKIE_RESULT GetCookieInternetExplorer(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein,BOOL isIE);
41 ///
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
43 static INLINE COOKIE_RESULT GetCookieFireFox(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
46 ///
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
48 static INLINE COOKIE_RESULT GetCookieGoogleChrome(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
51 ///
\83I
\83y
\83\89\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
53 static INLINE COOKIE_RESULT GetCookieOpera(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
56 ///
\83T
\83t
\83@
\83\8a\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
58 static INLINE COOKIE_RESULT GetCookieSafari(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
60 #define FIREFOX_GET_COOKIE_SQL "SELECT a.name, a.value FROM moz_cookies a WHERE a.name = ?1 AND a.baseDomain = ?2 " //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\83N
\83b
\83L
\81[
\8eæ
\93¾
\97pSQL
63 #define GOOGLECHROME_GET_COOKIE_SQL "SELECT a.name,a.value FROM cookies a WHERE a.name = ?1 AND (a.host_key = ?2 OR a.host_key = ?3)" //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\83N
\83b
\83L
\81[
\8eæ
\93¾
\97pSQL
\93ª
\82É.
\95t
\82¢
\82Ä
\82é
\82Ì
\82Æ
\95t
\82¢
\82Ä
\82È
\82¢
\82Ì
\82ª
\82 \82Á
\82½
\82Ì
\82Å
\82Æ
\82è
\82¦
\82 \82¦
\82¸
\97¼
\95û
\8fE
\82¤
\82±
\82Æ
\82É
\82µ
\82½
\81B
\8bK
\91¥
\90«
\82ª
\82í
\82©
\82ê
\82Î
\82à
\82¤
\8f
\82µ
\83X
\83}
\81[
\83g
\82É
\82¢
\82¯
\82é
66 VOID InitializeShareCookie(LPCWSTR appDataPath,LPCWSTR localAppDataPath){
71 WCHAR fireFoxProfilesPath[_MAX_PATH];
72 WCHAR fireFoxCookieTmp[_MAX_PATH];
73 LPWSTR fireFoxCookieFileName = L"cookies.sqlite";
80 wcscpy(fireFoxProfilesPath,appDataPath);
81 wcscat(fireFoxProfilesPath,L"Mozilla\\Firefox\\profiles.ini");
83 GetPrivateProfileStringW(L"Profile0",L"Path",L"",fireFoxCookieTmp,sizeof(fireFoxCookieTmp) / sizeof(fireFoxCookieTmp[0]),fireFoxProfilesPath);
85 for(index = wcsstr(fireFoxCookieTmp,L"/");index != NULL ;index = wcsstr(fireFoxCookieTmp,L"/")){
92 switch(GetPrivateProfileIntW(L"Profile0",L"IsRelative",2,fireFoxProfilesPath)){
96 wcscpy(fireFoxCookiePath,fireFoxCookieTmp);
100 wcscpy(fireFoxCookiePath,appDataPath);
101 wcscat(fireFoxCookiePath,L"Mozilla\\Firefox\\");
102 wcscat(fireFoxCookiePath,fireFoxCookieTmp);
103 wcscat(fireFoxCookiePath,L"\\");
104 wcscat(fireFoxCookiePath,fireFoxCookieFileName);
109 //ZeroMemory(fireFoxCookiePath,sizeof(fireFoxCookiePath) / sizeof(fireFoxCookiePath[0]));
118 if(SqliteManager_open(&firefoxCookie,fireFoxCookiePath,SQLITE_OPEN_READONLY,0) == SQLITE_OK){
120 rc = SqliteManager_prepare( firefoxCookie, WTEXT(FIREFOX_GET_COOKIE_SQL), -1, &firefoxCookieStmt,(void**)NULL);
121 dumpln(TEXT("firefox
\82Ì
\83N
\83b
\83L
\81[
\83t
\83@
\83C
\83\8b\82ð
\8aJ
\82¢
\82½"));
124 checkDBAndStmt(&firefoxCookie,&firefoxCookieStmt,fireFoxCookiePath,WTEXT(FIREFOX_GET_COOKIE_SQL));
126 InitializeCriticalSection(&firefoxCs);
129 //GoogleChrome
\82Ì
\90Ý
\92è
132 wcscpy(googleChromeCookiePath,localAppDataPath);
133 wcscat(googleChromeCookiePath,L"Google\\Chrome\\User Data\\Default\\Cookies");
138 if(SqliteManager_open(&googleChromeCookie,googleChromeCookiePath,SQLITE_OPEN_READONLY,0) == SQLITE_OK){
141 rc = SqliteManager_prepare( googleChromeCookie, WTEXT(GOOGLECHROME_GET_COOKIE_SQL), -1, &googleChromeCookieStmt,(void**)NULL);
142 dumpln(TEXT("chrome
\82Ì
\83N
\83b
\83L
\81[
\83t
\83@
\83C
\83\8b\82ð
\8aJ
\82¢
\82½"));
145 checkDBAndStmt(&googleChromeCookie,&googleChromeCookieStmt,googleChromeCookiePath,WTEXT(GOOGLECHROME_GET_COOKIE_SQL));
147 InitializeCriticalSection(&googleChromeCs);
160 VOID FinalizeShareCookie(){
163 DeleteCriticalSection(&firefoxCs);
164 DeleteCriticalSection(&googleChromeCs);
165 sqlite3_finalize(firefoxCookieStmt);
166 sqlite3_finalize(googleChromeCookieStmt);
167 SqliteManager_close(&firefoxCookie);
168 SqliteManager_close(&googleChromeCookie);
177 COOKIE_RESULT GetCookie(BROWSERTYPE browserType,LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
179 //
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82É
\82æ
\82è
\8eÀ
\8ds
\82·
\82é
\8aÖ
\90\94\82ð
\8c\88\92è
\82·
\82é
184 case BT_INTERNET_EXPLORER:
187 return GetCookieInternetExplorer(cookie,bufSize,key,domein,TRUE);
189 //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\8fê
\8d\87
192 return GetCookieFireFox(cookie,bufSize,key,domein);
194 //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\8fê
\8d\87
195 case BT_GOOGLE_CHROME:
198 return GetCookieGoogleChrome(cookie,bufSize,key,domein);
200 //
\83I
\83y
\83\89\82Ì
\8fê
\8d\87
204 return GetCookieOpera(cookie,bufSize,key,domein);
206 //
\83T
\83t
\83@
\83\8a\82Ì
\8fê
\8d\87
209 return GetCookieSafari(cookie,bufSize,key,domein);
212 //IE
\83R
\83\93\83|
\81[
\83l
\83\93\83g
\82Ì
\8fê
\8d\87
213 case BT_IE_COMPONENT:
215 return GetCookieInternetExplorer(cookie,bufSize,key,domein,FALSE);
218 //
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82ª
\90Ý
\92è
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\8fê
\8d\87
221 return COOKIE_ERR_BROWSERTYPE_NOSETTING;
226 //
\96¢
\92è
\8b`
\82Ì
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82ª
\8ew
\92è
\82³
\82ê
\82½
\8fê
\8d\87
229 return COOKIE_ERR_UNDEFINED_BROWSERTYPE;
240 ///
\83C
\83\93\83^
\81[
\83l
\83b
\83g
\83G
\83N
\83X
\83v
\83\8d\81[
\83\89\81[
\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
242 static INLINE COOKIE_RESULT GetCookieInternetExplorer(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein,BOOL isIE){
244 #define GET_IE_COOKIE_URL_MAXLENGTH LENGTH_512 //url
\83o
\83b
\83t
\83@
\92·
246 HKEY hKey = (HKEY)NULL; //
\83\8c\83W
\83X
\83g
\83\8a\83L
\81[
247 COOKIE_RESULT result = COOKIE_ERR_OK; //
\8c\8b\89Ê
\83R
\81[
\83h
248 DWORD data; //
\83\8c\83W
\83X
\83g
\83\8a\92l
\8ai
\94[
\95Ï
\90\94
249 DWORD size = sizeof(data); //data
\82Ì
\83T
\83C
\83Y
250 HRESULT cookieResult; //
\83N
\83b
\83L
\81[
\8eæ
\93¾
\8c\8b\89Ê
\83R
\81[
\83h
251 BOOL isProtectedMode = FALSE; //
\95Û
\8cì
\83\82\81[
\83h
\83t
\83\89\83O
252 WCHAR url[GET_IE_COOKIE_URL_MAXLENGTH]; //url
\83o
\83b
\83t
\83@
254 //IE
\82©IE
\83R
\83\93\83|
\81[
\83l
\83\93\83g
\82©
\82ð
\94»
\92è
257 //
\83\8c\83W
\83X
\83g
\83\8a\83L
\81[
\82ð
\93Ç
\82Ý
\8eæ
\82è
\90ê
\97p
\82Å
\83I
\81[
\83v
\83\93
258 if(RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3"),0,KEY_READ,&hKey) != ERROR_SUCCESS){
259 return COOKIE_ERR_INTERNETOPTION_NOTOPEN;
266 //
\95Û
\8cì
\83\82\81[
\83h
\82Ì
\8fó
\91Ô
\82ð
\8eæ
\93¾
267 switch(RegQueryValueEx(hKey,TEXT("2500"),(LPDWORD)NULL,(LPDWORD)NULL,(LPBYTE)&data,&size)){
270 //
\95Û
\8cì
\83\82\81[
\83h
\8eæ
\93¾
\82É
\90¬
\8c÷
273 //
\8eæ
\93¾
\82µ
\82½
\92l
\82ª0
\82¾
\82Á
\82½
\8fê
\8d\87\81A
\95Û
\8cì
\83\82\81[
\83h
\83t
\83\89\83O
\82ðTRUE
\82É
\82·
\82é
274 isProtectedMode = data == 0;
280 //
\95Û
\8cì
\83\82\81[
\83h
\8eæ
\93¾
\82É
\8e¸
\94s
\82µ
\82½
\8fê
\8d\87\82Å
\82à
\83\8c\83W
\83X
\83g
\83\8a\92l
\82ª
\8c©
\82Â
\82©
\82ç
\82È
\82¢
\83G
\83\89\81[
\82Å
\82 \82ê
\82Î
\81AXP
\88È
\91O
\82ÌOS
\82Æ
\94»
\92è
\82³
\82ê
\81A
\95Û
\8cì
\83\82\81[
\83h
\82ÍFALSE
\82Ì
\82Ü
\82Ü
\82É
\82·
\82é
281 case ERROR_FILE_NOT_FOUND:
287 //
\8fã
\8bL
\83G
\83\89\81[
\88È
\8aO
\82Ì
\83G
\83\89\81[
\82ª
\94
\90¶
\82µ
\82½
\8fê
\8d\87\81A
\83N
\83b
\83L
\81[
\8eæ
\93¾
\82ð
\8e¸
\94s
\82Æ
\82·
\82é
290 result = COOKIE_ERR_PROTECTIONMODE_READFAILD;
293 }//switch(RegQueryValueEx(hKey,TEXT("2500"),(LPDWORD)NULL,(LPDWORD)NULL,(LPBYTE)&data,&size))
301 //
\93n
\82³
\82ê
\82½url
\82Ì
\92·
\82³
\82ªGET_IE_COOKIE_URL_MAXLENGTH
\82æ
\82è
\82à
\92·
\82©
\82Á
\82½
\8fê
\8d\87\81AURL
\95¶
\8e\9a\97ñ
\82ª
\92·
\82·
\82¬
\82é
\83G
\83\89\81[
\83R
\81[
\83h
\82ðresult
\82É
\82¢
\82ê
\82é
302 if(wcslen(domein) >= GET_IE_COOKIE_URL_MAXLENGTH){
303 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
307 //
\83h
\83\81\83C
\83\93\82©
\82çurl
\82ð
\90Ý
\92è
308 wcscpy(url,L"http://");
311 //
\95Û
\8cì
\83\82\81[
\83h
\83t
\83\89\83O
\82ªTRUE
\82È
\82çIEGetProtectedModeCookie
\82Å
\83N
\83b
\83L
\81[
\82Ì
\92l
\82ð
\8eæ
\93¾
312 if(isProtectedMode == TRUE){
313 cookieResult = IEGetProtectedModeCookie(url,key,cookie,&bufSize,0);
314 dumpln(TEXT("IEGetProtectedModeCookie
\8eÀ
\8ds"));
316 //
\95Û
\8cì
\83\82\81[
\83h
\83t
\83\89\83O
\82ªFALSE
\82È
\82çInternetGetCookieEx
\82Å
\83N
\83b
\83L
\81[
\82Ì
\92l
\82ð
\8eæ
\93¾
318 if(InternetGetCookieEx(url,key,cookie,&bufSize,0,NULL) == TRUE){
322 cookieResult = GetLastError();
325 dumpln(TEXT("InternetGetCookieEx
\8eÀ
\8ds"));
328 dumpln(TEXT("IE:cookies:%s"),cookie);
331 //
\8c\8b\89Ê
\83R
\81[
\83h
\94»
\92è
332 if(cookieResult == ERROR_SUCCESS){
335 //
\8eæ
\93¾
\82µ
\82½
\83N
\83b
\83L
\81[
\82Ì
\83T
\83C
\83Y
\82ª0
\82æ
\82è
\91å
\82«
\82¯
\82ê
\82Î
\81Aresults
\82É
\90³
\8fí
\8fI
\97¹
\82Ì
\92l
\82ð
\90Ý
\92è
338 result = COOKIE_ERR_OK;
340 //
\8eæ
\93¾
\82µ
\82½
\83N
\83b
\83L
\81[
\82Ì
\83T
\83C
\83Y
\82ª0
\82Ì
\8fê
\8d\87\81AnotFoundError
\82ð
\90Ý
\92è
342 result = COOKIE_ERR_DETAIL_NOTFOUND;
346 //
\8c\8b\89Ê
\83R
\81[
\83h
\82ª
\90³
\8fí
\8fI
\97¹
\82Å
\82Í
\82È
\82¢
\8fê
\8d\87results
\82É
\83G
\83\89\81[
\82Ì
\8fÚ
\8d×
\82ð
\90Ý
\92è
350 switch(cookieResult){
351 //
\83o
\83b
\83t
\83@
\92·
\82ª
\91«
\82è
\82È
\82¢
\8fê
\8d\87\82Ì
\83G
\83\89\81[winerror.h
\82É
\90Ý
\92è
\82³
\82ê
\82Ä
\82¢
\82È
\82©
\82Á
\82½
\82Ì
\82Å
\82»
\82Ì
\82Ü
\82Ü
\82Ì
\92l
\82Å
\94ò
\82Ô
\82æ
\82¤
\82É
\82µ
\82Ä
\82 \82é
\82Ç
\82±
\82©
\82É
\92è
\8b`
\82³
\82ê
\82Ä
\82¢
\82é
\82©
\82à
\82µ
\82ê
\82È
\82¢
\82Ì
\82Å
\8c©
\82Â
\82¯
\82½
\82ç
\92è
\8b`
\83}
\83N
\83\8d\82É
\92u
\82«
\8a·
\82¦
\82é
354 result = COOKIEERR_DETAIL_RESULT_TOOBIG;
358 //
\96¢
\92è
\8b`
\82Ì
\83G
\83\89\81[
\82ª
\94
\90¶
\82µ
\82½
\8fê
\8d\87
361 case INTERNET_COOKIE_HTTPONLY:
364 wincheck(cookieResult);
366 result = COOKIE_ERR_UNKNOWN;
370 }//switch(cookieResult)
371 }//if(cookieResult == ERROR_SUCCESS)
372 }//if(wcslen(domeins[index]) >= GET_IE_COOKIE_URL_MAXLENGTH)
378 //
\8aJ
\82¢
\82½
\83\8c\83W
\83X
\83g
\83\8a\82ð
\95Â
\82¶
\82é
385 ///
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
387 static INLINE COOKIE_RESULT GetCookieFireFox(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
389 COOKIE_RESULT result = COOKIE_ERR_OK; //
\8c\8b\89Ê
\83R
\81[
\83h
390 LPCWSTR pName = (LPCWSTR)NULL; //
\96¼
\91O
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
391 LPCWSTR pValue = (LPCWSTR)NULL; //value
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
397 //db,
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82ª
\8aJ
\82©
\82ê
\82Ä
\82¢
\82é
\82©
\83`
\83F
\83b
\83N
398 switch(checkDBAndStmt(&firefoxCookie,&firefoxCookieStmt,fireFoxCookiePath, WTEXT(FIREFOX_GET_COOKIE_SQL))){
404 result = COOKIE_ERR_DBOPEN_FAILED;
408 result = COOKIE_ERR_CREATESTMT_FAILED;
414 EnterCriticalSection(&firefoxCs);
418 switch(sqlite3_bind_text16(firefoxCookieStmt,1,key,-1,SQLITE_STATIC)){
423 switch(sqlite3_bind_text16(firefoxCookieStmt,2,domein,-1,SQLITE_STATIC)){
427 cookieStepExec(firefoxCookieStmt,cookie,bufSize, &result);
429 dumpln(TEXT("firefox:cookie:%s"),cookie);
436 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
443 result = COOKIE_ERR_UNKNOWN;
448 }//switch(sqlite3_bind_text16(firefoxCookieStmt,2,domeins[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
457 result = COOKIE_ERR_DETAIL_KEY_TOOBIG;
463 result = COOKIE_ERR_UNKNOWN;
468 }//switch(sqlite3_bind_text16(firefoxCookieStmt,1,key[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
470 //
\83p
\83\89\83\81\83^
\82Ì
\83\8a\83Z
\83b
\83g(
\83o
\83C
\83\93\83h
\89ð
\8f\9c)
471 sqlite3_reset(firefoxCookieStmt);
475 LeaveCriticalSection(&firefoxCs);
489 ///
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
491 static INLINE COOKIE_RESULT GetCookieGoogleChrome(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
495 COOKIE_RESULT result = COOKIE_ERR_OK; //
\8c\8b\89Ê
\83R
\81[
\83h
496 LPCWSTR pName = (LPCWSTR)NULL; //
\96¼
\91O
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
497 LPCWSTR pValue = (LPCWSTR)NULL; //value
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
498 WCHAR host_key2Buf[LENGTH_DOMEIN] = {L"."}; //
\83h
\83\81\83C
\83\93\82»
\82Ì
\82Q
\97Ì
\88æ
499 LPWSTR pHostKey = &host_key2Buf[1];
505 //db,
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82ª
\8aJ
\82©
\82ê
\82Ä
\82¢
\82é
\82©
\83`
\83F
\83b
\83N
506 switch(checkDBAndStmt(&googleChromeCookie,&googleChromeCookieStmt,googleChromeCookiePath, WTEXT(GOOGLECHROME_GET_COOKIE_SQL))){
512 result = COOKIE_ERR_DBOPEN_FAILED;
516 result = COOKIE_ERR_CREATESTMT_FAILED;
522 EnterCriticalSection(&googleChromeCs);
527 //
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82É
\83p
\83\89\83\81\83^
\82ð
\90Ý
\92è1
528 switch(sqlite3_bind_text16(googleChromeCookieStmt,1,key,-1,SQLITE_STATIC)){
532 //
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82É
\83p
\83\89\83\81\83^
\82ð
\90Ý
\92è2
533 switch(sqlite3_bind_text16(googleChromeCookieStmt,2,domein,-1,SQLITE_STATIC)){
537 if(wcslen(domein) > LENGTH_DOMEIN -2){
539 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
546 wcscpy(pHostKey,domein); //
\82±
\82Ì
\82 \82½
\82è
\82Í
\82à
\82¤
\8f
\82µ
\8cø
\97¦
\89»
\82Å
\82«
\82é
\81H
548 //
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82É
\83p
\83\89\83\81\83^
\82ð
\90Ý
\92è3
549 switch(sqlite3_bind_text16(googleChromeCookieStmt,3,host_key2Buf,-1,SQLITE_STATIC)){
554 //
\83N
\83b
\83L
\81[
\8eæ
\93¾SQL
\8eÀ
\8ds
555 cookieStepExec(googleChromeCookieStmt,cookie,bufSize,&result);
557 dumpln(TEXT("googleChrome:cookie:%s"),cookie);
565 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
572 result = COOKIE_ERR_UNKNOWN;
577 }//switch(sqlite3_bind_text16(googleChromeCookieStmt,3,domeins[index],-1,SQLITE_STATIC))
585 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
592 result = COOKIE_ERR_UNKNOWN;
597 }//switch(sqlite3_bind_text16(googleChromeCookieStmt,2,domeins[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
606 result = COOKIE_ERR_DETAIL_KEY_TOOBIG;
613 result = COOKIE_ERR_UNKNOWN;
616 }//switch(sqlite3_bind_text16(googleChromeCookieStmt,1,key[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
618 //
\83p
\83\89\83\81\83^
\82Ì
\83\8a\83Z
\83b
\83g(
\83o
\83C
\83\93\83h
\89ð
\8f\9c)
619 sqlite3_reset(googleChromeCookieStmt);
623 LeaveCriticalSection(&googleChromeCs);
633 ///
\83I
\83y
\83\89\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
635 static INLINE COOKIE_RESULT GetCookieOpera(LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
637 return COOKIE_ERR_DETAIL_NOTFOUND;
641 ///
\83T
\83t
\83@
\83\8a\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
643 static INLINE COOKIE_RESULT GetCookieSafari(LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
646 return COOKIE_ERR_DETAIL_NOTFOUND;
650 ///
\83N
\83\8d\81[
\83\80\82Æ
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\8b¤
\92Ê
\8f\88\97\9d
653 static INLINE UINT checkDBAndStmt(sqlite3 **db,sqlite3_stmt **stmt,LPCWSTR path,LPCWSTR sql){
656 //DB
\83|
\83C
\83\93\83^
\82ªNULL
\82Ì
\8fê
\8d\87\82à
\82¤
\88ê
\93xDB
\82ð
\83I
\81[
\83v
\83\93\82·
\82é
\82»
\82ê
\82Å
\82àNULL
\82Ì
\8fê
\8d\87\81A
\83G
\83\89\81[
\82ð
\95Ô
\82·
658 SqliteManager_open(db,path,SQLITE_OPEN_READONLY,0);
665 //
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82ªNULL
\82Ì
\8fê
\8d\87\82à
\82¤
\88ê
\93x
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82Ì
\8dì
\90¬
\82ð
\8ds
\82¤
\81A
\8e¸
\94s
\82µ
\82½
\8fê
\8d\87\83G
\83\89\81[
\82ð
\95Ô
\82·
667 SqliteManager_prepare( *db,sql, -1, stmt,(void**)NULL);
679 static INLINE VOID cookieStepExec(sqlite3_stmt *stmt,LPWSTR cookie,SIZE_T bufSize,COOKIE_RESULT *result){
686 //dumpln_mb(CP_UTF8,"sql%s",sqlite3_sql(stmt));
689 //sql
\82ª
\90¬
\8c÷
\82µ
\82½
\8fê
\8d\87\81A
\8eæ
\93¾
\82µ
\82½value
\82ð
\8c\8b\89Ê
\82É
\8eû
\82ß
\82é
690 rc = sqlite3_step( stmt );
692 }while(SQLITE_BUSY == rc || SQLITE_LOCKED == rc);
700 pName = (LPCWSTR)sqlite3_column_text16( stmt, 0 );
701 pValue = (LPCWSTR)sqlite3_column_text16( stmt, 1 );
703 //
\8eæ
\93¾
\82µ
\82½
\95¶
\8e\9a\97ñ
\82ª
\83o
\83b
\83t
\83@
\82Ì
\83T
\83C
\83Y
\82æ
\82è
\91å
\82«
\82©
\82Á
\82½
\8fê
\8d\87\81A
\83o
\83b
\83t
\83@
\83T
\83C
\83Y
\82ª
\8f¬
\82³
\82¢
\83G
\83\89\81[
\82ð
\8ai
\94[
\82·
\82é
704 if(wcslen(pValue) + wcslen(pName) + 2 >= bufSize){
706 *result = COOKIEERR_DETAIL_RESULT_TOOBIG;
712 wcscpy(cookie,pName);
714 wcscat(cookie,pValue);
729 *result = COOKIE_ERR_DETAIL_NOTFOUND;
734 *result = COOKIE_ERR_UNKNOWN;