【发布时间】:2015-01-06 23:47:20
【问题描述】:
几个月前,我构建了一个小型 python 脚本,它从我的蜜罐日志中收集一些非常基本的统计数据。我发现这个脚本有问题,我自己没有找到答案。
脚本将从攻击中读取日志文件。 日志文件每行包含 5 条数据。
- 日期/时间戳
- 发生攻击的 IP 地址
- 尝试的用户名
- 尝试的密码
- 成功/失败代码
示例:
2014-12-24 13:37:00,1.2.3.4,root,password,0
五段数据用','隔开。
所以我使用“,”作为分隔符将行拆分成一个列表,就像这样。
['2014-12-24 13:37:00', '1.2.3.4', 'root', 'password', '0']
我可以从中获取我需要的数据。
这个问题,我相信你们中的一些人已经想通了,
当尝试的密码中存在分隔符时发生,
在这种情况下 H4ck3r,,h4cker,,2015
日志文件最终看起来像这样
2015-01-02 01:44:38,2.3.4.5,root,H4ck3r,,h4cker,,2015,0
并在它被 slpit 之后将结果列表变成这个。
['2015-01-02 01:44:38', '2.3.4.5', 'root', 'H4ck3r', '', 'h4cker', '', '2015', '0']
我首先想到的解决方法是删除 [0:3] 和 [-1],
然后接受剩下的密码,但是,
至少可以说不是很干净也不准确。
如果攻击者在用户名中使用分隔符,我将回到原点。
问题。
- 是否有任何干净且简单的方法可以使用拆分来解决此问题?
- 正则表达式是最好的方法吗?
- ...解决此问题的其他方法?
【问题讨论】:
-
我认为“最干净”的解决方案是使用
csv.Writer写入日志文件,然后使用csv.Reader读取它——Writer/Reader 组合应该处理引用/取消引用字段给你。 -
这可能是个好主意。不幸的是,我不是为此编写日志功能的人,谢谢您的提示。
标签: python regex split delimiter logfiles