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地球打开这个文 件,我们可以看到我们数据包的源地址和目的地。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,725评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,135评论 2 59
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,665评论 2 56
  • 再有一个来月,我就正式30周岁了,恍然觉得时间过得真的是快,蓦然回首,过去十年,竟然没有什么值得我拍手称赞的,也没...
    图图不在家阅读 243评论 0 0
  • 有一句话相当有名:人无远虑必有近忧。稍微改一下吧:人无远虑必有近扰。嗯……就改了一个字,把忧虑改成烦扰。再解释一下...
    樊晓玲007阅读 548评论 1 2