shodan python

Python调用 shodan API接口 本篇我们将介绍Python调用shodan的api接口并拿取数据的方法。from shodan import Shodan api = Shodan('MY API KEY') # 扫描单个ip ipinfo = api.host('8.8.8.8') print(ipinfo) 阅读详情

为了开始使用Shodan的Python库,首先要确保你已经收到了API密钥。一旦完成,就可以通过以下方法来安装库:

(注:API密钥可以通过注册shodan账户获得)

$ easy_install shodan

升级到最新版本:

$ easy_install -U shodan

由于向后兼容的特性,所以更新库始终是安全的。通常,库的新版本仅仅意味着有新的方法/特性可用。

连接到api

我们的代码中需要做的第一件事是初始化API对象:

import shodan
SHODAN_API_KEY = "API密钥 "
api = shodan.Shodan(SHODAN_API_KEY)

复制

搜索Shodan

现在我们已经有了API对象,我们就准备执行搜索了:

#将请求包装在一个try/ except块中以捕获错误
try:
        # Search Shodan
        results = api.search('apache')
        # Show the results
        print 'Results found: %s' % results['total']
        for result in results['matches']:
                print 'IP: %s' % result['ip_str']
                print result['data']
                print ''
except shodan.APIError, e:
        print 'Error: %s' % e

复制

遍历代码,我们首先调用api对象的Shodan.search()方法,它将返回的结果信息放入字典。然后,我们打印出总共发现了多少结果,最后通过返回的匹配进行循环,并打印IP和标语。每一页的搜索结果包含多达100个结果。

还有很多信息会通过函数返回。下面是一个简短的示例字典,它由Shodan.search()返回:

{
        'total': 8669969,
        'matches': [
                {
                        'data': 'HTTP/1.0 200 OKrnDate: Mon, 08 Nov 2010 05:09:59 GMTrnSer...',
                        'hostnames': ['pl4t1n.de'],
                        'ip': 3579573318,
                        'ip_str': '89.110.147.239',
                        'os': 'FreeBSD 4.4',
                        'port': 80,
                        'timestamp': '2014-01-15T05:49:56.283713'
                },
                ...
        ]
}

复制

访问REST API文档(https://developer.shodan.io/api),以获得方法返回属性的完整列表。

把所有API请求都封装在一个try/ except子句中也是一种很好的做法,因为任何错误都会引发异常。但为了简单起见,我们现在暂时不用try/ except。

查找主机

要查看Shodan在特定IP上可用的内容,我们可以使用Shodan.host()函数:

#查找主机
host = api.host('217.140.75.46')
#输出信息

print """
        IP: %s
        Organization: %s
        Operating System: %s
""" % (host['ip_str'], host.get('org', 'n/a'), host.get('os', 'n/a'))
# Print all banners
for item in host['data']:
        print """
                Port: %s
                Banner: %s
        """ % (item['port'], item['data'])

复制

基本Shodan搜索

#!/usr/bin/env python
#
# shodan_ips.py
#搜索SHODAN并打印与查询匹配的IP列表#
# Author: achillean
import shodan
import sys
# Configuration
API_KEY = "YOUR_API_KEY"
#输入验证
if len(sys.argv) == 1:
        print 'Usage: %s <search query>' % sys.argv[0]
        sys.exit(1)
try:
        # Setup the api
        api = shodan.Shodan(API_KEY)
        #执行搜索
        query = ' '.join(sys.argv[1:])
        result = api.search(query)
        #循环匹配并打印每个IP
        for service in result['matches']:
                print service['ip_str']
except Exception as e:
        print 'Error: %s' % e
        sys.exit(1)

复制

使用Facets收集摘要信息

Shodan API的强大功能是获取各种属性的摘要信息。例如,如果你想了解哪些国家拥有大量的Apache服务器,那么你可以使用facets。如果你想弄清楚nginx最流行的版本是什么,你也可以使用facets。或者,如果你想查看微软iis服务器的正常运行时间分布,也需要使用facets。

下面的脚本展示了如何使用shodan.Shodan.count()方法在不返回任何结果的情况下搜索Shodan,并请求API返回关于organization, domain, port, ASN和 country的多方面信息。

#!/usr/bin/env python
#
# query-summary.py
#搜索Shodan并打印查询的摘要信息。#
# Author: achillean
import shodan
import sys
# Configuration
API_KEY = 'YOUR API KEY'
#我们想要的摘要信息的属性列表
FACETS = [
    'org',
    'domain',
    'port',
    'asn',
    #我们只关心前3个国家,所以我们让Shodan返回3而不是默认的5。
    #如果你想看到超过5个,例如,你可以使用(“country”,1000),查看前1000个国家的搜索查询。
    ('country', 3),
]
FACET_TITLES = {
    'org': 'Top 5 Organizations',
    'domain': 'Top 5 Domains',
    'port': 'Top 5 Ports',
    'asn': 'Top 5 Autonomous Systems',
    'country': 'Top 3 Countries',
}
#输入验证
if len(sys.argv) == 1:
    print 'Usage: %s <search query>' % sys.argv[0]
    sys.exit(1)
try:
    # Setup the api
    api = shodan.Shodan(API_KEY)
    #从命令行参数中得到一个查询字符串
    query = ' '.join(sys.argv[1:])
    #使用count()方法,因为它不返回结果,也不需要付费API计划
    #它的运行速度也比search()快.
    result = api.count(query, facets=FACETS)
    print 'Shodan Summary Information'
    print 'Query: %s' % query
    print 'Total Results: %sn' % result['total']
    #打印来自各个方面的摘要信息
    for facet in result['facets']:
        print FACET_TITLES[facet]
        for term in result['facets'][facet]:
            print '%s: %s' % (term['value'], term['count'])
        # Print an empty line between summary info
        print ''
except Exception, e:
    print 'Error: %s' % e
    sys.exit(1)
Sample Output
=============
./query-summary.py apache
Shodan Summary Information
Query: apache
Total Results: 34612043
Top 5 Organizations
Amazon.com: 808061
Ecommerce Corporation: 788704
Verio Web Hosting: 760112
Unified Layer: 627827
GoDaddy.com, LLC: 567004
Top 5 Domains
secureserver.net: 562047
unifiedlayer.com: 494399
t-ipconnect.de: 385792
netart.pl: 194817
wanadoo.fr: 151925
Top 5 Ports
80: 24118703
443: 8330932
8080: 1479050
81: 359025
8443: 231441
Top 5 Autonomous Systems
as32392: 580002
as2914: 465786
as26496: 414998
as48030: 332000
as8560: 255774
Top 3 Countries
US: 13227366
DE: 2900530
JP: 2014506

复制

实时访问SSL证书

新的Shodan Streaming API可以实时访问Shodan正在收集的信息。 使用Streaming API,可以原始访问Shodan搜索引擎中的所有数据。 请注意,无法使用Streaming API进行搜索,也无法执行REST API的任何其他操作。 这意味着大规模的实时数据消耗。

此脚本仅适用于具有订阅API计划的人员! 默认情况下,Streaming API只返回Shodan收集的数据的1%。 如果你希望获得更多信息,请通过support@shodan.io与我们联系以获取价格信息。

#!/usr/bin/env python
#
# cert-stream.py
# Shodan正在收集的SSL证书
#
#警告:此脚本仅适用于拥有订阅API计划的人员!
#默认情况下,Streaming API只返回Shodan收集的数据的1%。
#如果你想获得更多的访问权限,请联系我们sales@shodan.io获取价格
#信息
# Author: achillean
import shodan
import sys
# Configuration
API_KEY = 'YOUR API KEY'
try:
    # Setup the api
    api = shodan.Shodan(API_KEY)
    print 'Listening for certs...'
    for banner in api.stream.ports([443, 8443]):
                if 'ssl' in banner:
                        # Print out all the SSL information that Shodan has collected
                        print banner['ssl']
except Exception as e:
    print 'Error: %s' % e
sys.exit(1)
用Shodan Python API查设备指纹,看懂公网暴露面 网络空间资产测绘是安全运维的基础能力,而Shodan作为面向公网设备的搜索引擎,通过端口指纹、服务Banner和证书信息揭示暴露资产全貌。借助Python API,可以将设备查询从手动点击升级为结构化、可复用的自动化流程,批量筛选端口与服务版本,快速定位高风险组件。从环境配置出发,解析search、host、count等核心接口的返回字段,结合漏洞情报与资产归属维度,演示如何将查询结果转化为暴露面收敛决策。适合安全工程师与运维人员掌握系统化设备信息查询方法,构建可持续跟踪的资产档案。 阅读详情

相关推荐

[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用

这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步。前文分享了Web安全学习路线,并实现了最简单的木马和病毒代码。这篇文章将详细讲述Shodan搜索引擎的基本用法及Python命令行,具体内容包括Shodan获取指定IP地址信息、Shodan获取账号信息、Shodan获取自身外部IP地址、Shodan检测是否有蜜罐等。

杨秀璋的专栏 2万+

Python武器库开发-武器库篇之shodan-API使用(四十八)

它可以搜索和识别各种连接到互联网的设备,包括服务器、路由器、摄像头、打印机等等。Shodan可以提供有关这些设备的信息,例如设备的IP地址、端口号、操作系统、开放的服务等等。Shodan的功能不仅限于搜索和发现设备,它还可以提供设备的详细信息,如设备的地理位置、厂商、软件版本等。使用Shodan,用户可以搜索特定类型的设备,如具有特定操作系统、开放特定端口、使用特定服务等的设备。替换为你在Shodan网站上获取的API密钥。运行代码后,它将使用你提供的目标进行Shodan搜索,并输出搜索结果的相关信息。

把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗。请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。请保持你心中的信仰,因为你不知道,谁会借着你的信仰,走出了迷茫。请相信自己的力量,因为你不知道,谁会因为相信你,开始相信了自己.... 1374

Python中shodan模块的使用

关于shodan的安装和使用,传送门——&gt; 渗透测试之Shodan的安装和使用 常用 Shodan 库函数 shodan.Shodan(key) :初始化连接API Shodan.count(query, facets=None):返回查询结果数量 Shodan.host(ip, history=False):返回一个IP的详细信息 Shodan.ports():返回Shodan可...

谢公子的博客 7186

Shodan安装及使用 Kali Linux 入门教程!黑客必备搜索引擎!Termux可用!

Shodan是互联网上最可怕的搜索引擎。Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”谷歌,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。每个月Shodan都会在大约5亿个服务器上日夜不停地搜集信息。Shodan所搜集到的信息是极其惊人的。凡是链接到互联网的红绿灯、安全摄像头、家庭自动化设备以及加热系统等等都会被轻易的搜索到。Shodan的使用者曾发现过一个水上公园的控制系统,一个加油站,甚至一个酒店的葡萄酒冷却器。

qq_24305079的博客 5151

go-shodan:Shodan API客户端

去shodan 要开始与Shodan合作,您必须先获取令牌。 您可以在执行此操作。 用法 导入路径取决于您是否使用go模块: import "github.com/ns3777k/go-shodan/v4/shodan" // with go modules enabled (GO111MODULE=on or outside GOPATH) import "github.com/ns3777k/go-shodan/shodan" // with go modules disabled 解析主机名的简单示例: package main import ( "log" "context" "github.com/ns3777k/go-shodan/v4/shodan" // go modules required ) func main () { client := sho

VS2022命令行编译C++报错?一招解决‘fatal error C1034: iostream: 不包括路径集‘

本文针对VS2022命令行编译C++时常见的'fatal error C1034: iostream: 不包括路径集'错误,深入剖析了其根源在于环境变量缺失。文章提供了永久配置用户环境变量(PATH、INCLUDE、LIB)的一劳永逸解决方案,确保在任何终端中都能直接使用cl命令进行编译,并给出了进阶配置与常见错误排查指南。

weixin_29011667的博客 305

shodan的使用

漏洞编号发布时间:2019年5月14日发布机构:微软公司漏洞类型:远程代码执行漏洞。

weixin_74074789的博客 2709

别再被骚扰了!手把手教你彻底卸载阿里云盾(安骑士)并封禁其IP段

本文详细指导如何彻底卸载阿里云盾(安骑士)并封禁其IP段,帮助用户夺回服务器控制权。从识别监控组件到执行官方卸载脚本,再到手动清理残留文件和配置iptables规则,确保完全阻断云盾通信。适用于追求极致性能或需要完全自主控制的环境。

weixin_42525551的博客 454

kali安装python的shodan模块

我整理的一些关于【Python】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/Hpqqk2如何在Kali安装Python的Shodan模块 在本教程中,我们将学习如何在Kali Linux上安装Python的Shodan模块。Shodan是一个强大的搜索引擎,可以帮助用户查...

weixin_40570213的博客 328

SDI-12协议与STM32 进行uart通信

其中DIR_OUT_SDI是一个IO引脚,控制UART_TX_SDI是否使能,U10是三态门IC,即拉低DIR_OUT_SDI使能stm32输出,拉高DIR_OUT_SDI失能输出,串口配置8位数据位,偶校验,1位停止位,1200波特率。示波器测试得到传感器的应答信号如下:第一个是唤醒信号,拉高电平13毫秒,之后保持20毫秒低电平,第二个数据帧是激活信号,即ascii码: "0!",第三个是传感器的应答信号:"0\r\n"

weixin_42186805的博客 4404

智能座舱架构与芯片 - (3) 硬件篇 上

在了解智能座舱的基本架构之后,我们有必要针对智能座舱域的硬件平台,软件平台,SOC等进行逐一介绍。从它们的整体结构中去认识最新的智能座舱组成部件,以及主要功能等。如上图,是中央计算-区域控制架构下的智能座舱硬件平台框架图,其中,智能座舱控制器CDC挂载在以太网交换机上,与其他车控域VDC,自驾域ADC,网联设备5G+V2X等通过以太网实现数据交互。而智能座舱域的外部硬件设备还包含有连接子系统音频子系统摄像头子系统显示子系统存储子系统功能安全子系统等。

joanna_xiao的博客 2406

Shodan-Python 库使用教程:从入门到实战

Shodan 是一个专注于物联网设备搜索的搜索引擎,而 shodan-python 是该服务的官方 Python 客户端库。本文将详细介绍如何使用这个库与 Shodan API 进行交互,包括安装、基础搜索、主机查询等核心功能。 ## 环境准备 ### 安装 Shodan-Python 库 在开始之前,你需要确保已经获取了 Shodan API 密钥。安装过程非常简单,可以通过以下命令完成:...

gitblog_00722的博客 729

[信号与系统]一阶与二阶连续时间系统和离散时间系统

定义:一阶连续时间系统由一阶线性常系数微分方程描述: dy(t)dt+ay(t)=bx(t) \frac{dy(t)}{dt} + a y(t) = b x(t) dtdy(t)​+ay(t)=bx(t)时间常数:时间常数 τ=1a\tau = \frac{1}{a}τ=a1​ 是系统响应速度的衡量指标。时间常数越小,系统响应越快。冲激响应:一阶系统的冲激响应是指数衰减或增长的形式。例如,对于一个单位冲激输入,响应为: h(t)=bae−at h(t) = \frac{b}{a} e^{-at} h(t)=

Andius的博客 2122

[Shodan]使用Python API的环境准备及示例

本文介绍Shodan提供的Python API开发环境基本配置过程及脚本示例。以上内容在官方说明文档中都有详细描述,如果想深入了解推荐前往以下链接查阅: Shodan官网:https://www.shodan.io Python API Document:https://shodan.readthedocs.io/en/latest/ 环境说明 OS: Kali GNU/Linux Rolling...

BraveWinds B10G 2082

PS/2鼠标接口协议

一、PS/2鼠标接口        PS/2接口用于许多现代的鼠标和键盘,由IBM最初开发和使用。物理上的PS/2接口有两种类型的连接器:5脚的DIN和6脚的MINI-DIN。        二、鼠标的接口协议原理             PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。但是在相互传输中 ,主机是拥有总线控制权的

Ant's home 1万+

【MIMIC数据库教程】一、MIMIC-IV3.1表格与字段详解(一):Hosp和ICU模块表格整体介绍

MIMIC-IV 3.1 版本包含住院 (hosp) 和 重症监护 (ICU)提供全院电子病历数据,包括入院信息、实验室测量、微生物学、用药、账单等,共计22 张表。记录重症监护室数据,如静脉注射、呼吸机设置、生命体征等,共计9 张表。

BD_Design_cs的博客 3423

Python-Shodan使用介绍

Python-shodan初始化API Key kali中输入ipython 这是一种交互式的编程 写一行判断一行,一步一个脚印 我喜欢 第二行是定义一个API的key Python-shodan的search方法 返回阿帕奇主机的数量 Python-shodan的IP查询 查询IP所在的国家 shodan查询代码 pip install numpy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com ...

qq_43776408的博客 1230

OpenClaw 开机自启配置:Windows/macOS/Linux 全平台技术指南

OpenClaw 开机自启全平台配置指南 本文提供了在Windows、macOS和Linux系统上配置OpenClaw开机自启的完整技术方案。主要内容包括: Windows配置:提供三种方法(Windows服务、任务计划程序、启动文件夹),详细说明服务脚本创建、服务注册和测试流程 macOS配置:使用LaunchAgent实现开机自启,包含配置文件创建和加载方法 Linux配置:通过systemd服务实现,包括服务单元文件创建和启用步骤 系统要求:明确硬件(64位CPU/4GB内存)和软件(各平台操作系统版

一键难忘的博客 2993

基于Shodan Python库的批量攻击实践 撒旦网

拜读了xiaix关于Shodan的全面介绍:《Shodan新手入坑指南》,受益匪浅。SQL Server的弱口令入侵案例层出不穷,利用工具也大量存在,本文以MSSQL服务器为切入点,以解决批量目标发现为目标,介绍了一种基于Shodan Python库的攻击方法。希望能给有类似需求的同学提供参考。 0×01 基本思路 首先利用Shodan的Python库获取并实时处理MSSQL服务器IP及143...

whatday的专栏 1481

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

终极指南:如何使用Shodan-Python快速分析网络设备统计信息

Shodan-Python是官方的Python库,用于与Shodan搜索引擎交互,帮助开发者轻松访问互联网设备数据,实现网络设备统计信息分析、自动化任务和工具集成。 ## 为什么选择Shodan-Python进行网络设备分析? Shodan作为互联网连接设备的搜索引擎,能够让你发现各种联网设备。而Shodan-Python库则提供了便捷的API接口,让开发者可以轻松实现以下功能: - **搜

gitblog_00345的博客 493

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Shodan-Python自动化网络资产盘点与安全评估实战指南

网络资产管理与安全评估是运维和安全工程师的核心工作之一,其核心原理在于通过主动或被动扫描,发现并识别网络中的设备、服务和潜在风险。传统手动方式效率低下,而自动化技术能极大提升资产梳理和风险发现的效率与准确性。Shodan作为全球联网设备搜索引擎,提供了海量的设备横幅信息。通过其官方Python客户端库Shodan-Python,工程师可以将复杂的网络探测和数据查询工作脚本化、自动化。这不仅能用于快速盘点公网暴露资产、统计服务分布,还能结合数据分析库进行深度关联分析和风险识别,例如发现老旧服务版本或不当开放端

weixin_29327525的博客 325

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ht5和python_python重新利用shodan API

前言:之前写过一个shodan的API调用感觉写的不这么好。然后现在重新写一个shodan介绍:shodan是互联网上最可怕的搜索引擎。CNNMoney的一篇文章写道,虽然目前人们都认为谷歌是最强劲的搜索引擎,但Shodan才是互联网上最可怕的搜索引擎。与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”谷歌,一刻不停的在寻找着所有和互联网...

weixin_39910481的博客 412

FOFA shodan iconhash 算法的java与python结果不同的问题解决

iconhash作为FOFA和shodan的icon搜索的目标值,可以搜索出所有一样icon的网站的域名的关键值,但是发现python的结果和java不同,经过调试发现原来是base64转码的问题,java的base64转码后出现\r\n,但是python只有\n,去掉就可以了,代码如下: python: _icon = mmh3.hash(codecs.lookup('base64').encode(requests.get('http://www.baidu.com/favicon.ico').c

山塘小鱼儿的博客 3306

Shodan Python 快速上手:10分钟学会设备信息查询与安全分析

想要快速掌握互联网设备信息查询与安全分析技术吗?Shodan Python库是你的终极选择!作为官方的Python库,Shodan Python让你能够轻松访问全球最大的网络设备搜索引擎,进行设备信息查询、漏洞扫描和安全分析。本文将为你提供完整的快速入门指南,只需10分钟就能学会使用这个强大的网络安全工具。🚀 ## 📦 一键安装与配置 首先,通过pip快速安装Shodan Python库:

gitblog_00314的博客 649

Shodan Python 实时数据流监控:掌握 Streaming API 的终极指南

在网络安全和物联网设备监控领域,Shodan Python库的Streaming API提供了无与伦比的实时数据流监控能力。这个终极指南将带你深入了解如何使用Shodan的实时数据流功能,掌握网络设备监控的核心技术。无论你是网络安全研究人员、系统管理员还是物联网开发者,掌握Shodan Streaming API都将为你的工作带来革命性的变化。 ## 🔥 为什么需要实时数据流监控? Shod

gitblog_00403的博客 1143
上一篇: python中的scapy模块
下一篇: m3u8加密文件原理及下载脚本
devil8123665
博客等级 码龄17年 49粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值