Ich bin dabei, ein spezielles Netzwerk-Tool mit einigen Funktionen zum Entschlüsseln und Decodieren von Paketen zu entwickeln. Ich suche nach Sprachen, die bei der Dissektion / Decodierung beliebiger Paketformate helfen sollen. Idealerweise sollte die Lösung auf offenen Standards basieren. Es gibt verwandte Fragen zu SO, aber die meisten befassen sich mit dem gesamten Lebenszyklus von Packet Sniffing (mir interessiert nicht so viel über die Erfassung, es gibt andere Bibliotheken, die das gut machen).
Im Allgemeinen suche ich eine Sprache und ein unterstützendes Framework für die deklarative Definition von Paketformaten und entsprechende Laufzeitdekodierung. Da dieses Problem auf alle binären Nicht-Netzwerkdaten verallgemeinert werden kann, würde eine Lösung, die dies für beliebige binäre Datenströme tut, ebenfalls im Geltungsbereich sein. Ich bin ein wenig überrascht, dass es keinen solchen Standard in einem reifen und robusten Zustand gibt (zumindest, den ich finden könnte) - obwohl es viele interessante, aber nicht ganz richtige und fast schon existierende Projekte zu geben scheint (siehe unten). Vielleicht spricht das für die Schwierigkeit des Problems oder vielleicht für eine mangelnde Nachfrage.
Ich interessiere mich zum Beispiel für Technologien und Ideen ähnlich der folgenden (in keiner bestimmten Reihenfolge):
Ich bin hier nicht unbedingt auf der Suche nach einer vollständigen Lösung (obwohl, wenn jemand von einem weiß, den ich nicht behandelt habe, wäre das großartig). Ich interessiere mich mehr für Kommentare oder Anekdoten über die Technologien, die ich oben angegeben habe, sowie für Hinweise oder Ideen für Routen, an die ich nicht gedacht oder nicht gedacht habe.
Wireshark Dissector Framework ist sehr leistungsfähig. Bitte lesen Sie eine Beschreibung hier -
Ich musste ein ähnliches Problem lösen. Auch für mich musste das Protokoll agnostisch vom tatsächlichen Transitmedium sein (hauptsächlich wäre es udo oder top), aber während des Tests wäre es nur im Speicher ipc.
Also habe ich ein Protokoll mit Hilfe von protobuf -
strukturiert definiertUnd dann habe ich selbst einen Dissektor definiert, aber nicht genau wie - Ссылка
So konnte ich analysieren, indem ich die Dissektion direkt im Speicher analysierte, wenn ich mich im Test befand, und die Drahthaissektion, wenn ich am Draht war. Es gab eine Menge Code Wiederverwendung zwischen Memory Dissector und Wireshark Dissektor natürlich, wie das Protokoll wurde Agnostisch mit Protobuf definiert.
Tags und Links c# parsing networking packet