Lua 脚本不使用 tshark 创建文件

Lua script doesn't create file using tshark

我有一个 lua 脚本,我在 github.(https://github.com/volvet/h264extractor) 上找到了它。当我从 wireshark 使用它时,它会从 pcap 创建一个转储文件。 但是如果我像这样从 Ubuntu 终端使用:tshark -X lua_script:rtp_h264_extractor.lua -r a.pcap 它不会创建任何转储文件。这个问题有什么解决办法吗?或者应该是这样的? 这是来自 lua 脚本的代码。

    local function extract_h264_from_rtp()
    local h264_tap = Listener.new("ip", "h264")
    local text_window = TextWindow.new("h264 extractor")
    local fp = io.open("dump.264", "w+")
    local seq_payload_table = { }
    local pass = 0
    local packet_count = 0
    local max_packet_count = 0
    local fu_info = nil
    
    local function log(info)
        text_window:append(info)
        text_window:append("\n")
    end
    
    if fp == nil then 
        log("open dump file fail")
    end
    
    local function seq_compare(left, right)  
        if math.abs(right.key - left.key) < 1000 then  
            return left.key < right.key  
        else 
            return left.key > right.key  
        end  
    end  
    
    local function dump_single_nal(h264_payload)
        fp:write("[=11=][=11=][=11=]")
        fp:write(h264_payload:tvb()():raw())
        fp:flush()
    end

谢谢。

您没有提供完整的 Lua 脚本,所以我下载了它。很明显,这个脚本只是为 Wireshark GUI 编写的,因为它在工具下注册了一个菜单项。换句话说:

register_menu("Extract h264 stream from RTP", extract_h264_from_rtp, MENU_TOOLS_UNSORTED)

脚本根本无法与 tshark 一起使用。事实上,该脚本确实应该以如下内容开头,这样就更清楚它不适用于 tshark:

if not gui_enabled() then
    return
end

我删除了属于 Wireshark GUI 的行,它起作用了。