我想使用 Shodan 获取网络的所有开放端口(我知道我可以使用nmap
,但我想用 Shodan 执行此操作)。
问题是网站只显示“顶级服务”,我想获得所有服务。
例如,对于这个网络:195.53.102.0/24 我有以下端口:
TOP SERVICES
HTTP 15
HTTPS 2
DNS 2
FTP 2
IKE-NAT-T 1
但是如果我扫描这个网络:195.53.0.0/16,我会得到这些端口:
TOP SERVICES
HTTP 1,012
HTTPS 794
179 290
IKE 238
IKE-NAT-T 227
所以我缺少像dns
和这样的服务ftp
。
我正在尝试使用来自 python 的 API:
import shodan
SHODAN_API_KEY = "XXXXXXXXXXXXXXXXXXXXXXx"
api = shodan.Shodan(SHODAN_API_KEY)
# Wrap the request in a try/ except block to catch errors
try:
# Search Shodan
results = api.search('net:195.53.102.0/24')
for service in results['matches']:
print service['ip_str']
print service['port']
except shodan.APIError, e:
print 'Error: %s' % e
这是我得到的结果:
195.53.102.193
80
195.53.102.138
80
195.53.102.148
80
195.53.102.136
80
195.53.102.157
80
195.53.102.226
443
195.53.102.66
500
195.53.102.133
80
195.53.102.142
80
195.53.102.66
4500
195.53.102.141
80
195.53.102.131
21
195.53.102.152
53
195.53.102.153
21
195.53.102.209
80
195.53.102.132
53
195.53.102.226
80
195.53.102.147
80
195.53.102.142
443
195.53.102.178
80
195.53.102.135
143
195.53.102.146
80
195.53.102.143
80
195.53.102.144
80
每个 IP 只有 1 个端口,例如,这个 IP:195.53.102.131 开放了 21、80 和 443 端口,我的结果只是:
195.53.102.131
21
代替:
195.53.102.131
21
80
443
因此,我希望从网站获得所有端口/服务,而不仅仅是TOP SERVICES
从 API 获得每个 IP 的所有端口,而不仅仅是 1。或者如果有人有更好的解决方案,我也想听。
正如我所说,我想用 Shodan 来执行它,而不是 nmap。先感谢您。