Forum: PC-Programmierung Wireshark - Filter


von W1reShark (Gast)


Lesenswert?

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 ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von A. W. (uracolix)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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. ;)

von clonephone82 (Gast)


Lesenswert?

@W1reShark

Hattest du damit zufällig Erfolg?
Ich Suche gerade auch so eine Lösung.

sg
mathias

von fbi (Gast)


Lesenswert?

Das hier könnte auch helfen, macht die Sache deutllich einfacher:

http://wsgd.free.fr/

CU

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
Noch kein Account? Hier anmelden.