关于shodan的安装和使用,传送门——> 渗透测试之Shodan的安装和使用

常用 Shodan 库函数

  • shodan.Shodan(key) :初始化连接API
  • Shodan.count(query, facets=None):返回查询结果数量
  • Shodan.host(ip, history=False):返回一个IP的详细信息
  • Shodan.ports():返回Shodan可查询的端口号
  • Shodan.protocols():返回Shodan可查询的协议
  • Shodan.services():返回Shodan可查询的服务
  • Shodan.queries(page=1, sort='timestamp', order='desc'):查询其他用户分享的查询规则
  • Shodan.scan(ips, force=False):使用Shodan进行扫描,ips可以为字符或字典类型
  • Shodan.search(query, page=1, limit=None, offset=None, facets=None, minify=True): 查询Shodan数据

先写一个简单的脚本,扫描 apache 的主机

import shodan    #导入shodan库
api=shodan.Shodan("cB9sXwb7l95ZhSJaNgcaO7NQpkzfhQVM") #指定API_KEY,返回句柄
try:
results=api.search('apache') #搜索apache,返回 JSON格式的数据
print(results)
print("Results found:%s"%results['total'])
for result in results['matches']:
print(result['ip_str']) #打印出ip地址
except shoadn.APIError,e:
print("Error:%s"%e)

返回的JSON格式的数据

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

我们也可以加上端口号,并且写入文件中,作为访问链接

import shodan

api=shodan.Shodan("cB9sXwb7l95ZhSJaNgcaO7NQpkzfhQVM")
def FindTarget():
try:
f=open("target.txt","w")
results=api.search('JAWS/1.0')
print("Results found:%s"%results['total'])
for result in results['matches']:
url=result['ip_str']+":"+str(result['port'])
print(url)
f.write(url)
f.write("\n")
f.close()
except shodan.APIError,e:
print("Error:%s"%e)
FindTarget()

Python中shodan模块的使用的更多相关文章

  1. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  2. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  3. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  4. Python中的模块介绍和使用

    在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...

  5. python中导入模块的本质, 无法导入手写模块的解决办法

    最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...

  6. Python中time模块详解

    Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...

  7. Python中collections模块

    目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...

  8. Python中pathlib模块

    Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...

  9. Python 中包/模块的 `import` 操作

    版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...

随机推荐

  1. strick-footer 粘边布局

    当网页缩小, 缩放到一定高度时(这个高度就是页面内容高度)footer的页尾自动消失,这个就叫做粘边布局 strick-footer 粘边布局基本思路: 主体{ height:100%; } 内容体{ ...

  2. 漏洞复现-Flask-SSTI服务端模板注入

      0x00 实验环境 攻击机:Win 10 0x01 影响版本 Python利用的一些静态框架 0x02 漏洞复现 (1)实验环境:docker运行的vulhub漏洞环境 首先,可直接访问到页面的显 ...

  3. windows电脑上传ipa到appstore的详细流程

    在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布. 但是在苹果开发者中心无法直接上传ipa文件,它要求我们使用xcode或transpo ...

  4. Java基础:特性write once;run anywhere!

    三高:高可用 高性能 高并发 特性: 简单性 面向对象:万物皆为对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 Java三大版本 javaSE:标准版(桌面程序,控制台) javaME ...

  5. 微服务架构Day16-SpringBoot之监控管理

    监控管理使用步骤 通过引入spring-boot-starter-actuator,可以使用SpringBoot提供应用监控和管理的功能.可以通过HTTP,JMX,SSH协议来进行操作,自动得到审计, ...

  6. golang io操作之写篇

    /** * @author livalon * @data 2018/9/4 15:11 */ package main import ( "os" "fmt" ...

  7. 剪切DOM节点中断transition执行【问题】

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 如何在CMDB中落地应用的概念?

    如何在CMDB中落地应用的概念? 我们前面讲了应用是整个微服务架构体系下运维的核心,而CMDB又是整个运维平台的基石.今天我就讲讲在CMDB中如何落地应用这个核心概念,以及如何建立应用集群分组的思路. ...

  9. 翻译:《实用的Python编程》08_03_Debugging

    目录 | 上一节 (8.2 日志) | 下一节 (9 包) 8.3 调试 调试建议 假设程序崩溃了: bash % python3 blah.py Traceback (most recent cal ...

  10. JS基础学习第二天

    类型转换 类型转换就是指将其他的数据类型,转换为String Number 或 Boolean 转换为String 方式一(强制类型转换): 调用被转换数据的toString()方法例子:var a ...