監聽並自添加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
)
)

(全文完)

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