diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2013-11-30 17:45:00 +0200 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2013-11-30 17:45:00 +0200 |
| commit | ec29193c8d3cf7613a84b57a297d67dce0a7a23b (patch) | |
| tree | 5d8a4c9bb76fc89c3e88ff605d7dd5230b71bc19 /kismet-gps-tools.py | |
| parent | 0a67b3b0543c93499743e5304440a91aa1650f8c (diff) | |
Serializer class bug fixes
Add -n and -vv flags
Diffstat (limited to 'kismet-gps-tools.py')
| -rwxr-xr-x | kismet-gps-tools.py | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/kismet-gps-tools.py b/kismet-gps-tools.py index 5a906db..3201394 100755 --- a/kismet-gps-tools.py +++ b/kismet-gps-tools.py @@ -40,7 +40,7 @@ class ShapefileSerializer(object): logging.info('Saved shapefiles to shapefiles/networks.*') -class KMLSerialzier(object): +class KMLSerializer(object): _serializer_id = 'kml' def __init__(self, networks): @@ -50,6 +50,21 @@ class KMLSerialzier(object): raise Exception('KML serializing not implemented yet') +class CSVSerializer(object): + _serializer_id = 'csv' + + def __init__(self, networks): + self.networks = networks + + def serialize(self): + logging.info('Applying CSV Serializer') + with open('networks.csv', 'w') as out: + for network in self.networks: + logging.debug('Adding point:{},{},{}'.format(network.essid, network.lat, network.lng)) + out.write('{},{},{}\n'.format(network.essid, network.lng, network.lat)) + logging.info('Saved shapefiles to networks.csv') + + class NetXMLParser(object): def __init__(self, filename): self.filename = filename @@ -58,7 +73,8 @@ class NetXMLParser(object): logging.info('Parsing input file {}'.format(self.filename)) root = ET.parse(self.filename).getroot() wireless_networks = root.iter('wireless-network') - return filter(None, [self.parse_network(network) for network in wireless_networks]) + networks = [self.parse_network(network) for network in wireless_networks] + return [n for n in networks if n] def parse_network(self, network): bssid = network.find('BSSID').text @@ -74,25 +90,32 @@ class NetXMLParser(object): return None -def run(input_filename, output_format): +def run(input_filename, output_format, serialize): networks = NetXMLParser(input_filename).parse() - for c in (KMLSerialzier, ShapefileSerializer): - if c._serializer_id == output_format: - serializer = c(networks) - serializer.serialize() + if serialize: + for c in (KMLSerializer, ShapefileSerializer, CSVSerializer): + if c._serializer_id == output_format: + serializer = c(networks) + serializer.serialize() + else: + logging.info('Skipping serialization') if __name__ == '__main__': parser = argparse.ArgumentParser(description='Kismet GPS Tools') parser.add_argument('-i', '--input-file', metavar='input_file', type=str, help='netxml input file', required=True) parser.add_argument('-f', '--output-format', metavar='output_format',type=str, - choices=[c._serializer_id for c in (KMLSerialzier, ShapefileSerializer)], + choices=[c._serializer_id for c in (KMLSerializer, ShapefileSerializer, CSVSerializer)], help='output file format', required=True) parser.add_argument('-v', '--verbose', help='verbose output', action='store_true', default=False) + parser.add_argument('-vv', '--veryverbose', help='very verbose output', action='store_true', default=False) + parser.add_argument('-n', '--noserialize', help='do not create any output', action='store_false', default=True) args = parser.parse_args() if args.verbose: logging.basicConfig(level=logging.INFO) + if args.veryverbose: + logging.basicConfig(level=logging.DEBUG) - run(args.input_file, args.output_format) + run(args.input_file, args.output_format, serialize=args.noserialize) |
