pygeoip通过域名 IP获得地理位置
时间:2022-07-22
本文章向大家介绍pygeoip通过域名 IP获得地理位置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
很多恶意的网络行为,会很明显的在ip位置中凸显出来,比如一个域名,经常访问的大多数人应该位置于中国大陆,可以是最近出现了美国纽约的ip与该域名的文件通信。
我们就可以快速的进行访问,并进行恶意拦截。
MaxMind公司提供了一个开源了Geoliteip数据库,可以提供域名或ip的快速定位。
下载链接
wget http://geolite.maxmind.com/download/geoip/database/ GeoLiteCity.dat.gz
通过域名和ip获取地理位置
import pygeoip as pygeoip
gi = pygeoip.GeoIP('/opt/GeoIP/GeoIP.dat')
def getGeoByIP(tgt):
rec = gi.record_by_addr(tgt)
city = rec['city']
country = rec['country_name']
long = rec['longitude']
lat = rec['latitude']
print('[*] Target: ' + tgt + ' Geo-located. ')
print('[+] '+str(city)+', '+str(country))
print('[+] Latitude: '+str(lat)+ ', Longitude: '+ str(long)) tgt = '173.255.226.98')
def getGeoByName(name):
rec = gi.record_by_name(tgt)
city = rec['city']
country = rec['country_name']
long = rec['longitude']
lat = rec['latitude']
print('[*] Target: ' + tgt + ' Geo-located. ')
print('[+] '+str(city)+', '+str(country))
print('[+] Latitude: '+str(lat)+ ', Longitude: '+ str(long)) tgt = '173.255.226.98')
getGeoByIP(tgt)
getGeoByName(name)
同时可以生成google地球需要的kml文件,导入google地球就可以看到地球上的位置。
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 Exception, e:
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
运行我们的脚本,我们将输出内容到KML文件中,用Google地球打开这个文 件,我们可以看到我们数据包的源地址和目的地。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一致性哈希的golang实现
- Array - 75. Sort Colors
- Array - 309. Best Time to Buy and Sell Stock with Cooldown
- Array - 55. Jump Game
- 【技术创作101训练营】超简单的公司Git+个人Git共存方式
- css高度坍塌与清除浮动
- 无缝切换在线升级的终极探索
- promise详解
- Vuex是怎样进行状态管理的
- Matplotlib玩转动态可视化
- JavaScript类型判断的四种方法
- Markdown基础语法
- 仿bilibili弹幕样式的404页面
- JS中的原型和原型链
- 一文看懂 Pandas 中的透视表