看了这些SHODAN文档,我不知道为什么在运行脚本时只返回第一个端口详细信息。当我查看web界面时,我可以看到一些设备检测到多个端口/服务。。。在
http://shodan.readthedocs.io/en/latest/tutorial.html#connect-to-the-api
#!/usr/bin/python
import shodan
SHODAN_API_KEY = "xxxxxxx"
api = shodan.Shodan(SHODAN_API_KEY)
try:
results = api.search('ics country:"US"')
for item in results['matches']:
print """
Port: %s
Banner: %s
""" % (item['port'], item['data'])
except shodan.APIError, e:
print 'Error: %s' % e
您的脚本正在Shodan主数据库中搜索包含字符串“ics”的服务横幅以及这些设备在美国的位置。搜索的结果是横幅,即服务,而不是主机!一个服务横幅只能有一个与之相关的端口,这就是为什么你只能看到这一点。但是,一个主机可以运行多个服务,并且有许多打开的端口。听起来你真的很感兴趣。如果要获取主机的端口/服务的完整列表,则需要使用“api.主机()”方法。在
这将返回给定IP在Internet上公开的所有端口/服务的列表。在
还要注意,在横幅中搜索“ics”与搜索工业控制系统是不一样的。您需要使用搜索筛选器,例如:
^{pr2}$Shodan上有一节概述了爬网的各种ICS协议以及如何搜索它们:
https://www.shodan.io/explore/category/industrial-control-systems
相关问题 更多 >
编程相关推荐