Haupt Andere So verwenden Sie den Lua-Dissektor in Wireshark

So verwenden Sie den Lua-Dissektor in Wireshark



Als eines der weltweit besten Tools zur Erfassung von Netzwerkpaketen ermöglicht Ihnen Wireshark den Zugriff auf bestimmte Datenpakete, sodass Sie diese sowohl offline als auch in Echtzeit analysieren können. Betrachten Sie die App als eine Möglichkeit, die durch Ihr Netzwerk fließenden Daten genau zu untersuchen und so Probleme und Unregelmäßigkeiten zu erkennen.

  So verwenden Sie den Lua-Dissektor in Wireshark

Sie können Dissektoren verwenden, wenn Sie einen bestimmten Teil der Daten eines Pakets analysieren möchten. Wie der Name schon sagt, „zerlegt“ dieser Prozess den Code, sodass Sie bestimmte Aspekte herausschneiden können, die Ihre Aufmerksamkeit erfordern. In diesem Tutorial wird erläutert, wie Sie Dissektoren in Wireshark mithilfe der Skriptsprache Lua erstellen und verwenden.

Bevor Sie beginnen – Was Sie über Dissektoren wissen müssen

Obwohl Dissektoren eine schnelle Möglichkeit bieten, Teile eines Datenpakets in Wireshark zu analysieren, müssen sie einige Protokolle befolgen, um effektiv zu arbeiten. Diese Protokolle umfassen Folgendes:

tot bei Tageslicht Matchmaking mit Freunden
  • Jeder von Ihnen erstellte Dissektor muss registriert werden, um einen bestimmten Nutzlasttyp aus einem anderen Protokoll zu verarbeiten. Um diese Registrierung abzuschließen, müssen Sie Ihrem Dissektor ein „Proto“-Objekt zuweisen, das Sie unten sehen.
  • Wenn Sie einen Dissektor über Wireshark aufrufen, erhält er drei Dinge von der App:
    • TVB-Objekt – Ein TVB-Puffer aus dem Datenpaket.
    • TreeItem-Objekt – Eine Baumwurzel, die einen einzelnen Knoten in einem Datenbaum darstellt.
    • Pinfo-Objekt – Ein Paketinformationsdatensatz.
  • Sie können einen Dissektor nur aufrufen, wenn Ihr Datenpaket mit der DissectorTable übereinstimmt, die Sie für Ihr „Proto“-Objekt festgelegt haben.
    • Sie können diese Anforderung umgehen, indem Sie die Verwendung eines Dissektors über die Funktion „Dekodieren als“ erzwingen. Aber selbst dann können Sie den Dissektor nur erzwingen, wenn die DissectorTable, die Sie für Ihr „Proto“-Objekt festlegen, vom richtigen Typ ist.

Einrichten Ihres Dissektors mit LUA

Da Wireshark sowohl in der Programmiersprache C geschrieben ist als auch diese verwendet, sind die meisten Dissektoren ebenfalls in C geschrieben. Möglicherweise möchten Sie jedoch Lua verwenden. Diese Skriptsprache ist einfacher als C und daher für Programmierneulinge oder diejenigen, die einfach einen Dissektor mit einer leichteren Sprache erstellen möchten, zugänglicher.

Obwohl Ihr Code einfacher ist, ist der Dissektor, den Sie mit Lua erhalten, normalerweise langsamer als der, den Sie mit C erstellen würden. Dennoch sind dies die Schritte, die Sie befolgen müssen, wenn Sie mit Lua einen Wireshark-Dissektor erstellen möchten.

Schritt 1 – Lua in Wireshark einrichten

Sie müssen Lua einrichten, wenn Sie es noch nicht in Wireshark verwendet haben:

  1. Klicken Sie auf „Hilfe“ und anschließend auf „Über Wireshark“.
  2. Klicken Sie auf „Ordner“.
  3. Wählen Sie eine der folgenden Optionen, um ein aktives Lua-Skript zu erstellen:
    • Globale Lua-Plugins
    • Persönliche Lua-Plugins
    • persönlich

Nach der Aktivierung ist Ihr Skript bereit, wenn Sie Wireshark starten. Jedes Mal, wenn Sie eine Änderung an diesem Skript vornehmen, müssen Sie entweder Wireshark neu starten, um die Änderung zu registrieren, oder „Strg + Umschalt + L“ drücken, um alle Ihre Lua-Skripte neu zu laden, damit Ihre Änderungen aktiv werden.

Schritt 2 – Die grundlegenden Schritte zum Erstellen Ihres Dissektors

Wenn Sie bereits mit Lua vertraut sind, können Sie mit den folgenden Schritten Ihr eigenes Dissektorskript erstellen, das in Wireshark funktioniert:

  • Deklarieren Sie das Protokoll für Ihren Dissektor. Dazu müssen Sie sowohl einen Langnamen zur Verwendung im Protokollbaum als auch einen Kurznamen festlegen, der als Anzeigefiltername des Dissektors dient.
    • Erstellen Sie die folgenden drei Felder mit den entsprechenden Typen:
    • Frage – Zeigt den Fragetyp an.
    • Antwort – Zeigt den Antworttyp an.
  • MessageType – Zeigt an, ob Ihr Paket eine Frage oder Antwort anfordert.
  • Registrieren Sie Ihre Felder, damit Wireshark weiß, wie sie angezeigt werden. Ohne registrierte Felder erhalten Sie eine „Lua-Fehler“-Meldung, die Ihnen normalerweise mitteilt, dass Ihr Tree Item ProtoField ungültig ist.
  • Erstellen Sie eine Dissektionsfunktion, die das zuvor erwähnte Pinfo (mit Daten zu Ihrem Paket) und Tree Item (Erstellung des Baums, den Sie an einen Unterbaum anhängen) enthält. Sie müssen außerdem einen „Puffer“ erstellen, der über Ihrem TCP liegt.
  • Geben Sie sowohl das Protokoll als auch den Port an, für den Wireshark den Dissektor verwenden muss. Sie können beispielsweise das Protokoll auf „TCP“ und die Portnummer auf den gewünschten Wert einstellen.

Schritt 3 – Fügen Sie Ihren Dissektor zu Wireshark hinzu

Im Moment ist Ihr Dissektor wie eine Glühbirne ohne Strom. Es existiert, aber es nützt Ihnen nichts, bis Sie es mit etwas Energie versorgen können. Mit anderen Worten, Ihr Dissektor ist noch nicht zu Wireshark hinzugefügt, Sie müssen ihn also manuell hinzufügen, um ihn zum Laufen zu bringen, indem Sie die folgenden Schritte ausführen:

Wie man Amazon Fire Stick 2016 hackt
  1. Klicken Sie auf „Hilfe“ und gehen Sie zum Menü „Über Wireshark“.
  2. Wählen Sie die Registerkarte „Ordner“, um eine Liste mit Pfaden für Ihre Lua-Datei zu finden.
  3. Wählen Sie „Persönliche Lua-Plugins“. Erstellen Sie bei Bedarf ein Verzeichnis.
  4. Kopieren Sie die von Ihnen erstellte Lua-Datei und fügen Sie sie in das Verzeichnis „Personal Lua Plugins“ ein. Laden Sie Wireshark neu, um den Dissektor einzuschalten.

Es ist eine gute Idee, einen Test mit Ihrem neuen Dissektor durchzuführen, indem Sie einige der Pakete öffnen, die Sie erfasst haben. Wireshark sollte eine Nachricht übermitteln, die den von Ihnen für Ihren Dissektor gewählten Langnamen sowie Informationen über den Nachrichtentyp (Frage oder Antwort) und das Ergebnis Ihrer Prüfung enthält.

Einige Beispielcodes

Wenn Sie noch nie einen Dissektor erstellt haben (oder neu bei Lua sind), Wireshark bietet Ihnen einen praktischen Beispiel-Dissektor zum Ausprobieren:

local p_multi = Proto("multi", "MultiProto");
local vs_protos = {
    [2] = "mtp2",
    [3] = "mtp3",
    [4] = "alcap",
    [5] = "h248",
    [6] = "ranap",
    [7] = "rnsap",
    [8] = "nbap"
}
local f_proto = ProtoField.uint8("multi.protocol", "Protocol", base.DEC, vs_protos)
local f_dir = ProtoField.uint8("multi.direction", "Direction", base.DEC, { [1] = "incoming", [0] = "outgoing"})
local f_text = ProtoField.string("multi.text", "Text")
p_multi.fields = { f_proto, f_dir, f_text }
local data_dis = Dissector.get("data")
local protos = {
    [2] = Dissector.get("mtp2"),
    [3] = Dissector.get("mtp3"),
    [4] = Dissector.get("alcap"),
    [5] = Dissector.get("h248"),
    [6] = Dissector.get("ranap"),
    [7] = Dissector.get("rnsap"),
    [8] = Dissector.get("nbap"),
    [9] = Dissector.get("rrc"),
    [10] = DissectorTable.get("sctp.ppi"):get_dissector(3), -- m3ua
    [11] = DissectorTable.get("ip.proto"):get_dissector(132), -- sctp
}
function p_multi.dissector(buf, pkt, tree)
    local subtree = tree:add(p_multi, buf(0,2))
    subtree:add(f_proto, buf(0,1))
    subtree:add(f_dir, buf(1,1))
    local proto_id = buf(0,1):uint()
    local dissector = protos[proto_id]
    if dissector ~= nil then
        -- Dissector was found, invoke subdissector with a new Tvb,
        -- created from the current buffer (skipping first two bytes).
        dissector:call(buf(2):tvb(), pkt, tree)
    elseif proto_id < 2 then
        subtree:add(f_text, buf(2))
        -- pkt.cols.info:set(buf(2, buf:len() - 3):string())
    else
        -- fallback dissector that just shows the raw data.
        data_dis:call(buf(2):tvb(), pkt, tree)
    end
end
local wtap_encap_table = DissectorTable.get("wtap_encap")
local udp_encap_table = DissectorTable.get("udp.port")
wtap_encap_table:add(wtap.USER15, p_multi)
wtap_encap_table:add(wtap.USER12, p_multi)
udp_encap_table:add(7555, p_multi)

Postdissektoren und verkettete Dissektoren

Möglicherweise möchten Sie sich etwas eingehender mit der Verwendung von Dissektoren befassen, sobald Sie deren Erstellung in Lua beherrschen. Wireshark bietet zwei zusätzliche Arten von Dissektoren – Postdissektoren und verkettete Dissektoren – die mehr Funktionalität bieten.

So löschen Sie Textnachrichten Android dauerhaft

Eine Postdissektorierung ähnelt weitgehend einer abschließenden Prüfung aller Dissektoren, die Sie für ein Paket ausgeführt haben. Sie registrieren es, um benachrichtigt zu werden, sobald Wireshark jeden anderen Dissektor aufgerufen hat, den es verwenden soll, und Sie können es zum Filtern der Spalten „Protokoll“ und „Info“ verwenden. Diese Funktion ist besonders nützlich, wenn Sie in einer Sitzung mehrere Pakete herausfiltern möchten, bei denen zwischen den Datensätzen eine lange Lücke bestand und Sie nicht jedes einzelne Paket einzeln abrufen können.

Das Verketten von Dissektoren erfüllt eine ähnliche Funktion (zumindest im Hinblick auf das Filtern durch zuvor verwendete Dissektoren), indem es Ihnen Zugriff auf die Daten eines einzelnen Dissektors ermöglicht. Der Hauptvorteil besteht darin, dass der verkettete Dissektor nicht jedes Paket erneut durchlaufen muss, sodass Sie ein Ergebnis erhalten, ohne auf die erneute Ausführung des ursprünglichen Dissektors warten zu müssen.

In Lua sezieren

Da Wireshark bereits die Möglichkeit bietet, Dissektoren in C (seiner natürlichen Sprache) zu erstellen, sehen Sie möglicherweise nicht die Notwendigkeit, sie auch in Lua zu erstellen. Dennoch werden diejenigen, die mit C nicht vertraut sind, sowie diejenigen, die Lua bereits beherrschen, möglicherweise feststellen, dass die einfache Skripterstellung von Lua die Erstellung ihrer Dissektoren erleichtert. Zugegeben, Sie müssen beim Ausführen des Prozesses im Vergleich zu C-basierten Dissektoren eine längere Ladezeit in Kauf nehmen, aber es ist trotzdem hilfreich, diese Option zu haben.

Vor diesem Hintergrund möchten wir von Ihnen hören. Wie oft verwenden Sie Dissektoren in Wireshark? Haben Sie schon einmal versucht, sie in C zu erstellen, und welche Vorteile bietet die Erstellung von Dissektoren in Lua Ihrer Meinung nach? Lassen Sie es uns im Kommentarbereich unten wissen.

Interessante Artikel

Tipp Der Redaktion

Diese Google Chrome-Seite zeigt alle Interstitial-Warnungen an
Diese Google Chrome-Seite zeigt alle Interstitial-Warnungen an
Google Chrome ist der beliebteste Webbrowser, der für alle wichtigen Plattformen wie Windows, Android und Linux verfügbar ist. Es kommt mit einer leistungsstarken Rendering-Engine, die alle modernen Webstandards unterstützt. Der Browser verfügt über eine versteckte geheime Seite, auf der alle Interstitial-Warnungen oder Benachrichtigungen angezeigt werden, die beim Surfen im Internet mit Chrome auftreten können.
Western Digital My Cloud 2 TB Test
Western Digital My Cloud 2 TB Test
My Cloud von Western Digital hat mehr als jedes andere Gerät dazu beigetragen, die Idee eines NAS als persönliche Cloud bekannt zu machen, und Sie werden keine billigere oder kleinere Möglichkeit finden, ein NAS zum Laufen zu bringen. Das
Behebung des 0xc0000017-Fehlers bei der Installation von Windows 10
Behebung des 0xc0000017-Fehlers bei der Installation von Windows 10
Hier, was mit Fehler 0xc0000017 zu tun ist. Es ist nicht genügend Speicher verfügbar, um ein Ramdisk-Gerät in Windows 10 zu erstellen.
Melden Sie sich in Windows 10 von Cortana ab
Melden Sie sich in Windows 10 von Cortana ab
Durch das Abmelden von Cortana auf Ihrem Gerät wird die Datenerfassung und -nutzung von Cortana auf diesem Gerät gestoppt und die Interessen und Daten auf diesem Gerät gelöscht. So melden Sie sich in Windows 10 bei Cortana ab.
Stellen Sie die Ethernet-Verbindung wie in Windows 10 gemessen ein
Stellen Sie die Ethernet-Verbindung wie in Windows 10 gemessen ein
Es gibt eine Reihe von Situationen, in denen Sie möglicherweise eine kabelgebundene Ethernet-Verbindung als gemessen einstellen müssen. Erfahren Sie, wie Sie dies in Windows 10 tun und warum Sie dies möglicherweise tun möchten.
So deaktivieren Sie den Spielemodus auf einem Samsung-Fernseher
So deaktivieren Sie den Spielemodus auf einem Samsung-Fernseher
Bist du ein Spieler? Wenn nicht, sind Sie möglicherweise mit einigen Einstellungen Ihres Samsung-Fernsehgeräts verwechselt. Samsung und viele andere LCD-Fernseher bieten mehrere Modi, einschließlich des Spielemodus. Wenn Sie kein Spieler sind und dies nicht tun
So schalten Sie ein FitBit ein oder aus [Versa, Inspire, Ionic usw.]
So schalten Sie ein FitBit ein oder aus [Versa, Inspire, Ionic usw.]
Die Akkulaufzeit deines Fitbits kann zwischen einer Woche und 10 Tagen liegen, vorausgesetzt, die GPS-Funktion ist nicht ständig eingeschaltet. Also, Leute, die das Beste aus diesem Aktivitätstracker machen und ihn oft benutzen, könnten es brauchen