监听并自添加WINDOWS防火墙规则批处理FOR WIN10第二版

第一版见:https://blog.csdn.net/humors221/article/details/104024524?utm_source=app
更新内容:
加入IP地址归属地

目标:实现获取连接信息并禁用B类以上及特殊类TCP和自动添加防火墙规则
说明:
1.本实例根据目标做成,内容可以按照自己的要求修改,可修改的地方如下:
1)添加排除的外部地址在if not “!addr!”==“0.0.0.0” (内容)右括号在括号最多的地方加
2)修改IP类在if !ipStart! equ 10这类的地方修改,if的用法在命令行使用if /?查看
3)netstat -ano这个查看命令也可以改,改过之后查看的结果解析方式可能会有不同
4)netstat -ano的结果还有其他参数可用,比如本地地址,状态等等,1,2,3,4,5分别表示每一列,具体参考命令行中for /?使用
5)ping -n 60 127.0>nul这个是间隔一段时间再循环,可以修改60间隔
6)可以把批处理加到自定义服务中,具体方法可以参考我的文章:创建windows自定义服务 https://blog.csdn.net/humors221/article/details/104388571
2.使用方法:
1)启用Windows Defender Firewall服务(右键开始菜单\计算机管理\服务和应用程序\服务\启动类型自动\启动\确定),我这里默认启用无法修改
2)显示文件类型(此电脑双击或任务栏资源管理器双击\菜单栏查看\勾选文件扩展名)
3)创建批处理文件(d:\防火墙规则程序\防火墙规则程序.bat\右键编辑\复制粘贴源代码\保存退出)
4)运行批处理(右键批处理选择以管理员运行)
5)查看和修改防火墙规则(任务栏右键\搜索\显示搜索框\输入防火墙和网络保护\高级设置\入站规则&出站规则)
6)删除所有TCP规则命令行命令:netsh advfirewall firewall delete rule name=all protocol=tcp,详情使用netsh advfirewall firewall /?查询
3.参考:ip地址分类(A类,B类,C类,D类,E类):https://www.cnblogs.com/tunian/p/9632893.html

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
goto loop 
:loop
set isCClass=false
set num=0
netstat -aon>net.txt
for /f "tokens=*" %%i in (net.txt) do (
set row=%%i
if !num! gtr 1 (
for /f "tokens=1,2,3,4,5* delims= " %%a in ("!row!") do (
set flag=%%a
if "!flag!" equ "TCP" (
set fadd=%%c
for /f "tokens=1,2* delims=:" %%m in ("!fadd!") do (
set addr=%%m
set port=%%n
if not "!addr!"=="209.17.4.8" (
if not "!addr!"=="10.0.19.11" (
if not "!addr!"=="172.16.1.1" (
if not "!addr!"=="172.16.1.41" (
if not "!addr!"=="172.16.1.38" (
if not "!addr!"=="0.0.0.0" (
if not "!addr!"=="[" (
if not "!addr!"=="*" (
for /f "tokens=1,2* delims=." %%w in ("!addr!") do (
set ipStart=%%w
if !ipStart! equ 10 (
set isCClass=true
)
if !ipStart! equ 172 (
set isCClass=true
)
if !ipStart! geq 192 (
set isCClass=true
)
if "!isCClass!"=="true" (
call :ipGPS !addr!
del /q ipFind.vbs
del /q ipFind.txt
)
)
)
)
)
)
)
)
)
)
)
)
)
)
set /a num+=1
)
ping -n 60 127.0>nul
goto loop
:ipGPS
set adr=%1
echo Set objXML = CreateObject("MSXML2.ServerXMLHTTP")>ipFind.vbs
echo Set objFSO = CreateObject("Scripting.FileSystemObject")>>ipFind.vbs
echo objXML.open "GET","http://www.cip.cc/!adr!",false>>ipFind.vbs
echo objXML.send()>>ipFind.vbs
echo Set objFile = objFSO.CreateTextFile("ipFind.txt",true)>>ipFind.vbs
echo objFile.close>>ipFind.vbs
echo Set objTextFile = objFSO.OpenTextFile ("ipFind.txt", 8, True)>>ipFind.vbs
echo objTextFile.WriteLine(objXML.responseText)>>ipFind.vbs
echo objTextFile.Close>>ipFind.vbs
start /wait wscript /t:600 ipFind.vbs
set rownumber=0
FOR /F "tokens=1,2* delims=:" %%i in (ipFind.txt) do (
if !rownumber! equ 39 (
echo IP地址:!adr!  位置:%%j 被禁用!
echo.
echo.
netsh advfirewall firewall add rule name=denyIn-!adr! protocol=tcp dir=in action=block remoteip=!adr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!adr! protocol=tcp dir=out action=block remoteip=!adr! remoteport=!port!
echo IP地址:!adr!  位置:%%j>>addr.txt
set /A rownumber=rownumber+1
) else (
set /A rownumber=rownumber+1
)
)

(全文完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章