2

我正在测试与 BRO 的字符串比较,并遇到了一些运行时错误。希望大家可以看看,给我一些提示。例如,我有两个字符串,假设 str_A 和 str_B,str_A 是一种模式,例如:str_A = "\x13\x02\xf0\x80";

str_B 是函数中的有效负载(内容)字符串:

event tcp_packet(c: connection, is_orig: bool, flags: string, seq: count, ack: count, len: count, contents: string)

我将这两个字符串与: 进行了比较if(str_A in str_B),这减少了运行时错误,例如:

1467860547.182543 error: string with embedded NUL: "\x13\x00\xf0\x13"
1467860547.182543 error: string without NUL terminator: "\x13\x00\xf0\x13\x02\xf0\x80\x02\x00\x00\xc0\x01\x00\x00\x00\x00\x87\x02"

看起来模式字符串中间的“x00”被认为是终止符,而对于后者,str_B 的末尾没有 NUL。

所以(愚蠢的)问题是我如何在 BRO 中的 str_B 末尾附加一个 NUL?以及如何让 BRO 在比较时忽略字符串中间嵌入的 NUL?非常感谢。

4

1 回答 1

1

这是通过将十六进制字符串转换(调用函数 string_to_ascii_hex())到 ASCII 十六进制字符串来计算的。

于 2018-07-23T02:49:46.147 回答