標籤:等等 tcpdump 擷取 exec json格式 skill add 運行
網路抓包,這類的術語,大家應該聽過不少了。
不管怎麼表達,本質都是分析網路互動時的資料包,以取得想要的資訊。
我們有可能會遇到這樣的情境:“對方這個App是怎麼實現的?它發送的網路請求有沒有帶上時間限制?”、“擷取這個資源的網路地址是什麼,要不要帶token?我能夠類比發送嗎?” ...
在研究某個應用程式時,分析網路資料包,往往就是第一個手段。
本文解決一個問題:通過抓包分析出重要訊息。
小白:何為抓包?
小程:就是截獲網路上收發的資料包。
小白:網路上那麼多資料包,怎麼知道哪些是有用的?
小程:只截獲目標app的資料包就縮小了範圍,但即便是縮小了範圍,也需要進一步分析與排查。
小白:在垃圾堆裡找壞人的行動時間與地點嗎?這是使徒行者2的橋段啊,你有沒有看過?
小程:我在說抓包!不是垃圾堆!不是使徒行者!
小白:你抓,你抓,不要抓急嘛……
抓包的工具有很多,適合在不同的平台上使用。
這裡只介紹charles的使用。
小白:都有什麼樣的抓包工具呢?
小程:比如wireshark、tcpdump、tcpflow、charles、fiddler、sniffer等等。
小白:為什麼只介紹charles,難道其它的不好用嗎?
小白:不是其它的不好用,是我一次只講一個東西!
小白:你......
Charles,是mac上截取網路資料包的工具。
官網:<http://www.charlesproxy.com>。
(1)破解charles
用破解的charles.jar,覆蓋到程式包內Contents/Java目錄即可(比如4.0.1版本)。
(2)使用charles
charles運行後,就可以看到截獲到的資料包。
charles的視圖分“按結構”跟“按順序(時間先後)”,按順序時可以篩選。
兩個視圖都可以選擇特定的url,再選擇focus,這樣就重點觀察這個url的相關請求與響應,不會跳來跳去。
mac上,抓https包,需要安裝ssl認證:
help->ssl proxying ->install charles root cer..,同時要在keychain中資訊這個認證(簡介->信任->ssl設定為始終信任)。
對於https包,確定url後,要右擊選擇enable ssl proxying,才可以做到解密https包。
可以右鍵選擇breakpoints,這時會監控這個url的相關行為並下斷點(可以修改發送請求等),在發送請求時、收到回複時、正在接收response body時,都會觸發斷點。觸發斷點後,可以執行“取消(即讓其繼續執行)”、“中止”、“執行”等操作,比如可以修改請求的值後再執行“execute”。
(3)示範:擷取appstore的app的曆史版本
iphone上使用的一些app,新版本還不如舊版本好使。
雖然appstore會把很舊的版本的下載連結給隱藏掉,但存貨還是在的。
如何通過itunus拿到某個app的所有曆史版本的資訊,並下載到曆史版本呢?
操作如下:
開啟charles,再開啟itunes並搜尋到目標app,再下載這個app,會觀察到https://p23-buy.itunes.apple.com 是目標url,focus這個url。對這個url選擇enable ssl proxying,退出charles。啟動charles,刪除掉itunes上已下載的目標aap,重新整理並重新下載。這時,在目標url下面的buyProduct頁面的contents的response部分,會顯示一個array,是一堆id串,這個就是不同版本的下載id(用xml text來查看,可拷貝)。再次刪除已下載的app,並對目標url加上breakpoints,再次下載app。在發送request時會觸發斷點,選擇edit request頁面並選擇xml text查看模式,把下載id替換成目標下載id,之後不斷點擊execute或取消掉斷點再執行。這時,itunes會下載到目標版本的app,之後可以找到對應的ipa,並同步到手機。
以“”為例,大概的步驟是這樣的:
(a)下載時,在charles上focus目標url,並啟用ssl:
(b)刪除已下載的,啟動charles後,重新下載,留意目標url下面的內容:
(c)刪除已下載的,對目標url加上breakpoints,再次下載,修改請求,再execute:
(d)下載到最舊版本的:
(4)示範:抓取qq音樂歌手詳情的資訊
操作如下:
charles,proxy->proxy setting,port使用8888,勾選enalbe transperent http proxying,開啟代理。help->local ip address,查看charles代理的ip地址。手機,如iphone,wifi資訊->http代理,填寫伺服器(charles的代理ip)與連接埠(8888)。手機會串連上charles,允許它串連。對於https協議,手機上需求安裝ssl的認證:在safari上輸入http://charlesproxy.com/getssl,跳轉安裝認證。鎖定目標url,即可拿到資料。比如,對於iphone上的qq音樂的歌手詳情,目標url是https://u.y.qq.com,focus它,右鍵開啟ssl proxy,就可以拿到詳情資訊。
大概的示範是這樣的:
(a)charles開啟代理:
(b)手機連上代理後,對https://u.y.qq.com特別處理,可以看到歌手資訊:
(5)示範:擷取“抖音短視頻”的歌曲下載連結
小白:我知道!這個抖音短視頻很好玩的,所有歌曲都只是副歌部分。它的下載連結是可以用的嗎?歌曲是否加密了?
小程:可以用,歌曲至少現在是沒有加密的。
抖音,大概有50幾萬首歌曲。
可以通過搜尋介面或者分類歌曲介面,來取得歌曲列表資訊。歌曲列表資訊是json格式的內容,其中包括這樣的資訊:
"play_url": { "url_list": [ "http://p3.pstatp.com/obj/29c90000eb8b5ca6fff2" ], "uri": "29c90000eb8b5ca6fff2"},
url_list就是歌曲下載連結。除了這個,還可以找到歌手名、歌曲名等。
小白:為什麼不詳細說說請求連結是什麼呀?
小程:因為示範只是為了學習,不應該涉及太多商業的內容。
小白:我去!
在外圍擷取APP的重要訊息