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: "Olivier Biot (Ethereal)" <ethereal@xxxxxxxxxxxxxxx>
Date: Tue, 15 Mar 2005 01:14:56 +0100
Very nice! This is really very cool!

Could it be possible to add the string based following, e.g., MIME media type?

Best regards,

Olivier
----- Original Message ----- From: "Jaime Fournier"

OK, for those that do not want to go through the pain of installing a SVG plugin here is a demo vid of svg nagivation using the url I sent earlier

http://www.linux.org.uk/~ober/svg.mpg



On Sun, 13 Mar 2005, Jaime Fournier wrote:

Date: Sun, 13 Mar 2005 10:58:26 -0600 (CST)
From: Jaime Fournier

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

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.