1.6 读取pcap文件 你也可以通过回访一个pcap文件来替代监听模式。在此情况下,Snort就像通过网线获取数据包一样,去分析。这对测试和调试Snort很有意义。

1.6.1 命令行参数

下面的所有命令都可以重复设置多次并且可以和其它命令叠加使用。然而--pcap-reset和--pcap-show多次设置和一次设置的效果是一样的。

选项 描述
-r 读取一个pcap文件
--pcap-single= 和-r一样
--pcap-file= 文件中包括了所有要读取的pcap文件,可以设置每个文件路径或一个文件夹
--pcap-list="" 设置读取多个文件,多个文件使用空格隔开
--pcap-dir= 读取文件夹中所有的pcap文件,按文件名ASCII顺序
--pcap-filter= 使用shell模式的过滤器(bpf)来过滤从文件或目录中读取的数据包,它对任何使用--pcap-file、--pcap-dir获取的数据流都起作用。
--pcap-no-filter 取消过滤器
--pcap-reset 如果读取多个pcap文件时,可以在每次读取一个新文件时,重置一下统计信息
--pcap-show 打印出当前正在读取的文件

1.6.2 例子 读取一个pcap文件

$ snort -r foo.pcap
$ snort --pcap-single=foo.pcap

从文件中读取pcap数据

$ cat foo.txt
    foo1.pcap
    foo2.pcap
    /home/foo/pcaps
$ snort --pcap-file=foo.txt

这样,Snort就会读取foo1.pcap、foo2.pcap和所有/home/foo/pcaps下的pcap文件,同时Snort并不检查pcap文件

从命令行中读取pcap文件

$ snort --pcap-list="foo1.pcap foo2.pcap foo3.pcap"

读取foo1.pcap, foo2.pcap 和foo3.pcap三个文件 读取文件夹中的文件

$ snort --pcap-dir="/home/foo/pcaps"

这样,Snort将会读取所有/home/foo/pcaps下的所有文件

设置过滤器

$ cat foo.txt
    foo1.pcap
    foo2.pcap
    /home/foo/pcaps
$ snort --pcap-filter="*.pcap" --pcap-file=foo.txt
$ snort --pcap-filter="*.pcap" --pcap-dir=/home/foo/pcaps

这样就只读取.pcap文件

$ snort --pcap-filter="*.pcap --pcap-file=foo.txt \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps

这个命令中,只有foo.txt中使用第一个过滤器,之后过滤会被*.cap替代用来遍历所有/home/foo/pcaps下的文件。

$ snort --pcap-filter="*.pcap --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps

这个命令中,只有foo.txt中使用了过滤器,之后所有/home/foo/pcap中文件都没有使用过滤器。

$ snort --pcap-filter="*.pcap --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps2

这个例子中,foo.txt使用了第一个过滤器,然后对/home/foo/pcaps中所有文件不使用过滤器, 最后使用 *.cap来过滤所有/home/foo/pcaps2.中的文件。

重置统计信息

$ snort --pcap-dir=/home/foo/pcaps --pcap-reset

以上例子中,snort会把每次从/home/foo/pcaps中读取pcap文件的统计信息清空一下。对于每一个pcap文件的统计重新开始。

打印pcap文件

$ snort --pcap-dir=/home/foo/pcaps --pcap-show

上述例子会从/home/foo/pcaps中读取所有pcap文件,并且没读取一个文件都会在屏幕上打印一行信息。