# lua Skripte in Wireshark GUI einbinden?



## tyroIO (28. September 2010)

Hallo das ist mein erster Forenbeitrag überhaupt  und ich hoffe ich mache nicht viel falsch aber ich versuche einfach mal meine Frage hier richtig zu beschreiben.
*Es geht darum das ich ein ".lua" Skript in die GUI von Wireshark einbinden möchte so das es wie Wireshark(original) ausgeführt wird nur eben mit meinen Angaben und Parametern usw.*
Ich schreibe ein Skript in der Sprache LUA z.B "test.lua" und dieses Skript soll Daten aus dem UDP Protokoll auswerten und eben einige Strings von mir hinzufügen!
Ich habe bis jetzt seit drei Wochen etliche Seiten besucht, viele Foren durchforstet und auch den "developers" und "users Guide" von Wireshark durchgelesen. Natürlich nicht den gesamten Guide aber die Teile mit den Topics die ich zu diesem Thema für wichtig hielt. Leider finde ich nur keine einzige Anleitung in der beschrieben wird wie ich das ganze erstellen soll.

Was soll ich mit meiner ".lua" Datei machen. Wohin soll ich sie einfügen damit Wireshark sie erkennt und in seine GUI einbindet?

Soll ich Wireshark auf eine andere Weise starten? evtl. über die Konsole mit i.w. Parametern?

*Zur Information:*
Ich nutze WinXP pro. 32bit Servicepack3. 
IDE: "LuaEdit" oder "Notepad"
Neueste Version von Wireshark.

Ich bedanke mich im voraus für eure Hilfe, posts, und gegenfragen.


----------



## Matthias Reitinger (28. September 2010)

tyroIO hat gesagt.:


> Was soll ich mit meiner ".lua" Datei machen. Wohin soll ich sie einfügen damit Wireshark sie erkennt und in seine GUI einbindet?
> 
> Soll ich Wireshark auf eine andere Weise starten? evtl. über die Konsole mit i.w. Parametern?


Das steht alles recht deutlich in Abschnitt 11.1 der Wireshark-Doku.

Grüße,
Matthias


----------



## tyroIO (4. Oktober 2010)

Matthias Reitinger hat gesagt.:


> Das steht alles recht deutlich in Abschnitt 11.1 der Wireshark-Doku



Hallo und vielen Dank für die schnelle Antwort,
ich habe mir das komplette elfte Kapitel des Wiresharks User guides durch gelesen und in Abschnitt 11.1 steht wie man lua Skripte von der Konsole aus startet und lua aktiviert. 
Aber ich möchte ja das Skript an die wireshark GUI anbinden so das es in die grafische Oberfläche von Wireshark integriert wird.
Wie kann ich dass machen?

Grüße,
Eugen


----------



## Matthias Reitinger (4. Oktober 2010)

tyroIO hat gesagt.:


> ich habe mir das komplette elfte Kapitel des Wiresharks User guides durch gelesen und in Abschnitt 11.1 steht wie man lua Skripte von der Konsole aus startet und lua aktiviert.
> Aber ich möchte ja das Skript an die wireshark GUI anbinden so das es in die grafische Oberfläche von Wireshark integriert wird.
> Wie kann ich dass machen?





			
				http://www.wireshark.org/docs/wsug_html_chunked/wsluarm.html hat gesagt.:
			
		

> Wireshark's Lua interpreter starts by loading init.lua that is located in the global configuration directory of Wireshark. Lua is enabled by default. To disable Lua the line variable disable_lua should be set to true in init.lua.
> 
> After loading init.lua from the data directory if Lua is enabled Wireshark will try to load a file named init.lua in the user's directory.
> 
> ...


Ist das nicht das, was du suchst? 

Grüße,
Matthias


----------



## tyroIO (5. Oktober 2010)

Das ist nicht ganz das was ich suche.
Wie man lua in Wireshark aktiviert verstehe ich, und dass alle .lua Dateien zuerst durchlaufen werden und dass ich mittels "-X lua_script:<file.lua> " direkt ein Skript aufrufen kann.
Aber dies alles geschieht von der Konsole aus und wenn ich mein Skript aufrufe dann wird das Capture auch in der Konsole gestartet.

Ich würde gerne wissen was ich tun muss um das ganze visuel in die Grafische Oberfläche von Wireshark einzubinden. Sodass mein Skript gestartet wird wie als würde man Wireshark im Standardfall normal starten?

Freundliche Grüße,
Eugen


----------



## Matthias Reitinger (5. Oktober 2010)

Hallo Eugen,

was meinst du mit „dies alles geschieht von der Konsole aus“? Wie genau rufst du Wireshark auf? Wo hast du deine .lua-Datei abgelegt? Was verstehst du unter „Wireshark im Standardfall normal starten“?

Ich habe mal Folgendes probiert:


Die Datei C:\Users\<Benutzername>\AppData\Roaming\Wireshark\plugins\test.lua mit folgendem Inhalt angelegt:
[Lua]do
  local function test()
    local tw = TextWindow.new("Important Message")
    tw:append("Hello World from LUA!")
  end

  register_menu("Lua/Test", test, MENU_TOOLS_UNSORTED)
end[/Lua]
Wireshark über das Startmenü gestartet
Im Menü Tools ? Lua ? Test ausgewählt
Ergebnis:



Scheint also ganz gut zu funktionieren. Der Pfad für die .lua ist bei Windows XP wahrscheinlich etwas anders (verwende hier Vista).

Grüße,
Matthias


----------



## tyroIO (7. Oktober 2010)

Vielen Dank,
es funktioniert bei mir auch.
Aber ich schreibe ja einen Dissector welcher ungefähr so aussehen wird:

```
-- trivial protocol example
-- declare our protocol
trivial_proto = Proto("trivial","Trivial Protocol")
-- create a function to dissect it
function trivial_proto.dissector(buffer,pinfo,tree)
    pinfo.cols.protocol = "TRIVIAL"
    local subtree = tree:add(trivial_proto,buffer(),"Trivial Protocol Data")
    subtree:add(buffer(0,2),"The first two bytes: " .. buffer(0,2):uint())
    subtree = subtree:add(buffer(2,2),"The next two bytes")
    subtree:add(buffer(2,1),"The 3rd byte: " .. buffer(2,1):uint())
    subtree:add(buffer(3,1),"The 4th byte: " .. buffer(3,1):uint())
end
-- load the udp.port table
udp_table = DissectorTable.get("udp.port")
-- register our protocol to handle udp port 7777
udp_table:add(7777,trivial_proto)
```

Nur soweit ich verstehe und gelesen habe muss dieser im gleichen Verzeichnis liegen wie die "init.lua" Datei.
Weil dieser Dissector z.B. "dissector.lua" ja in der "init.lua" Datei aufgerufen wird, ganz unten in der "init.lua" Datei mittels 
	
	
	



```
dofile("dissector.lua")
```
und wenn die Datei "dissector.lua" im Pluginverzeichnis liegt dann gibt Wireshark beim Start einen Fehler aus. Ich will ja das ich Wireshark starte und sobald ich das Interface aussuche und das Capture starte soll Wireshark meinen Dissector berücksichtigen und ausführen.
Dafür ist doch das "Tools"Menue von Wireshark nicht gedacht oder?

Ich hoffe du verstehst was ich meine, aber wenn nicht kannst du mir evtl. einfach ein von dir geschriebenes Beispiel von einem Dissector in LUA schicken oder erklären wie du einen Dissector ausführst. Vielleicht würde ich dann ganz einfach an einem Beispiel verstehen wie das geht.
Ich weiß sonst echt nicht mehr weiter.
Nochmals vielen Dank.

Grüße,
Eugen


----------



## Matthias Reitinger (7. Oktober 2010)

Leg die .lua-Datei einfach im Plugins-Ordner ab. An der init.lua musst du nichts verändern.

Grüße,
Matthias


----------

