前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 根据ip生成地理位置的kml文件,在谷歌地图上展示

python 根据ip生成地理位置的kml文件,在谷歌地图上展示

作者头像
用户5760343
发布2019-07-31 15:55:50
1.3K0
发布2019-07-31 15:55:50
举报
文章被收录于专栏:sktjsktj

!/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 = ( '<Placemark>\n' '<name>%s</name>\n' '<Point>\n' '<coordinates>%6f,%6f</coordinates>\n' '</Point>\n' '</Placemark>\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 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: python googleearthPrint.py -p <pcap file>') 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)

代码语言:javascript
复制
kmlheader = '<?xml version="1.0" encoding="UTF-8"?>\
\n<kml xmlns="http://www.opengis.net/kml/2.2">\n<Document>\n'
kmlfooter = '</Document>\n</kml>\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()

把生成的KML放到谷歌地图上

https://www.google.com/earth/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • !/usr/bin/python
  • coding=utf-8
  • 通过IP地址的经纬度构建kml结构
  • 把生成的KML放到谷歌地图上
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档