@echo off
setlocal EnableDelayedExpansion
title KAK4I DNS 

net session >nul 2>&1
if %errorlevel% equ 0 goto ADMIN_OK

cls
echo.
echo  ================================================================
echo   [ATTENTION] DROITS ADMINISTRATEUR REQUIS
echo  ================================================================
echo.
echo   Fais un clic droit sur le fichier .bat puis choisis :
echo   Executer en tant qu administrateur
echo.
echo  ================================================================
pause
exit /b

:ADMIN_OK
REM ============================================================
REM  Detection des interfaces reseau actives (via fichier temp)
REM ============================================================
set "TMPETH=%TEMP%\kakai_eth.txt"
set "TMPWIFI=%TEMP%\kakai_wifi.txt"

powershell -NoProfile -Command "Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and $_.MediaType -eq '802.3'} | Select-Object -First 1 -ExpandProperty Name" > "%TMPETH%" 2>nul
powershell -NoProfile -Command "Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and $_.MediaType -like '*802.11*'} | Select-Object -First 1 -ExpandProperty Name" > "%TMPWIFI%" 2>nul

set "IF_ETH="
set "IF_WIFI="
if exist "%TMPETH%" set /p IF_ETH=<"%TMPETH%"
if exist "%TMPWIFI%" set /p IF_WIFI=<"%TMPWIFI%"
del "%TMPETH%" >nul 2>&1
del "%TMPWIFI%" >nul 2>&1

:MENU
cls
echo [38;5;129m  ====================================================================[0m
echo [38;5;93m #   #  ###  #   #  ###  #####   ####  #   #  ####[0m
echo [38;5;129m #  #  #   # #  #  #   #   #     #   # ##  # #    [0m
echo [38;5;201m ###   ##### ###   #####   #     #   # # # #  ### [0m
echo [38;5;129m #  #  #   # #  #  #   #   #     #   # #  ##     #[0m
echo [38;5;93m #   # #   # #   # #   # #####   ####  #   # #### [0m
echo [38;5;129m  ====================================================================[0m
echo.
if defined IF_ETH  (
  echo [38;5;51m  [i][0m Interface Ethernet : [38;5;220m%IF_ETH%[0m
) else (
  echo [38;5;240m  [i] Aucune interface Ethernet active detectee[0m
)
if defined IF_WIFI (
  echo [38;5;51m  [i][0m Interface Wi-Fi     : [38;5;220m%IF_WIFI%[0m
) else (
  echo [38;5;240m  [i] Aucune interface Wi-Fi active detectee[0m
)
echo [38;5;93m --------------------------------------------------------------------[0m
echo  [38;5;220m[1][0m [38;5;15mCLOUDFLARE     [38;5;240m- Rapide / Gaming[0m
echo  [38;5;220m[2][0m [38;5;15mGOOGLE         [38;5;240m- Stabilite maximale[0m
echo  [38;5;220m[3][0m [38;5;15mQUAD9          [38;5;240m- Securite / Anti-Malware[0m
echo  [38;5;220m[4][0m [38;5;15mADGUARD        [38;5;240m- Bloqueur de pubs[0m
echo  [38;5;220m[5][0m [38;5;15mOPENDNS        [38;5;240m- Controle parental[0m
echo [38;5;93m --------------------------------------------------------------------[0m
echo  [38;5;220m[6][0m [38;5;15mTESTER LATENCE (PING)[0m
echo  [38;5;220m[7][0m [38;5;15mETAT DES INTERFACES RESEAU[0m
echo  [38;5;220m[8][0m [38;5;15mNETTOYAGE COMPLET (Flush DNS / Winsock / IP)[0m
echo  [38;5;220m[9][0m [38;5;15mRESTAURER PAR DEFAUT (DHCP)[0m
echo [38;5;93m --------------------------------------------------------------------[0m
echo  [38;5;196m[0][0m [38;5;15mQUITTER[0m
echo [38;5;129m  ====================================================================[0m
set "choix="
set /p choix="[38;5;213mkakai-dns >[0m "

if "%choix%"=="1" goto CLOUDFLARE
if "%choix%"=="2" goto GOOGLE
if "%choix%"=="3" goto QUAD9
if "%choix%"=="4" goto ADGUARD
if "%choix%"=="5" goto OPENDNS
if "%choix%"=="6" goto PINGTEST
if "%choix%"=="7" goto INFOSRESEAU
if "%choix%"=="8" goto RESETDEEP
if "%choix%"=="9" goto RESET
if "%choix%"=="0" goto QUIT
echo  [38;5;196m[!] Choix invalide, reessaie.[0m
timeout /t 1 >nul
goto MENU

:CLOUDFLARE
set "DNS1=1.1.1.1"
set "DNS2=1.0.0.1"
set "NOM=CLOUDFLARE"
goto APPLI

:GOOGLE
set "DNS1=8.8.8.8"
set "DNS2=8.8.4.4"
set "NOM=GOOGLE"
goto APPLI

:QUAD9
set "DNS1=9.9.9.9"
set "DNS2=149.112.112.112"
set "NOM=QUAD9"
goto APPLI

:ADGUARD
set "DNS1=94.140.14.14"
set "DNS2=94.140.15.15"
set "NOM=ADGUARD"
goto APPLI

:OPENDNS
set "DNS1=208.67.222.222"
set "DNS2=208.67.220.220"
set "NOM=OPENDNS"
goto APPLI

:APPLI
echo.
echo [38;5;213m [+] Application de %NOM% en cours...[0m
set "APPLIED=0"
if defined IF_ETH set "APPLIED=1"
if defined IF_ETH netsh interface ip set dns name="%IF_ETH%" source="static" address="%DNS1%" register=PRIMARY >nul 2>&1
if defined IF_ETH netsh interface ip add dns name="%IF_ETH%" address="%DNS2%" index=2 >nul 2>&1
if defined IF_ETH echo [38;5;46m  [OK][0m Applique sur %IF_ETH%
if defined IF_WIFI set "APPLIED=1"
if defined IF_WIFI netsh interface ip set dns name="%IF_WIFI%" source="static" address="%DNS1%" register=PRIMARY >nul 2>&1
if defined IF_WIFI netsh interface ip add dns name="%IF_WIFI%" address="%DNS2%" index=2 >nul 2>&1
if defined IF_WIFI echo [38;5;46m  [OK][0m Applique sur %IF_WIFI%
if "%APPLIED%"=="1" goto FIN
echo [38;5;196m  [!] Aucune interface detectee, tentative sur Ethernet / Wi-Fi par defaut...[0m
netsh interface ip set dns name="Ethernet" source="static" address="%DNS1%" register=PRIMARY >nul 2>&1
netsh interface ip add dns name="Ethernet" address="%DNS2%" index=2 >nul 2>&1
netsh interface ip set dns name="Wi-Fi" source="static" address="%DNS1%" register=PRIMARY >nul 2>&1
netsh interface ip add dns name="Wi-Fi" address="%DNS2%" index=2 >nul 2>&1
goto FIN

:RESET
echo.
echo [38;5;213m [+] Restauration des parametres DHCP...[0m
if defined IF_ETH netsh interface ip set dns name="%IF_ETH%" source="dhcp" >nul 2>&1
if defined IF_WIFI netsh interface ip set dns name="%IF_WIFI%" source="dhcp" >nul 2>&1
if not defined IF_ETH netsh interface ip set dns name="Ethernet" source="dhcp" >nul 2>&1
if not defined IF_WIFI netsh interface ip set dns name="Wi-Fi" source="dhcp" >nul 2>&1
set "NOM=PARAMETRES PAR DEFAUT"
goto FIN

:RESETDEEP
cls
echo [38;5;129m ================================================================[0m
echo [38;5;213m  [!] NETTOYAGE PROFOND DU SYSTEME RESEAU...[0m
echo [38;5;129m ================================================================[0m
ipconfig /flushdns >nul 2>&1
netsh int ip reset >nul 2>&1
netsh int ipv6 reset >nul 2>&1
netsh winsock reset >nul 2>&1
echo [38;5;46m [OK] Reset complet termine.[0m
echo [38;5;240m [i] Un redemarrage peut etre necessaire.[0m
echo [38;5;129m ================================================================[0m
pause
goto MENU

:INFOSRESEAU
cls
echo [38;5;129m ================================================================[0m
echo [38;5;213m  [i] ETAT DES INTERFACES RESEAU ACTIVES[0m
echo [38;5;129m ================================================================[0m
powershell -NoProfile -Command "Get-NetAdapter | Where-Object {$_.Status -eq 'Up'} | Format-Table Name, InterfaceDescription, LinkSpeed -AutoSize"
echo [38;5;129m ================================================================[0m
pause
goto MENU

:PINGTEST
cls
echo [38;5;129m ================================================================[0m
echo [38;5;213m  [i] BENCHMARK LATENCE (PING)[0m
echo [38;5;129m ================================================================[0m
ping -n 2 1.1.1.1
ping -n 2 8.8.8.8
ping -n 2 9.9.9.9
echo [38;5;129m ================================================================[0m
pause
goto MENU

:FIN
echo.
ipconfig /flushdns >nul 2>&1
echo [38;5;46m [OK] Succes ! Profil actif : %NOM%[0m
echo [38;5;129m ================================================================[0m
pause
goto MENU

:QUIT
echo [0m
exit /b
