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アドレスの位置決めマップが表示されます.