2 #include "shareCookie.h"
8 #include <sqlite3\sqlite3.h>
9 #include <sqlite3\sqliteManager.h>
11 #include <qwerty\qwerty_common.h>
12 #include <qwerty\windebuger.h>
15 static WCHAR fireFoxCookiePath[_MAX_PATH]; //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82Ì
\83p
\83X
16 static sqlite3 *firefoxCookie; //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82ÌDB
17 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
18 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
21 static WCHAR googleChromeCookiePath[_MAX_PATH]; //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82Ì
\83p
\83X
22 static sqlite3 *googleChromeCookie; //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82ÌDB
23 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
24 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
30 ///
\83N
\83\8d\81[
\83\80\82Æ
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\8b¤
\92Ê
\8f\88\97\9d
32 static INLINE UINT checkDBAndStmt(sqlite3 **db,sqlite3_stmt **stmt,LPCWSTR path,LPCWSTR sql);
33 static INLINE VOID cookieStepExec(sqlite3_stmt *stmt,LPWSTR cooki,SIZE_T bufSize,COOKIE_RESULT *result);
37 ///
\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¾
39 static INLINE COOKIE_RESULT GetCookieInternetExplorer(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein,BOOL isIE);
42 ///
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
44 static INLINE COOKIE_RESULT GetCookieFireFox(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
47 ///
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
49 static INLINE COOKIE_RESULT GetCookieGoogleChrome(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
52 ///
\83I
\83y
\83\89\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
54 static INLINE COOKIE_RESULT GetCookieOpera(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
57 ///
\83T
\83t
\83@
\83\8a\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
59 static INLINE COOKIE_RESULT GetCookieSafari(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein);
61 #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
64 #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é
67 VOID InitializeShareCookie(LPCWSTR appDataPath,LPCWSTR localAppDataPath){
72 WCHAR fireFoxProfilesPath[_MAX_PATH];
73 WCHAR fireFoxCookieTmp[_MAX_PATH];
74 LPWSTR fireFoxCookieFileName = L"cookies.sqlite";
81 wcscpy(fireFoxProfilesPath,appDataPath);
82 wcscat(fireFoxProfilesPath,L"Mozilla\\Firefox\\profiles.ini");
84 GetPrivateProfileStringW(L"Profile0",L"Path",L"",fireFoxCookieTmp,sizeof(fireFoxCookieTmp) / sizeof(fireFoxCookieTmp[0]),fireFoxProfilesPath);
86 for(index = wcsstr(fireFoxCookieTmp,L"/");index != NULL ;index = wcsstr(fireFoxCookieTmp,L"/")){
93 switch(GetPrivateProfileIntW(L"Profile0",L"IsRelative",2,fireFoxProfilesPath)){
97 wcscpy(fireFoxCookiePath,fireFoxCookieTmp);
101 wcscpy(fireFoxCookiePath,appDataPath);
102 wcscat(fireFoxCookiePath,L"Mozilla\\Firefox\\");
103 wcscat(fireFoxCookiePath,fireFoxCookieTmp);
104 wcscat(fireFoxCookiePath,L"\\");
105 wcscat(fireFoxCookiePath,fireFoxCookieFileName);
110 //ZeroMemory(fireFoxCookiePath,sizeof(fireFoxCookiePath) / sizeof(fireFoxCookiePath[0]));
119 if(SqliteManager_open(&firefoxCookie,fireFoxCookiePath,SQLITE_OPEN_READONLY,0) == SQLITE_OK){
121 rc = SqliteManager_prepare( firefoxCookie, WTEXT(FIREFOX_GET_COOKIE_SQL), -1, &firefoxCookieStmt,(void**)NULL);
122 dumpln(TEXT("firefox
\82Ì
\83N
\83b
\83L
\81[
\83t
\83@
\83C
\83\8b\82ð
\8aJ
\82¢
\82½"));
125 checkDBAndStmt(&firefoxCookie,&firefoxCookieStmt,fireFoxCookiePath,WTEXT(FIREFOX_GET_COOKIE_SQL));
127 InitializeCriticalSection(&firefoxCs);
130 //GoogleChrome
\82Ì
\90Ý
\92è
133 wcscpy(googleChromeCookiePath,localAppDataPath);
134 wcscat(googleChromeCookiePath,L"Google\\Chrome\\User Data\\Default\\Cookies");
139 if(SqliteManager_open(&googleChromeCookie,googleChromeCookiePath,SQLITE_OPEN_READONLY,0) == SQLITE_OK){
142 rc = SqliteManager_prepare( googleChromeCookie, WTEXT(GOOGLECHROME_GET_COOKIE_SQL), -1, &googleChromeCookieStmt,(void**)NULL);
143 dumpln(TEXT("chrome
\82Ì
\83N
\83b
\83L
\81[
\83t
\83@
\83C
\83\8b\82ð
\8aJ
\82¢
\82½"));
146 checkDBAndStmt(&googleChromeCookie,&googleChromeCookieStmt,googleChromeCookiePath,WTEXT(GOOGLECHROME_GET_COOKIE_SQL));
148 InitializeCriticalSection(&googleChromeCs);
161 VOID FinalizeShareCookie(){
164 DeleteCriticalSection(&firefoxCs);
165 DeleteCriticalSection(&googleChromeCs);
166 sqlite3_finalize(firefoxCookieStmt);
167 sqlite3_finalize(googleChromeCookieStmt);
168 SqliteManager_close(&firefoxCookie);
169 SqliteManager_close(&googleChromeCookie);
178 COOKIE_RESULT GetCookie(BROWSERTYPE browserType,LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
180 //
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82É
\82æ
\82è
\8eÀ
\8ds
\82·
\82é
\8aÖ
\90\94\82ð
\8c\88\92è
\82·
\82é
185 case BT_INTERNET_EXPLORER:
188 return GetCookieInternetExplorer(cookie,bufSize,key,domein,TRUE);
190 //
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\8fê
\8d\87
193 return GetCookieFireFox(cookie,bufSize,key,domein);
195 //
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\8fê
\8d\87
196 case BT_GOOGLE_CHROME:
199 return GetCookieGoogleChrome(cookie,bufSize,key,domein);
201 //
\83I
\83y
\83\89\82Ì
\8fê
\8d\87
205 return GetCookieOpera(cookie,bufSize,key,domein);
207 //
\83T
\83t
\83@
\83\8a\82Ì
\8fê
\8d\87
210 return GetCookieSafari(cookie,bufSize,key,domein);
213 //IE
\83R
\83\93\83|
\81[
\83l
\83\93\83g
\82Ì
\8fê
\8d\87
214 case BT_IE_COMPONENT:
216 return GetCookieInternetExplorer(cookie,bufSize,key,domein,FALSE);
219 //
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82ª
\90Ý
\92è
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\8fê
\8d\87
222 return COOKIE_ERR_BROWSERTYPE_NOSETTING;
227 //
\96¢
\92è
\8b`
\82Ì
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82ª
\8ew
\92è
\82³
\82ê
\82½
\8fê
\8d\87
230 return COOKIE_ERR_UNDEFINED_BROWSERTYPE;
241 ///
\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¾
243 static INLINE COOKIE_RESULT GetCookieInternetExplorer(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein,BOOL isIE){
245 #define GET_IE_COOKIE_URL_MAXLENGTH LENGTH_512 //url
\83o
\83b
\83t
\83@
\92·
247 HKEY hKey = (HKEY)NULL; //
\83\8c\83W
\83X
\83g
\83\8a\83L
\81[
248 COOKIE_RESULT result = COOKIE_ERR_OK; //
\8c\8b\89Ê
\83R
\81[
\83h
249 DWORD data; //
\83\8c\83W
\83X
\83g
\83\8a\92l
\8ai
\94[
\95Ï
\90\94
250 DWORD size = sizeof(data); //data
\82Ì
\83T
\83C
\83Y
251 HRESULT cookieResult; //
\83N
\83b
\83L
\81[
\8eæ
\93¾
\8c\8b\89Ê
\83R
\81[
\83h
252 BOOL isProtectedMode = FALSE; //
\95Û
\8cì
\83\82\81[
\83h
\83t
\83\89\83O
253 WCHAR url[GET_IE_COOKIE_URL_MAXLENGTH]; //url
\83o
\83b
\83t
\83@
255 //IE
\82©IE
\83R
\83\93\83|
\81[
\83l
\83\93\83g
\82©
\82ð
\94»
\92è
258 //
\83\8c\83W
\83X
\83g
\83\8a\83L
\81[
\82ð
\93Ç
\82Ý
\8eæ
\82è
\90ê
\97p
\82Å
\83I
\81[
\83v
\83\93
259 if(RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3"),0,KEY_READ,&hKey) != ERROR_SUCCESS){
260 return COOKIE_ERR_INTERNETOPTION_NOTOPEN;
267 //
\95Û
\8cì
\83\82\81[
\83h
\82Ì
\8fó
\91Ô
\82ð
\8eæ
\93¾
268 switch(RegQueryValueEx(hKey,TEXT("2500"),(LPDWORD)NULL,(LPDWORD)NULL,(LPBYTE)&data,&size)){
271 //
\95Û
\8cì
\83\82\81[
\83h
\8eæ
\93¾
\82É
\90¬
\8c÷
274 //
\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é
275 isProtectedMode = data == 0;
281 //
\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é
282 case ERROR_FILE_NOT_FOUND:
288 //
\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é
291 result = COOKIE_ERR_PROTECTIONMODE_READFAILD;
294 }//switch(RegQueryValueEx(hKey,TEXT("2500"),(LPDWORD)NULL,(LPDWORD)NULL,(LPBYTE)&data,&size))
302 //
\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é
303 if(wcslen(domein) >= GET_IE_COOKIE_URL_MAXLENGTH){
304 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
308 //
\83h
\83\81\83C
\83\93\82©
\82çurl
\82ð
\90Ý
\92è
309 wcscpy(url,L"http://");
312 //
\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¾
313 if(isProtectedMode == TRUE){
314 cookieResult = IEGetProtectedModeCookie(url,key,cookie,&bufSize,0);
317 //
\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¾
319 if(InternetGetCookieEx(url,key,cookie,&bufSize,0,NULL) == TRUE){
323 cookieResult = GetLastError();
332 //
\8c\8b\89Ê
\83R
\81[
\83h
\94»
\92è
333 if(cookieResult == ERROR_SUCCESS){
336 //
\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è
339 result = COOKIE_ERR_OK;
341 //
\8eæ
\93¾
\82µ
\82½
\83N
\83b
\83L
\81[
\82Ì
\83T
\83C
\83Y
\82ª0
\82Ì
\8fê
\8d\87\81AnotFoundError
\82ð
\90Ý
\92è
343 result = COOKIE_ERR_DETAIL_NOTFOUND;
347 //
\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è
351 switch(cookieResult){
352 //
\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é
355 result = COOKIEERR_DETAIL_RESULT_TOOBIG;
359 //
\96¢
\92è
\8b`
\82Ì
\83G
\83\89\81[
\82ª
\94
\90¶
\82µ
\82½
\8fê
\8d\87
362 case INTERNET_COOKIE_HTTPONLY:
365 wincheck(cookieResult);
367 result = COOKIE_ERR_UNKNOWN;
371 }//switch(cookieResult)
372 }//if(cookieResult == ERROR_SUCCESS)
373 }//if(wcslen(domeins[index]) >= GET_IE_COOKIE_URL_MAXLENGTH)
379 //
\8aJ
\82¢
\82½
\83\8c\83W
\83X
\83g
\83\8a\82ð
\95Â
\82¶
\82é
386 ///
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
388 static INLINE COOKIE_RESULT GetCookieFireFox(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
390 COOKIE_RESULT result = COOKIE_ERR_OK; //
\8c\8b\89Ê
\83R
\81[
\83h
391 LPCWSTR pName = (LPCWSTR)NULL; //
\96¼
\91O
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
392 LPCWSTR pValue = (LPCWSTR)NULL; //value
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
398 //db,
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82ª
\8aJ
\82©
\82ê
\82Ä
\82¢
\82é
\82©
\83`
\83F
\83b
\83N
399 switch(checkDBAndStmt(&firefoxCookie,&firefoxCookieStmt,fireFoxCookiePath, WTEXT(FIREFOX_GET_COOKIE_SQL))){
405 result = COOKIE_ERR_DBOPEN_FAILED;
409 result = COOKIE_ERR_CREATESTMT_FAILED;
415 EnterCriticalSection(&firefoxCs);
419 switch(sqlite3_bind_text16(firefoxCookieStmt,1,key,-1,SQLITE_STATIC)){
424 switch(sqlite3_bind_text16(firefoxCookieStmt,2,domein,-1,SQLITE_STATIC)){
428 cookieStepExec(firefoxCookieStmt,cookie,bufSize, &result);
437 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
444 result = COOKIE_ERR_UNKNOWN;
449 }//switch(sqlite3_bind_text16(firefoxCookieStmt,2,domeins[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
458 result = COOKIE_ERR_DETAIL_KEY_TOOBIG;
464 result = COOKIE_ERR_UNKNOWN;
469 }//switch(sqlite3_bind_text16(firefoxCookieStmt,1,key[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
471 //
\83p
\83\89\83\81\83^
\82Ì
\83\8a\83Z
\83b
\83g(
\83o
\83C
\83\93\83h
\89ð
\8f\9c)
472 sqlite3_reset(firefoxCookieStmt);
476 LeaveCriticalSection(&firefoxCs);
490 ///
\83O
\81[
\83O
\83\8b\83N
\83\8d\81[
\83\80\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
492 static INLINE COOKIE_RESULT GetCookieGoogleChrome(LPWSTR cookie,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
496 COOKIE_RESULT result = COOKIE_ERR_OK; //
\8c\8b\89Ê
\83R
\81[
\83h
497 LPCWSTR pName = (LPCWSTR)NULL; //
\96¼
\91O
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
498 LPCWSTR pValue = (LPCWSTR)NULL; //value
\82Ì
\92l
\82ð
\8am
\95Û
\82·
\82é
\88ê
\8e\9e\93I
\82È
\83|
\83C
\83\93\83^
499 WCHAR host_key2Buf[LENGTH_DOMEIN] = {L"."}; //
\83h
\83\81\83C
\83\93\82»
\82Ì
\82Q
\97Ì
\88æ
500 LPWSTR pHostKey = &host_key2Buf[1];
506 //db,
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82ª
\8aJ
\82©
\82ê
\82Ä
\82¢
\82é
\82©
\83`
\83F
\83b
\83N
507 switch(checkDBAndStmt(&googleChromeCookie,&googleChromeCookieStmt,googleChromeCookiePath, WTEXT(GOOGLECHROME_GET_COOKIE_SQL))){
513 result = COOKIE_ERR_DBOPEN_FAILED;
517 result = COOKIE_ERR_CREATESTMT_FAILED;
523 EnterCriticalSection(&googleChromeCs);
528 //
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82É
\83p
\83\89\83\81\83^
\82ð
\90Ý
\92è1
529 switch(sqlite3_bind_text16(googleChromeCookieStmt,1,key,-1,SQLITE_STATIC)){
533 //
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82É
\83p
\83\89\83\81\83^
\82ð
\90Ý
\92è2
534 switch(sqlite3_bind_text16(googleChromeCookieStmt,2,domein,-1,SQLITE_STATIC)){
538 if(wcslen(domein) > LENGTH_DOMEIN -2){
540 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
547 wcscpy(pHostKey,domein); //
\82±
\82Ì
\82 \82½
\82è
\82Í
\82à
\82¤
\8f
\82µ
\8cø
\97¦
\89»
\82Å
\82«
\82é
\81H
549 //
\83X
\83e
\81[
\83g
\83\81\83\93\83g
\82É
\83p
\83\89\83\81\83^
\82ð
\90Ý
\92è3
550 switch(sqlite3_bind_text16(googleChromeCookieStmt,3,host_key2Buf,-1,SQLITE_STATIC)){
555 //
\83N
\83b
\83L
\81[
\8eæ
\93¾SQL
\8eÀ
\8ds
556 cookieStepExec(googleChromeCookieStmt,cookie,bufSize,&result);
566 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
573 result = COOKIE_ERR_UNKNOWN;
578 }//switch(sqlite3_bind_text16(googleChromeCookieStmt,3,domeins[index],-1,SQLITE_STATIC))
586 result = COOKIE_ERR_DETAIL_URL_TOOBIG;
593 result = COOKIE_ERR_UNKNOWN;
598 }//switch(sqlite3_bind_text16(googleChromeCookieStmt,2,domeins[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
607 result = COOKIE_ERR_DETAIL_KEY_TOOBIG;
614 result = COOKIE_ERR_UNKNOWN;
617 }//switch(sqlite3_bind_text16(googleChromeCookieStmt,1,key[index],sizeof(WCHAR) * (wcslen(key[index]) + 1),SQLITE_STATIC))
619 //
\83p
\83\89\83\81\83^
\82Ì
\83\8a\83Z
\83b
\83g(
\83o
\83C
\83\93\83h
\89ð
\8f\9c)
620 sqlite3_reset(googleChromeCookieStmt);
624 LeaveCriticalSection(&googleChromeCs);
634 ///
\83I
\83y
\83\89\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
636 static INLINE COOKIE_RESULT GetCookieOpera(LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
638 return COOKIE_ERR_DETAIL_NOTFOUND;
642 ///
\83T
\83t
\83@
\83\8a\82Ì
\83N
\83b
\83L
\81[
\82ð
\8eæ
\93¾
644 static INLINE COOKIE_RESULT GetCookieSafari(LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){
647 return COOKIE_ERR_DETAIL_NOTFOUND;
651 ///
\83N
\83\8d\81[
\83\80\82Æ
\83t
\83@
\83C
\83A
\83t
\83H
\83b
\83N
\83X
\82Ì
\8b¤
\92Ê
\8f\88\97\9d
654 static INLINE UINT checkDBAndStmt(sqlite3 **db,sqlite3_stmt **stmt,LPCWSTR path,LPCWSTR sql){
657 //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·
659 SqliteManager_open(db,path,SQLITE_OPEN_READONLY,0);
666 //
\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·
668 SqliteManager_prepare( *db,sql, -1, stmt,(void**)NULL);
680 static INLINE VOID cookieStepExec(sqlite3_stmt *stmt,LPWSTR cookie,SIZE_T bufSize,COOKIE_RESULT *result){
687 //dumpln_mb(CP_UTF8,"sql%s",sqlite3_sql(stmt));
690 //sql
\82ª
\90¬
\8c÷
\82µ
\82½
\8fê
\8d\87\81A
\8eæ
\93¾
\82µ
\82½value
\82ð
\8c\8b\89Ê
\82É
\8eû
\82ß
\82é
691 rc = sqlite3_step( stmt );
693 }while(SQLITE_BUSY == rc || SQLITE_LOCKED == rc);
701 pName = (LPCWSTR)sqlite3_column_text16( stmt, 0 );
702 pValue = (LPCWSTR)sqlite3_column_text16( stmt, 1 );
704 //
\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é
705 if(wcslen(pValue) + wcslen(pName) + 2 >= bufSize){
707 *result = COOKIEERR_DETAIL_RESULT_TOOBIG;
713 wcscpy(cookie,pName);
715 wcscat(cookie,pValue);
730 *result = COOKIE_ERR_DETAIL_NOTFOUND;
735 *result = COOKIE_ERR_UNKNOWN;