Here is an example of what I am talking about:
http://zenii.linux.org.uk/~ober/protos.html
You will need an SVG plugin to view it.
I modified the python script a little to add a couple of features which is
listed in full below.
The options I used were to call this piped into |dot|twopi|neato -Tsvg -o
protos.svg
Then I added some JS code to allow for tooltips.
Each node can be clicked on to go to a url, in this case just an example.
I also have a cgi where you could zoom into a given node by name, where
the svg is rerendered with the protocol of interested in the center, and
zoomed in.
Hope this helps.
#!/usr/bin/env python
import os
tethereal = './tethereal -G decodes'
proto = {}
dissector_dump = os.popen(tethereal)
# Build a dictionary of relationships
print 'digraph Ethereal {'
print 'overlap=scale;'
print 'concentrate=true'
for line in dissector_dump:
line = line.strip()
(filter, selector, child) = line.split()
parent = filter.split('.')[0]
print '\t"' + child + '" [shape=box,
style=bold,color=blue,URL=\"http://www.ethereal.com/protocol_explain.php?proto='
+ child + '\"];'
if not proto.has_key(parent):
proto[parent] = []
if child not in proto[parent]:
proto[parent].append(child)
# Dump out our graph
parents = proto.keys()
parents.sort()
for parent in parents:
proto[parent].sort()
for child in proto[parent]:
print '\t"' + parent + '"->"' + child + '"[color=red];'
print '}'
On Fri, 11 Mar 2005, Gerald Combs wrote:
Date: Fri, 11 Mar 2005 15:26:46 -0600
From: Gerald Combs <gerald@xxxxxxxxxxxx>
Reply-To: Ethereal development <ethereal-dev@xxxxxxxxxxxx>
To: Ethereal development <ethereal-dev@xxxxxxxxxxxx>
Subject: [Ethereal-dev] Bug ugly protocol graph
I wrote a script (attached) that converts the output of "tethereal -G
decodes" into a Graphviz graph. The final output can be found at
http://www.ethereal.com/~gerald/big-ugly-protocol-graph.png . With a
bit of tweaking, we _might_ be able to turn this into a protocol poster.