> 文档中心 > 信息搜集:SHODAN API 参考

信息搜集:SHODAN API 参考


信息搜集:SHODAN API 参考


Shodan是全球开放最早的网络空间搜索引擎,也是目前全球最为之名的搜索引擎。Shodan每月中会在全球5亿左右的设备上进行信息搜集,主要针对服务器、网络设备、摄像设备、工控设备等基础设备进行扫描。Shodan为用户提供了11种代码库便于使用API接口。使用Shodan需要注册账号,分为注册会员,企业版和高级企业版是收费的。Shodan搜素引擎界面如下图:

信息搜集:SHODAN API 参考

Shodan主要获取互联网中设备中的服务、位置、端口、版本等信息,目前比较受欢迎的内容有webcam、linksys、cisco、netgear、SCADA等。通过不同的搜索语法可以做到批量搜索漏洞主机、统计中病毒主机、进行弱口令爆破、获取shell等功能。下表整理常用的搜索语法:

Shodan常用语法

语 法 描 述 示 例
city:城市名称 城市的名称 city:"Beijing
country:国家哎或者地区代码 国家的简称 country:“CN”
geo:经纬度 经纬度 geo:"46.9481, 7.4474
hostname:主机名 主机名或者域名 hostname:“baidu.com”
ip:IP地址 IP地址 ip:“11.11.11.11”
isp:ISP供应商 ISP供应商 isp:“China Telecom”
org:组织或者公司 组织或者公司 org:“baidu”
os:操作系统 操作系统 os:“Windows 7 or 8”
port:端口号 端口号 port:80
net:CIDR格式的IP地址 CIDR格式的IP地址 net:“190.30.40.0/24”
version:软件版本号 软件版本 version:“4.4.2”
vuln:漏洞编号 漏洞CVE编号 vuln:CVE-2020-0787
http.server:服务类型 http请求返回中server的类型 http:server:apache
http.status:请求状态码 http请求返回响应码的状态 http.status:200

运 行 环 境:

OS:macOS Monterey Version 12.3.1

IDE: PyCharm 2020.1

Python: 3.9.9

1. 要求(Requirements)

要使用API,你需要有个API key,这个key可以通过创建一个Shodan账号获得。创建SHODAN账号可以点击如下链接:create shodan account

2. 介绍(Introduction)

有两种APIs用于访问Shodan:

  • The REST API : 提供搜索Shodan的方法,查询主机,获取关于查询和各种使开发更容易的工具方法的汇总信息
  • The Streaming API : 提供Shodan正在搜集的数据的原始的实时的反馈。有几种反馈可以被订阅,但是数据不能被搜索或者交互;因为是在线数据反馈,那就意味着大量的Shodan信息的消耗。

3. REST API文档

本文只演示Python语言的操作实例

(1)搜索方法:

##### 获取主机信息(Host Information)

返回给定的IP主机的已被发现的服务,Python示例代码如下:

#_*_coding:utf-8_*_# 作者      :liuxiaowei# 创建时间   :4/19/22 11:29 AM# 文件      :shodan_api_example.py# IDE      :PyCharmfrom  shodan import ShodanSHODAN_API_KEY = 'YOUR_API_KEY'shodan_api = Shodan(SHODAN_API_KEY)for host_info in shodan_api.host('8.8.8.8').items():    print(host_info)

运行结果如下:

('city', 'Mountain View')('region_code', 'CA')('os', None)('tags', [])('ip', 134744072)('isp', 'Google LLC')('area_code', None)('longitude', -122.0775)('last_update', '2022-04-19T08:05:30.846590')('ports', [443, 53])('latitude', 37.4056)('hostnames', ['dns.google'])('country_code', 'US')('country_name', 'United States')('domains', ['dns.google'])('org', 'Google LLC')('data', [{'hash': -553166942, 'timestamp': '2022-04-18T07:23:42.652073', 'isp': 'Google LLC', 'transport': 'tcp', 'data': '\nRecursion: enabled', 'asn': 'AS15169', 'port': 53, 'hostnames': ['dns.google'], 'location': {'city': 'Mountain View', 'region_code': 'CA', 'area_code': None, 'longitude': -122.0775, 'latitude': 37.4056, 'country_code': 'US', 'country_name': 'United States'}, 'dns': {'resolver_hostname': None, 'recursive': True, 'resolver_id': None, 'software': None}, 'ip': 134744072, 'domains': ['dns.google'], 'org': 'Google LLC', 'os': None, '_shodan': {'crawler': '2f5130275f52c94d38258ee96eca67b55cafa776', 'options': {'scan': 'KN95r4vTe8wly4MW'}, 'id': '38b68de6-ce5c-4314-b7f7-58396ce221b8', 'module': 'dns-tcp', 'ptr': True}, 'opts': {}, 'ip_str': '8.8.8.8'}, {'hash': -553166942, 'timestamp': '2022-04-19T08:05:30.846590', 'isp': 'Google LLC', 'transport': 'udp', 'data': '\nRecursion: enabled', 'asn': 'AS15169', 'port': 53, 'hostnames': ['dns.google'], 'location': {'city': 'Mountain View', 'region_code': 'CA', 'area_code': None, 'longitude': -122.0775, 'latitude': 37.4056, 'country_code': 'US', 'country_name': 'United States'}, 'dns': {'resolver_hostname': None, 'recursive': True, 'resolver_id': None, 'software': None}, 'ip': 134744072, 'domains': ['dns.google'], 'org': 'Google LLC', 'os': None, '_shodan': {'crawler': 'd905ab419aeb10e9c57a336c7e1aa9629ae4a733', 'options': {}, 'id': '79ce06b0-3030-4272-9191-ca60765f5916', 'module': 'dns-udp', 'ptr': True}, 'opts': {'raw': '34ef818200010000000000000776657273696f6e0462696e640000100003'}, 'ip_str': '8.8.8.8'}, {'hash': 1696509865, 'http': {'status': 200, 'robots_hash': None, 'redirects': [{'host': '8.8.8.8', 'data': 'HTTP/1.1 302 Found\r\nX-Content-Type-Options: nosniff\r\nAccess-Control-Allow-Origin: *\r\nLocation: https://dns.google/\r\nDate: Tue, 19 Apr 2022 00:52:38 GMT\r\nContent-Type: text/html; charset=UTF-8\r\nServer: HTTP server (unknown)\r\nContent-Length: 216\r\nX-XSS-Protection: 0\r\nX-Frame-Options: SAMEORIGIN\r\nAlt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"\r\n\r\n', 'location': '/'}], 'securitytxt': None, 'title': 'Google Public DNS', 'sitemap_hash': None, 'html_hash': -2021997909, 'robots': None, 'favicon': {'hash': 56641965, 'data': 'iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAABa1BMVEUAAAA0p100qFM0qFY1pW81\npmg1p141p2M2pHw2pH02pXU3oYs3ook4n5k4oY85np86m6s6m6w7mLo7mLs7mbY7mbc7p1M8lcQ8\nlsM+ks4+ks8+oYo/j9g/j9k/kNg/p1NAiudAi+VAjOFAjeBBh+9BiO1BietChfRChvJEhfRIhvNI\npVJJonNKhPJMhPJMpVJRkcdTh/BXo1FZie5ag+xeie1fhORmlZ5on1Bsnk90juV4m05+jOCAmE2D\ngMuMkdmNk0yQkkuQlNeWltSXj0qliEiubLqvgka0f0W1lbm4m7e7mrS9eUPBdkLHcEDOm5vSZj3S\noJXTZD3UoJLZXTvdWTrgonzhUzjkTjflp3LmSjfoRjboRzbqQzXqRDXqRTXqRjXqRzXsYDHtYjHt\nYzHtqlruqlfveSzveizweyzwr0/yjSbyjib1nSD1nh/1nx/3tSz4rBf4rRb4tyb6uQn6uQr6uhn7\nugj7vAU/At79AAAAAXRSTlMAQObYZgAAArlJREFUeNrt2PVz1EAYxvFlcSnFXQoUXgoUdyvu7ra4\nFy22fz53NJ27Xmx38z7vwpHnl860yXw/c9PJJVGqXuXp9KLGBRG6bHHrWIJ2XeQ8iKB1VIH2Xuw+\nryCkr7dH7vcSRe3PWE9cgqD+xJVETIKgvp5PxCQI68/eyAUI60/uI+IRhPX1MmICBPbnEjEJnC52\nqd9O7+cCuF9p2/8wZS3hAUXHLiZiEnh+zSR/7CE4oPD4SRvYAP7fss1L8AoCA0pOWUjEJQi5y9DL\nB+MC1F4CA8pOIj5A4G1elwNUDfjfAaoGhAGUJAB8Ja4BQX3JL0PO/l8K0P59QQBv31tAJAPQYn2v\n5yIC9D2eDImkAe0EIlTf4fXEPiJkvxSwZTe2XyZIXgUC+yWCefh+oWDmoEBfHXd5FQjsK3V5Ww5g\nqUxfqdtHMvtzhPJKmYfnVqf70/qF+qa5Gwc6+xPWyfRNsgenOwBLZP4BTGtXdrb3ewYkLgFm3O4e\na/XTrwIRAtOxx5c2j12CVxHhBSa9W4dGAQuI8AKTtUdnFzX6s7YSXmBydm2/nrqG8ACTu3unjhLB\nBaZoRHBBYd+caT/08CYAoDCfPvz1navnh3ZwCnzqf2Yb+/Kq6djFAfDNJ4LRfXt//+bFE3uqCAL6\n4whjjusXTh4cYASUnWaz9lOunyOwcn0swOlUIEDJASp8ANkCwQ+gOwCV+pmCbgCoGiAIqNiPDrA1\nIDLAdinACPb/bQDPHRnz/ZgggKkffEdmsQAj1g8EWD6ACngutJx9/ydTa4UA2QTL3S9+O+JThwBa\nisbPr5i+gyDZR1DfGTAM6jsL3sQGPEf1XQVPfqD6roIRWN9R8AnXdxMM4/JugrfIvovgBbTvIHj6\nHZl3EYxg++WEz+B8KeEDPF8ieIfPFxteStSLDM9+ydTzEapelf0GmFdLbOXMqToAAAAASUVORK5C\nYII=\n', 'location': 'https://dns.google:443/static/93dd5954/favicon.png'}, 'headers_hash': 818523308, 'host': 'dns.google', 'html': '\n  Google Public DNS                  
document.forms[0].name.focus(); '
, 'location': '/', 'components': {}, 'server': 'scaffolding on HTTPServer2', 'sitemap': None, 'securitytxt_hash': None}, 'timestamp': '2022-04-19T00:52:38.993658', 'org': 'Google LLC', 'isp': 'Google LLC', 'data': 'HTTP/1.1 200 OK\r\nContent-Security-Policy: object-src \'none\';base-uri \'self\';script-src \'nonce-fKqPLLA24+wb0RXEU7xi7A==\' \'strict-dynamic\' \'report-sample\' \'unsafe-eval\' \'unsafe-inline\' https: http:;report-uri https://csp.withgoogle.com/csp/honest_dns/1_0;frame-ancestors \'none\'\r\nStrict-Transport-Security: max-age=31536000; includeSubDomains; preload\r\nX-Content-Type-Options: nosniff\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Tue, 19 Apr 2022 00:52:38 GMT\r\nServer: scaffolding on HTTPServer2\r\nCache-Control: private\r\nX-XSS-Protection: 0\r\nX-Frame-Options: SAMEORIGIN\r\nAlt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"\r\nAccept-Ranges: none\r\nVary: Accept-Encoding\r\nTransfer-Encoding: chunked\r\n\r\n', 'asn': 'AS15169', 'port': 443, 'ssl': {'chain_sha256': ['dabffa9af7941654c1dba20b34d77fe371c156d0f67f6c7a17478c711d01d97d', '23ecb03eec17338c4e33a6b48a41dc3cda12281bbc3ff813c0589d6cc2387522', '3ee0278df71fa3c125c4cd487f01d774694e6fc57e0cd94c24efd769133918e5', 'ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99'], 'jarm': '29d3fd00029d29d00042d43d00041d598ac0c1012db967bb1ad0ff2491b3ae', 'chain': ['-----BEGIN CERTIFICATE-----\nMIIF5DCCBMygAwIBAgIQN3d1cBR8xzAKAAAAATxp2TANBgkqhkiG9w0BAQsFADBG\nMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM\nQzETMBEGA1UEAxMKR1RTIENBIDFDMzAeFw0yMjAzMjgwMjI4MThaFw0yMjA2MjAw\nMjI4MTdaMBUxEzARBgNVBAMTCmRucy5nb29nbGUwggEiMA0GCSqGSIb3DQEBAQUA\nA4IBDwAwggEKAoIBAQCcyKFh9+/ll+i55OiqE42vq+WLwRDBXJzBLKBs1Eyj7f/U\nZHZ/6qrVP9CjQzvF0WZDJCbm8x9V4a5aDoTM7tLPdgiVQjgdmUER3lDruzo6KoX2\n3vBa6J0ef+qBhixBYlZPFtzIZv8mrVUhXijDM0fOhUrVzslwHiaCnVcKSJy+Q/CP\nJtZ+ylS/VueDAXISAOhbJSiSOHnmJHV9GflWz7n+5uZRlT+8xnTqrJlqni1eRWjS\nzEPUi+VftNAakso/qQiR79dAOBduMtQurtwaBh3/RsBjHV5FpaP9vVJNJ+vhfQM2\nTwUKcMFxhU3sCM4vW8TSt2npr+z47ySagtYx7snzAgMBAAGjggL9MIIC+TAOBgNV\nHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAd\nBgNVHQ4EFgQUoq1POmCQulDqKggqakHkMa7xy1IwHwYDVR0jBBgwFoAUinR/r4XN\n7pXNPZzQ4kYU83E1HScwagYIKwYBBQUHAQEEXjBcMCcGCCsGAQUFBzABhhtodHRw\nOi8vb2NzcC5wa2kuZ29vZy9ndHMxYzMwMQYIKwYBBQUHMAKGJWh0dHA6Ly9wa2ku\nZ29vZy9yZXBvL2NlcnRzL2d0czFjMy5kZXIwgawGA1UdEQSBpDCBoYIKZG5zLmdv\nb2dsZYIOZG5zLmdvb2dsZS5jb22CECouZG5zLmdvb2dsZS5jb22CCzg4ODguZ29v\nZ2xlghBkbnM2NC5kbnMuZ29vZ2xlhwQICAgIhwQICAQEhxAgAUhgSGAAAAAAAAAA\nAIiIhxAgAUhgSGAAAAAAAAAAAIhEhxAgAUhgSGAAAAAAAAAAAGRkhxAgAUhgSGAA\nAAAAAAAAAABkMCEGA1UdIAQaMBgwCAYGZ4EMAQIBMAwGCisGAQQB1nkCBQMwPAYD\nVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybHMucGtpLmdvb2cvZ3RzMWMzL2ZWSnhi\nVi1LdG1rLmNybDCCAQYGCisGAQQB1nkCBAIEgfcEgfQA8gB3AFGjsPX9AXmcVm24\nN3iPDKR6zBsny/eeiEKaDf7UiwXlAAABf86RQEsAAAQDAEgwRgIhAI6h3xVx+vch\npXQTlLr1/uYImWbHQ9Olr7daAiuXF1/sAiEAh9mPmvQW8ZG0myreVLabtALHhLYC\nTpfybaDTzfoosgoAdwBGpVXrdfqRIDC1oolp9PN9ESxBdL79SbiFq/L8cP5tRwAA\nAX/OkUAbAAAEAwBIMEYCIQDas8eeKEIaBKtDGea1pvpw2fd8UZa1Thu5w9I0k/ru\n2AIhALGpYtJUcTDHLoRazI/Vmlx26idWPuVa3kGrVIa79YJqMA0GCSqGSIb3DQEB\nCwUAA4IBAQA6oXCiOOCyb1PVbiWShP/0JrFrIOsEPVqk9xa7kPVnSKjWQo0Sf6c0\ntXCYPB2SpMyhK7ltWg2LJnEQ7UBj7F8okQdILiKDXpYtfXoBKVeOSn+TUajZi1kU\nfrZI+n0fqfJxGhH061dCvw+5jy5QHMCkX/iupL0RYrpBLZuva72jAG3iXC4GaKxT\nQaIMxpT1dJwNqD8hqEFKVEjX91q90cZQLh0up4oHoNUEWyFELvaJVAYrSWpcYlnu\nRtL+SIP8N5kllF1fNNQSZcK0BTWEN1mRy3p9CHx6F98uwvuLDnnYmSB7aNCVEFIu\n6nDq/fd1rDc4KBKtlYYWjm0QvEQzYc24\n-----END CERTIFICATE-----\n', '-----BEGIN CERTIFICATE-----\nMIIFljCCA36gAwIBAgINAgO8U1lrNMcY9QFQZjANBgkqhkiG9w0BAQsFADBHMQsw\nCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU\nMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMjAwODEzMDAwMDQyWhcNMjcwOTMwMDAw\nMDQyWjBGMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp\nY2VzIExMQzETMBEGA1UEAxMKR1RTIENBIDFDMzCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAPWI3+dijB43+DdCkH9sh9D7ZYIl/ejLa6T/belaI+KZ9hzp\nkgOZE3wJCor6QtZeViSqejOEH9Hpabu5dOxXTGZok3c3VVP+ORBNtzS7XyV3NzsX\nlOo85Z3VvMO0Q+sup0fvsEQRY9i0QYXdQTBIkxu/t/bgRQIh4JZCF8/ZK2VWNAcm\nBA2o/X3KLu/qSHw3TT8An4Pf73WELnlXXPxXbhqW//yMmqaZviXZf5YsBvcRKgKA\ngOtjGDxQSYflispfGStZloEAoPtR28p3CwvJlk/vcEnHXG0g/Zm0tOLKLnf9LdwL\ntmsTDIwZKxeWmLnwi/agJ7u2441Rj72ux5uxiZ0CAwEAAaOCAYAwggF8MA4GA1Ud\nDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEgYDVR0T\nAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUinR/r4XN7pXNPZzQ4kYU83E1HScwHwYD\nVR0jBBgwFoAU5K8rJnEaK0gnhS9SZizv8IkTcT4waAYIKwYBBQUHAQEEXDBaMCYG\nCCsGAQUFBzABhhpodHRwOi8vb2NzcC5wa2kuZ29vZy9ndHNyMTAwBggrBgEFBQcw\nAoYkaHR0cDovL3BraS5nb29nL3JlcG8vY2VydHMvZ3RzcjEuZGVyMDQGA1UdHwQt\nMCswKaAnoCWGI2h0dHA6Ly9jcmwucGtpLmdvb2cvZ3RzcjEvZ3RzcjEuY3JsMFcG\nA1UdIARQME4wOAYKKwYBBAHWeQIFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3Br\naS5nb29nL3JlcG9zaXRvcnkvMAgGBmeBDAECATAIBgZngQwBAgIwDQYJKoZIhvcN\nAQELBQADggIBAIl9rCBcDDy+mqhXlRu0rvqrpXJxtDaV/d9AEQNMwkYUuxQkq/BQ\ncSLbrcRuf8/xam/IgxvYzolfh2yHuKkMo5uhYpSTld9brmYZCwKWnvy15xBpPnrL\nRklfRuFBsdeYTWU0AIAaP0+fbH9JAIFTQaSSIYKCGvGjRFsqUBITTcFTNvNCCK9U\n+o53UxtkOCcXCb1YyRt8OS1b887U7ZfbFAO/CVMkH8IMBHmYJvJh8VNS/UKMG2Yr\nPxWhu//2m+OBmgEGcYk1KCTd4b3rGS3hSMs9WYNRtHTGnXzGsYZbr8w0xNPM1IER\nlQCh9BIiAfq0g3GvjLeMcySsN1PCAJA/Ef5c7TaUEDu9Ka7ixzpiO2xj2YC/WXGs\nYye5TBeg2vZzFb8q3o/zpWwygTMD0IZRcZk0upONXbVRWPeyk+gB9lm+cZv9TSjO\nz23HFtz30dZGm6fKa+l3D/2gthsjgx0QGtkJAITgRNOidSOzNIb2ILCkXhAd4FJG\nAJ2xDx8hcFH1mt0G/FX0Kw4zd8NLQsLxdxP8c4CU6x+7Nz/OAipmsHMdMqUybDKw\njuDEI/9bfU1lcKwrmz3O2+BtjjKAvpafkmO8l7tdufThcV4q5O8DIrGKZTqPwJNl\n1IXNDw9bg1kWRxYtnCQ6yICmJhSFm/Y3m6xv+cXDBlHz4n/FsRC6UfTd\n-----END CERTIFICATE-----\n', '-----BEGIN CERTIFICATE-----\nMIIFYjCCBEqgAwIBAgIQd70NbNs2+RrqIQ/E8FjTDTANBgkqhkiG9w0BAQsFADBX\nMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UE\nCxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTIwMDYx\nOTAwMDA0MloXDTI4MDEyODAwMDA0MlowRzELMAkGA1UEBhMCVVMxIjAgBgNVBAoT\nGUdvb2dsZSBUcnVzdCBTZXJ2aWNlcyBMTEMxFDASBgNVBAMTC0dUUyBSb290IFIx\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAthECix7joXebO9y/lD63\nladAPKH9gvl9MgaCcfb2jH/76Nu8ai6Xl6OMS/kr9rH5zoQdsfnFl97vufKj6bwS\niV6nqlKr+CMny6SxnGPb15l+8Ape62im9MZaRw1NEDPjTrETo8gYbEvs/AmQ351k\nKSUjB6G00j0uYODP0gmHu81I8E3CwnqIiru6z1kZ1q+PsAewnjHxgsHA3y6mbWwZ\nDrXYfiYaRQM9sHmklCitD38m5agI/pboPGiUU+6DOogrFZYJsuB6jC511pzrp1Zk\nj5ZPaK49l8KEj8C8QMALXL32h7M1bKwYUH+E4EzNktMg6TO8UpmvMrUpsyUqtEj5\ncuHKZPfmghCN6J3Cioj6OGaK/GP5Afl4/Xtcd/p2h/rs37EOeZVXtL0m79YB0esW\nCruOC7XFxYpVq9Os6pFLKcwZpDIlTirxZUTQAs6qzkm06p98g7BAe+dDq6dso499\niYH6TKX/1Y7DzkvgtdizjkXPdsDtQCv9Uw+wp9U7DbGKogPeMa3Md+pvez7W35Ei\nEua++tgy/BBjFFFy3l3WFpO9KWgz7zpm7AeKJt8T11dleCfeXkkUAKIAf5qoIbap\nsZWwpbkNFhHax2xIPEDgfg1azVY80ZcFuctL7TlLnMQ/0lUTbiSw1nH69MG6zO0b\n9f6BQdgAmD06yK56mDcYBZUCAwEAAaOCATgwggE0MA4GA1UdDwEB/wQEAwIBhjAP\nBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTkrysmcRorSCeFL1JmLO/wiRNxPjAf\nBgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzBgBggrBgEFBQcBAQRUMFIw\nJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnBraS5nb29nL2dzcjEwKQYIKwYBBQUH\nMAKGHWh0dHA6Ly9wa2kuZ29vZy9nc3IxL2dzcjEuY3J0MDIGA1UdHwQrMCkwJ6Al\noCOGIWh0dHA6Ly9jcmwucGtpLmdvb2cvZ3NyMS9nc3IxLmNybDA7BgNVHSAENDAy\nMAgGBmeBDAECATAIBgZngQwBAgIwDQYLKwYBBAHWeQIFAwIwDQYLKwYBBAHWeQIF\nAwMwDQYJKoZIhvcNAQELBQADggEBADSkHrEoo9C0dhemMXoh6dFSPsjbdBZBiLg9\nNR3t5P+T4Vxfq7vqfM/b5A3Ri1fyJm9bvhdGaJQ3b2t6yMAYN/olUazsaL+yyEn9\nWprKASOshIArAoyZl+tJaox118fessmXn1hIVw41oeQa1v1vg4Fv74zPl6/AhSrw\n9U5pCZEt4Wi4wStz6dTZ/CLANx8LZh1J7QJVj2fhMtfTJr9w4z30Z209fOU0iOMy\n+qduBmpvvYuR7hZL6Dupszfnw0Skfths18dG9ZKb59UhvmaSGZRVbNQpsg3BZlvi\nd0lIKO2d1xozclOzgjXPYovJJIultzkMu34qQb9Sz/yilrbCgj8=\n-----END CERTIFICATE-----\n', '-----BEGIN CERTIFICATE-----\nMIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\nMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\naWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\njc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\nxy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\n1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\nsnUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\nU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\n9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B\nAQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz\nyj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE\n38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP\nAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad\nDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME\nHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n-----END CERTIFICATE-----\n'], 'dhparams': None, 'versions': ['-TLSv1', '-SSLv2', '-SSLv3', '-TLSv1.1', 'TLSv1.2', 'TLSv1.3'], 'acceptable_cas': [], 'tlsext': [{'id': 65281, 'name': 'renegotiation_info'}, {'id': 11, 'name': 'ec_point_formats'}, {'id': 35, 'name': 'session_ticket'}], 'ja3s': 'ccc514751b175866924439bdbb5bba34', 'cert': {'sig_alg': 'sha256WithRSAEncryption', 'issued': '20220328022818Z', 'expires': '20220620022817Z', 'expired': False, 'version': 2, 'extensions': [{'critical': True, 'data': '\\x03\\x02\\x05\\xa0', 'name': 'keyUsage'}, {'data': '0\\n\\x06\\x08+\\x06\\x01\\x05\\x05\\x07\\x03\\x01', 'name': 'extendedKeyUsage'}, {'critical': True, 'data': '0\\x00', 'name': 'basicConstraints'}, {'data': '\\x04\\x14\\xa2\\xadO:`\\x90\\xbaP\\xea*\\x08*jA\\xe41\\xae\\xf1\\xcbR', 'name': 'subjectKeyIdentifier'}, {'data': "0\\x16\\x80\\x14\\x8at\\x7f\\xaf\\x85\\xcd\\xee\\x95\\xcd=\\x9c\\xd0\\xe2F\\x14\\xf3q5\\x1d\\'", 'name': 'authorityKeyIdentifier'}, {'data': "0\\\\0\\'\\x06\\x08+\\x06\\x01\\x05\\x05\\x070\\x01\\x86\\x1bhttp://ocsp.pki.goog/gts1c301\\x06\\x08+\\x06\\x01\\x05\\x05\\x070\\x02\\x86%http://pki.goog/repo/certs/gts1c3.der", 'name': 'authorityInfoAccess'}, {'data': '0\\x81\\xa1\\x82\\ndns.google\\x82\\x0edns.google.com\\x82\\x10*.dns.google.com\\x82\\x0b8888.google\\x82\\x10dns64.dns.google\\x87\\x04\\x08\\x08\\x08\\x08\\x87\\x04\\x08\\x08\\x04\\x04\\x87\\x10 \\x01H`H`\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x88\\x88\\x87\\x10 \\x01H`H`\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x88D\\x87\\x10 \\x01H`H`\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00dd\\x87\\x10 \\x01H`H`\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00d', 'name': 'subjectAltName'}, {'data': '0\\x180\\x08\\x06\\x06g\\x81\\x0c\\x01\\x02\\x010\\x0c\\x06\\n+\\x06\\x01\\x04\\x01\\xd6y\\x02\\x05\\x03', 'name': 'certificatePolicies'}, {'data': '0301\\xa0/\\xa0-\\x86+http://crls.pki.goog/gts1c3/fVJxbV-Ktmk.crl', 'name': 'crlDistributionPoints'}, {'data': "\\x04\\x81\\xf4\\x00\\xf2\\x00w\\x00Q\\xa3\\xb0\\xf5\\xfd\\x01y\\x9cVm\\xb87x\\x8f\\x0c\\xa4z\\xcc\\x1b\\'\\xcb\\xf7\\x9e\\x88B\\x9a\\r\\xfe\\xd4\\x8b\\x05\\xe5\\x00\\x00\\x01\\x7f\\xce\\x91@K\\x00\\x00\\x04\\x03\\x00H0F\\x02!\\x00\\x8e\\xa1\\xdf\\x15q\\xfa\\xf7!\\xa5t\\x13\\x94\\xba\\xf5\\xfe\\xe6\\x08\\x99f\\xc7C\\xd3\\xa5\\xaf\\xb7Z\\x02+\\x97\\x17_\\xec\\x02!\\x00\\x87\\xd9\\x8f\\x9a\\xf4\\x16\\xf1\\x91\\xb4\\x9b*\\xdeT\\xb6\\x9b\\xb4\\x02\\xc7\\x84\\xb6\\x02N\\x97\\xf2m\\xa0\\xd3\\xcd\\xfa(\\xb2\\n\\x00w\\x00F\\xa5U\\xebu\\xfa\\x91 0\\xb5\\xa2\\x89i\\xf4\\xf3}\\x11,At\\xbe\\xfdI\\xb8\\x85\\xab\\xf2\\xfcp\\xfemG\\x00\\x00\\x01\\x7f\\xce\\x91@\\x1b\\x00\\x00\\x04\\x03\\x00H0F\\x02!\\x00\\xda\\xb3\\xc7\\x9e(B\\x1a\\x04\\xabC\\x19\\xe6\\xb5\\xa6\\xfap\\xd9\\xf7|Q\\x96\\xb5N\\x1b\\xb9\\xc3\\xd24\\x93\\xfa\\xee\\xd8\\x02!\\x00\\xb1\\xa9b\\xd2Tq0\\xc7.\\x84Z\\xcc\\x8f\\xd5\\x9a\\\\v\\xea\\'V>\\xe5Z\\xdeA\\xabT\\x86\\xbb\\xf5\\x82j", 'name': 'ct_precert_scts'}], 'fingerprint': {'sha256': 'dabffa9af7941654c1dba20b34d77fe371c156d0f67f6c7a17478c711d01d97d', 'sha1': '635ae6c71205980a921a20b65f2a15216998de01'}, 'serial': 73727805016154393975703427613934250457, 'subject': {'CN': 'dns.google'}, 'pubkey': {'type': 'rsa', 'bits': 2048}, 'issuer': {'C': 'US', 'CN': 'GTS CA 1C3', 'O': 'Google Trust Services LLC'}}, 'cipher': {'version': 'TLSv1/SSLv3', 'bits': 128, 'name': 'ECDHE-RSA-AES128-GCM-SHA256'}, 'trust': {'revoked': False, 'browser': {'mozilla': True, 'apple': True, 'microsoft': True}}, 'handshake_states': ['before/connect initialization', 'SSLv2/v3 write client hello', 'SSLv2/v3 read server hello', 'SSLv3/TLS read server hello', 'SSLv3/TLS read server certificate', 'SSLv3/TLS read server key exchange', 'SSLv3/TLS read server done', 'SSLv3/TLS write client key exchange', 'SSLv3/TLS write change cipher spec', 'SSLv3/TLS write finished', 'SSLv3/TLS flush data', 'SSLv3/TLS read server session ticket', 'SSLv3/TLS read finished', 'SSL negotiation finished successfully'], 'alpn': ['grpc-exp', 'h2', 'http/1.1'], 'ocsp': {}}, 'hostnames': ['dns.google'], 'transport': 'tcp', 'ip': 134744072, 'domains': ['dns.google'], 'ip_str': '8.8.8.8', 'os': None, '_shodan': {'crawler': '6d5195c331613d103027c23dc52e6d32fd2a74af', 'options': {}, 'id': '4979ad21-a189-4b14-ae5c-171190ca8bbb', 'module': 'https', 'ptr': True}, 'opts': {'vulns': [], 'heartbleed': '2022/04/19 00:53:42 8.8.8.8:443 - SAFE\n'}, 'location': {'city': 'Mountain View', 'region_code': 'CA', 'area_code': None, 'longitude': -122.0775, 'latitude': 37.4056, 'country_code': 'US', 'country_name': 'United States'}}])('asn', 'AS15169')('ip_str', '8.8.8.8')
返回搜索的结果的数量(Search Shodan without Results)

此方法不返回任何主机的结果,只返回匹配查询条件的结果的总数,不消耗任何积分。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)# return number of results that matchedprint(shodan_api.count(query='port:22', facets='org, os'))

运行结果如下:

{'matches': [], 'total': 22177813}
搜索Shodan

使用跟website一样的查询语法,此方法消耗积分。本人的账号是免费账号,所以没有返回结果。示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.search(query='product:nginx', facets='country, org'))

运行结果如下:

shodan.exception.APIError: Please upgrade your API plan to use filters or paging.
列出所有搜索的方面

这个方法返回一个可以用来获得一个用来反映某个属性值的细分列表。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)for item in shodan_api.search_facets():    print(item)

运行结果如下:

asnbitcoin.ipbitcoin.ip_countbitcoin.portbitcoin.user_agentbitcoin.versioncity.....
列出所有当搜索时的过滤条件

此方法返回被用来查询的搜索过滤条件的列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)for item in shodan_api.search_filters():    print(item)

运行结果如下:

allasnbitcoin.ipbitcoin.ip_countbitcoin.portbitcoin.versioncity....
将搜索查询分解为tokens

此方法让你决定哪个过滤正在被查询字符串使用和提供给过滤条件的参数是什么。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)for item in shodan_api.search_tokens(query='Raspbian port:22').items():    print(item)

运行结果如下:

('attributes', {'ports': [22]})('errors', [])('string', 'Raspbian')('filters', ['port'])

(2) 按需扫描

列出所有Shodan正在因特网上爬取的端口

此方法返回一个爬取的所有端口号的列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.ports())

运行结果如下:

[7, 11, 13, 15, 17, 19, 20, 21, 22, 23, 24, 25, 26, 3......
列出所有通过Shodan在因特网上执行按需扫描所用到的协议

此方法返回一个对象,包含被用来运行因特网扫描的所有的协议。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.protocols())

运行结果如下:

{'afp': 'AFP server information grabbing module','ajp': 'Check whether the Tomcat server running AJP protocol', 'amqp': 'Grab information from an AMQP service',.........}
请求Shodan爬虫一个IP或者网段

使用此方法请求Shodan爬取一个网络,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.scan(ips='8.8.8.8', force=False)  # 指定IP

备注:此案例需要积分才能运行

运行结果:

shodan.exception.APIError: Please upgrade your API plan to perform on-demand scans

请求一个网段

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)ips = {  "1.1.1.1":[    [53, "dns-udp"]    [443, "https"]  ],  "8.8.8.8":[    [53, "dns-tcp"],  ],}print(shodan_api.scan(ips=ips, force=False) 

备注:此案例需要积分才能运行

运行结果:

shodan.exception.APIError: Please upgrade your API plan to perform on-demand scans
在因特上使用Shodan爬取指定的端口和协议

使用此方法请求Shodan爬取因特网上指定的端口。

备注:此方法被限制安全研究者或者公司使用,如果想要使用请给Shodan发电子邮件。

Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.scan_internet(port=443, protocol='https'))

备注:没有运行

获取所有创建的扫描的列表

返回当前账号正在活动的所有按需扫描的列表。Python示例源代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.scans(page=1))

运行结果如下:

{'matches': [], 'total': 0}

(3) 网络报警(NetWork Alerts)

创建一个监测一个网络范围的报警

使用这个方法创建一个预定的IP/网段的网络报警,能够用来登记在该网络范围内发现的变化或者事件。Python示例代码人如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.create_alert(name="DNS Alert", ip=['8.8.8.8', '1.1.1.1'], expires=0))

备注:此案例需要积分,所以本人无法运行

获取一个网络报警的细节信息

此方法返回某个特定网络警报的信息,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.alerts(aid=Alert ID, include_expired=True))

备注:此案例需要积分,所以本人无法运行

删除警报

删除指定的网络报警,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.delete_alert(aid=Alert ID))

备注:此案例需要积分,所以本人无法运行

编辑一个网络警报的被监测的网络

使用此方法编辑一个网络报警,使用一个新的IPs/网段列表去追踪。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.edit_alert(Alert ID, ['8.8.8.8', '1.1.1.1']))

备注:此案例需要积分,所以本人无法运行

获取所有创建的警报的列表

返回当前账号活动的所有网络报警的列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.alerts(include_expired=True))

备注:此案例需要积分,所以本人无法运行

获取可用的触发器的列表

返回一个在一个网络警报中能被启用的所有触发器的列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.alert_triggers())

备注:此案例需要积分,所以本人无法运行

启动一个触发器

当某个特定的触发器触发时返回一个通告,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.enable_alert_trigger(aid=AlertID, trigger='new_service, vulnerable'))

备注:此案例需要积分,所以本人无法运行

关闭一个触发器

停止某个触发器时返回一个通告,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.disable_alert_trigger(aid=AlertID, trigger='new_service, vulnerable'))

备注:此案例需要积分,所以本人无法运行

加入白名单(Add to Whitelist)

当某个特定服务与触发器匹配当时候忽略。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.ignore_alert_trigger_notification(aid=AlertID, trigger='new_service', ip='1.1.1.1', port=53))

备注:此案例需要积分,所以本人无法运行

移除白名单(Remove from Whitelist)

再次启动触发器的时候会得到通知,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.unignore_alert_trigger_notification(aid=AlertID, rigger='new_service', ip='1.1.1.1', port=53))

备注:此案例需要积分,所以本人无法运行

(4)通知者(Notifier)

列出所有创建的用户的通知者

获取一个已创建用户的所有通知者的列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.notifier.list.notifiers())

运行结果如下:

{'matches': [{'description': None, 'args': {'to': 'jlzllxwchina@163.com'}, 'provider': 'email', 'id': 'default'}], 'total': 1}
可获取的通知提供者列表

可获取的通知者的所有通告和创建他们时候提交的参数的列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.notifier.list_providers())

运行结果如下:

{'pagerduty': {'required': ['routing_key']}, 'slack': {'required': ['webhook_url']}, 'telegram': {'required': ['chat_id', 'token']}, 'webhook': {'required': ['url']}, 'phone': {'required': ['to']}, 'email': {'required': ['to']}, 'gitter': {'required': ['room_id', 'token']}}
创建一个新的通知服务

使用这个方法创建新的发送通知服务端,Shodan服务能够通过此端发送通知服务。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.notifier.create(provider='email', args={'to':'jlzllxwchina@163.com'}, description='Email notifier'))

运行结果如下:

{'id': 'IsPeOuLBGRLYzQvA', 'success': True}
删除通知服务

删除为用户创建的通知服务,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.notifier.remove(nid='IsPeOuLBGRLYzQvA'))

运行结果如下:

{'success': True}
获取关于一个通知者的信息

使用此方法创建新的发送通知服务端,Shodan服务能够通过此端发送通知服务。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.notifier.get(nid='default'))

运行结果如下:

{'description': None, 'args': {'to': 'jlzllxwchina@163.com'}, 'provider': 'email', 'id': 'default'}

(5)目录方法

列出存储的搜索查询

使用这个方法获取用户已存储在Shodan里的搜索查询列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.queries(page=1, sort='timestamp', order='desc'))

运行结果如下:

{'matches': [{'votes': 1, 'description': '', 'title': 'Seagate.com', 'timestamp': '2021-05-15T21:52:55.316000', 'tags': ['iis'], 'query': 'Seagate.com'}, {'votes': 1, 'description': '', 'title': '80', 'timestamp': '2021-05-14T15:17:22.864000', 'tags': [''], 'query': 'net:193.110.3.0/24'}, {'votes': 2, 'description': 'Electronic highway message signs', 'title': 'Saferoads Variable Message Signs', 'timestamp': '2021-05-13T16:34:00.023000', 'tags': ['iot', 'signs'], 'query': 'Saferoads VMS'}, {'votes': 3, 'description': '', 'title': 'ADB Remote Access', 'timestamp': '2021-05-12T00:40:50.411000', 'tags': ['adb', 'port 5555'], 'query': 'Android Debug Bridge port:5555'}, {'votes': 1, 'description': 'shodan.io result', 'title': 'shodan', 'timestamp': '2021-05-11T11:36:34.190000', 'tags': [''], 'query': 'intellicar.in'}, {'votes': 1, 'description': '', 'title': '高明区', 'timestamp': '2021-05-08T07:46:02.973000', 'tags': [''], 'query': 'title:"高明区"'}, {'votes': 2, 'description': '', 'title': 'crosslink', 'timestamp': '2021-05-07T14:10:36.212000', 'tags': [''], 'query': 'net:3.214.40.103,3.236.72.167,54.175.33.251,54.173.230.130,3.236.12.118,34.233.129.30,44.192.123.74,52.202.154.236'}, {'votes': 2, 'description': 'Pfizer Inc (Pharma) Jabber clients across the world.', 'title': 'Pfizer Jabber Servers/Client', 'timestamp': '2021-05-07T13:50:03.890000', 'tags': ['pfizer', 'pharma', 'jabber'], 'query': 'org:"Pfizer Inc." port:"5222"'}, {'votes': 1, 'description': 'fra shodan.io', 'title': 'JMA Internet exposure', 'timestamp': '2021-05-07T09:09:26.710000', 'tags': [''], 'query': 'org:JMA country:DK'}, {'votes': 1, 'description': '', 'title': '208.83.148.0/26', 'timestamp': '2021-05-06T22:47:42.599000', 'tags': [''], 'query': 'net:"208.83.148.0/26"'}], 'total': 6965}
搜索存储的搜索查询的目录

使用此方法搜索用户存在Shodan里的搜索查询的目录,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.queries_search(query='webcam', page=1))

运行结果如下:

{'matches': [{'votes': 11, 'description': '', 'title': 'webcam', 'timestamp': '2016-02-23T16:58:00.657000', 'tags': [''], 'query': 'open'}, {'votes': 1, 'description': '', 'title': 'webcam', 'timestamp': '2016-04-16T16:16:35.071000', 'tags': [''], 'query': 'douche'}, {'votes': 6, 'description': '', 'title': 'webcam', 'timestamp': '2017-03-15T15:29:33.071000', 'tags': [''], 'query': 'spain country:"ES" port:"23"'}, {'votes': 3, 'description': '', 'title': 'webcam', 'timestamp': '2018-08-26T14:40:41.206000', 'tags': [''], 'query': 'gov.br country:"BR"'}, {'votes': 5, 'description': '', 'title': 'webcam', 'timestamp': '2019-01-17T20:15:55.674000', 'tags': [''], 'query': 'webcam country:"KR" city:"Seoul"'}, {'votes': 8, 'description': '', 'title': 'webcam', 'timestamp': '2019-01-25T04:43:57.241000', 'tags': [''], 'query': 'webcam country:kr'}, {'votes': 2, 'description': '', 'title': 'Webcam', 'timestamp': '2019-07-07T02:54:45.194000', 'tags': [''], 'query': 'IP Webcam has_screenshot: -port:3269 -port:3288 -port:7000 -port:7001 -port:8000 country:"KR"'}, {'votes': 1, 'description': '', 'title': 'webcam', 'timestamp': '2020-04-04T17:04:23.151000', 'tags': [''], 'query': 'webcam country:"IT" city:"trieste"'}, {'votes': 2, 'description': '', 'title': 'webcam', 'timestamp': '2020-09-02T21:56:49.682000', 'tags': [''], 'query': 'MAURITANIE'}, {'votes': 3, 'description': '', 'title': 'webcam', 'timestamp': '2020-10-08T14:54:14.599000', 'tags': [''], 'query': 'vinci org:"Vinci Construction Si Snc" org:"Vinci Construction Si Snc"'}], 'total': 315}
列出最受欢迎的标签

使用此方法获得存储在Shodan里的搜索查询最受欢迎的标签列表,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.queries_tags(size=10))

运行结果如下:

{'matches': [{'count': 212, 'value': 'webcam'}, {'count': 176, 'value': 'cam'}, {'count': 166, 'value': 'camera'}, {'count': 101, 'value': 'ip'}, {'count': 93, 'value': 'router'}, {'count': 87, 'value': 'server'}, {'count': 80, 'value': 'ftp'}, {'count': 78, 'value': 'scada'}, {'count': 44, 'value': 'http'}, {'count': 29, 'value': 'iot'}], 'total': 7747}

(6)账号方法

账号简介

返回与这个API key关联的Shodan账号的相关信息,curl命令如下:

(base) liuxiaowei@MacBookAir ~ % curl -X GET "https://api.shodan.io/account/profile?key=z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3"

结果如下:

{"member": false, "credits": 0, "display_name": null, "created": "2022-04-18T07:26:14.355000"}%

(7)DNS方法

域信息

获取所有域信息和其他给定的域的DNS条目,每次查询需要一个查询积分。Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.dns.domain_info(domain='google.com', history=False, type=None, page=1))

备注:此案例需要积分,所以本人无法运行

DNS查询

查询给定的主机名列表的IP地址,curl命令行如下:

(base) liuxiaowei@MacBookAir ~ % curl -X GET "https://aip.shodan.io/dns/resolve?hostnames=baidu.com,sohu.com&key=z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3" 

结果如下:

{"baidu.com": "220.181.38.251", "sohu.com": "123.125.116.28"}
反向DNS查询

通过给定的IP地址列表查询主机名,curl命令行如下:

(base) liuxiaowei@MacBookAir ~ % curl -X GET 'https://api.shodan.io/dns/reverse?ips=8.8.8.8,1.1.1.1&key=z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'

结果如下:

{"8.8.8.8": ["dns.google"], "1.1.1.1": ["one.one.one.one"]}

(8)工具方法

HTTP 头

当连接到web服务器,显示客户端发送的HTTP头。curl命令行如下:

(base) liuxiaowei@MacBookAir ~ % curl -X GET 'https://api.shodan.io/tools/httpheaders?key=z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'

结果如下:

{"Content-Length": "", "Cf-Visitor": "{\"scheme\":\"https\"}","Accept-Encoding": "gzip", "X-Forwarded-For": "122.143.43.36","Host": "api.shodan.io","Accept": "*/*", "User-Agent": "curl/7.78.0", "Connection": "Keep-Alive", "X-Forwarded-Proto": "https", "Cdn-Loop": "cloudflare", "Cf-Connecting-Ip": "122.143.43.36","Cf-Ray": "6fe64bf6ffa79679-SJC", "Content-Type": ""}
我的IP地址

获取你的当前在因特网上的IP地址,curl命令行如下:

(base) liuxiaowei@MacBookAir ~ % curl -X GET 'https://api.shodan.io/tools/myip?key=z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'

结果如下:

"122.143.43.36"

备注:
您查询的网站的IP地址是:【122.143.43.36】,属地信息如下:
国 家:China
省 份:Jilin
城 市:Zhenlai
经纬度坐标:45.8516, 123.2928
运营商编号:AS4837 CHINA UNICOM China169 Backbone
ISP服务商:CNC Group CHINA169 Jilin Province Network

以上查询结果IP地址是正确的。

(9)API状态方法

API规划信息

返回属于给定API key的API规划相关信息,Python示例代码如下:

from  shodan import ShodanSHODAN_API_KEY = 'z0AN9iiu3CmzLeFuStYHPGB7gNJw3Kt3'shodan_api = Shodan(SHODAN_API_KEY)print(shodan_api.info())

运行结果如下:

{'scan_credits': 0, 'usage_limits': {'scan_credits': 0, 'query_credits': 0, 'monitored_ips': 0}, 'plan': 'oss', 'https': False, 'unlocked': False, 'query_credits': 0, 'monitored_ips': 0, 'unlocked_left': 0, 'telnet': False}