白名單模式的監聽並自添加防火牆批處理FOR WIN7/10

使用方法:
1.保存爲後綴名bat
2.管理員運行
3.白名單模式
4.黑名單加入白名單要1.停止程序2.netsh advfirewall firewall delete rule name=all 3.程序中加入if not xxx
5.防火牆域配置,專用配置,公用配置文件出入站連接設置爲允許

更新內容:
1.添加允許規則
2.優化了netstat命令,判斷規則
3.添加循環退出命令

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
goto loop 
:loop
set num=0
netstat -aonp tcp>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 fadd=%%c
for /f "tokens=1,2* delims=:" %%m in ("!fadd!") do (
set addr=%%m
set port=%%n
if not "!addr!"=="127.0.0.1" (
if not "!addr!"=="0.0.0.0" (
for /f "tokens=1,2* delims=." %%w in ("!addr!") do (
call :ipGPS !addr!
)
)
)
)
)
)
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","https://www.ip-address.org/lookup/ip-locator.php?track=!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 /b /t:600 ipFind.vbs
set rownumber=1
if exist ipFind.txt (
FOR /F "tokens=*" %%i in (ipFind.txt) do (
if "!rownumber!"=="276" (
FOR /F "tokens=1,2* delims=:" %%a in ("%%i") do (
set group=%%b
FOR /F "tokens=1,2,3* delims= " %%x in ("%%b") do (
if "%%z"=="" (
set char2=%%y
set server=!char2:~0,-6!
) else (
set server=%%y
)
set isLocal=false
if not "!group:~1,-6!"=="Aliyun Computing Co." (
if not "!group:~1,-6!"=="Microsoft Corporation" (
if not "!group:~1,-6!"=="China Telecom Nanjing IDC network" (
if not "!group:~1,-6!"=="Cloudflare" (
if not "!group:~1,-6!"=="Hangzhou Alibaba Advertising Co.,Ltd." (
if not "!group:~1,-6!"=="ChangZhou Bitcomm Software Technology Co., Limited" (
if not "!group:~1,-6!"=="Oracle Corporation" (
if not "!group:~1,-6!"=="Oracle Public Cloud" (
if not "!group:~1,-6!"=="Akamai Technologies" (
if not "!group:~1,-6!"=="" (
set isLocal=true
)
)
)
)
)
)
)
)
)
)
if "!isLocal!"=="true" (
set isBL=false
if exist blacklist.txt (
for /f "tokens=1,2,3* delims= " %%m in (blacklist.txt) do (
set srv=%%m
for /f "tokens=1,2,3,4* delims=:" %%r in ("!srv!") do (
set addrs=%%s:%%t
if "!addrs!"=="!addr!:!port!" (
set isBL=true
)
)
)
)
if "!isBL!"=="false" (
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地址:!addr!:!port!  組織:!group:~0,-6!>>blacklist.txt
echo.>>blacklist.txt
echo.>>blacklist.txt
)
) else (
set isWL=false
if exist whitelist.txt (
for /f "tokens=1,2,3* delims= " %%m in (whitelist.txt) do (
set srv=%%m
for /f "tokens=1,2,3,4* delims=:" %%r in ("!srv!") do (
set addrs=%%s:%%t
if "!addrs!"=="!addr!:!port!" (
set isWL=true
)
)
)
)
if "!isWL!"=="false" (
netsh advfirewall firewall add rule name=allowIn-!adr! protocol=tcp dir=in action=allow remoteip=!adr! remoteport=!port!
netsh advfirewall firewall add rule name=allowOut-!adr! protocol=tcp dir=out action=allow remoteip=!adr! remoteport=!port!
echo ip地址:!addr!:!port!  組織:!group:~0,-6!>>whitelist.txt
echo.>>whitelist.txt
echo.>>whitelist.txt
)
)
)
)
goto :eof
)
set /A rownumber=rownumber+1
)
)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章