如何使用Wireshark在Lua脚本中翻译“ \ r \ n”字符串

时间:2019-08-09 07:47:56

标签: lua wireshark-dissector

我写了一个Lua脚本来分析一些协议。 我想拆分长字符串,所以我需要将它们拆分成几行。

但是当我尝试使用“ \ r \ n”时,wireshark中显示的是“ \ r \ n”,而不是新行。 例如,我编写如下代码,但是显示“ value \ 12 \ r \ r \ n”。 这意味着“ \\”成功翻译为“ \”,但是0x0d和“ \ r \ n”没有翻译吗?

local normalized_value = '\\'.."12"..string.char(0x0d).."\r\n" 

如何进行这项工作?

1 个答案:

答案 0 :(得分:0)

最后,我在Wireshark的源代码中找到了它。 是的,wireshark忽略了这些符号。 您可以在print.c中找到它。

static void
print_escaped_csv(FILE *fh, const char *unescaped_string)
{
    const char *p;

    if (fh == NULL || unescaped_string == NULL) {
        return;
    }

    for (p = unescaped_string; *p != '\0'; p++) {
        switch (*p) {
        case '\b':
            fputs("\\b", fh);
            break;
        case '\f':
            fputs("\\f", fh);
            break;
        case '\n':
            fputs("\\n", fh);
            break;
        case '\r':
            fputs("\\r", fh);
            break;
        case '\t':
            fputs("\\t", fh);
            break;
        default:
            fputc(*p, fh);
        }
    }
}

所以我决定构建自己的版本