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文件,并且没读取一个文件都会在屏幕上打印一行信息。