环境: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
(全文完)