前言
本篇我们将介绍Python调用shodan的api接口并拿取数据的方法。
一.功能目的
使用python调shodan的api接口,实现查询单个靶机(ip+port)的信息,并拿取返回数据。
二.功能调研
我们需要参考官方文档:点击跳转shodan官方库
根据浏览官方文档,我们可以提取到以下信息:
1.API_KEY值要注册等候后拿取到
注册登录后,点击ACCOUNT-点击show,就可以拿到key值了
2.直接调用库来发送对应的请求,拿取数据。
三.编写代码
1.代码示例
官方代码如下(示例):
from shodan import Shodan
api = Shodan('MY API KEY')
# 扫描单个ip
ipinfo = api.host('8.8.8.8')
print(ipinfo)
# 搜索被“黑客攻击”的网站
for banner in api.search_cursor('http.title:"hacked by"'):
print(banner)
# 获取互联网上工业控制系统服务的总数
ics_services = api.count('tag:ics')
print('Industrial Control Systems: {}'.format(ics_services['total']))
2.填入数据
根据自己的搜索条件,编写以下代码代码如下(示例):
from shodan import Shodan
class GetResult:
def get_shodan_result(self):
"""开始发送 shodan 扫描请求"""
shodan_api = shodan.Shodan(API_key)
data = shodan_api.search(ip:182.73.253.90 port:443)
print(data)
if data['matches'][0]['http']['status'] != 200:
print('shodan 请求失败,请检查配置')
return False
self.var['shodan_data_result'] = data
product = data['matches'][0]['product']
print(product)
INS = GetResult()
INS.get_shodan_result()
3.环境准备
pip install shodan
总结
本文主要讲了使用python调shodan的api接口,实现查询单个靶机(ip+port)的信息的拿取,后续会持续补充,欢迎关注!