监听并自添加windows防火墙规则批处理FOR WIN10

环境:windows10家庭版

目标:实现获取连接信息并禁用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 firewall规则的批处理https://blog.csdn.net/humors221/article/details/43417675

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 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!"=="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 (
netsh advfirewall firewall add rule name=denyIn-!addr! protocol=tcp dir=in action=block remoteip=!addr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!addr! protocol=tcp dir=out action=block
remoteip=!addr! remoteport=!port!
echo !addr!>>addr.txt
echo !addr!已被禁用!
)
if !ipStart! equ 172 (
netsh advfirewall firewall add rule name=denyIn-!addr! protocol=tcp dir=in action=block
remoteip=!addr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!addr! protocol=tcp dir=out action=block
remoteip=!addr! remoteport=!port!
echo !addr!>>addr.txt
echo !addr!已被禁用!
)
if !ipStart! geq 192 (
netsh advfirewall firewall add rule name=denyIn-!addr! protocol=tcp dir=in action=block remoteip=!addr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!addr! protocol=tcp dir=out action=block
remoteip=!addr! remoteport=!port!
echo !addr!>>addr.txt
echo !addr!已被禁用!
)
)
)
)
)
)
)
)
)
set /a num+=1
)
ping -n 60 127.0>nul
goto loop

(全文完)

 

 

 

 

 

 

 

 

 

 

 

 

 

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