0

基本上我有一个 authlog/syslog 文件,其中包含登录尝试和 IP 地址的列表 - 我需要制作一个 Python 程序,该程序将创建一个 txt 文件,其中包含超过 5 次失败登录尝试的所有 IP 地址 - 一种“黑名单”。

所以基本上是这样的:

如果“uniqueipaddress”和“authentication failure”出现5次以上,将uniqueipaddress添加到txt文件。

任何帮助将不胜感激 - 请尝试使其简单,因为我在 Python 编程方面非常非常缺乏经验!谢谢。

4

2 回答 2

1

对于每一行:

  • 读取 IP 并尝试状态
  • 按失败尝试次数的 IP 保存字典

然后翻字典:

  • 打印以归档 5 次或更多尝试的所有 IP

蟒蛇提示:

  • 逐行读取文件:for line in open(filename)
  • 解析日志行完全取决于其格式。一些有用的 Python 工具是split字符串的方法和正则表达式
  • 保留字典,即ips[ip]尝试次数
于 2010-03-24T17:57:22.307 回答
0

下面的代码应该做一些类似于你正在寻找的事情。它并不完美,但它是一个很好的起点。

ips = {}
for line in open('your_log.txt'):
    parts = line.split(' ') #assuming this is a good place to split
    if parts[1] == "AuthenticationFailure":
        if parts[0] in ips:
            ips[parts[0]] += 1
        else:
            ips[parts[0]] = 0

for ip in [k for k,v in ips.iteritems() if v >= 5]:
    #WRITE TO FILE HERE

这假设您的日志文件的结构如下:

1.1.1.1 LoginSuccess
2.2.2.2 LoginSuccess
3.3.3.3 AuthenticationFailure
于 2010-03-24T20:37:31.963 回答