如何使用TSHARK/WIRESHARK显示PCAP的每个数据包的框架编号



tshark中是否有流动ID的概念?当我搜索过滤器时,我发现存在 tcp.St_s>存在,但其等效于UDP,即 udp.Stream 不存在。当我打开PCAP时,默认情况下,它显示帧号,IP地址,信息等。在一个列中,我还需要每个数据包的流ID与帧号。TSHARK会提供这样的支持吗?如果没有,我有什么办法可以做到吗?

我编写了一个程序,我正在阅读一个PCAP文件,数据包,并且我需要每个数据包读取的FlowID。如果我使用tshark命令为

 ./tshark -r in.pcap -z conv,tcp

它与其他一些细节一起显示了数据包号,但是我也希望显示我可以在程序中阅读的flowid。

任何帮助将不胜感激。谢谢。

tcp.Stream in Wireshark

这是Wireshrak为获取TCP.Stream所做的。TCP解剖器具有全局变量guint32 tcp_stream_index;然后每个与对话关联的数据包。每个对话数据都存储在哈希表中(Wireshark使用可怕的)。他们使用5核作为钥匙。如果他们有新的5核心,他们会发起新的对话,并在那里增加TCP_STREAM_INDEX:

init_tcp_conversation_data(packet_info *pifo)
{
    ...
    tcpd->stream = tcp_stream_index++;
    ...
}

,它们有hah的方式:

/*
 * Hash an address into a hash value (which must already have been set).
 */
#define ADD_ADDRESS_TO_HASH(hash_val, addr) { 
    const guint8 *ADD_ADDRESS_TO_HASH_data; 
    int ADD_ADDRESS_TO_HASH_index; 
    ADD_ADDRESS_TO_HASH_data = (addr)->data; 
    for (ADD_ADDRESS_TO_HASH_index = 0; 
         ADD_ADDRESS_TO_HASH_index < (addr)->len; 
         ADD_ADDRESS_TO_HASH_index++) 
         hash_val += ADD_ADDRESS_TO_HASH_data[ADD_ADDRESS_TO_HASH_index]; 
    }
...
hash_val = 0;
ADD_ADDRESS_TO_HASH(hash_val, &key->addr1);
hash_val += key->port1;
ADD_ADDRESS_TO_HASH(hash_val, &key->addr2);
hash_val += key->port2;
...

将FlowID添加到数据包

这是用LUA编写的Wireshark侦听器的一个简单示例。但是您需要函数mk_flowid,update_conversation_data,show_gathered_statics。

local tap 
local conversations = {} 
local function packet(pinfo, tvb, userdata)
    local id = mk_flowid(pinfo.src, pinfo.src_port,
        pinfo.dst, pinfo.dst_port, pinfo.ipproto)
    local conv = converstaion[id]
    update_conversation_data(conv)
    -- Also you can output to a file
    -- to_file(pinfo.number, id)
end
local function draw(userdata)
    print_gathered_statistics(conversations)
end
local function reset(userdata)
    conversations = {}
end
local function show_myconv()
     tap = Listener.new()
     tap.packet = packet
     tap.draw = draw 
     tap.reset = reset 
end
register_stat_cmd_arg('myconv', show_myconv)

和lanch tshark:

tshark -X lua_script:myconv.lua -z myconv -r in.pcap

最新更新