Как BRO-IDS может сравнивать строки с NUL-терминатором - PullRequest
0 голосов
/ 04 июля 2018

Я тестирую сравнение строк с 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' в середине строки шаблона считалось терминатором, а для последнего не было NUL в конце str_B.

Так что (глупый) вопрос в том, как я могу добавить NUL в конце str_B в BRO? и как заставить BRO игнорировать встроенный NUL в середине строки при сравнении? Большое спасибо.

1 Ответ

0 голосов
/ 23 июля 2018

Это было правильно показано путем перевода (вызова функции string_to_ascii_hex ()) шестнадцатеричной строки в шестнадцатеричную строку ASCII.

...