2016-07-19 19 views
0

Ich schreibe einen benutzerdefinierten Lua Dissektor für ein Protokoll, das über TCP und UDP gesendet werden kann. Gemäß der README.heuristic Datei kann dies den folgenden Code durchgeführt werden:Wireshark-Entwicklung: Heuristische Funktion mit mehreren Protokollen in Lua registrieren

/* register as heuristic dissector for both TCP and UDP */ 

heur_dissector_add("tcp", dissect_PROTOABBREV_heur_tcp, "PROTOABBREV over TCP", 
       "PROTOABBREV_tcp", proto_PROTOABBREV, HEURISTIC_ENABLE); 
heur_dissector_add("udp", dissect_PROTOABBREV_heur_udp, "PROTOABBREV over UDP", 
       "PROTOABBREV_udp", proto_PROTOABBREV, HEURISTIC_ENABLE); 

Ich habe dies in C geschrieben für unseren Dissektor erfolgreich umgesetzt/C++. Die Lua-Implementierung von proto: register_heuristic (listname, func) lässt jedoch nur eine heuristische Funktion pro Protokollobjekt zu, obwohl ich zwei eindeutige heuristische Listennamen verwende.

Anrufe an:

my_proto:register_heuristic("udp", my_heur_func) 

my_proto:register_heuristic("tcp", my_heur_func) 

Ergebnis in Wireshark einen Fehler anzeigt, die bereits my_proto eine heuristische Funktion registriert hat. Bei der Überprüfung der Quelle scheint der C-Code hinter der Lua-Funktion anstelle des heuristischen Listennamens auf den Proto-Namen zu prüfen. Daher kann ich meine heuristische Funktion nur für einen einzelnen heuristischen Listennamen registrieren.

Ist dies eine Lua-Einschränkung oder gibt es eine andere Möglichkeit, meine heuristische Funktion mit mehreren heuristischen Listennamen zu registrieren? Kurz vor einer anderen Lösung scheint es, dass ich zwei separate Lua Dissektoren erstellen muss. Eine für TCP und eine für UDP.

Antwort

0

Sie könnten eine Wireshark enhancement bug ablegen, indem Sie Lua Dissectors auffordern, sich für mehr als eine heuristische Tabelle zu registrieren, genau wie integrierte C Dissektoren können?