使用 PowerShell 脚本和正则表达式,预处理日志文件,输出 CSV 文件
背景
接上篇,搭建 SSH 蜜罐后,得到包含日期、IP、用户名、密码的 SSH 访问日志
如下:
1 | 2025/03/07 12:20:36.496984 111.1.27.170:35638 |
使用 PowerShell 的方案,则无需依赖其他环境,直接可在 Windows 中执行
日志文件读取
获取 log 文件的路径。
fakessh 服务每启动一次则会新生成一个日志文件。
使用通配符批量读取文件。
例如日志文件已放在了upstream
路径下。
1 | # 通过通配符,获得日志文件的路径 |
日志行解析逻辑
日志按行使用正则表达式解析,生成 Object。
使用在线工具,例如嗨正则,测出一个匹配的正则表达式。
正则表达式如下:^([\d\/]+\s[\d:\.]+)\s([\d\.]+):(\d+)\s?(.*?)\s?(\S*)\s?(\S*)$
。
1 | # 初始化一个数组来存储结果 |
输出 CSV 文件
写入到指定路径downstream
下的 CSV 文件中
1 | $outputCsv = ".\downstream\output_2.csv" |
尾巴
PowerShell 代码如下
1 | # 定义输入文件路径和输出CSV文件路径 |
生成的 CSV 结果如下
1 | "Datetime","IP","Port","Client","Username","Password" |
此方案基于 Windows 自带的 PowerShell 方案,但是运行速度比较慢,后续改用 Python 实现