Python Shodan API - 返回多个端口值
Python Shodan API - Returning multiple port values
查看这些 SHODAN 文档,我不确定我是否理解为什么我在 运行 脚本时只返回第一个端口详细信息。当我查看 Web 界面时,我可以看到针对某些设备检测到多个 ports/services...
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" 以及设备位于美国的服务横幅。搜索的结果是横幅;即服务 - 而不是主机!服务标语只能关联 1 个端口,这就是为什么您只能看到这一点。但是,一个主机可以 运行 多个服务并有许多开放的端口。听起来这就是您真正感兴趣的。如果您想获得主机拥有的端口/服务的完整列表,那么您需要使用 "api.host()" 方法。
host = api.host('8.8.8.8')
这将 return 给定 IP 在互联网上 public 所有端口/服务的列表。
另请注意,在横幅中搜索 "ics" 与搜索工业控制系统不同。您将需要使用搜索过滤器,例如:
category:ics
Shodan 上有一节概述了被爬取的各种 ICS 协议以及如何搜索它们:
https://www.shodan.io/explore/category/industrial-control-systems
查看这些 SHODAN 文档,我不确定我是否理解为什么我在 运行 脚本时只返回第一个端口详细信息。当我查看 Web 界面时,我可以看到针对某些设备检测到多个 ports/services...
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" 以及设备位于美国的服务横幅。搜索的结果是横幅;即服务 - 而不是主机!服务标语只能关联 1 个端口,这就是为什么您只能看到这一点。但是,一个主机可以 运行 多个服务并有许多开放的端口。听起来这就是您真正感兴趣的。如果您想获得主机拥有的端口/服务的完整列表,那么您需要使用 "api.host()" 方法。
host = api.host('8.8.8.8')
这将 return 给定 IP 在互联网上 public 所有端口/服务的列表。
另请注意,在横幅中搜索 "ics" 与搜索工业控制系统不同。您将需要使用搜索过滤器,例如:
category:ics
Shodan 上有一节概述了被爬取的各种 ICS 协议以及如何搜索它们:
https://www.shodan.io/explore/category/industrial-control-systems