added CPE449/geolocation
This commit is contained in:
parent
bd4e2127fe
commit
f242e70afa
BIN
CPE449/geolocation/GeoIP.dat
Normal file
BIN
CPE449/geolocation/GeoIP.dat
Normal file
Binary file not shown.
41
CPE449/geolocation/geoip.py
Normal file
41
CPE449/geolocation/geoip.py
Normal file
@ -0,0 +1,41 @@
|
||||
import pygeoip
|
||||
import re as regex
|
||||
|
||||
ipAddrList = { }
|
||||
|
||||
ipAddrCountry = { }
|
||||
|
||||
geoip = pygeoip.GeoIP('GeoIP.dat')
|
||||
|
||||
loginFile = open("logins.txt")
|
||||
loginList = loginFile.readlines()
|
||||
|
||||
ipAddrRegex = regex.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})')
|
||||
|
||||
uniqueIPs = 0
|
||||
uniqueIPsByCountry = 0
|
||||
|
||||
for login in loginList:
|
||||
ipAddr = regex.split(ipAddrRegex, login)
|
||||
ip = ipAddr[1]
|
||||
if ip in ipAddrList:
|
||||
country = geoip.country_code_by_addr(ip)
|
||||
if country not in ipAddrCountry.values():
|
||||
uniqueIPsByCountry += 1
|
||||
ipAddrList[ip] += 1
|
||||
else:
|
||||
country = geoip.country_code_by_addr(ip)
|
||||
if country not in ipAddrCountry.values():
|
||||
uniqueIPsByCountry += 1
|
||||
ipAddrCountry[ip] = country
|
||||
uniqueIPs+=1
|
||||
ipAddrList[ip] = 1
|
||||
|
||||
print("IP Addresses by count:")
|
||||
for ipCount in ipAddrList:
|
||||
print(ipCount,":", ipAddrList.get(ipCount))
|
||||
print("IP Addresses by country:")
|
||||
for ipCountry in ipAddrCountry:
|
||||
print(ipCountry, ":", ipAddrCountry.get(ipCountry))
|
||||
print("\nNumber of unique IP addresses: ", uniqueIPs, "\n")
|
||||
print("\nNumber of unique IP addresses by Country: ", uniqueIPsByCountry, "\n")
|
1074
CPE449/geolocation/logins.txt
Normal file
1074
CPE449/geolocation/logins.txt
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user