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

How to translate "\r\n" string in Lua script with Wireshark

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

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

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

如何进行这项工作?

最后,我在 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 != '[=10=]'; 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);
        }
    }
}

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