标题: [原创]切断本机与指定ip的连接,可以自动搜索当前连接.
[打印本页]
作者: sonicandy
时间: 2007-9-12 20:36
标题: [原创]切断本机与指定ip的连接,可以自动搜索当前连接.
@echo off && setlocal enabledelayedexpansion
call :getip
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::说明: 现在有好多恶意网站,浏览这种站点后会自动下载很多病毒
:: 这个时候最好是马上将这个站点屏蔽掉,然后进行病毒查杀
:: 通过本批处理就可以迅速实现这个操作.
:: 作者: sonic_andy
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::显示菜单
:ag
cls
echo 1.输入要屏蔽的IP
echo.
echo 2.恢复被屏蔽的IP
echo.
echo 3.显示屏蔽列表
echo.
echo 4.退出批处理程序
echo.
set /p ch=请选择:
cls
if "%ch%"=="1" call :block
if "%ch%"=="2" call :unblock
if "%ch%"=="3" call :print
if "%ch%"=="4" exit
goto :ag
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::屏蔽指定的IP/当前连接中的所有IP
:block
set /p site=请输入屏蔽的地址(0为添加当前连接的所有IP):
echo 处理中,请稍候...
if "!site!"=="0" (
@for /f "tokens=4 skip=4 delims=: " %%i in ('netstat -n') do (
call :add %%i
)
) else (
echo !site! | findstr [0-9]*.[0-9]*.[0-9]*.[0-9]* >nul
if !errorlevel!==1 (
for /f "tokens=2 delims=[]" %%i in ('ping -n 1 -w 1 !site!') do (
set site=%%i
)
echo !site! | findstr [0-9]*.[0-9]*.[0-9]*.[0-9]* >nul
if !errorlevel!==1 exit /b
)
call :add !site!
)
pause
exit /b
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::解除被屏蔽的IP地址
:unblock
set /p site=请输入需要恢复的IP(0为恢复所有IP):
echo 处理中,请稍候...
if "!site!"=="0" (
@for /f "tokens=1,3 delims= " %%i in ('route print') do (
if "%%j"=="!ip!" (
route delete %%i 1>nul 2>nul
echo 已恢复%%i
)
)
pause
exit /b
) else (
@for /f "tokens=1,3 delims= " %%i in ('route print') do (
if "%%j"=="!ip!" (
if "%%i"=="!site!" (
route delete %%i 1>nul 2>nul
echo 已恢复%%i
exit /b
)
)
)
echo 未找到!site!
pause
exit /b
)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::显示所有被屏蔽的IP
:print
echo [被屏蔽的IP列表]
@for /f "tokens=1,3 delims= " %%i in ('route print') do (
if "%%j"=="!ip!" echo %%i
)
pause
exit /b
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::添加IP或域名(%1)到路由表,将被映射到!ip!以屏蔽
:add
set site=%1
if "!site!"=="127.0.0.1" exit /b
@for /f "tokens=1,3 delims= " %%i in ('route print') do (
if "%%j"=="!ip!" (
if "%%i"=="!site!" exit /b
)
)
echo 正在屏蔽!site!
route add !site! !ip! if 2
exit /b
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::得到本机ip将最后一位转换为0,然后作为路由表映射
:getip
for /f %%i in ('hostname') do set host=%%i
for /f "tokens=2 delims=[]" %%i in ('ping -n 1 -w 1 !host!') do set ip=%%i
for /f "tokens=1,2,3 delims=." %%i in ('echo !ip!') do set ip=%%i.%%j.%%k.0
exit /b
作者: ThinKing
时间: 2007-9-12 20:52
不错,沙发~~