PythonでGoogleマップを描く

2195 ワード

#!/usr/bin/python
#coding=utf-8

import dpkt
import socket
import pygeoip
import optparse

gi = pygeoip.GeoIP('GeoLiteCity.dat')

#   IP        kml  
def retKML(ip):
    rec = gi.record_by_name(ip)
    try:
        longitude = rec['longitude']
        latitude = rec['latitude']
        kml = (
            '
' '%s
' '
' '%6f,%6f
' '

' '

' ) %(ip,longitude, latitude) return kml except: return ' ' def plotIPs(pcap): kmlPts = '' for (ts, buf) in pcap: try: eth = dpkt.ethernet.Ethernet(buf) ip = eth.data # 32 IPV4 IP src = socket.inet_ntoa(ip.src) srcKML = retKML(src) dst = socket.inet_ntoa(ip.dst) dstKML = retKML(dst) kmlPts = kmlPts + srcKML + dstKML except: pass return kmlPts def main(): parser = optparse.OptionParser('[*] Usage : ./googleearthPrint.py -p ') parser.add_option('-p',dest='pcapFile',type='string',help='specify pcap filename') (options,args) = parser.parse_args() if options.pcapFile == None: print parser.usage exit(0) pcapFile = options.pcapFile f = open(pcapFile) pcap = dpkt.pcap.Reader(f) kmlheader = '\


' kmlfooter = '


' kmldoc = kmlheader + plotIPs(pcap) + kmlfooter # print kmldoc with open('googleearthPrint.kml', 'w') as f: f.write(kmldoc) print "[+]Created googleearthPrint.kml successfully" if __name__ == '__main__': main()

グーグル地球を訪問しますhttps://www.google.com/earth/
左側のオプションにkmlファイルをインポートします.
インポート後、いずれかのIPをクリックすると、そのIPアドレスの位置決めマップが表示されます.