Adding Additional Functionality to the
Wireshark GUI with GTK+
June 18, 2009
Stephen Fisher
Wireshark Core Developer
Network Engineer
SHARKFEST '09
Stanford University
June 15-18, 2009
SHARKFEST '09 | Stanford University | June 15 –18, 2009
What is GTK+
 GTK+ is short for the GIMP Toolkit. It was originally
created for use by the GNU Image Manipulation
Program(GIMP).
 GTK+ is available for Unix (X), Microsoft Windows
and MacOS X .
 GTK+ is written in C and comes with a C based API.
APIs for other languages are available.
SHARKFEST '09 | Stanford University | June 15 –18, 2009
How Wireshark uses GTK+
 Almost all GUI presentations in Wireshark are done
through GTK+. A notable exception is the native
Microsoft Windows File Save dialogs.
SHARKFEST '09 | Stanford University | June 15 –18, 2009
The Export Objects feature
In the GUI, go to:
Find
Export
Objects
We will be studying how the
the HTTP Export Object’s GUI
was created.
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Main Menu To Export Object
gtk/main_menu.c
The underline in front of a letter means
that letter is the shortcut key in the menu.
gtk/export_object_http.c
We use _U_ to tell
gcc that the parameter
is unused in the
function.
gtk/export_object.c
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window
gtk/export_object.c: export_object_window() continued
gtk/export_object.h:
epan/prefs.h:
(pixels)
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window(cont.)
gtk/export_object.c: export_object_window() continued
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window(cont.)
gtk/export_object.c: export_object_window() continued
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window(cont.)
gtk/export_object.c: export_object_window() continued
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window(cont.)
gtk/export_object.c: export_object_window() continued
(Repeated for each column…)
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window(cont.)
gtk/export_object.c: export_object_window() continued
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window(cont.)
gtk/export_object.c: export_object_window() continued
(repeated for each button …)
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Creating the Window(cont.)
gtk/export_object.c: export_object_window() continued
SHARKFEST '09 | Stanford University | June 15 –18, 2009
The Finished Window
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Window Filled With Tap Data
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Further reading
GTK+ Reference Manual:
http://library.gnome.org/devel/gtk/stable/
GTK+ Index of All Symbols (functions and such):
http://library.gnome.org/devel/gtk/stable/api-index-full.html
GTK+ 2.0 Tree View Tutorial:
http://scentric.net/tutorial/
Wireshark Developer’s Guide:
http://www.wireshark.org/docs/wsdg_html_chunked/
Wireshark Developer README:
http://anonsvn.wireshark.org/viewvc/trunk/doc/README.developer?view=co or
doc/README.developer in source code tree
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Questions ?
I’m happy to answer any of your questions now, after this session or any time you
see me during the conference.
Ask other core and non-core developers; a number of which are proficient at GTK
programming.
Ask them on the [email protected] mailing list (subscription required to
get the responses to your question). I am subscribed to this mailing list.
Review existing code in the gtk/ directory in the source code tree
SHARKFEST '09 | Stanford University | June 15 –18, 2009
Descargar

DT-9 (Fisher) Extend Wireshark With GTK