Extract GPS from Kismet log with ElementTree

I have read a lot of noise about ElementTree but never really used it. Tonight i need to extract a bunch of GPS data from a kismet log file. Let’s give it a try

from elementtree import ElementTree

data = open('Kismet-May-22-2005-4.xml','r').read()

detection = ElementTree.XML(data)

for node in detection.getchildren():
print "SSID: " + node.find('SSID').text,
except AttributeError:pass  #hidden SSID
print "BSSID: " +  node.find('BSSID').text,
gps = node.find('gps-info')
print "Lon: " + gps.find('max-lon').text +  " Lat: "  + gps.find('max-lat').text

Really simple, and seems to offer really good speed. I now have another weapon for every day work.

Related Posts

2 thoughts on “Extract GPS from Kismet log with ElementTree

  1. Possible tweaks:

    - use ElementTree.parse to read the file (but this returns an ElementTree wrapper, not an Element; use getroot() to get the root element, or use findall() to pick out the right kind of subnodes).

    - getchildren() is deprecated; to get all subelements, just loop over the parent container (i.e. “for node in detection” instead of “for node in detection.getchildren()”)

    - node.find(tag).text can be written as node.findtext(tag) (however, the latter returns None if no matching element could be found, the former raises an AttributeError exception).

    - you can use path syntax to pick out text from subelements (e.g. node.findtext(“gps-info/max-lon”) should work).  this is probably slower if you need more than a few subelement texts, though.

    Cheers /F

  2. Thanks for this comment, Fredrick, I now wondering how to merge 2 Elementree, or choose the best element in a node I gonna read the doc.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>