程序員都應(yīng)該會(huì)的抓包工具-Charles

來(lái)自公眾號(hào) : DeveloperPython

閱讀本文需要7.66分鐘

抓包 其實(shí)很多程序員都不陌生了冀宴,但是真正抓過(guò)包灭贷、分析過(guò)的又有幾個(gè)。
本文將介紹幾款簡(jiǎn)單易用的抓包工具略贮,并針對(duì)目前互聯(lián)網(wǎng)主流的Http和Https網(wǎng)絡(luò)包進(jìn)行抓取并分析甚疟,同時(shí)分享手機(jī)抓包的技術(shù)
1. Charles、Fiddler和Wireshark
2. Http逃延、Https及其原理
3. 手機(jī)抓包
4. Charles的附加功能

一览妖、抓包工具

  • Fiddler
  • 是之前我用Window電腦的時(shí)候,特別喜歡用的工具揽祥,而且當(dāng)時(shí)的Fiddler足以滿足的我簡(jiǎn)單的抓包工作讽膏,現(xiàn)在也應(yīng)該更新到Fiddler3了,如果用Windows的朋友可以用Fiddler3進(jìn)行抓包盔然。
  • Charles
  • 自從換了Mac之后我就喜歡上了這個(gè)工具桅打,不過(guò)Charles在Windows上同樣也有。
  • Wireshark
  • 這個(gè)我不是怎么經(jīng)常用愈案,這個(gè)抓包工具可以詳細(xì)的看到網(wǎng)絡(luò)請(qǐng)求的三次握手挺尾,并且可支持spdy、tcp等等的網(wǎng)絡(luò)協(xié)議抓包站绪,當(dāng)然其他兩個(gè)是不支持的遭铺。

我將以Charles為例分別抓取Http和Https包:

下載

Mac破解版下載地址:http://download.csdn.net/detail/m694449212/9770583
Win破解版下載地址:http://download.csdn.net/detail/m694449212/9770589
官網(wǎng)鏈接,需要購(gòu)買(mǎi)LisenseKey:https://www.charlesproxy.com/
打開(kāi)界面如下:

第二恢准、Http魂挂、Https包

2.1、Http包

2.1.1 清理Charles列表馁筐,讓抓包更加清晰
2.1.2 以我的CSDN為例(m694449212),通過(guò)Chrome點(diǎn)擊‘我的博客’涂召,抓到需要的包
從中我們過(guò)濾出m694449212的博客包,但是這個(gè)過(guò)濾的過(guò)程需要我們?nèi)ヒ粋€(gè)個(gè)找(當(dāng)然如果你的經(jīng)驗(yàn)比較足或者英語(yǔ)比較好的話敏沉,可以發(fā)現(xiàn)其實(shí)就是blog.csdn.net的包)
2.1.3 分析包
2.1.4 Reuqest
其中比較重要的是Cookie,網(wǎng)站為了辨別用戶身份果正、進(jìn)行 session 跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密).
同時(shí)Cookie在我們爬蟲(chóng)的時(shí)候也是一個(gè)必不可少的東西,那么如何自動(dòng)化獲取Cookie呢盟迟?后面會(huì)講解到秋泳。
2.1.5 Response
獲取Cookie,通過(guò)我以往的經(jīng)驗(yàn):
a. 獲取Cookie的時(shí)候首先需要保證我們的瀏覽器環(huán)境是干凈的,我說(shuō)的干凈其實(shí)就是清楚當(dāng)前瀏覽器保存的Cookie攒菠,并重啟瀏覽器迫皱。
b. 重啟之后我們?cè)L問(wèn)www.csdn.net,當(dāng)前Host的Request中就不包含Cookie辖众,那么Cookie在哪呢卓起,其實(shí)細(xì)心點(diǎn)的會(huì)發(fā)現(xiàn)Cookie在Response的Headers->set-cookie中和敬,并在下次請(qǐng)求中使用到。
c. 那么當(dāng)我們登錄操作并攜帶Cookie在請(qǐng)求Headers中既绩,那么登錄成功之后該Cookie就會(huì)生效概龄。之后我們的所有請(qǐng)求攜帶該Cookie就會(huì)是一個(gè)正常的請(qǐng)求还惠,并能拿到需要的結(jié)果饲握。
關(guān)于某些請(qǐng)求攜帶sign參數(shù)的,后面的文章我會(huì)講解到破解Sign函數(shù)(其實(shí)有時(shí)候不是直接的破解而是函數(shù)的Hook,有興趣的可以提前了解下Android或者iOS的Hook蚕键,通過(guò)IDA找到sign函數(shù),并使用cycript調(diào)用)救欧,之后的文章我會(huì)以國(guó)外的知名App Instagram為例,Hook它的簽名函數(shù)锣光。
來(lái)個(gè)美女提提神(圖片來(lái)自Instagram的Https包數(shù)據(jù))笆怠,繼續(xù)往下看

2.2、Https包

2.2.1誊爹、Https簡(jiǎn)介

SSL相信大家都不陌生蹬刷。其實(shí)Https就是在Http基礎(chǔ)上通過(guò)SSL協(xié)議進(jìn)行加密之后的網(wǎng)絡(luò)傳輸。
并通過(guò)非對(duì)稱和對(duì)稱加密算法來(lái)對(duì)密碼和數(shù)據(jù)進(jìn)行加密频丘。具體看下圖:
1. Client明文將自己支持的一套加密規(guī)則办成、一個(gè)隨機(jī)數(shù)(Random_C)發(fā)送給服務(wù)器.
2. Server返回自己選擇的加密規(guī)則、CA證書(shū)(服務(wù)器地址搂漠、加密公鑰迂卢、以及證書(shū)頒發(fā)機(jī)構(gòu))、外加一個(gè)通過(guò)加密規(guī)則和HASH算法生成的隨機(jī)數(shù)(Random_S)
3. Client收到Server的消息之后會(huì):
a:驗(yàn)證證書(shū)(地址是否是正在訪問(wèn)的和機(jī)構(gòu)是否合法)桐汤、
b:自己生成一個(gè)隨機(jī)的密碼(Pre_master)并使用CA證書(shū)中的加密公鑰進(jìn)行加密(enc_pre_master)而克、
c:計(jì)算出一個(gè)對(duì)稱加密的enc_key,通過(guò)Random_C、Random_S怔毛、Pre_master员萍、
d:生成握手信息:使用約定好的Hash算法計(jì)算握手信息,并通過(guò)enc_key和約定好的加密算法對(duì)消息進(jìn)行加密
4. Client將enc_pre_master拣度、加密之后的握手消息發(fā)送給Server
5. Server收到消息之后
a: 收到enc_pre_master之后碎绎,會(huì)通過(guò)私鑰進(jìn)行解密(非對(duì)稱加密算法)得到pre_master
b: 通過(guò)pre_masrer、Random_C蜡娶、Random_S計(jì)算得到協(xié)商密碼 enc_key
c: 通過(guò)enc_key解密握手信息混卵,驗(yàn)證HASH是否和客戶端發(fā)來(lái)的一致
d: 生成握手信息同樣適用enc_key和約定好的加密算法
6. Server發(fā)送握手信息給Client,也就是說(shuō)Server驗(yàn)證通過(guò)了Client,并再次發(fā)送消息給Client讓其驗(yàn)證自己
7. 客戶端拿到握手信息解密,握手結(jié)束窖张∧凰妫客戶端解密并計(jì)算握手消息的HASH,如果與服務(wù)端發(fā)來(lái)的HASH一致宿接,此時(shí)握手過(guò)程結(jié)束赘淮。
8. 正常加密通信辕录,握手成功之后,所有的通信數(shù)據(jù)將由之前協(xié)商密鑰enc_key及約定好的算法進(jìn)行加密解密梢卸。

其中Https使用到的加密算法如下:

  • 非對(duì)稱加密算法:RSA走诞,DSA/DSS
  • 對(duì)稱加密算法:AES,RC4蛤高,3DES
  • HASH算法:MD5蚣旱,SHA1,SHA256

2.2.2戴陡、 Charles抓取Https原理

Charles本身就是一個(gè)協(xié)議代理工具塞绿,在上篇的Https原理上,客戶端和服務(wù)器的所有通信都被Charles捕獲到恤批。
如下圖:

主要步驟如下:

1. Charles捕獲Client發(fā)送給Server請(qǐng)求异吻,并偽裝成客戶端向服務(wù)器發(fā)起握手請(qǐng)求
2. 服務(wù)器響應(yīng),Charles獲取到服務(wù)器的CA證書(shū)喜庞,并用根證書(shū)公鑰進(jìn)行解密诀浪,獲取到服務(wù)器的CA證書(shū)公鑰。然后Charles偽造自己的CA證書(shū)延都,偽裝為服務(wù)器的CA證書(shū)發(fā)送給客戶端
3. 客戶端收到返回之后雷猪,和上面講到的過(guò)程一樣,證書(shū)校驗(yàn)窄潭、生成密碼春宣、并使用Charles偽裝的證書(shū)公鑰進(jìn)行加密,并生成 Https通信的協(xié)商密碼enc_key
4. Charles捕獲到Client發(fā)來(lái)的重要信息嫉你,并使用自己偽造的證書(shū)私鑰將密文解密月帝,獲取到enc_key.然后Charles使用服務(wù)器之前返回的證書(shū)公鑰對(duì)明文進(jìn)行加密并發(fā)送給服務(wù)器
5. 去之前一樣,服務(wù)器收到消息之后幽污,用私鑰解開(kāi)并建立信任嚷辅,然后發(fā)送加密的握手信息。
6. Charles截獲服務(wù)器發(fā)來(lái)的握手密文距误,并用對(duì)稱密鑰解開(kāi)簸搞,再用自己偽造證書(shū)的私鑰加密傳給客戶端
7. 客戶端拿到加密信息后,用公鑰解開(kāi)准潭,驗(yàn)證HASH趁俊。握手過(guò)程正式完成,客戶端與服務(wù)器端就這樣建立了”信任“刑然。
  • 其實(shí)在整個(gè)過(guò)程中寺擂,最重要的就是enc_key,由于Charles從一開(kāi)始偽造并獲取了enc_key,所以在整個(gè)通信過(guò)程中Charles充當(dāng)?shù)谌撸行畔?duì)其來(lái)講都是透明的怔软。
  • 其次就是根證書(shū)垦细,這是https一個(gè)信任鏈的開(kāi)始。這也是Charles偽造的CA證書(shū)能獲得雙方信任的關(guān)鍵挡逼。

2.2.3括改、演示Charles抓取Https

原理清楚之后,其實(shí)操作就很簡(jiǎn)單了家坎,操作的核心點(diǎn)就是根證書(shū)嘱能。

  • 安裝根證書(shū)(Charles Root Certificate)


  • 讓系統(tǒng)信任該證書(shū)


  • 接下來(lái)將需要抓的Https鏈接加入到CharlesSSL代理規(guī)則中,443是Https的默認(rèn)端口



    當(dāng)然你也可以像我最后一條一樣乘盖,使用 *:443 來(lái)抓取所有https的包焰檩。

  • 通過(guò)瀏覽器訪問(wèn)自己要抓的鏈接憔涉,這樣所有的Https都可以像Http一樣明文展示都我們面前订框。


第三、手機(jī)抓包

手機(jī)抓包的原理其實(shí)也很簡(jiǎn)單兜叨,讓手機(jī)和抓包工具處于同一局域網(wǎng)穿扳,并將手機(jī)的WifiProxy手動(dòng)代理到電腦的Ip和Charles設(shè)置的抓包端口上,具體操作可在網(wǎng)上找到,具體見(jiàn)http://blog.csdn.net/richer1997/article/details/52198024

我這邊主要講一下手機(jī)端Https包的抓取国旷,其實(shí)和瀏覽器的抓取一樣:
  • 首先需要安裝Charles的根證書(shū)到手機(jī)上矛物。


  • 點(diǎn)擊之后,會(huì)彈出讓你在手機(jī)上配置代理到對(duì)應(yīng)Ip和端口跪但,之后通過(guò)手機(jī)瀏覽器打開(kāi)chls.pro/ssl


使用手機(jī)訪問(wèn)該鏈接之后履羞,會(huì)自動(dòng)被識(shí)別為證書(shū),并跳轉(zhuǎn)到:(當(dāng)然我這里已經(jīng)是安裝過(guò)的屡久,未安裝的點(diǎn)擊右上角安裝即可)
  • 之后就類似與PC端抓Https包原理一樣忆首,手機(jī)端的證書(shū)被作為根證書(shū)使用,并通過(guò)Charles拿到enc_key.將所有通信過(guò)程透明化被环。

第四糙及、Charles的附加功能

在我剛開(kāi)始使用Charles的時(shí)候,我只是用來(lái)簡(jiǎn)單的抓抓接口筛欢,直到我看到別人使用BurpSuite自定義請(qǐng)求數(shù)據(jù)并Repeat的時(shí)候浸锨,我在考慮Charles是否也有這種功能。當(dāng)然不出我所料版姑,Charles也是支持的柱搜。

在對(duì)應(yīng)接口上點(diǎn)擊右鍵,出現(xiàn)菜單剥险,其中我經(jīng)常使用到的就是Compose聪蘸、Repeat和RepeatAdvanced
Compose:可直接自定義對(duì)應(yīng)的請(qǐng)求,并執(zhí)行該請(qǐng)求。這個(gè)對(duì)我們抓包用處很大宇姚。我們可以從中得到該接口的必填參數(shù)等等的匈庭。
Repeat:很簡(jiǎn)單就是執(zhí)行一次重復(fù)請(qǐng)求操作
Repeat Advanved:重復(fù)請(qǐng)求的高級(jí)操作,可自定義重復(fù)的次數(shù)浑劳、每隔多少秒執(zhí)行阱持。這個(gè)功能對(duì)于我們的接口的壓測(cè)是很有用的。
除了這幾個(gè)我常用的功能魔熏,當(dāng)然Charles還有更多更加實(shí)用的功能衷咽,如過(guò)濾、排序等等蒜绽。還需要大家去自行使用镶骗,發(fā)現(xiàn)更多更好、并適用于自己的功能躲雅。

小結(jié)

抓包的用處其實(shí)很大鼎姊,有時(shí)候可以用來(lái)調(diào)試我們的接口、有時(shí)候也可以用來(lái)做一些對(duì)工作有益的事相赁,當(dāng)然并"不建議"用來(lái)攻擊別人的網(wǎng)絡(luò)相寇。

掃描‘二維碼’公告號(hào),將自動(dòng)執(zhí)行代碼


生活不止眼前的茍且钮科,還有手下的代碼唤衫、和嘴上的扯淡

個(gè)人博客: https://www.alision.com

Github:https://www.github.com/xiyouMc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绵脯,隨后出現(xiàn)的幾起案子佳励,更是在濱河造成了極大的恐慌,老刑警劉巖蛆挫,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃承,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡璃吧,警方通過(guò)查閱死者的電腦和手機(jī)楣导,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)畜挨,“玉大人筒繁,你說(shuō)我怎么就攤上這事“驮” “怎么了毡咏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)逮刨。 經(jīng)常有香客問(wèn)我呕缭,道長(zhǎng)堵泽,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任恢总,我火速辦了婚禮迎罗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘片仿。我一直安慰自己纹安,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布砂豌。 她就那樣靜靜地躺著厢岂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阳距。 梳的紋絲不亂的頭發(fā)上塔粒,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音筐摘,去河邊找鬼卒茬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蓄拣,可吹牛的內(nèi)容都是我干的扬虚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼球恤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了荸镊?” 一聲冷哼從身側(cè)響起咽斧,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躬存,沒(méi)想到半個(gè)月后张惹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岭洲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年宛逗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盾剩。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雷激,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出告私,到底是詐尸還是另有隱情屎暇,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布驻粟,位于F島的核電站根悼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挤巡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一剩彬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矿卑,春花似錦襟衰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至徘意,卻和暖如春苔悦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椎咧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工玖详, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勤讽。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓蟋座,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親脚牍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子向臀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容