2012-10-30 2 views
3

나는 TCP 프로토콜 이상에서 실행되고 하나 이상의 TCP 패킷에서 흐르는 데이터를 가지고있는 해부학자가있다.어떻게 LUA 디시 텍터에서 TCP 패킷을 재구성합니까?

모든 것을 변환하기 전에 데이터를 어셈블해야하므로 tcp_dissect_pdus()이 필요하다고 이해 했으므로 문서 또는 예제를 찾을 수 없습니다.

누구든지 나를 안내하거나 내가 그것을 어떻게 사용하는지 이해하도록 도울 수 있습니까?

답변

5

tcp_dissect_pdus 용 wslua API가 없습니다. 하지만 직접 구현할 수도 있습니다. 두 개 이상의 패킷을 걸쳐 PDU를 조립하려면

은 오히려 간단합니다

function slicer.dissector(tvb, pinfo, tree) 
    ... 
    local pdu_length = get_pdu_length(...) 
    if pdu_length > tvb:len() then 
     pinfo.desegment_len = pdu_length - tvb:len() 
    else 
     do_dissection(tvb, pifo, tree) 
    end 
    return 
end 

당신은 당신이 할 수있는 PDU의 정확한 길이를 모르는 경우 다음

 pinfo.desegment_len = DESEGMENT_ONE_MORE_SEGMENT 

당신을 README.developer 섹션 2.7을 읽어야합니다.

+0

답변 해 주셔서 감사합니다. –

+0

문서에 따르면 my dissector는 버퍼에 _pinfo.desegment_len_에 넣은 바이트 수가 포함 된 후에 만 ​​호출되지만 f.e. 메시지 크기는 3890 바이트이며, 바이트 수를 얻을 때뿐만 아니라 모든 패킷에서 해부 (dissector)가 호출됩니다. 왜 그럴 수 있니? –

+2

Wireshark 1.99.2부터는 tcp_dissect_pdus에 대한 Lua 바인딩이 있습니다. https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html#lua_fn_dissect_tcp_pdus_tvb__tree__size__func__func___desegment__ –

관련 문제