Zeek的一些方法总结
1. subst_string
传入参数: function(s: string, from: string, to: string) :string
传入类型皆为字符串
s代表输入的字符串
from代表s中包含(可能包含)的准备替换的字符串
to代表要替换的目标字符串
返回值:返回一个s中所有的from都被替换成to的字符串
我的理解:即将一个字符串里面的所有特定的字符串替换成为另一个字符串,类似于其他语言的replace方法
2.find_all
传入参数function(str: string, re: pattern) :string_set
第一个类型为string,第二个是正则表达式
str代表要传入的字符串
re代表要匹配的正则
返回值:str中和re这个正则匹配的字符集合(这里的是zeek的集合,和其他语言的集合类似)
我的理解:就是将一个字符串与正则进行匹配,然后将匹配到的这个字符串中的所有子集组成一个集合(这个集合类似于一个List
3. match_pattern
传入参数:function(s: string, p: pattern) :PatternMatchResult
第一个类型是字符串,第二个类型是正则
s代表要传入的字符串
p要进行匹配的正则表达式
返回值:一个
集合如下:
matched: bool //是否匹配成功
str: string //第一次匹配的字符串部分
off: count //匹配成功的次数
举例:
调用:match_pattern("foobar", /o*[a-k]/)
返回值:[matched=T, str=f, off=1]
调用:match_pattern("foobar", /o+[a-k]/)<br>
返回值:[matched=T, str=oob, off=2]
我的理解:将一个字符串于正则表达式进行匹配,然后返回匹配
4.hexstr_to_bytestring
传入参数:function (bytestring: string) : string
传入参数类型为string
bytestring代表要转换的字符串
返回值:字符串的16进制
举例:
调用:hexstr_to_bytestring("04")
返回值:3304 <br>
我的理解:将一串字符串转换为其十六进制表示,官网文档说是一串字节,世界上就是一个字符串,这里我就被他官网的例子弄懵了,直接说的是04转成3304但是当时我没有考虑数据类型,一直以为04是二进制类型,后来找了好多网站,挨个进行测试才搞明白,那个04是字符串,不是数字类型 ,这个方法还有一个相反的方法:bytestring_to_hexstr 他俩的效果正好是相反的
数据验证地址:https://tool.lu/hexstr/(可以来这个网页来进行判断你传入的东西对不对,还有返回值应该是啥,省的还得运行zeek打log判断)
5. gsub
传入参数:Type function (str: string, re: pattern, repl: string) : string
第一个类型是string,第二个是正则,第三个是string
str 代表执行替换的字符串
re 代表进行匹配的正则
repl代表要替换的目标字符串
返回值:将str中匹配到正则的字符串替换为repl的最终字符串
我的理解:这玩意和subst_string差不多,就是一个是根据字符串进行替换,一个是根据正则进行替换,剩下的完全一样
6. bytestring_to_count
传入参数:function (s: string, is_le: bool &default = F &optional) : count
第一个参数类型为string,第二个是bool
s代表要进行转换的二进制表示的字符串
is_le 这个是为了大小端,true为小端格式,false为大端格式(这里参考https://baike.baidu.com/item/%E5%A4%A7%E5%B0%8F%E7%AB%AF%E6%A8%A1%E5%BC%8F/6750542?fr=aladdin)
返回值:转换后的值,如果转换失败的话就是0
这玩意我还没搞懂咋回事,等我fuzz一下,然后再往里面扔例子 ,同样类型的还有转double的等等,知道一个其他的大概也差不多