只能抓 http(s) 的包,不能抓自定義協(xié)議的包,如果要分析到更底層的包,像TLS handShake 這種就沒辦法了

曲周網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
功能相對(duì)強(qiáng)大一些,可以針對(duì)某個(gè)網(wǎng)卡抓到所有的的數(shù)據(jù)包,類似于 tcpdump, 也可以抓自定義協(xié)議的包,可以分析到 TLS handShake 包
iOS 5 之后, iPhone 帶了一個(gè) Remote Virtual Interface (RVI) 功能,我們可以通過(guò) RVI 把數(shù)據(jù)從 iOS 設(shè)備上轉(zhuǎn)發(fā)到我們 Mac 機(jī)器上的一個(gè)虛擬網(wǎng)卡
連接手機(jī)到電腦上, 獲取到設(shè)備的 UUID,Xcode-Window- Devices And simulators
在命令行中查看當(dāng)前已有網(wǎng)絡(luò)接口
接下來(lái)使用 rvictl 創(chuàng)建虛擬網(wǎng)絡(luò)接口
再次查看網(wǎng)絡(luò)接口
可以看到虛擬接口已經(jīng)創(chuàng)建成功。
虛擬網(wǎng)絡(luò)接口已經(jīng)創(chuàng)建完畢,接下來(lái)使用抓包工具抓到原始包分析
RVI 設(shè)置好以后,我們可以在 Mac 上直接利用 tcpdump 查看數(shù)據(jù)包。
輸入完密碼后可以,抓包已經(jīng)可以開始
按下 Ctrl + G 可以結(jié)束抓包
tcpdump 很強(qiáng)大,但是可讀性不太高,我們嘗試用Wireshark 分析原始數(shù)據(jù)包。
AirPlay 是Apple 私密協(xié)議,但也被很多商業(yè)破解收費(fèi),但每個(gè)版本 Apple 都有可能再加密一次,這邊有一份 non-official AirPlay 協(xié)議,大致描述了 AirPlay 的一個(gè)過(guò)程, non-official AirPlay protocol , 接下來(lái)看一下 iOS 12 上 AirPlay 協(xié)議
工具: airServer 可以將 手機(jī)通過(guò) AirPlay 投到 mac 上
以下分析過(guò)程都采用 wireShark
啟動(dòng) wireShark
選擇抓 rvi0 網(wǎng)絡(luò)接口數(shù)據(jù),點(diǎn)擊開始
airplay 非正式版的協(xié)議
發(fā)送端 :30.40.200.4
接收端:30.40.202.17
我們?cè)?wireShark 上看下具體原始數(shù)據(jù)包:
30.40.200.4 -- 30.40.202.17
發(fā)送端向接收端查詢AirPlay 和 RAOP 的信息,拿到數(shù)據(jù)包原文如下:
接收端回復(fù)數(shù)據(jù)包:
30.40.202.17 -- 30.40.200.4
里面包含了很的信息我們都可以解析。
實(shí)現(xiàn)iOS應(yīng)用底層所有網(wǎng)絡(luò)請(qǐng)求攔截(如ajax請(qǐng)求攔截),包含http-dns解決方法,有效防止DNS劫持,用于分析http,https請(qǐng)求,禁用/允許代理,防抓包
用到第三方庫(kù) ZXRequestBlock
1,安裝
通過(guò)CocoaPods安裝
手動(dòng)導(dǎo)入
將ZXRequestBlock拖入項(xiàng)目中。
導(dǎo)入頭文件
使用方法
攔截全局請(qǐng)求
禁止網(wǎng)絡(luò)代理抓包(開啟后將無(wú)法通過(guò)網(wǎng)絡(luò)代理抓包,通過(guò)Thor,Charles,Burp等均無(wú)法抓取此App的包,且在代理網(wǎng)絡(luò)下App內(nèi)部請(qǐng)求不受任何影響)
允許網(wǎng)絡(luò)代理抓包【默認(rèn)為允許】
啟用HTTPDNS(將會(huì)直接從本地或 進(jìn)行DNS解析,是一種避免DNS劫持的措施)
關(guān)閉HTTPDNS【默認(rèn)為關(guān)閉】
禁止所有網(wǎng)絡(luò)請(qǐng)求
恢復(fù)所有網(wǎng)絡(luò)請(qǐng)求
實(shí)現(xiàn)iOS應(yīng)用底層所有網(wǎng)絡(luò)請(qǐng)求攔截(如ajax請(qǐng)求攔截),包含http-dns解決方法,有效防止DNS劫持,用于分析http,https請(qǐng)求,禁用/允許代理,防抓包
用到第三方庫(kù) ZXRequestBlock
1,安裝
通過(guò)CocoaPods安裝
pod 'ZXRequestBlock'
手動(dòng)導(dǎo)入
將ZXRequestBlock拖入項(xiàng)目中。
導(dǎo)入頭文件
使用方法
攔截全局請(qǐng)求
[ZXRequestBlock handleRequest:^NSURLRequest *(NSURLRequest *request) {
//攔截回調(diào)在異步線程
NSLog(@"攔截到請(qǐng)求-%@",request);
dispatch_async(dispatch_get_main_queue(), ^{
self.blockTv.text = [self.blockTv.text stringByAppendingString:[NSString stringWithFormat:@"攔截到請(qǐng)求--%@\n",request]];
});
//在這里可以將request賦值給可變的NSURLRequest,進(jìn)行一些修改(例如根據(jù)request的url過(guò)濾單獨(dú)對(duì)一些請(qǐng)求的請(qǐng)求體進(jìn)行修改等)然后再return,達(dá)到修改request的目的。
return request;
}];
禁止網(wǎng)絡(luò)代理抓包(開啟后將無(wú)法通過(guò)網(wǎng)絡(luò)代理抓包,通過(guò)Thor,Charles,Burp等均無(wú)法抓取此App的包,且在代理網(wǎng)絡(luò)下App內(nèi)部請(qǐng)求不受任何影響)
[ZXRequestBlock disableHttpProxy];
允許網(wǎng)絡(luò)代理抓包【默認(rèn)為允許】
[ZXRequestBlock enableHttpProxy];
啟用HTTPDNS(將會(huì)直接從本地或 進(jìn)行DNS解析,是一種避免DNS劫持的措施)
[ZXRequestBlock enableHttpDns];
關(guān)閉HTTPDNS【默認(rèn)為關(guān)閉】
[ZXRequestBlock disableHttpDns];
禁止所有網(wǎng)絡(luò)請(qǐng)求
[ZXRequestBlock cancelAllRequest];
恢復(fù)所有網(wǎng)絡(luò)請(qǐng)求
[ZXRequestBlock resumeAllRequest];
app開發(fā)中會(huì)遇到接口抓包的需求,可以使用三方抓包工具charles、mitmproxy 進(jìn)行抓包。
抓包前,請(qǐng)做一下設(shè)置。
mitmproxy
4.安裝證書,手機(jī)瀏覽區(qū)訪問 mitm.it
我先擇apple 安裝,安裝完成后需要信任證書。通用-關(guān)于本機(jī)-證書信任設(shè)置 信任mimtproxy證書。
charles
iOS是由蘋果公司開發(fā)的移動(dòng)操作系統(tǒng)。蘋果公司最早于2007年1月9日的Macworld大會(huì)上公布這個(gè)系統(tǒng),最初是設(shè)計(jì)給iPhone使用的,后來(lái)陸續(xù)套用到iPod touch、iPad以及Apple TV等產(chǎn)品上。下面是我收集整理的ios開發(fā)用Charles進(jìn)行抓包的方法,歡迎閱讀。
ios開發(fā)用Charles進(jìn)行抓包的方法
首先,我們可以去一些網(wǎng)站下載安裝一下這個(gè)軟件。安裝完畢后, 我們能看到這個(gè)漂亮的青花瓷。
現(xiàn)在,我們需要將我們的電腦配置成手機(jī)的.代理服務(wù)器,這樣才能讓我們的 MAC 順利的攔截到手機(jī)軟件的網(wǎng)絡(luò)接口。我們先看一下自己的電腦ip。
在系統(tǒng)偏好設(shè)置 -- 網(wǎng)絡(luò) -- 查看當(dāng)前 IP。
然后我們來(lái)配置一下手機(jī)網(wǎng)絡(luò)設(shè)置,前提是你要確保你的手機(jī)和你的電腦在同一個(gè)局域網(wǎng)中。打開手機(jī)無(wú)線網(wǎng)的配置。就是點(diǎn)擊這個(gè)圖標(biāo)。
接著,我們就看到配置頁(yè)面啦,找到到代理這個(gè)欄目,選擇“手動(dòng)”,在服務(wù)器一項(xiàng),填寫剛才查看的電腦的ip,這里就是10.930.93.115,端口添加8888,然后返回就行了。
接著,我們?cè)陔娔X上打開 Charles。然后配置一下,主要是配置端口,按照?qǐng)D示點(diǎn)擊。
然后,在彈出框中找到端口,輸入8888,和你手機(jī)輸入的端口號(hào)保持一致。
到這里,配置就完成了。現(xiàn)在你可以打開你的手機(jī)進(jìn)行上網(wǎng),這是會(huì)看到Charles 在刷刷的顯示數(shù)據(jù),并在右側(cè)面板中以黃色字體顯示出來(lái)。
本地開發(fā)項(xiàng)目的時(shí)候,我們可以通過(guò)谷歌瀏覽器的debug模式來(lái)看request以及response的數(shù)據(jù),但是如果我們開發(fā)移動(dòng)端真機(jī)項(xiàng)目呢?或者真機(jī)線上出現(xiàn)問題如何抓取數(shù)據(jù)查看接口入?yún)⒑统鰠⒛兀窟@就需要用到“抓包”
抓包就是通過(guò)工具抓取應(yīng)用的接口數(shù)據(jù)然后通過(guò)分析數(shù)據(jù)得出問題結(jié)論的一種常用的工作方法。下面簡(jiǎn)述一下在iOS上面安裝Charles并且實(shí)現(xiàn)抓包的過(guò)程,抓取范圍包括web/APP內(nèi)嵌web/小程序原生/小程序內(nèi)嵌web等
【1】獲取PC的IP地址和端口
在Charles菜單欄 - Help - Local IP Address中可以查看PC的IP地址。
一般Charles端口是默認(rèn)的8888,可以從Charles菜單欄 - Proxy - Proxy Settings查看
【2】配置iPhone代理
設(shè)置 - 無(wú)線局域網(wǎng) - 局域網(wǎng)信息(i) - 配置代理 - 手動(dòng)
在配置iPhone代理完畢后,就可以通過(guò)Structure或者Sequence窗口預(yù)覽HTTP請(qǐng)求的數(shù)據(jù)了。但由于HTTPS請(qǐng)求被加密過(guò),預(yù)覽請(qǐng)求時(shí)只能預(yù)覽到亂碼數(shù)據(jù)。要預(yù)覽到HTTPS請(qǐng)求的數(shù)據(jù)明文,需要PC和iPhone安裝證書授權(quán)。
【1】PC安裝證書
在Charles菜單欄 - Help - SSL Proxying - Install Charles Root Certificate中可以為PC安裝證書
這樣,就可以使用Charles中抓包iPhone發(fā)出的HTTPS請(qǐng)求并預(yù)覽明文數(shù)據(jù)了。
【3】 啟動(dòng)抓包SSL權(quán)限
在Charles菜單欄 - Proxy - SSL Proxying Settings中勾選Enable SSL Proxying,然后在Locations中添加需要抓包的Host和Port即可。或者直接寫*端口寫443圖示如下:
可以抓取對(duì)應(yīng)添加的域名的Https的接口的數(shù)據(jù)
分享名稱:ios開發(fā)抓包,ios手機(jī)抓包
轉(zhuǎn)載注明:http://chinadenli.net/article15/dsgsjgi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、微信公眾號(hào)、做網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)