zeek命令行的选项设置
运行脚本文件
直接运行脚本 zeek hello.zeek
event zeek_init(){
print "hello, world!";
}
event zeek_done(){
print "goodbye, world";
}
在Dos端,使用zeek直接解析pcap包:
1. zeek -Cr mysql_complete.pcap -e 'redef LogAscii::use_json=T;' main.zeek
其中 -r 表示读取数据包的配置, -e 'redef LogAscii::use_json=T;'表示将log文件内容以json形式输出。
2. 写一个__load__.zeek脚本,里面内容为
# 设置输出为json格式
@load tuning/json-logs# 需要将自己写的zeek脚本加入生效
# @load ./datatypes.zeekzeek -Cr mysql_complete.pcap ./ 后面的就是load.zeek文件所在的目录
清理log文件
要清除产生的log文件,可以编写一个shell命令文件,我命名为clean.sh, 里面的内容如下:
sudo rm conn.log dhcp.log dns.log dpd.log notice.log files.log packet_filter.log http.log snmp.log smtp.log ntp.log ssl.log weird.log x509.log > /dev/null 2>&1
注意:右击clean.sh文件,打开属性—>权限—>勾选允许作为程序执行文件,就可以解决找不到命令的问题。
动态的配置,指定输出需要解析的协议
redef Analyzer::disable_all=T; 这样在zeek运行时默认禁止解析所有的协议,但是仍然会有conn.log和 packet_filter.log
Analyzer::enable_analyzer(协议类型) 加载需要解析的协议
或者是去禁止特定的解析协议,使用 redef Analyser:: disabled analyzers = {里面放要禁止的协议};
如果全部禁止,即注释掉zeek_init event,结果如下:只有两个log文件
如果指定了mysql协议,则输出如下:
否则会生成其他协议类型的log,能解析的全解析出来:
查看网卡获取的数据包数量,以及大小: