Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :: ### Этот скрипт найдёт все исполняемые файлы, начиная с текущей папки, и добавит их в правила блокировки файрволла, запретив доступ в интернет.
- :: ### Аналогичного эффекта можно добиться, если вручную создавать правила в брандмауэре Windows:
- :: ### "Центр управления сетями и общим доступом => Брандмауэр Защитника Windows => Дополнительные параметры => Правила для исходящего подключения"
- :: ### Или Start => Run => wf.msc => Outbound rules
- :: ### Там же можно удалить ненужные правила.
- :: ### Скрипт достаточно запускать единожды в каждой новой ОС, или для каждого нового местоположения обрабатываемых файлов.
- :: ###
- @echo off
- cd /d "%~dp0"
- chcp 65001>Nul &:: для обработки вывода команд независимо от локализации винды
- setlocal enabledelayedexpansion &:: для обработки переменных внутри if
- :: Проверяем чтобы текущий каталог не был сброшен на виндовый (низя запускать из сети)
- FOR %%D in ("%WINDIR%" "%WINDIR%\System" "%WINDIR%\System32") DO IF /I "%CD%"==%%D call :WINEND
- :: Для работы с файрволлом, скрипту нужны права администратора
- net session >nul 2>&1 &:: проверка на админа, выдаст errorlevel, который можно обработать
- IF '!errorlevel!' NEQ '0' (
- :: Проверяем, можем ли запросить повышение прав (вдруг UAC отключен)
- 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))
- :: Перезапускаем скрипт с запросом UAC используя vbs
- echo Requesting administrative privileges...
- 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)
- )
- :: Рекурсивно ищем все exe-шники, создавая для них правила файрволла
- 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
- echo.
- echo All firewall rules created.
- echo.
- :: Уведомляем, включен ли файрволл, если нет, то предложим запустить:
- netsh advfirewall show currentprofile state | findstr "OFF">Nul && call :FW || echo Firewall current profile is ON, ok to proceed.
- echo.
- >nul timeout /nobreak 1
- :: Предлагаем к запуску найденное исполняемое в текущем каталоге:
- FOR %%f IN (*.exe) DO (
- set rchoice='' &:: обнуляем выбор, чтобы не повторился для следующего элемента
- set /p "rchoice=Do you want to run as admin %%f? y/N > " &:: запрашиваем, запускать ли текущий найденный exe-шник
- IF /I "!rchoice!"=="y" (echo Running %%f... && %%f)
- )
- echo Exitting...
- >nul timeout /nobreak 3
- exit
- :WINEND
- echo %CD%
- echo.
- echo This script need to run from local drive.
- echo.
- echo Exitting without changes...
- >nul timeout /nobreak 6
- exit
- :FW
- echo WARNING: Firewall current profile state is OFF.
- echo.
- set /p "fchoice=Do you want enable current firewall profile now? y/N > "
- IF /I "!fchoice!"=="y" (
- echo Trying...
- netsh advfirewall set currentprofile state on
- echo Firewall current profile is now turned ON.
- )
- exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement