Board logo

标题: [原创]切断本机与指定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
不错,沙发~~