Python Shodan API - 返回多个端口值

标签 python shodan

查看这些 SHODAN 文档,我不确定我是否理解为什么我在运行脚本时只获得返回的第一个端口详细信息。当我查看网络界面时,我可以看到某些设备检测到多个端口/服务...

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')

这将返回给定 IP 在 Internet 上公开的所有端口/服务的列表。

另请注意,在横幅中搜索“ics”与搜索工业控制系统不同。您将需要使用搜索过滤器,例如:

category:ics

Shodan 上有一个部分概述了所抓取的各种 ICS 协议(protocol)以及如何搜索它们:

https://www.shodan.io/explore/category/industrial-control-systems

关于Python Shodan API - 返回多个端口值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37164351/

相关文章:

python - Django中Manytomany字段自定义显示对象

python - 绍丹。获取网络的所有开放端口

python - Django查询

python - Google Calendar API (Python) send_event_notifications 不发送电子邮件

java - 根据位置过滤 Shodan 查询结果

python - Shodan.py 搜索在打印匹配列表时不打印完整的结果集

python - 属性错误 : 'str' object has no attribute '_request' for shodan api

python - 在 linux 上运行的 python 脚本中终止进程

python - map_partitions 的返回值是多少?