一斤儿、charles抓包
1玻侥、介紹
Charles是一個(gè)HTTP代理服務(wù)器,HTTP監(jiān)視器,反轉(zhuǎn)代理服務(wù)器捏顺,當(dāng)程序連接Charles的代理訪問互聯(lián)網(wǎng)時(shí),Charles可以監(jiān)控這個(gè)程序發(fā)送和接收的所有數(shù)據(jù)拌禾。它允許一個(gè)開發(fā)者查看所有連接互聯(lián)網(wǎng)的HTTP通信,這些包括request, response和HTTP headers (包含cookies與caching信息)展哭。
Charles對手機(jī)進(jìn)行抓包時(shí)湃窍,配置代理一般需要手機(jī)和電腦共用一個(gè)Wifi,如果手機(jī)用4G網(wǎng)絡(luò)就無法抓包了匪傍,因?yàn)闊o法配置代理您市。因此要使手機(jī)和電腦在同一個(gè)局域網(wǎng)內(nèi),不一定要在同一個(gè)ip段役衡,只要是在同一個(gè)路由器下就可以了茵休。
優(yōu)點(diǎn):簡單
缺點(diǎn):不能抓真機(jī)2g/3g/4g網(wǎng)絡(luò)數(shù)據(jù)
下載地址:https://www.charlesproxy.com
2、主要功能
支持SSL代理映挂≡罄海可以截取分析SSL的請求。
支持流量控制柑船∶背牛可以模擬慢速網(wǎng)絡(luò)以及等待時(shí)間(latency)較長的請求。
支持AJAX調(diào)試鞍时】骼可以自動(dòng)將json或xml數(shù)據(jù)格式化扣蜻,方便查看。
支持AMF調(diào)試及塘∶梗可以將Flash Remoting 或 Flex Remoting信息格式化,方便查看笙僚。
支持重發(fā)網(wǎng)絡(luò)請求芳肌,方便后端調(diào)試。
支持修改網(wǎng)絡(luò)請求參數(shù)肋层。
支持網(wǎng)絡(luò)請求的截獲并動(dòng)態(tài)修改亿笤。
檢查HTML,CSS和RSS內(nèi)容是否符合W3C標(biāo)準(zhǔn)栋猖。
3净薛、提供“Structure” 和 “Sequence”兩種查看封包的視圖
1、Structure 視圖將網(wǎng)絡(luò)請求按訪問的域名分類蒲拉。
2肃拜、Sequence 視圖將網(wǎng)絡(luò)請求按訪問的時(shí)間排序。
4雌团、 iPhone上進(jìn)行HTTP抓包
4.1燃领、在 Mac 上安裝抓包軟件Charles
4.2、在電腦上打開軟件辱姨,并在手機(jī)上設(shè)置 HTTP 代理
無線局域網(wǎng)----查看無線局域網(wǎng)詳細(xì)信息——拉到最低下配置代理----進(jìn)入配置代理界面----選擇手動(dòng)柿菩,并填寫服務(wù)器地址(你的電腦 IP 地址),端口(默認(rèn) 8888)雨涛。
4.3枢舶、填寫完成后并保存后,隨便打開一個(gè)網(wǎng)址替久,電腦端應(yīng)該后彈出提示凉泄,請點(diǎn)擊 Allow
此時(shí)應(yīng)該已經(jīng)可以看到手機(jī)發(fā)出的請求了。
細(xì)心的你會(huì)發(fā)現(xiàn)蚯根,HTTPS 請求請求前面有個(gè)小鎖后众,我們無法查看請求信息,比如下圖的頭條颅拦。
5蒂誉、 iPhone上進(jìn)行HTTPS抓包
5.1、MAC電腦安裝證書
Charles的菜單欄點(diǎn)擊help----SSL Proxying----Install Charles Root Certificate
此時(shí)證書被添加到“鑰匙串”距帅,但是還沒有結(jié)束右锨,因?yàn)樽C書默認(rèn)是不信任狀態(tài),我們還要把證書改成信任狀態(tài)碌秸。
在鑰匙串中搜索 “ Charles ”找到證書绍移,雙擊證書悄窃,并選擇 始終信任
設(shè)置后證書的狀態(tài)應(yīng)該是這樣子的
5.2、在iPhone上安裝證書
在mac上保持 Charles 打開狀態(tài)蹂窖,iPhone 和 Mac處于同一網(wǎng)絡(luò)中轧抗。在iPhone 的 Safari 中打開如下網(wǎng)址:
設(shè)置 = > 關(guān)于本機(jī) => 證書信任設(shè)置 =>信任
注意:設(shè)置完之后要把證書信任設(shè)置開啟起來
5.3、SSL 代理設(shè)置
Charles 菜單欄 => Proxy => SSL Proxying Settings =>add 添加主機(jī)和端口
添加端口號
不出意外的話瞬测,應(yīng)該可以抓到HTTPS接口的數(shù)據(jù)了横媚,以今日頭條為例,如下圖:
6涣楷、 抓指定接口數(shù)據(jù)
Charles 菜單欄 => Proxy => Recoding Settings =>Include =>add (添加相關(guān)信息分唾,支持通配符)。
比如我們只想抓微博的數(shù)據(jù)狮斗,則填寫如下規(guī)則
7、模擬網(wǎng)速慢
有時(shí)候在開發(fā)的時(shí)候我們想要模擬一下網(wǎng)絡(luò)慢的情況弧蝇,可以通過Charles來設(shè)置
Proxy——Throttle Setting碳褒,然后選擇Enable Throttling,在Throttle Preset下選擇網(wǎng)絡(luò)類型
8看疗、請求重定向
Tools —— Map Remote
二沙峻、tcpdump抓包
1、介紹
tcpdump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包完全截獲下來提供分析两芳。它支持針對網(wǎng)絡(luò)層摔寨、協(xié)議、主機(jī)怖辆、網(wǎng)絡(luò)是复、端口的過濾,并提供and竖螃、or淑廊、not等邏輯語句來幫助你去掉無用的信息。在ios應(yīng)用開發(fā)過程中特咆,為了進(jìn)行端到端的分析季惩,很多時(shí)候我們需要對手機(jī)的抓包進(jìn)行分析。由于tcpdump只是抓取數(shù)據(jù)腻格,我們使用-w開關(guān)來指定一個(gè)文件画拾,該文件保存抓到的數(shù)據(jù),隨后我們就把這個(gè)文件拷貝到電腦上用wireshark進(jìn)行分析菜职。
前提:手機(jī)越獄并安裝tcpdump這樣一部iphone就具備了抓包能力青抛。
優(yōu)點(diǎn):優(yōu)點(diǎn)很多,可以做很高級的定制和選擇些楣,可以編程控制脂凶;
缺點(diǎn):手機(jī)必須越獄宪睹,使用比較麻煩;
2蚕钦、抓包
手機(jī)越獄后亭病,桌面會(huì)多一個(gè)cydia
1、下載tcpdump
從cydia搜索安裝tcpdump嘶居,如果沒有搜到罪帖,請先添加源http://apt.saurik.com
2、安裝openssh
從cydia搜索安裝openssh邮屁,如果沒有搜到整袁,請先添加源http://apt.saurik.com
3、配置SSH通道佑吝,遠(yuǎn)程訪問手機(jī)
iPhone手機(jī)連接上MAC電腦坐昙,電腦上打開PP助手,然后工具----設(shè)備工具----打開SSH通道芋忿;
這時(shí)會(huì)有一個(gè)彈窗提示如下圖:
賬號:root炸客;
密碼(默認(rèn)):alpine;
使用ssh root@localhost -p 2222 來登錄手機(jī)戈钢;
注意:這邊的alpine是初始密碼痹仙,如果有改過密碼的,則用新密碼登錄殉了。
關(guān)于localhost:
1)开仰、localhost是域名,127.0.0.1是IP薪铜;
2)众弓、localhost和127.0.0.1不需要聯(lián)網(wǎng),都是本機(jī)訪問痕囱;
打開終端田轧,遠(yuǎn)程登錄手機(jī)
4、使用tcpdump抓包
如在WiFi下進(jìn)行抓包時(shí)鞍恢,輸入如下命令:
tcpdump -i en0 -X -s 0 -w /var/moblie/Books/data.pcap
抓取回環(huán)網(wǎng)口(指定端口號為8888) 的包: tcpdump -i lo0 -XXnns0 -w /var/mobile/Books/data.pcap port 8888
抓取回環(huán)網(wǎng)口的包:tcpdump -i lo0 -w?/var/mobile/Books/data.pcap
2G下抓包:tcpdump -i pdp_ip0 -x -s 0 -w /var/mobile/Books/data.pcap
3G下抓包:tcpdump -x -s 0 -w /var/moblie/Books/data.pcap
抓全包寫文件:tcpdump -x -s 0 -w /tmp.cap
按host抓包:tcpdump -x -s 0 host www.qq.com
按端口抓包:tcpdump -x -s 0 port 14000
結(jié)束抓包:control + c
可用netstat命令來查看當(dāng)前連接的端口
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 - .target.pcap
tcp: ip icmp arp rarp 和 tcp傻粘、udp、icmp這些選項(xiàng)等都要放到第一個(gè)參數(shù)的位置帮掉,用來過濾數(shù)據(jù)報(bào)的類型
-i eth1 : 只抓經(jīng)過接口eth1的包(eth1:物理網(wǎng)卡1)
-t : 不顯示時(shí)間戳
-s 0 : 抓取數(shù)據(jù)包時(shí)默認(rèn)抓取長度為68字節(jié)弦悉。加上-S 0 后可以抓到完整的數(shù)據(jù)包
-c 100 : 只抓取100個(gè)數(shù)據(jù)包
dst port ! 22 : 不抓取目標(biāo)端口是22的數(shù)據(jù)包
src net 192.168.1.0/24 : 數(shù)據(jù)包的源網(wǎng)絡(luò)地址為192.168.1.0/24
-w ./target.pcap : 保存成pcap文件,方便用ethereal(即wireshark)分析
-x : 列出十六進(jìn)制及ASCII數(shù)據(jù)包內(nèi)容蟆炊,對于監(jiān)聽數(shù)據(jù)包內(nèi)容很有用
注意:
1稽莉、使用完整越獄的手機(jī)進(jìn)行抓包,否則這邊按control + c無法退出涩搓,也無法得到數(shù)據(jù)(我就在這被坑了好久污秆,后面換了一把完整越獄的手機(jī)劈猪,所以上面的終端命令端口號才換為2223,之前是2222)良拼;
2战得、抓包數(shù)據(jù)的存儲(chǔ)文檔指明下路徑比較好找,如: /var/moblie/Books/data.pcap
5庸推、提取抓包數(shù)據(jù)
抓包后的數(shù)據(jù)哪里去了呢常侦?看下圖:
第一個(gè)紅框文件路徑與終端的輸入路徑一致時(shí),第二個(gè)紅框data.pcap就是我們要的文件贬媒,將它拉到電腦上用wireshark分析吧聋亡。
三、wireshark
1际乘、介紹
wireshark和tcpdump是面向所有協(xié)議的抓包坡倔,charles是針對HTTP協(xié)議的抓包。wireshark可以抓wifi脖含、2G致讥、3G、4G數(shù)據(jù)包器赞。wireshark捕捉的是經(jīng)過目標(biāo)網(wǎng)卡所有的流量。
2墓拜、抓包(iPhone手機(jī)無需越獄)
1港柜、手機(jī)與MAC連接;
2咳榜、在MAC終端執(zhí)行:rvictl -s iPhone的UDID夏醉;(斷開鏈接執(zhí)行:rvictl -x iPhone的UDID )
此時(shí),mac會(huì)出現(xiàn)一個(gè)對應(yīng)的虛擬網(wǎng)絡(luò)接口涌韩,名字是rvi0(如果有多個(gè)iphone則累加畔柔,rvi1,rvi2…)
3臣樱、打開wireshark可以看到對應(yīng)的rvi0
4靶擦、點(diǎn)進(jìn)去就可以獲取數(shù)據(jù)數(shù)據(jù)包
此時(shí),啟動(dòng)iPhone上的任意App雇毫,只要有網(wǎng)絡(luò)流量產(chǎn)生玄捕,對應(yīng)的網(wǎng)絡(luò)包都會(huì)在wireshark上述的列表中展示出來。
wireshark的流量監(jiān)控界面主要分為四塊棚放,由上至下:
第一部分(標(biāo)號為1)是工具欄枚粘,通過工具欄我們可以控制監(jiān)控的行為,比如開始抓包飘蚯,停止抓包馍迄,重新開始抓包福也,以及在包之間跳轉(zhuǎn)等等。工具欄的底部有個(gè)輸入框攀圈,可以讓我們手動(dòng)輸入包的過濾條件暴凑。
第二部分(標(biāo)號為2)是歷史流量包列表展示界面,這里展示的是從抓包開始量承,所有通過我們iPhone設(shè)備的流量搬设。列表界面不同的包有不同的顏色,wireshark通過顏色來區(qū)分包的類型撕捍,對于特定場景快速識別目標(biāo)流量非常有用拿穴。
第三部分(標(biāo)號為3)是單個(gè)包的詳細(xì)信息展示面板,我們在第二部分選中的網(wǎng)絡(luò)包在這一部分會(huì)將其結(jié)構(gòu)以可閱讀的文本形式展示出來忧风,要正確閱讀這一部分的信息需要對tcp/ip協(xié)議有一定的掌握默色。
第四部分(標(biāo)號為4)是單個(gè)包的二進(jìn)制流信息展示面板,這一部分展示的信息是包的原始數(shù)據(jù)狮腿,也是一個(gè)網(wǎng)絡(luò)包所包含內(nèi)容的真實(shí)展現(xiàn)腿宰,我們在第三部分多選中的協(xié)議頭,都會(huì)在這一部分以同步高亮的形式標(biāo)記出來缘厢。這一部分的展示是為了讓我們對包的真實(shí)內(nèi)容做直觀的判斷吃度,能具體到單個(gè)byte。
3贴硫、無需越獄便可以抓包椿每,那為什么還要用tcpdump抓越獄手機(jī)的包呢?
wireshark可以抓非越獄手機(jī)的包英遭,包括wifi间护、2G、3G挖诸、4G數(shù)據(jù)汁尺。但沒辦法抓指定端口的數(shù)據(jù)包、回環(huán)數(shù)據(jù)包等多律。因此痴突,我們要用tcpdump抓包,然后在wireshark查看數(shù)據(jù)菱涤。
回環(huán)數(shù)據(jù)包:回環(huán)數(shù)據(jù)包是沒有通過網(wǎng)卡的數(shù)據(jù)包苞也,也就是說這個(gè)數(shù)據(jù)包沒有通過網(wǎng)卡發(fā)送出去,比如PING 127.0.0.1粘秆,這里的127.0.0.1就是回環(huán)地址如迟,利用PING命令,這個(gè)PING數(shù)據(jù)包就是回環(huán)數(shù)據(jù)包,沒有經(jīng)過網(wǎng)卡發(fā)送出去殷勘,而是電腦自己發(fā)送自己接受此再,沒有通過第二設(shè)備。
4玲销、wireshark介紹
1输拇、Filter(過濾)
wireshark的Filter分為兩種,一種為Capture Filter贤斜,另一種是Display Filter策吠。
Capture Filter出現(xiàn)在初始界面,在網(wǎng)卡列表的上方有個(gè)輸入框瘩绒,允許我們輸入capture filter猴抹,一旦輸入了特定的capture規(guī)則,wireshark就只捕獲符合該規(guī)則的流量包了锁荔。
Display Filter出現(xiàn)在流量監(jiān)控界面蟀给,在工具欄的下方有個(gè)輸入框,允許我們輸入display filter阳堕,display filter只是從界面上過濾掉不符合規(guī)則的包跋理,wireshark實(shí)際上還是監(jiān)聽了這些包,一旦去掉display filter恬总,所有的包又會(huì)出現(xiàn)在同一界面前普。
wireshark實(shí)際上提供了便捷的UI操作幫助我們來書寫Display Filter,在Display Filter輸入框的最右邊有個(gè)表達(dá)式按鈕壹堰,點(diǎn)擊之后可以彈出如下界面:
2汁政、包顏色設(shè)置
wireshark默認(rèn)使用一種著色規(guī)則幫助我們來進(jìn)行包類型區(qū)分∽号裕可以通過視圖----著色規(guī)則進(jìn)行修改,如下圖:
3勺鸦、流量跟蹤
wireshark默認(rèn)情況下將不同網(wǎng)絡(luò)連接的流量都混在一起展示并巍,即使給不同協(xié)議的包上色之后,要單獨(dú)查看某個(gè)特定連接的流量依然不怎么方便换途,我們可以通過wireshark提供的兩種方式來實(shí)現(xiàn)這個(gè)目標(biāo)懊渡。
方式一:追蹤流
當(dāng)我們選中某個(gè)包之后,右鍵彈出的菜單里军拟,有個(gè)選項(xiàng)允許我們將當(dāng)前包所屬于的完整流量單獨(dú)列出來剃执,如下圖:
方式二:流量圖
5、實(shí)例分析
以抓取今日頭條為例懈息,下圖為抓取到的數(shù)據(jù):
1肾档、分析HTTP請求
先display filter中過濾出http。
選中要分析的數(shù)據(jù)包后查看詳細(xì)信息展示面板的詳細(xì)內(nèi)容。
1怒见、無返回?cái)?shù)據(jù)
說明:
狀態(tài)碼101俗慈,表明更換協(xié)議;(服務(wù)器已經(jīng)理解了客戶端的請求遣耍,并將通過Upgrade 消息頭通知客戶端采用不同的協(xié)議來完成這個(gè)請求闺阱。在發(fā)送完這個(gè)響應(yīng)最后的空行后,服務(wù)器將會(huì)切換到在Upgrade 消息頭中定義的那些協(xié)議舵变。)
Upgrade:websocket? 表明要更換成websocket協(xié)議酣溃;
Request URI:/ws/v2?aid=13....? 這里的ws表示websocket的協(xié)議,類似HTTP協(xié)議中的http://...
2纪隙、有返回?cái)?shù)據(jù)
3赊豌、選中數(shù)據(jù)包進(jìn)行流追蹤
2、分析TCP請求
選擇要分析的數(shù)據(jù)包——追蹤流——TCP流