0

我不是一个脚本专家,我有一个小的要求来分析防火墙流量的 Windows 安全事件日志。

为此,我开始研究 LogParser,它似乎可以完成我需要的几乎所有工作,但是我在解决如何将从日志中提取的某些值替换为更具可读性的内容时遇到了一些麻烦。

我的脚本很简单:

SELECT
TimeGenerated AS Time,
EventTypeName AS Event,
EXTRACT_TOKEN(Strings, 0,'|') AS ProcessID,
EXTRACT_TOKEN(Strings, 1,'|') AS Process,
EXTRACT_TOKEN(Strings, 7,'|') AS Protocol,
EXTRACT_TOKEN(Strings, 2,'|') AS Direction,
EXTRACT_TOKEN(Strings, 3,'|') AS SourceAddress,
EXTRACT_TOKEN(Strings, 4,'|') AS SourcePort,
EXTRACT_TOKEN(Strings, 5,'|') AS DestinationAddress,
EXTRACT_TOKEN(Strings, 6,'|') AS DestinationPort
FROM Security
WHERE EventID IN (5152; 5153; 5154; 5155; 5156; 5157; 5158)

尽管这会产生我感兴趣的信息,但如果可能的话,我想更改输出。例如“进程”列输出为:

\device\harddiskvolume2\apps\mozilla\fx-4\firefox.exe

我真正想要的是只显示进程名称,而不显示路径。同样,“协议”列仅显示数字协议值。我更喜欢让它显示“实际”协议。

最后,Direction 列显示一个数值 %%14592 和 %%14593,我希望分别看到 In 和 Out。

如果有人可以提供帮助,我将不胜感激。

谢谢

4

1 回答 1

0

对于您的文件名问题, EXTRACT_FILENAME(EXTRACT_TOKEN(Strings, 1,'|')) AS Process 是否适合您?

对于您的其他问题,如何:

CASE EXTRACT_TOKEN(Strings, 2,'|') WHEN '%%14592' THEN 'IN' ELSE 'OUT' END 作为方向

于 2011-04-04T20:46:58.637 回答