1. 程式人生 > >利用charles 抓取ios app的https資料包-----軟體配置和抓取步驟

利用charles 抓取ios app的https資料包-----軟體配置和抓取步驟

背景:最近在做資料快取相關的工作;我們的裝置是放在高鐵裡面的,主要是提供wifi服務。然而我們的wifi是由sim卡4g網路撥號提供的,使用者在上網時需要下載我們的APP:掌上高鐵;所以領導提出一個要求,要在自己伺服器做一個快取,使用者在ios  app-store下載掌上高鐵的時候,直接把它劫持掉,改由我們裝置伺服器直接推給使用者下載,這樣我們就可以省下不少流量。

         現在問題來了,我們需要分析不同蘋果手機機型在app store 點選下載掌上高鐵時,伺服器提供的Url是否一樣,這就用到抓包了。習慣在winds10上用fidler來抓取包,所以這次還是使用了fidler,但是發現蘋果手機在配置代理後,app store就連不上伺服器,猜測是 fidler提供的根證書,app store 不認可;所以最後,改用了charles 來抓取;

           charles 一般用於mac上面來抓取ios上的http包,但是charles也可以用於winds上面;很多ios上面的app 在使用fidler代理時,會連不上伺服器,但是用charles就可以。

知識點: 

1)https加密

2)中間人攻擊(charles就起到一箇中間人的作用)

      假設A是伺服器,B是使用者,B向A發起HTTPS連線,於是A需要將自己的公鑰發給B。中間人C通過某種手段可以截獲並偽造AB之間的通訊(比如運營商)。那麼C可以偽造一份A的公鑰,並保有這分假公鑰的私鑰;然後截獲A發給B的真公鑰,並偽造自己的身份,讓B認為自己就是A,並把偽造的公鑰發給B;如此一來,B會通過偽造的公鑰給A傳送密文,而C就可以截獲這些密文並利用手中的私鑰輕易的解密這些密文了。然後將這些密文通過正確的公鑰轉發給伺服器A,這樣AB之間的通訊仍將繼續,AB在毫不知情的情況下被中間人把證書“偷樑換柱”,從而達成了中間人攻擊,AB之間的非對稱加密形同虛設,從而TLS協議的對稱加密的金鑰就能被C輕易的獲取,如此,TLS完全告破。

3)數字證書認證機構CA

CA的出現就是防止中間人攻擊,簡單理解就是確保B收到A的公鑰是真實的,而不是偽造的;

簡單來說就是:A向CA機構申請一個證書(根金鑰對,其公鑰稱為根證書),把A的公鑰用CA的金鑰進行加密,這樣:A就有了 通過CA驗證的證書

當A向B傳送經過加密的公鑰時,B需要用根證書(金鑰)來解密公鑰;如此一來,就對A的身份進行了認證;

正題:主要介紹 charles在winds10 上的配置和ios端代理的配置;

一、下載並且安裝charles,再破解掉

我在百度網盤裡面放了charles V4.2  並且放了個破解檔案;備註:charles是收費軟體,免費也可以用,但是經常斷,所以這裡提供一個破解版本;

百度網盤連結: https://pan.baidu.com/s/1iLnUzYg9Q395l48Wz9lhVw 提取碼: c6a5 

破解方法:安裝charles後先不啟動,然後把 charles.jar替換C:\Program Files\Charles\lib\下的charles.jar

二、配置windos 端 charles

1)設定-》 proxy Settings裡面配置 http 代理; 埠配置為:8888

2)給手機端安裝根證書:

help->ssl proxying-> install Charles Root Certification on a Mobile device or remote Browser

點選確認後,會出現下面的對話方塊,點選確認就好了。

三、手機端ios設定:

1)配置wifi走代理;注意:手機和電腦連線同一wifi;

方法:設定 裡面找到我們的wifi, 點選進去,配置代理-》手動,填寫伺服器和埠;

伺服器就是電腦wlan的ip(通過ifconfig檢視),埠:8888

注:設定好後,電腦端就可以看到 Charles 彈出 iPhone 請求連線的確認選單(如下圖所示),點選“Allow”即可完成設定。

2)ios下載chales頒發的根證書

開啟瀏覽器,並且輸入:chls.pro/ssl ,這時候一路確認安裝就好了;

安裝好後,把證書啟用:設定-》通用-》關於本機-》證書信任設定

最後:不出意外的話,這時候就可以正常抓取https網路包了,如果大家有不懂的或者是想多交一個朋友,可以給我留言或者微信我:stefan1240 ,請註明CSDN;