使用Python画谷歌地图

#!/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 = (
            '\n'
            '%s\n'
            '\n'
            '%6f,%6f\n'
            '\n'
            '\n'
            ) %(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 = '\
    \n\n\n'
    kmlfooter = '\n\n'
    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地址的定位地图。



你可能感兴趣的:(使用Python画谷歌地图)