pygeoip通过域名 IP获得地理位置

作者: Tim在路上 | 来源:发表于2018-11-12 09:46 被阅读1次

    很多恶意的网络行为,会很明显的在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地球打开这个文 件,我们可以看到我们数据包的源地址和目的地。

    相关文章

      网友评论

        本文标题:pygeoip通过域名 IP获得地理位置

        本文链接:https://www.haomeiwen.com/subject/gdegxqtx.html