最近跳一跳遊戲真是風靡了整個朋(I)友(T)圈,身邊有不少小夥伴嘗試了各類語言寫跳一跳的腳本,而我因爲比較懶,因此只嘗試py版本的腳本實驗,而後又研究了一下POST直接提交分數的過程,在這個過程當中,對抓包這件事兒產生了濃厚的興趣。前端
首先說說本身的抓包把,前端攻城獅一枚,因此採用的代理工具是阿里的 AnyProxynode
主要特性包括:npm
基於Node.js,開放二次開發能力,容許自定義請求處理邏輯
支持Https的解析
提供GUI界面,用以觀察請求小程序
這裏簡單描述一下如何使用anyproxy抓取https的包vim
1. npm install -g anyproxy
2. anyproxy-ca // 生成https ca證書
3. 手機下載生成的本地ca證書並添加信任(IOS須要使用Safari打開下載證書的地址)
4. anyproxy -i 啓動AnyProxy並解析全部https的服務
複製代碼
具體細節這裏就不拓展開了,百度能找到不少資料。 而後因爲放在本地代理抓包每次都要從新啓動AnyProxy而且須要保證和電腦在同一個局域網下很是麻煩,因此我將AnyProxy部署到了服務器上。 服務器上的部署和本地沒什麼區別,無非就是須要使用pm2去管理一下AnyProxy安全
pm2 start anyproxy -x -- -i [這裏能夠加上anyproxy其餘的參數,好比端口相關]
複製代碼
這裏有一個問題就是,AnyProxy有一個Web GUI能夠看到抓取的包,可是沒有任何認證,因此任何人均可以登陸這個界面看到使用這個代理的包信息,這是一件很是不安全的事情,因此若是放在服務端仍是對AnyProxy作一下二次開發比較好。bash
簡單介紹一下這個遊戲:
一款單機類的遊戲,能夠根據離線時間獲取離線收益。(夠簡單吧...)服務器
其實沒啥好分析,由於獲取離線收益的包一眼就能發現,因爲是一款單機遊戲,那麼與服務器進行交互的就比較少,因此一眼就能發現這樣的一個請求。網絡
一看就能發現這是請求的一個時間戳,那簡單的分析一下,這個遊戲應該是用這個服務器的時間和本地的時間做比較而後計算出離線時間的(固然修改本地時間這種作法已經被做者考慮到了),那麼是否是意味着我能夠僞造一個這樣的時間戳就能產生一個高額的離線收益呢!這種請求比較容易僞造,不須要身份驗證,沒有加密數據,須要完成的就是僞造host而後轉發一個虛假的時間戳。工具
最簡單的方式:
1. vim /etc/hosts // 打開hosts文件
2. 在最後一行加入 服務器IP 指向域名
複製代碼
這時候若是從服務器訪問
www.hko.gov.hk
的話必然會先解析到本地的
host
,而後跳轉到服務器啓動的
Server
因此這時候我選擇用node起一個Simple Server
, GET
請求的地址即是上圖的/cgi-bin/gts/time5a.pr
,簡單的server以下
const server = require('server')
const { get } = server.router
server({ post: 80 }, {
get('/cgi-bin/gts/time5a.pr', ctx => '0x191234567890')
})
複製代碼
這裏偷懶了,用了一個第三方的庫快速生成一個Simple Server
,沒用使用http來createServer,而且直接使用了80端口。若是80端口被佔用的話能夠考慮使用結合Nginx處理。
好了一切準備就緒,來看一下最終的成果吧。
成功了~果真成功了~這只是一個很簡單的實踐,在作這個實踐以前還有一個大膽的想法。在跳一跳火的同時,發現口令紅包莫名火了起來,這時候就思量着如何可以提取口令紅包的數據而後僞造呢(壞笑ing...) 思路大概這樣
唔...顯然我是失敗了,否則我如今就躲在後面悶聲發大財了...應該不違法把各位親,畢竟我搶的是紅包呀~~不過有興趣的人能夠再嘗試嘗試,若是能捕獲到全部的紅包...那收入仍是有些可怕的...
總的來講這個過程是比較輕鬆Esay的,但貴在思考和探索的過程,經過也從一個方面給我這個前端攻城獅打響了警鐘,原來抓包僞造是一件如此可怕的事情,對於網絡安全的防範須要特別的注意才行,否則輕則諸如這個小遊戲,重則涉及資金相關的,這可不是鬧着玩的。