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地球打开这个文 件,我们可以看到我们数据包的源地址和目的地。
- React Native之携程Moles框架
- 从Android短信漏洞到手机钓鱼木马
- 老外手把手带你搭建DMZ渗透测试实验室(Part 1,2)
- 与机器学习算法有关的数据结构
- 32764端口后门重出江湖,影响多款路由器
- 安全科普:SQLi Labs 指南 Part 1
- Do You Kown Asp.Net Core - 根据实体类自动创建Razor Page CURD页面模板
- 2014上半年国内安卓银行应用隐私泄露和安全隐患研究报告
- Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page
- Metasploitable2使用指南
- 在渗透测试中使用fuzz技术(附windows安装指南)
- 黑了记者:写个恶意软件玩玩(二)
- 开源BUG跟踪平台JIRA目录遍历漏洞分析
- 黑了记者:写个恶意软件玩玩(一)
- 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 数组属性和方法
- 【STM32H7】第7章 RL-TCPnet V7.X网络协议栈移植(RTX5)
- TinyMCE 富文本编辑器的使用实例指导
- dotnet 在国产 UOS 系统利用 dotnet tool 工具做文件传输
- [白话解析] 深入浅出支持向量机(SVM)之核函数
- C# 线程同步之事件信号阻塞 AutoResetEvent
- [白话解析] 深入浅出最大熵模型
- [白话解析] 带你一起梳理Word2vec相关概念
- 利用SSE服务器主动向浏览器端发送消息
- [白话解析] Flink的Watermark机制
- [源码分析] 从源码入手看 Flink Watermark 之传播过程
- [白话解析]以水浒传为例学习隐马尔可夫模型
- [白话解析]用水浒传为例学习最大熵马尔科夫模型
- [白话解析] 用水浒传为例学习条件随机场
- 03.Android崩溃Crash库之ExceptionHandler分析
- 04.Android崩溃Crash库之Loop拦截崩溃和ANR