-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathipinfo.py
executable file
·90 lines (67 loc) · 1.78 KB
/
ipinfo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python
import sys
import dns.resolver
import dns.reversename
import geoip2.database
import pyasn
import shodan
'''
INPUT:
IP address
OUTPUT:
IP CC ASN CIDR domainname
IP address, country code according to MaxMind
database, ASN and CIDR range according to
RouteViews MRT/RIB BRP database.
REQUIRES:
dnspython
geoip2
pyasn
shodan
up-to-date databases for geoip2 and pyasn (see their docs)
API key for shodan
pyasn_util_download.py --latest
pyasn_util_convert.py --single rib.20171201.1600.bz2 ipasn.dat
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
'''
PATH = '/PATH/TO/DATA/FILES'
gi = geoip2.database.Reader(PATH + '/GeoLite2-Country.mmdb')
asndb = pyasn.pyasn(PATH + '/ipasn.dat')
ip = sys.argv[1].strip()
SHODAN_API_KEY = "INSERT YOUR SHODAN API KEY HERE"
api = shodan.Shodan(SHODAN_API_KEY)
try:
asndata = asndb.lookup(ip)
except:
ip = '127.0.0.1'
asndata = asndb.lookup(ip)
cc = gi.country(ip)
cc = cc.country.iso_code
try:
host = api.host(ip)
sorg = host.get('org')
sports = host.get('ports')
stags = host.get('tags')
shostnames = host.get('hostnames')
scc = host.get('country_code')
sasn = host.get('asn')
svulns = host.get('vulns')
except:
sorg = 'None'
sports = 'None'
stags = 'None'
shostnames = 'None'
scc = 'None'
sasn = 'None'
svulns = 'None'
asn = asndata[0]
cidr = asndata[1]
print 'IP GeoCC ShoCC rvAS ShoAS rvCIDR ShoORG DNS ShoDNS ShoPorts ShoTags ShoVulns'
answer = "%s|%s|%s|%s|%s|%s|%s|" % (ip, str(cc), str(scc), str(asn), str(sasn), str(cidr), str(sorg))
try:
for a in dns.resolver.query(dns.reversename.from_address(ip), 'PTR'):
answer += "%s|" % a
except:
answer += 'None|'
answer += "%s|%s|%s|%s" % (shostnames,sports,stags,svulns)
print answer