Ethereal-dev: Re: [Ethereal-dev] Bug ugly protocol graph

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Jaime Fournier <ober@xxxxxxxxxx>
Date: Sun, 13 Mar 2005 10:58:26 -0600 (CST)
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.