Windows 2000のIE6SP1で TLS 1.2 が本当に使えないのか調べてみた
Windows 2000で TLS 1.2 が本当に使えないのか調べてみた
Windowsには、WinInetとWinHttpの2つのHTTPスタックがあります
前の記事でWINHTTPを使ったプログラムではWin2000でもTLS 1.2 に接続できたのに IE6では接続できなかったのは、WININET を使っているからです。
IE6SP1のWININETでは、
push L6307919C push SSZ63001F3C_SecureProtocols call SUB_L630218C3 |
Software\Microsoft\Windows\CurrentVersion\Internet Settings
のSecureProtocols の値を読み込んで L6307919C に一時格納しています。
L6302AA32: mov eax,[esi+78h] mov [eax],ebx lea eax,[esi+00000088h] mov dword ptr [esi+00000080h],00000001h mov [esi+00000084h],eax mov [esi+7Ch],ebx mov eax,[L6307919C] cmp eax,[L6307965C] jz L6302AA9D push L6307DBD4 call [KERNEL32.dll!EnterCriticalSection] push ebx call SUB_L6302924A push L6307DBD4 call [KERNEL32.dll!LeaveCriticalSection] jmp L6302AA9D L6302AA7B: mov ecx,[edi+3Ch] mov eax,ecx imul eax,1Ch cmp [eax+L63079618],ebx jz L6302AA99 mov edx,[L6307919C] test [eax+L6307961C],edx jnz L6302AAAB |
この値を L6307965C と比較して更新があるかチェックします。
更新があれば、 L6307961C またはL63079638と ANDを取って処理します。
この L6307961C はSecureProtocols の有効なフラグの乗数で
IE6SP1では 0x800000AA 固定です。
PCT 1.0 を使用する:0x0002
SSL 2.0 を使用する:0x0008
SSL 3.0 を使用する:0x0020
TLS 1.0 を使用する:0x0080
TLS 1.1 を使用する:0x0200
TLS 1.2 を使用する:0x0800
つまり、L6307961C を 0x80000AAA に書き換えれば TLS 1.2 のページがIE6SP1で表示できるのでは?
試してみた
:
…表示できた… (・ω・) ええんかいw
#IE6で接続するのは危険なのでよいこのみんなは真似をしないでね!
Comments