2011-11-15 5 views
1

나는 UDP를 기반으로하고 Wireshark의 써드 파티 DLL에 의해 부분적으로 해부되는 프로토콜을 가지고있다. 이제 나머지 필드 "데이터"에 적용 할 사용자 정의 해부기를 작성하려고합니다.루아를 사용하여 Wireshark에서 이미 해부 된 패키지의 필드를 분석하는 방법은 무엇입니까?

이렇게 할 수 있습니까?이를 수행하기 위해 절개기, 절개기 또는 청취자 또는 이들의 조합을 사용해야합니까? 아니면 남은 데이터에 내 dissector를 호출하는 제 3 자의 dissector를 다시 써야합니까?

+2

Wireshark Q & A 사이트를보고 싶을 수도 있습니다. http://ask.wireshark.org/ – sylvanaar

답변

3

John Zwinck이 언급했듯이 루아 또는 C에서 공정하게 관리 할 수있는 연쇄 해부학자와 같은 것을 원할 것입니다. 그러기 위해서는 논리를 절개 자로 구현하고 싶을 것입니다. 루아,이 같은에서 :

do 
    --TODO set up your extra "data" field 
    local tcp_table = DissectorTable.get("tcp.port") 
    local third_party_dissector tcp_table:get_dissector(PROTO_PORT) 

    function your_protocol.dissector(tvb, pinfo, tree) 
     --call the third party dissector 
     third_party_dissector:call(tvb, pinfo, tree) 
     --TODO do what you need with the data 
    end 

    --take over the port your protocol runs over 
    tcp_table_add(PROTO_PORT, your_protocol) 
end 

API 손에 유지하지만, 와이어 샤크에서 루아 dissectors 그냥 프로토 타입 정말 또한 것을 명심; 이들은 동등한 C 기반 해독기보다 비효율적이며 API는 C 해부 API보다 몇 가지 버전 지연됩니다.

1

내가 이와 비슷한 것을하고 싶었을 때, 놀랍게도 복잡하고 불쾌한 것으로 나타났습니다 (일반적으로 Lua 해부학자 개발과 관련이 있음). 여기에 "연쇄 해부학자"에 대한 언급이 있습니다 : http://wiki.wireshark.org/Lua/Dissectors. 내가 읽은 것에서 (나는 결코 내 작업을하지 못했지만 너무 열심히 시도하지 않았다.) Lua보다 C에서 연쇄 해부 체를 만드는 것이 더 쉬워 보인다. 그래도이 페이지의 예제를 따라 해보십시오. 감사하게도이 페이지의 내용은 매우 명확합니다.

+0

그래, 나는 같은 생각이 듭니다. 하스켈에 패킷 분석기를 쓰고 싶습니다. :) 감사합니다. 불행히도 나는 그것을 작동시킬 수 없었다. Wireshark (0.99.7)의 정말 오래된 버전을 사용해야 할 수도 있습니다. – ihatetoregister