Python Shodan API返回多个端口值

2024-05-20 16:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

看了这些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

Tags: 端口key文档脚本apiwebhttp界面
1条回答
网友
1楼 · 发布于 2024-05-20 16:45:24

您的脚本正在Shodan主数据库中搜索包含字符串“ics”的服务横幅以及这些设备在美国的位置。搜索的结果是横幅,即服务,而不是主机!一个服务横幅只能有一个与之相关的端口,这就是为什么你只能看到这一点。但是,一个主机可以运行多个服务,并且有许多打开的端口。听起来你真的很感兴趣。如果要获取主机的端口/服务的完整列表,则需要使用“api.主机()”方法。在

host = api.host('8.8.8.8')

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

还要注意,在横幅中搜索“ics”与搜索工业控制系统是不一样的。您需要使用搜索筛选器,例如:

^{pr2}$

Shodan上有一节概述了爬网的各种ICS协议以及如何搜索它们:

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

相关问题 更多 >