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

我编写了一个 Lua 脚本来分析某些协议。 我想要将长字符串拆分为多行。

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

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

如何让它工作?

点赞
用户7917281
用户7917281

Finnaly , 我在 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); 
        } 
    } 
} 

因此,我决定构建自己的版本。

2019-08-12 02:54:56