@echo off
chcp 65001 >nul
title TITAN VPN - Windows 종합 수리 / 一键修复
:: ===== 관리자 권한 자가 승격 / Auto-elevate to Administrator =====
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo  관리자 권한 요청 창에서 "예"를 눌러주세요. / 请在弹窗点击"是"。
    powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
    exit /b
)
echo  ============================================================
echo    TITAN VPN  Windows 종합 수리 / 一键修复
echo  ============================================================
echo.

echo  [1/5] TLS 1.2 활성화  (Win7 로그인/API 연결 안될때 핵심수정)
echo         启用 TLS 1.2 (Win7 无法登录/连接时必修)
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f >nul 2>&1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /v DefaultSecureProtocols /t REG_DWORD /d 0xA00 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /v DefaultSecureProtocols /t REG_DWORD /d 0xA00 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" /v SchUseStrongCrypto /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" /v SchUseStrongCrypto /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f >nul 2>&1
echo        완료. / 完成。
echo.

echo  [2/5] IKEv2 인증서 설치 / 安装 IKEv2 证书 ...
echo        (IKEv2 연결 후 바로 끊길 때 핵심 원인 / 连接后即断的核心原因)
powershell -NoProfile -Command "[IO.File]::WriteAllBytes($env:TEMP+'\t_c1.cer',[Convert]::FromBase64String('MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZLubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc='))"
certutil -addstore -f Root "%TEMP%\t_c1.cer" >nul 2>&1 && echo    OK - ISRG Root X1 (Lets Encrypt)
del "%TEMP%\t_c1.cer" >nul 2>&1
powershell -NoProfile -Command "[IO.File]::WriteAllBytes($env:TEMP+'\t_c2.cer',[Convert]::FromBase64String('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'))"
certutil -addstore -f Root "%TEMP%\t_c2.cer" >nul 2>&1 && echo    OK - USERTrust RSA
del "%TEMP%\t_c2.cer" >nul 2>&1
powershell -NoProfile -Command "[IO.File]::WriteAllBytes($env:TEMP+'\t_c3.cer',[Convert]::FromBase64String('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'))"
certutil -addstore -f Root "%TEMP%\t_c3.cer" >nul 2>&1 && echo    OK - Sectigo R46
del "%TEMP%\t_c3.cer" >nul 2>&1
powershell -NoProfile -Command "[IO.File]::WriteAllBytes($env:TEMP+'\t_c4.cer',[Convert]::FromBase64String('MIIFezCCA2OgAwIBAgIUUoj4wZpefcef9Ovirqod9OvAk/QwDQYJKoZIhvcNAQELBQAwTDELMAkGA1UEBhMCS1IxFzAVBgNVBAoMDlRpdGFuIE5ldHdvcmtzMSQwIgYDVQQDDBtUaXRhbiBOZXR3b3JrcyBSb290IENBIDIwMjYwIBcNMjYwNjIxMDIwNjA3WhgPMjA1NjA2MjEwMjA2MDdaMEwxCzAJBgNVBAYTAktSMRcwFQYDVQQKDA5UaXRhbiBOZXR3b3JrczEkMCIGA1UEAwwbVGl0YW4gTmV0d29ya3MgUm9vdCBDQSAyMDI2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtTtwbOxjJpyQ2TabqR7FL1O1bY/FxebX3Zjkq6YvldCPVd03exKxnO3Bgr8RhOFPPx8avQXFjw5n3Wx87qdezG9mIU2A7PpZ2mjn6coTKZeN61eVLGO7Mz9To8KaWDCc3qBFc8LOQIhMftO3VzEbljS/lur71t1w39YYMy+ibA5tzWjkWB173XinxkAhVIzK0AwcbiFXurg6T+sb3LldRDaImrfw1r+gVBUlhC4LwRkysQwprJbUEPZPlfGPnepmEveWvgBgn5CgZDYPgaZWsgBHmUlIZ04MAExcEecxXx0xXX2uzc1X5IRvY6GOyFC11IXUa0JAPcSYP8ZfSgADV48YL/RmkT1AqtwFFIHRmQSb6JhJ6pF/bBYjVrl0uIqlM2zukqVYZm2AQUSTFMTWJ06S8yGKFWHH3aX1A0Km9ZhGEdMy+owOT4PcQaB2dFyGhvapdREwJleBZ9NJmF5m0/2lM5T4qbYMdgpgyLa4HbrxsDEdKCkhS7wARZqjZIPKEnYf1MdPc5IXG17GOOoKjjRWCmcCfEfovuFBHMSJAaigLx1PKs9mLm8nuk3frbs7XGjCLpiahZUV4fBvCRgjyC8rwsA19kcXK7qCskQWE361CNjiW/JkzrEyUqsAjyi3gpz8HpcL3C46obCLaUukOjlEozL84r06RiUS+8HS8FMCAwEAAaNTMFEwHQYDVR0OBBYEFPnnSF095gy7dAIQEdlPWOtLjpNrMB8GA1UdIwQYMBaAFPnnSF095gy7dAIQEdlPWOtLjpNrMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBABS4z1e3e1Y0KtvJLeYjeFuf90vRN7ozx02FcGcItBIPFaEjZaanSMCbmFdrt9VW3vZjKcZL8yx26rxZ2XNG0tdyUxyscWo6tG5rouUtgIO6eF5jgTTSP02q3rKjFSqRfSFQ0gdyehTGDwxrfIqvicumWeDNvZ2zSD5MTrUU8BG4D9UejRvEFOjRAB8nULJwMcWOgRlIOvPP9bA4ft5qcrvfEgCnLPOFbF5I42pTAyQnEjvbjHPOoSw+LgxOHI9fs6aCjbJW/q5yY5e5Y2qYIpeKdYzj5Wse2hGbsEbroQ3CWnSP+fOHPv+eXFiilMpxO/wlBNo/zDGhkN+FwpnbqTmWllNOcAmDoTot9FUFdd/n1h/CwKiQ+zuIdwpyn99G1vmDmmOrLOUebw0Zr/xq+YY6zb0Fz+DLAPL+7SExlkS/eE2II01N5sG6wrYReSLM4mpiMsJ3Nz3M+5DDX3IDA5n4xEnnY2FZazBLksZrjLLwmSoKc55D4VQG7uzdliaDWJrt0YWptex4jhloeal3bdAt57maVpAwXSulGNDTpqYWAKgFS1X6eWjr5QsXL8pgTzpj0q5dGLnGPKkBbKaWun1bm34hlxZSfS4pk+PgZ3nPTfddJPT88tVEu72G058j4vc1IBOYZn4CJ3+s9WC+EQuH4MT2Lxa/PEEeo0ALVoVZ'))"
certutil -addstore -f Root "%TEMP%\t_c4.cer" >nul 2>&1 && echo    OK - Titan Networks Root CA
del "%TEMP%\t_c4.cer" >nul 2>&1
echo.

echo  [3/5] 어댑터 / 프록시 / DNS / 방화벽 / 연결방해 요소 제거 ...
echo         重置网络 / 清除干扰项 ...
:: --- IKEv2 어댑터 리셋 ---
rasdial /disconnect >nul 2>&1
netsh interface set interface "WAN Miniport (IKEv2)" admin=disable >nul 2>&1
timeout /t 2 /nobreak >nul
netsh interface set interface "WAN Miniport (IKEv2)" admin=enable >nul 2>&1
:: --- 다른 VPN이 강제 설정한 프록시 해제 (Panda, 360VPN 등) ---
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f >nul 2>&1
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /f >nul 2>&1
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f >nul 2>&1
netsh winhttp reset proxy >nul 2>&1
:: --- 수동 고정 DNS → 자동으로 복원 ---
powershell -NoProfile -Command "Get-WmiObject Win32_NetworkAdapterConfiguration -Filter 'IPEnabled=true' | ForEach-Object { $_.SetDNSServerSearchOrder() | Out-Null }" >nul 2>&1
ipconfig /flushdns >nul 2>&1
:: --- IKEv2 방화벽 규칙 추가 (UDP 500/4500) ---
netsh advfirewall firewall delete rule name="TITAN VPN IKEv2" >nul 2>&1
netsh advfirewall firewall delete rule name="TITAN VPN IKEv2 In" >nul 2>&1
netsh advfirewall firewall add rule name="TITAN VPN IKEv2" dir=out action=allow protocol=UDP remoteport=500,4500 >nul 2>&1
netsh advfirewall firewall add rule name="TITAN VPN IKEv2 In" dir=in action=allow protocol=UDP localport=500,4500 >nul 2>&1
:: --- TCP 최적화 (고지연 경로 China-Korea) ---
netsh int tcp set global autotuninglevel=normal >nul 2>&1
netsh int tcp set global ecncapability=disabled >nul 2>&1
:: --- IPSec IKE 서비스 재시작 ---
sc stop IKEEXT >nul 2>&1
timeout /t 2 /nobreak >nul
sc start IKEEXT >nul 2>&1
echo        완료 (어댑터+프록시+DNS+방화벽+TCP). / 完成。
echo.

echo  [4/5] 스테일 Wintun 어댑터 제거 + Wintun 드라이버 기동 ...
echo         清除残留 Wintun 虚拟网卡 + 启动 Wintun 驱动 ...
powershell -NoProfile -Command "Get-PnpDevice | Where-Object { $_.FriendlyName -like '*Wintun*' } | Remove-PnpDevice -Confirm:$false -ErrorAction SilentlyContinue" >nul 2>&1
sc start wintun >nul 2>&1
echo        완료. / 完成。
echo.

echo  ============================================================
echo    IKEv2 / V2RAY 수리 완료!
echo    修复完成! 请在应用中重新连接。
echo  ============================================================
echo.

echo  [5/5] 앱이 아예 안 켜지거나 실행 직후 꺼지나요?
echo        그런 경우만 .NET / VC++ 런타임을 설치하면 됩니다 (~80MB).
echo        应用打不开/秒退? 仅这种情况才需安装 .NET / VC++ (较大)。
set /p ans="   설치할까요? Y(예) / N(건너뛰기) 후 Enter: "
if /i "%ans%"=="Y" (
    echo.
    echo    다운로드+설치 중... / 正在下载安装 ...
    powershell -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -UseBasicParsing -Uri 'https://aka.ms/vs/17/release/vc_redist.x86.exe' -OutFile \"$env:TEMP\vcx86.exe\""
    powershell -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -UseBasicParsing -Uri 'https://aka.ms/vs/17/release/vc_redist.x64.exe' -OutFile \"$env:TEMP\vcx64.exe\""
    powershell -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -UseBasicParsing -Uri 'https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-x64.exe' -OutFile \"$env:TEMP\dotnet.exe\""
    "%TEMP%\vcx86.exe" /install /quiet /norestart
    "%TEMP%\vcx64.exe" /install /quiet /norestart
    "%TEMP%\dotnet.exe" /install /quiet /norestart
    del "%TEMP%\vcx86.exe" "%TEMP%\vcx64.exe" "%TEMP%\dotnet.exe" >nul 2>&1
    echo    런타임 설치 완료. / 运行库安装完成。
)
echo.
echo  ============================================================
echo    모든 수리 완료! PC 재부팅 후 사용을 권장합니다.
echo    全部完成! 建议重启电脑后使用。
echo  ============================================================
echo.
pause
