Hallo, ein Slave sendet über eine RS485 Verbindung Daten an einen Master. Ein uC liest die Datenübertragung mit und sendet die Daten über ein USB Kabel bzw. über einen USB COM Port an meinen PC. Für die Auswertung der Daten habe ich das Programm USBPcap am laufen, welches die Daten live an Wireshark weiterleitet. Wisst ihr, ob es möglich ist eigene Filter oder ähnliches für Wireshark zu schreiben, um meine Daten zu filtern ? Wireshark kann ja erstmal nichts mit dem Übertragungsprotokoll der RS485 Verbindung anfangen. Wie könnte man das am einfachsten lösen ?
Du hast zwei Filterebenen: Die erste ist das capture filter, welches Unterstützung seitens des Kerneltreibers benötigt, damit die nicht interessierenden Daten gar nicht erst aus dem Kernel ins Userland befördert werden. Der Klassiker dafür ist das Programm tcpdump, welches das BPF (Berkeley Packet Filter) im Kernel bedient. Entsprechend äquivalente Dinge werden auch in nicht-Berkeley-Systemen implementiert. Meines Wissens hat die USB-Capture-Schnittstelle im Linux keine derartige Funktionalität. Wäre manchmal recht praktisch, wenn man auf diese Weise bspw. die nicht interessierenden Mouse-Events schon vor dem Capture rauswerfen könnte … Alle mitgeschnittenen Daten landen dann im Wireshark. Dort kann man per display filter nochmal eine Auswahl treffen, was man sich von den Daten wirklich anzeigen lassen will. Beim display filter kannst du alles als Filterkriterium benutzen, was der entsprechende Dissektor im Wireshark klassifiziert hat. Durch die Lua-Schnittstelle kannst du eigene Postprozessoren oder Dissektoren auch zur Laufzeit einfügen. Das ist zwar nicht so performant wie eincompilierte, bietet aber viel Flexibilität, um „mal schnell“ eigene Protokolle analysieren zu lassen. Ein solcher Postprozessor oder Dissektor kann sich dabei auch in die normale Wireshark-Hierarchie einklinken, sodass man dessen Klassifizierung für ein display filter nutzen kann. Auch kannst du die Datenelemente für die Darstellung hierarchisch einsortieren und dann auf- und zuklappen. Habe sowas mal für ein paar spezielle Protokolle oberhalb von IEEE 802.15.4 geschrieben. Artet allerdings ziemlich schnell in eine Fleißübung beim Schreiben des Lua-Scripts aus, auch muss man erstmal in die Denkweise dieser Wireshark-Interna reinkommen. Beim µracoli-Projekt findest du entsprechende Beispiele.
Um Joergs Hinweis explizit zu machen, einen Lua Filter gibt es hier: http://hg.savannah.gnu.org/hgweb/uracoli/file/2614eb79d433/Tools/p2p.lua Man startet es mit wireshark -Xlua_script:p2p.lua Das ist sicher die einfachste Loesung um rasch einen Custom-Dissector zu schreiben, ohne Wireshark neu kompilieren zu muessen.
A. W. schrieb: > wireshark -Xlua_script:p2p.lua Alternativ im ~/.wireshark/ eine Datei namens init.lua anlegen, die sowas enthält:
1 | dofile("/home/joerg/src/uracoli/Tools/p2p.lua") |
Dann wird der Script automatisch mit reingezogen. (Keine Ahnung, was das Äquivalent unter nicht-unixoiden Systemen wäre.) Danke fürs Raussuchen, Axel, ich war damals zu faul dazu. ;)
@W1reShark Hattest du damit zufällig Erfolg? Ich Suche gerade auch so eine Lösung. sg mathias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.