前言:

之前写过一个shodan的API调用

感觉写的不这么好。然后现在重新写一个

shodan介绍:

shodan是互联网上最可怕的搜索引擎。
CNNMoney的一篇文章写道,虽然目前人们都认为谷歌是最强劲的搜索引擎,但Shodan才是互联网上最可怕的搜索引擎。
与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”谷歌,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。每个月Shodan都会在大约5亿个服务器上日夜不停地搜集信息。
Shodan所搜集到的信息是极其惊人的。凡是链接到互联网的红绿灯、安全摄像头、家庭自动化设备以及加热系统等等都会被轻易的搜索到。Shodan的使用者曾发现过一个水上公园的控制系统,一个加油站,甚至一个酒店的葡萄酒冷却器。而网站的研究者也曾使用Shodan定位到了核电站的指挥和控制系统及一个粒子回旋加速器。
Shodan真正值得注意的能力就是能找到几乎所有和互联网相关联的东西。而Shodan真正的可怕之处就是这些设备几乎都没有安装安全防御措施,其可以随意进入。
Rapid 7 的首席安全官HD Moore,表示:你可以用一个默认密码登陆几乎一半的互联网。就安全而言,这是一个巨大的失误。
如果你搜索“默认密码”的话,你会发现无数的打印机,服务器及系统的用户名都是“admin”,密码全都是“1234”。还有很多系统根本不需要认证,你所需要做的就是用浏览器进行链接。所以如果你在使用默认密码的话,请现在就改换新的密码。
如果Shodan落入坏人之手的话,那真是一个可怕的东西。
而更大的问题是很多设备根本不需要链接到互联网。很多公司常常会买一些他们能够控制的系统,比如说一个电脑控制的热力系统。而他们又是如何把热力系统链接到网上的呢?为什么不直接控制呢?很多IT部门就直接把这些系统插入到网络服务器上,殊不知,这样就和世界分享这些系统了。
Shodan的研发者Matherly表示,这些链接到网上的设备根本没有安全防御措施,他们根本就不应该出现在互联网上。
而好消息就是Shodan几乎都是用在了好的方面。
Matherly对搜索数量也进行了限制。比如没有账户的用户最多提供10个搜索结果,而有账户的用户则可以享受50个搜索结果。如果你想要Shodan提供的所有信息,那Matherly会就你所要搜索的内容,要求你提供更多的信息且付费。
同时,Matherly也承认坏蛋会使用Shodan,但到目前为止,大多数网络攻击都集中在窃取财物和知识产权上。坏蛋们还没有试图摧毁一栋大楼或毁坏市内的红绿灯。
安全防御措施的专业人士们都不希望使用Shodan时搜索到这些没有防御措施的设备及系统。但同时,互联网上有太多可怕的东西,那些没有防御措施的设备只能等着被攻击。。。。

引用百度百科

shodan文档:http://shodan.readthedocs.io/en/latest/tutorial.html

shodan:https://www.shodan.io/

key的获取方法:请自己上shodan官网进行注册获取key

代码:

import optparse
import shodan
import requests
def main():
usage='[usage: -j Type what you want]' \
' [-i IP to search]' \
' [-s Todays camera equipment]'
parser=optparse.OptionParser(usage)
parser.add_option('-j',dest='jost',help='Type what you want')
parser.add_option('-i',dest='host',help='IP to search')
parser.add_option('-s',action='store_true',dest='query',help='Todays camera equipment')
(options,args)=parser.parse_args()
if options.jost:
jost=options.jost
Jost(jost)
elif options.host:
host=options.host
Host(host)
elif options.query:
query()
else:
parser.print_help()
exit() def Jost(jost):
SHODAN_API_KEY='ZmgQ9FZf1rnRuR0MLhT5SXw0xBE8LDLc'
api=shodan.Shodan(SHODAN_API_KEY)
try:
result=api.search('{}'.format(jost))
print('[*]Results found:{}'.format(result['total']))
for x in result['matches']:
print('IP{}'.format(x['ip_str']))
print(x['data'])
with open('shodan.txt','a') as p:
p.write(x['ip_str']+'\n')
p.write(x['data']+'\n')
except shodan.APIError as e:
print('[-]Error:',e) def Host(host):
SHODAN_API_KEY='ZmgQ9FZf1rnRuR0MLhT5SXw0xBE8LDLc'
try:
api=shodan.Shodan(SHODAN_API_KEY)
hx=api.host('{}'.format(host))
print("IP:{}".format(hx['ip_str']))
print('Organization:{}'.format(hx.get('org','n/a')))
print('Operating System:{}'.format(hx.get('os','n/a')))
for item in hx['data']:
print("Port:{}".format(hx['port']))
print('Banner:{}'.format(hx['data']))
except shodan.APIError as g:
print('[-]Error:',g) def query():
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
url = "https://api.shodan.io/shodan/query?key=ZmgQ9FZf1rnRuR0MLhT5SXw0xBE8LDLc"
r = requests.get(url, headers=header)
sd = r.json()
sg = sd['matches'][0:]
for b in sg:
print("描述:", b['description'])
print('标签:', b['tags'])
print('时间戳:', b['timestamp'])
print('标题:', b['title'])
print('服务:', b['query'])
print('---------------------------------') if __name__ == '__main__':
main()

实现了3个 参数

-j shodan里面搜索

-i 搜索IP

-s 搜索弱口令摄像头

-j 搜有ssh服务的主机,并写入到shodan.txt

-i IP搜索 没目标- -

-s 弱口令摄像头查询

距离上学还有2天...

python重新利用shodan API的更多相关文章

  1. 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷

    利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined

  2. 利用Shodan和Censys进行信息侦查

    在渗透测试的初始阶段,Shodan.Censys等在线资源可以作为一个起点来识别目标机构的技术痕迹.本文中就以二者提供的Python API为例,举例介绍如何使用它们进行渗透测试初期的信息侦查. Sh ...

  3. 利用百度API Store接口进行火车票查询

    火车票查询 项目源码下载链接: Github:https://github.com/VincentWYJ/TrainTicketQuery 博客文件:http://files.cnblogs.com/ ...

  4. Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)

    接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1.首先项目图: 2.这里的布局文件activity_main.xml: <LinearLayout xmlns:android ...

  5. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  6. [PHP]利用MetaWeblog API实现XMLRPC功能

    [PHP]利用MetaWeblog API实现XMLRPC功能 | OWNSELF [PHP]利用MetaWeblog API实现XMLRPC功能 Windows Live Writer是一款小巧的写 ...

  7. 编程算法基地-2.1利用字符串API

    2.1利用字符串API 字符串是Java类型最常用.并且是复合类型 串非常经常用于,其最佳API熟悉文档. 推断串中有没有反复的字符 String s ="abcdebxyz"; ...

  8. 【百度地图API】如何利用地图API制作汽车沿道路行驶的动画?——如何获得道路层数据

    原文:[百度地图API]如何利用地图API制作汽车沿道路行驶的动画?--如何获得道路层数据 有几个做汽车导航的朋友问我说,他们想在地图上制作一辆车沿着道路行驶的动画.可是,百度地图的道路数据并没有公开 ...

  9. Python 3 利用 Dlib 19.7 实现人脸识别和剪切

    0.引言 利用python开发,借助Dlib库进行人脸识别,然后将检测到的人脸剪切下来,依次排序显示在新的图像上: 实现的效果如下图所示,将图1原图中的6张人脸检测出来,然后剪切下来,在图像窗口中依次 ...

随机推荐

  1. EC+VO+SCOPE for ES3

    词法环境 词法作用域 词法作用域(lexcical scope).即JavaScript变量的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码. 词法环境 用于定义特定变量和函数标识 ...

  2. Java入门篇(六)——类和对象

    写到这里终于写到了入门篇的最后一个知识点了.类和对象是Java中经常被提到的两个词汇,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语 ...

  3. WPF 实现新手指引功能 DEMO

    需求 1.接口化.其他人实现接口就行 2.动态定位到visualTree中任意控件位置,即随意只显示任何部位 3.指示文本控件和箭头控件随意更改(位置,大小,高度,偏移等基本属性) 4.抽出主题 [d ...

  4. {style}/index_article.htm {style}表示什么意思啊

    LS有点安全意识好不好.... 在你的后台系统设置有个"模板默认风格:________  cfg_df_style " 默认是default也就是 {style}=模板路径+模板默 ...

  5. 30分钟学玩转RabbitMQ

    最近在学习RabbitMQ,在网上找了不少资料发现都特高端.动辄集群部署,分布式架构什么的,对于一个初学者实在不够友好.心想求人不如求自己,为什么不自己整理一套资料呢?于是<30分钟学玩转Rab ...

  6. 谈谈Python、Java与AI

    Python好像天生是为AI而生的,随着AI的火热,特别是用Python写的TensorFlow越来越火,Python的热度越来越高,就像当年Java就是随着互联网火起来的感觉.在我的工作中,Pyth ...

  7. js计算元素距离顶部的高度及元素是否在可视区判断

    前言: 在业务当中,我们经常要计算元素的大小和元素在页面的位置信息.比如说,在一个滚动区域内,我要知道元素A是在可视区内,还是在隐藏内容区(滚动到外边看不到了).有时还要进一步知道,元素是全部都显示在 ...

  8. 免费ssl证书申请和在IIS上启用https的使用教程

    因为微信小程序开发涉及到ssl证书,所以折腾了几天的这个. 非常感谢”亚洲诚信-TrustAsia“公司的售后工程师黄工(QQ2355718943 TEL:021-58895880-663)提供的技术 ...

  9. js 原型规则与示例

    五大规则 1. 所有的引用类型( 数组 对象 函数 ) 都是 具有对象特性即自由拓展属性 (除了 "null")意外 2. 所有的引用类型(数组 对象 函数 ) 都有一个 prot ...

  10. 关于今天esp8266运行失控问题和oled与串口共存尝试成功的总结

    今天2017-12-1720:24:22下午esp8266再次无法刷入固件,导致我一度崩溃,本来已经认为esp8266已经相当稳定了,没想到今天又运行出错,总结如下 今天2017-12-17esp无法 ...