【bb平台刷课记】wireshark结合实例学抓包
【bb平台刷课记】wireshark结合实例学抓包
背景:本校形势与政策课程课需要在网上观看视频的方式来修得学分,视频网页自带“播放器不可快进+离开窗口自动暂停+看完一集解锁下一集(即不能同时刷多集)”的神奇技能,鉴于视频一共有十多集每集30多分钟,广大学子苦不堪言(此乃背景~)
身为技术人,当然不能容忍这种浪费时间的事情发生!时间是最宝贵的应该用来学习!学习!学习!(滑稽)所以我最初做了一个基于按键精灵+图像识别的小(刷)助(课)手(器),但是明显缺点就是课虽然能自动刷了,但是电脑要一直挂着,不能干别的事。什么?!长达几个小时的刷课时间里面再也不能动电脑?!是可忍孰(叔)不可忍!
最近偶然得到一神器,不仅能自动完成上述过程而且速度快得惊人,如此黑科技,必须得弄懂原理!心痒痒地于是乎开始了今天的分析之旅~
----我是萌萌的分割线-----
首先观察小(刷)助(课)手(器)的工作流程:
图一:打开时软件内嵌浏览器会访问网上授课系统的登录页面
防止查水表,暂且把登录地址叫做 http://bb.bilbil.edu.cn/(这当然不是真的)
图2:输入账号密码后跳转到一个页面
我在浏览器模拟了一下,得到跳转后地址为http://bb.bilbil.edu.cn/webapps/portal/frameset.jsp?tab_tab_group_id=_2_1
图3点击开始观看,等待进度条结束后,提示观看完毕....
然后我去查看了一下,果然十几集的视频都解锁完毕了(这时还不能确定只是仅仅解锁了,还是真的已经观看完了)
怀着内心的窃喜和愧疚,我一集集地把进度条重新从0%到100%拉了一下,以防没有触发“观看完毕”的服务器提交~(后面证实没必要)
开始思考和分析:
根据流程走下来,破解的关键就在弄清楚于第三步进度条在走的时候,软件和服务器之间发生了什么屁眼交易。
此时就要祭出神器wireshark
Wireshark_百度百科
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
首先要知道,wireshark会把电脑所有的包一起抓过来(qq、360、浏览器等)但我们只要电脑与在线课堂的服务器之间收发的数据包。
所以第一步:用命令行ping bb.bilbil.edu.cn ,得到在线课堂服务器的ip地址 202.103.223.101
第二步打开Wireshark开始抓包,并设置过滤条件 http && ip.addr==202.103.223.101
第三步打开刷课器,重复一遍刷课的过程,此时Wireshark窗口会显示与202.103.223.101通信过程中 抓到的数据包(这里只关心http协议的包)
若此步Wireshark窗口没任何包那可能是网卡没选对,重新选要抓包的网卡
第4步分析数据,这里最让人头疼,我会尽量详细讲
首先这里有个窍门,注意第1列no,是按时间顺序递增的序号,在刷课软件操作时,每按一下操作,记录一下当时的No号,有利于分析的时候知道哪些数据包是什么操作触发的,能节省很多时间。
我记录得
操作 | 点击登录 | 点击刷课 |
No | 314~4771 | ~5761 |
所以选取登录完毕后点击刷课之前看起,也就是从序号为4771的包看起(节省不必要的时间)
看到下面有规律的数据包不断重复,猜测正是里面的内容能把一个一个的课刷完。分析序号5227到5245之间的包(为一个重复周期)估计就能明了
包5227
POST /webapps/bb-floatMediaGuiLin-bb_bb60/execute/mediaLog?cmd=initLog&course_id=_1083_1&folderParentId=0 HTTP/1.1\r\n
关键看这句,post后面的是数据接收地址和一些参数,数据是 video_id=_144_1
收到回复包5245
回复是一段json:{"timer":0,"status":1,"videoId":"_144_1","logid":"_503659_1"} (暂时不知道作用是什么,继续看下一个包)
包5247
post到POST /webapps/bb-floatMediaGuiLin-bb_bb60/execute/mediaLog?cmd=videoEndPlay HTTP/1.1\r\n
数据是videolog_id=_503659_1&video_id=_144_1(这里不正好是上一包接收到的json值吗)
所以上一个post为了获得videolog_id=_503659_1,而video_id=_144_1是一直知道的(应该就是标记不同集的视频),
而将这两个值POST到execute/mediaLog?cmd=videoEndPlay ,字面一看就明白了,是模拟播放完成浏览器给服务器发送的标志。
重复看下一个周期的包5251~5265,只有video_id在改变,以上猜想是正确的。
至此分析结束
实战!重放攻击
以上都是纯理论分析,好多童鞋要说,分析顶个鸟用!实在地自己动手做一次才是王道!下面就带大家一起来实验一下我的猜想是否正确~~
1.根据以上猜想,主要实施手段就是POST,既然是post,直接就用js代码就可以完成
下面贴出我自己写的验证代码(懂js的童鞋看看就明白是什么回事了)
var xml = new XMLHttpRequest(),res='';
var url = "/webapps/bb-floatMediaGuiLin-bb_bb60/execute/mediaLog?cmd=initLog&course_id=_1083_1&folderParentId=0";
xml.open('POST', url, true);
xml.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xml.onreadystatechange = function () {
if (xml.readyState == 4) {
if (xml.status == 200) {
//console.log(xml.responseText);
res = eval('(' + xml.responseText + ')');
// console.log("videolog_id="+res.logid+"&video_id="+res.videoId);
var url = "/webapps/bb-floatMediaGuiLin-bb_bb60/execute/mediaLog?cmd=videoEndPlay";
xml.open('POST', url, true);
xml.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xml.onreadystatechange = function () {
if (xml.readyState == 4) {
if (xml.status == 200) {
console.log(xml.responseText);
}}}
xml.send("videolog_id="+res.logid+"&video_id="+res.videoId);
}}}
xml.send("video_id=_144_1");//刷第一个视频填_144_1,第二个视频就填_144_2如此类推
展开代码
食用方法:复制代码,登录好你自己的账号,打开浏览器控制台,往console里面粘贴,回车后等待一下,刷新页面!!刷新页面!!刷新页面!!再回到视频播放页,第一个视频已经解锁\播放完毕。
码字不易,乐在分享,在技术奋斗路上的童鞋共勉~
完结、撒花~
启示:为免纠纷,本文所用的ip地址和网址均为杜撰,旨在交流技术,我们都是好孩子~不玩火
19:53更新 一键刷课书签版,右键-复制链接-保存为书签
【bb平台刷课记】wireshark结合实例学抓包的更多相关文章
- Wireshark的使用(抓包、过滤器)
Wireshark的使用(抓包.过滤器) 听语音 分步阅读 Wireshark这个转包工具的简单实用 工具/原料 Wireshark软件包 方法/步骤 Wireshark是世界上最流行的网络分析工具. ...
- pcapng文件的python解析实例以及抓包补遗
为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生.关于它的介绍详见<PCAP Next Generation Dump File Format> 当前的w ...
- Wireshark 安装及开始抓包中出现的问题
前两天装了Wireshark,这次安装遇到了之前没遇到的问题,所以就写出来大家参考下 安装Wireshark时需要安装集成在安装包中的winpcap[winpcap(windows packet ca ...
- wireshark实战之局域网抓包分析
Wireshark.它是一款本地监听数据的大杀器,弊端是只能监听本地的数据,有什么办法可以让局域网中的流量都从本机走呢? 第一ARP嗅探,劫持网关,再本地抓包. 第二交换机镜像端口,在路由或者交换机处 ...
- TCP头部格式详解,附Wireshark对TCP头部抓包分析
TCP之所以能为数据通讯提供可靠的传输,主要在于TCP数据包头部功能非常多. 那么,我们先来看看TCP头部格式(RFC 793.1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有 ...
- Wireshark简单协议的抓包分析
一.实验目的 HTTP.TCP.UDP.ICMP.ARP.IP.FTP.TELNET查询分析 基本掌握查询命令的使用方法 二.实验环境 硬件环境:一台Windows7系统,一台XP系统 软件环境:VM ...
- Mac使用wireshark对移动设备抓包
在系统偏好设置中,打开蓝牙共享网络,就能让移动设备通过连接蓝牙来访问网络,这个途径访问都会被wireshark所抓 然后捕获接口中可选 设置 筛选 为 http and (ip.src == 192. ...
- Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)
学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学 ...
- 第2课:jmeter总结、Charles抓包
1. tps(throughput):每秒钟处理的事务数(请求数),定义与qps类似(qps:每秒完成的请求个数.) 响应时间(average):每个请求的平均响应时间 2. jmeter实现下载 ...
随机推荐
- 表单验证插件之jquery.validate.js
提到表单验证的插件,第一个想到的就是jquery.validate.js,所以小生想在这里稍微详细地说一下这款插件的具体使用方法,便于理解,我直接附上整段demo的代码(没怎么调样式,主要是看js): ...
- 安卓 Handler
1. 看视频有关Handler操作,没有用过,里面的老师也没有讲(新手太难了) 查了一下资料. 一.Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释:当应用程序 ...
- java-w3c.document生成xml文件
案例 /** * 创建和写入xml * @param xmlrootname * @param waitConverList */ private void createAndWriterXML(St ...
- 关于label的点击事件(原创)
通常做网页时不会用radio和checkbox的原有样式,通常会进行样式美化,手机端我用的jqurey weui框架,他的原理是这样的: <label class="check_lab ...
- sublime text3 使用SVN插件
Simon在项目中经常使用SVN,每次都要切换提交,很麻烦,有了这个SVN插件就很方便了,使用快捷方式提交,更新. 安装: Ctrl + Shift + P 调用出Sublime Text的包管理工具 ...
- weiphp踩坑记录
记录使用weiphp过程中遇到的问题及解决办法: 1.按照网上的教程创建插件怎么没有效果?replyText没有回复信息? 后台清除缓存即可!
- Nginx 1.10.1 编译、配置文档(支持http_v2,TLSv1.2,openssl v1.0.2)
1.安装常用工具及基础包: [root@localhost /]# yum -y install wget git vim make gcc gcc-c++ openssl-devel [root@l ...
- 微信小程序 教程之引用
系列文章: 微信小程序 教程之WXSS微信小程序 教程之引用微信小程序 教程之事件微信小程序 教程之模板微信小程序 教程之列表渲染微信小程序 教程之条件渲染微信小程序 教程之数据绑定微信小程序 教程之 ...
- Linux学习之CentOS(二十)--CentOS6.4下修改MySQL编码方法
但是当我们在试图对数据库中的数据进行备份或者将sql文件导入到我们的数据库时可能就会碰到编码的问题,在windows下安装mysql时我们可以在安装的时候就选择好整个数据库的编码方式(通常设置成utf ...
- Servlet使用注解标注监听器(Listener)
Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器,这样我们在web应用中使用监听器时,也不再需要在web.xml文件中配置监听器的相关描述信息了. 下面我 ...