分享一個Python寫的windows環境系統服務來自動化管理防火牆規則
import pythoncom
import win32com
class rule:
items = {}
# 中英文轉換
items_name = {
"Action":' 操作 ',
"ApplicationName":' 程式 ',
"Description":' 描述 ',
"Direction":' 進站 / 出站 ',
"EdgeTraversal":' 邊緣穿越 ',
"EdgeTraversalOptions":' 邊緣穿越選項 ',
"Enabled":' 已啟用 ',
"Grouping":' 組 ',
"IcmpTypesAndCodes":'ICMP 設定 ',
"InterfaceTypes":' 介面型別 ',
"Interfaces":' 介面 ',
"LocalAddresses":' 本地地址 ',
"LocalAppPackageId":' 應用程式包 ',
"LocalPorts":' 本地埠 ',
"LocalUserAuthorizedList":' 授權的本地計算機 ',
"LocalUserOwner":' 本地使用者所有者 ',
"Name":' 名稱 ',
"Profiles":' 配置檔案 ',
"Protocol":' 協議 ',
"RemoteAddresses":' 遠端地址 ',
"RemoteMachineAuthorizedList":' 授權的遠端計算機 ',
"RemotePorts":' 遠端埠 ',
"RemoteUserAuthorizedList":' 授權的遠端使用者 ',
"SecureFlags":' 安全 ',
"serviceName":' 服務名 '}
items_shell = {
"Action": 'action',
"ApplicationName": 'program',
"Description": 'description',
"Direction": 'dir',
"EdgeTraversal": 'edge',
"EdgeTraversalOptions": ' 邊緣穿越選項 ',
"Enabled": 'enable',
"Grouping": ' 組 ',
"IcmpTypesAndCodes": 'ICMP 設定 ',
"InterfaceTypes": 'interfacetype',
"Interfaces": ' 介面 ',
"LocalAddresses": 'localip',
"LocalAppPackageId": ' 應用程式包 ',
"LocalPorts": 'localport',
"LocalUserAuthorizedList": ' 授權的本地計算機 ',
"LocalUserOwner": ' 本地使用者所有者 ',
"Name": 'name',
"Profiles": 'profile',
"Protocol": 'protocol',
"RemoteAddresses": 'remoteip',
"RemoteMachineAuthorizedList": 'rmtcomputergrp',
"RemotePorts": 'remoteport',
"RemoteUserAuthorizedList": 'rmtusrgrp',
"SecureFlags": 'security',
"serviceName": 'service'
}
def __init__(self,index):
self.index = index
for i in self.items_name.keys():
self.items[i] = ''
def init_by_app(self, app_in):
for key in self.items_name.keys():
self.items[key] = " " + str(eval("app_in."+key))
print(self.items[key] )
def init_by_dict(self,dirc_con):
flag = False
for item_key in self.items_name.keys():
if self.items_name[item_key] in dirc_con.keys():
flag = True
self.items[item_key] = dirc_con[self.items_name[item_key]]
if not flag:
for key in dirc_con.keys():
self.items[key] = dirc_con[key]
def create_rule(self):
app = win32com.client.Dispatch('HNetCfg.FwRule')
res = []
# 注意賦值順序
app.Action = int(self.items["Action"])
app.Description = self.items["Description"]
app.Direction = int(self.items["Direction"])
app.EdgeTraversal = self.items["EdgeTraversal"]
app.EdgeTraversalOptions = self.items["EdgeTraversalOptions"]
app.Enabled = self.items["Enabled"]
app.Grouping = self.items["Grouping"]
## app.IcmpTypesAndCodes = self.items["IcmpTypesAndCodes"]
app.InterfaceTypes = self.items["InterfaceTypes"]
## app.Interfaces = self.items["Interfaces"]
app.LocalAddresses = self.items["LocalAddresses"]
app.LocalAppPackageId = self.items["LocalAppPackageId"]
## app.LocalPorts = str(self.items["LocalPorts"]),
## app.LocalUserAuthorizedList = self.items["LocalUserAuthorizedList"]
app.LocalUserOwner = self.items["LocalUserOwner"]
app.Name = self.items["Name"]
app.Profiles = self.items["Profiles"]
app.Protocol = self.items["Protocol"]
app.RemoteAddresses = self.items["RemoteAddresses"]
## app.RemoteMachineAuthorizedList = self.items["RemoteMachineAuthorizedList"]
app.RemotePorts = self.items["RemotePorts"]
app.LocalPorts = self.items['LocalPorts']
## app.RemoteUserAuthorizedList = ''
app.SecureFlags = self.items["SecureFlags"]
# app.serviceName = "null"
# app.ApplicationName = "null"
return app
def __str__(self):
result = "="*10 + '\n 序號 : ' + str(self.index) + '\n'
for key in self.items_name.keys():
result += self.items_name[key] + " : " + str(self.items[key]) +"\n"
return result
def add_rule(dict_value):
fw = win32com.client.gencache.EnsureDispatch('HNetCfg.FwPolicy2', 0)
apps = fw.Rules
print(apps.Count)
# app = win32com.client.Dispatch('HNetCfg.FwRule3')
rule_obj = rule(-1)
rule_obj.init_by_dict(dict_value)
app = rule_obj.create_rule()
apps.Add(app)
def del_rule(dict_value):
fw = win32com.client.gencache.EnsureDispatch('HNetCfg.FwPolicy2', 0)
apps = fw.Rules
print("before :", apps.Count)
rule_obj = rule(-1)
rule_obj.init_by_dict(dict_value)
for app in apps:
print(rule_obj.items['Name'] , str(app.Name))
print(rule_obj.items['LocalPorts'] , str(app.LocalPorts))
print(rule_obj.items['RemoteAddresses'] , str(app.RemoteAddresses))
if rule_obj.items['Name']外匯跟單gendan5.com == str(app.Name) and rule_obj.items['LocalPorts'] == str(app.LocalPorts) and rule_obj.items['RemoteAddresses'] == str(app.RemoteAddresses):
# 只能根據 Name 刪除 , 大概是個傻子喲
apps.Remove(str(app.Name))
# break
print("after :", apps.Count)
if __name__ == '__main__':
my_dict = {
' 序號 ' : '2',
' 操作 ' : '0',
' 程式 ' : '',
' 描述 ' : '',
' 進站 / 出站 ' : '1',
' 邊緣穿越 ' : 'False',
' 邊緣穿越選項 ' : '0',
' 已啟用 ' : 'True',
' 組 ' : '',
'ICMP 設定 ' : '',
' 介面型別 ' : 'All',
' 介面 ' : 'None',
' 本地地址 ' : '*',
' 應用程式包 ' : '',
' 本地埠 ' : '9876',
' 授權的本地計算機 ' : '',
' 本地使用者所有者 ' : '',
' 名稱 ' : 'test_cmd',
' 配置檔案 ' : '2',
' 協議 ' : '6',
' 遠端地址 ' : '114.115.250.41/255.255.255.255',
' 授權的遠端計算機 ' : '',
' 遠端埠 ' : '*',
' 授權的遠端使用者 ' : '',
' 安全 ' : '0',
' 服務名 ' : ''
}
add_rule(my_dict)
del_rule(my_dict)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2850616/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 編寫 PowerShell 指令碼來管理 Windows 防火牆可以幫助自動化配置和監控網路安全設定。以下是一個簡單的大綱,涵蓋了管理 Windows 防火牆的主要方面:指令碼Windows防火牆
- iptables防火牆規則防火牆
- windows/Linux 防火牆安裝配置規則WindowsLinux防火牆
- OpenStack 的防火牆規則流程防火牆
- Kali && Debain 防火牆規則AI防火牆
- linux系統檢視防火牆是否開啟並清除防火牆規則的方法步驟Linux防火牆
- firewall-cmd - 防火牆規則管理工具防火牆
- Iptables防火牆規則使用梳理防火牆
- 在 Rocky Linux 中,你可以使用 firewalld 來管理防火牆規則。Linux防火牆
- win10系統怎麼更改防火牆預設規則Win10防火牆
- win10防火牆怎麼關閉服務 徹底禁用windows防火牆Win10防火牆Windows
- 使用IPtables搭建防火牆的規則(轉)防火牆
- iptables防火牆簡介,原理,規則編寫,常見案例防火牆
- 配置ModSecurity防火牆與OWASP規則防火牆
- 20條IPTables防火牆規則用法!防火牆
- Linux——防火牆、SELinux規則Linux防火牆
- Docker 埠對映防火牆規則配置Docker防火牆
- win10怎麼自定義防火牆入站規則_win10設定防火牆入站規則的方法Win10防火牆
- APP自動化環境搭建與安裝(Windows)APPWindows
- Linux IPTables:如何新增防火牆規則Linux防火牆
- 用 python 寫一個自動化部署工具Python
- windows10系統中Windows Defender防火牆無法啟動如何解決Windows防火牆
- win10關閉防火牆服務方法_win10防火牆怎麼關閉服務Win10防火牆
- 在Windows環境中,有多種自動化工具可以用來執行重複性任務、指令碼編寫、系統管理等。以下是常見的Windows自動化工具對比分析表格:PowerShell、Ansible 和 Jenkins 在 Windows 環境下的自動化工具對比分析表格Windows指令碼Jenkins
- 防火牆的虛擬系統防火牆
- 使用Systemctl命令來管理系統服務
- 省時省力,更好地服務客戶——自動化客服系統(一)
- Windows2008系統的高階防火牆Windows防火牆
- 在Linux中,如何設定防火牆規則?Linux防火牆
- NSIS 指令碼,安裝時新增防火牆規則指令碼防火牆
- 10個Python指令碼來自動化你的日常任務Python指令碼
- Windows系統中搭建python開發環境WindowsPython開發環境
- PowerShell 來操作 Windows 防火牆,實現網路訪問控制和防火牆規則的設定。下面是一些常見的 PowerShell 命令,用於建立阻止特定型別檔案傳輸協議的規則和限制電子郵件附件的規則:Windows防火牆型別協議
- 檔案系統、服務、防火牆、SELINUX——安全四大金剛防火牆Linux
- windows10系統怎麼關閉防火牆通知Windows防火牆
- Win10系統Jmeter+maven+Jenkins介面自動化環境搭建(一)Win10JMeterMavenJenkins
- ubuntu系統下的防火牆使用Ubuntu防火牆
- IOS自動化測試環境搭建(Python & Java)iOSPythonJava