Python中shodan模块的使用
关于shodan的安装和使用,传送门——> 渗透测试之Shodan的安装和使用
常用 Shodan 库函数
shodan.Shodan(key):初始化连接APIShodan.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模块的使用的更多相关文章
- Python中optionParser模块的使用方法[转]
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...
- python中threading模块详解(一)
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...
- 【转】关于python中re模块split方法的使用
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...
- Python中的模块介绍和使用
在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...
- python中导入模块的本质, 无法导入手写模块的解决办法
最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
- Python中collections模块
目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...
- Python中pathlib模块
Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...
- Python 中包/模块的 `import` 操作
版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...
随机推荐
- Codeforces 1167c(ccpc wannafly camp day1) News Distribution 并查集模板
题目: In some social network, there are nn users communicating with each other in mm groups of friends ...
- CVE-2019-10758-Mongo-express-远程代码执行
漏洞分析 https://xz.aliyun.com/t/7056 漏洞简介 mongo-express是一款mongodb的第三方Web界面,使用node和express开发. 如果攻击者可以成功登 ...
- kubernetes生产实践之mysql
简介 kubedb mysql 生命周期及特性 Supported MySQL Features Features Availability Clustering ✓ Persistent Volum ...
- C# 通过ServiceStack 操作Redis——String类型的使用及示例
1.引用Nuget包 ServiceStack.Redis 我这里就用别人已经封装好的Reids操作类,来演示,并附上一些说明 RedisConfigInfo--redis配置文件信息 /// < ...
- 一款适用于windows10的反间谍工具
Free antispy tool for Windows 10 前言 看标题的话,可能觉得"我要这款工具能干啥?",我刚开始也有这种疑惑,但后来我对于这款软件仔细想了想,这款还是 ...
- python基础学习之类的继承、魔法方法
什么是继承 即类A可以使用类B的方法,即B是A的父类,A是B的子类,AB之间是继承关系 class Father(): # 父类 def __init__(self,name,age): self. ...
- python基础学习之元组和字典的功能方法
什么是元组?(tuple) emmmmmm,这个没必要深究吧,就是一排'元素',一行 格式: a = (1,2,3,4,5,6,7,8,9)用小括号表示的,极为元组. 其有序,且不可更改,可以对比st ...
- Android Studio 安装并使用genymotion
一.安装genymotion与VirtualBox 1.安装 genymotion安装包:https://pan.baidu.com/s/1UTwvJv2pbHE4znBw91V19g virtual ...
- Linux 自定义快捷命令
Linux中一些比较常用的命令总是重复敲很麻烦,这个时候就可以使用 alias 来自定义快捷命令,用以简化操作.系统会有一些预定义的快捷命令,比如 ll 的效果就和 ls -l 一样. 可以使用 al ...
- 等不及要告诉你的一件事-console.log可以指定样式
今天看`简书`文章,习惯性的打开了开发者工具,于是发现了意见有意思的事,在console面板,发现了如下的日志: ??? 这 ... 有点意思. 如果上面的图片,不能引起你的兴趣,那么你可以再看看这个 ...