我正在为python编写一个脚本,使用户可以轻松配置snort,我有一条规则来保护TCP端口23免受IoTProtect访问,具有以下语法:
reject tcp any any -> 169.254.183.24 23 (msg:Unauthorized access to IoT device!; sid:00000000;rev:003; )
问题在于我添加了功能,以便用户可以添加IP地址,并且此规则也将应用于该IP,但是,要使规则工作,SID必须加1或者是唯一的。
目前我创建的python脚本是:
import fileinput
def incrementsid():
incremented = 0
added = incremented + 2
text = "sid:00000000"
new_text = "sid:0000000{}".format(added)
for line in fileinput.input("C:\\Users\\Admin\\Desktop\\Test\\IoTProtection.rules", inplace = 1):
if text in line:
print(line.replace(line,new_text))
print("Sid replaced!")
else:
print(line.strip())
incrementsid()
然而,实际发生的是我收到此输出:
reject tcp any any -> 169.254.183.24 23 (msg:Unauthorized access to IoT device!; sid:00000000;rev:003; )
在我的Test文件夹中,IoTProtect.rules文件现在只说:
sid:00000002
Sid replaced!
我实际上需要IoTProtect.rules说:
reject tcp any any -> 169.254.183.24 23 (msg:Unauthorized access to IoT device!; sid:00000002;rev:003; )
如果我的代码是垃圾,请道歉,但我真的很感激有关如何使这项功能正常工作的任何建议或反馈。
谢谢!
答案 0 :(得分:0)
代码中存在两个问题:
1)使用fileinput.input输入的fileinput.Fileinput 2)替换:
print(line.replace(line,new_text))
由:
print(line.replace(text,new_text))
<强>更新强>
您的问题已经回答Here