Advertisement
Guest User

Firewall_all_exe_from_here.cmd

a guest
Dec 20th, 2023
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 4.33 KB | Source Code | 0 0
  1. :: ### Этот скрипт найдёт все исполняемые файлы, начиная с текущей папки, и добавит их в правила блокировки файрволла, запретив доступ в интернет.
  2.  
  3. :: ### Аналогичного эффекта можно добиться, если вручную создавать правила в брандмауэре Windows:
  4. :: ### "Центр управления сетями и общим доступом => Брандмауэр Защитника Windows => Дополнительные параметры => Правила для исходящего подключения"
  5. :: ### Или Start => Run => wf.msc => Outbound rules
  6. :: ### Там же можно удалить ненужные правила.
  7.  
  8. :: ### Скрипт достаточно запускать единожды в каждой новой ОС, или для каждого нового местоположения обрабатываемых файлов.
  9. :: ###
  10.  
  11. @echo off
  12. cd /d "%~dp0"
  13. chcp 65001>Nul &:: для обработки вывода команд независимо от локализации винды
  14. setlocal enabledelayedexpansion &:: для обработки переменных внутри if
  15.  
  16. :: Проверяем чтобы текущий каталог не был сброшен на виндовый (низя запускать из сети)
  17. FOR %%D in ("%WINDIR%" "%WINDIR%\System" "%WINDIR%\System32") DO IF /I "%CD%"==%%D call :WINEND
  18.  
  19. :: Для работы с файрволлом, скрипту нужны права администратора
  20. net session >nul 2>&1 &:: проверка на админа, выдаст errorlevel, который можно обработать
  21. IF '!errorlevel!' NEQ '0' (
  22.    :: Проверяем, можем ли запросить повышение прав (вдруг UAC отключен)
  23.     FOR /f "tokens=3 delims= " %%a IN ('reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin"') DO (IF "%%~a"=="0x0" (echo WARNING: Script cannot run without administrative privileges. You need to enable UAC and reboot. && pause && exit))
  24.    :: Перезапускаем скрипт с запросом UAC используя vbs
  25.     echo Requesting administrative privileges...
  26.    rem (IF exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs") && fsutil dirty query %systemdrive% 1>nul 2>nul || (echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/c cd ""%~sdp0"" && %~s0", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit)
  27.     )
  28.  
  29. :: Рекурсивно ищем все exe-шники, создавая для них правила файрволла
  30. FOR /r %%a IN (*.exe) DO echo Adding "%%~a" && netsh advfirewall firewall add rule name="%%~na" dir=out program="%%~a" profile=any action=block >nul
  31. echo.
  32. echo All firewall rules created.
  33. echo.
  34.  
  35. :: Уведомляем, включен ли файрволл, если нет, то предложим запустить:
  36. netsh advfirewall show currentprofile state | findstr "OFF">Nul && call :FW || echo Firewall current profile is ON, ok to proceed.
  37. echo.
  38. >nul timeout /nobreak 1
  39.  
  40. :: Предлагаем к запуску найденное исполняемое в текущем каталоге:
  41. FOR %%f IN (*.exe) DO (
  42.     set rchoice='' &:: обнуляем выбор, чтобы не повторился для следующего элемента
  43.     set /p "rchoice=Do you want to run as admin %%f? y/N > " &:: запрашиваем, запускать ли текущий найденный exe-шник
  44.     IF /I "!rchoice!"=="y" (echo Running %%f... && %%f)
  45.     )
  46. echo Exitting...
  47. >nul timeout /nobreak 3
  48. exit
  49.  
  50. :WINEND
  51. echo %CD%
  52. echo.
  53. echo This script need to run from local drive.
  54. echo.
  55. echo Exitting without changes...
  56. >nul timeout /nobreak 6
  57. exit
  58.  
  59. :FW
  60. echo WARNING: Firewall current profile state is OFF.
  61. echo.
  62. set /p "fchoice=Do you want enable current firewall profile now? y/N > "
  63. IF /I "!fchoice!"=="y" (
  64.     echo Trying...
  65.     netsh advfirewall set currentprofile state on
  66.     echo Firewall current profile is now turned ON.
  67.     )
  68. exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement