0

我正在编写一个 Perl 程序来读取Snort日志文件。我使用 VMware 运行 Fedora 14。

使用命令时,/usr/loca/bin/snort -r /var/log/snort/snort.log.1299686068我得到结果:

03/08-21:16:03.609258 172.16.115.87:4159 -> 205.181.112.67:80
TCP TTL:63 TOS:0x0 ID:3588 IpLen:20 DgmLen:385 DF
***AP*** Seq: 0xEB6DE4B0  Ack: 0xD00D0DA6  Win: 0x7D78  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

03/08-21:16:03.627973 205.181.112.67:80 -> 172.16.115.87:4159
TCP TTL:64 TOS:0x0 ID:2458 IpLen:20 DgmLen:40 DF
***A**** Seq: 0xD00D0DA6  Ack: 0xEB6DE609  Win: 0x7E87  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

03/08-21:16:03.651503 205.181.112.67:80 -> 172.16.115.87:4159
TCP TTL:64 TOS:0x0 ID:2459 IpLen:20 DgmLen:978 DF
***AP*** Seq: 0xD00D0DA6  Ack: 0xEB6DE609  Win: 0x7FE0  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+^C

*** Caught Int-Signal
03/08-21:16:03.654590 205.181.112.67:80 -> 172.16.115.87:4159
TCP TTL:64 TOS:0x0 ID:2460 IpLen:20 DgmLen:40
***A***F Seq: 0xD00D1150  Ack: 0xEB6DE609  Win: 0x7FE0  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

目标和源IP地址和更多信息都列出了,但是当我使用Perl编写程序读取它们时,列出的内容是未知符号。

日志文件不是受 Snort 保护还是有其他问题?它并不是 100% 显示与第一个示例相同的结果,但至少清楚地列出了所有内容。

我的代码是:

#!/usr/local/bin/perl
use File::Tail;
opendir L_FOL, "/var/log/snort" || die "Could not open LOGFOLDER direcotry\n $!";
my @allrule = grep {/^snort.log./} readdir L_FOL;
close L_FOL;
foreach my $rulefile (@allrule) {
    open(LF, "/var/log/snort/$rulefile") or die "$!";
    while (<LF>) {
        print "$_\n";
    }
    close(LF);
}
4

1 回答 1

3

您的 Snort 日志文件采用二进制 (tcpdump) 格式。您不能只将它们作为文本阅读。

如果你想这样做,你需要告诉 snort 用这个-K ascii选项把它们写成 ASCII。

问题是,这可能会导致您无法跟上 snort。更好的选择是简单地将 snort 的输出通过管道传输到您的 perl 程序中并读取:

open(LF, "/usr/local/bin/snort -r /var/log/snort/$rulefile|") or die "$!";

请注意,这是非常古老的 perl 语法,真的不应该再使用了。您应该避免使用裸词并使用三个参数open()

open(my $lf, "-|", "/usr/local/bin/snort -r /var/log/snort/$rulefile") or die "$!";
while (<$lf>) {
...
}
于 2011-03-25T02:10:53.143 回答