1.簡(jiǎn)介
上一篇中,宏哥講解和分享了一些如何快速解決的臨時(shí)應(yīng)急的的方法,但是小伙伴或者童鞋們是不是覺(jué)得是一些頭痛醫(yī)頭腳痛醫(yī)腳的方法,治標(biāo)不治本,或者是一些對(duì)于測(cè)試人員實(shí)現(xiàn)起來(lái)比較有一定難度。所以今天宏哥再介紹和分享一下治本的方法。
2.追本溯源
要想從根本上解決問(wèn)題,我們找到根源從跟上解決問(wèn)題即可!究其根源,targetSdkVersion >= 24的應(yīng)用在android 7.0+系統(tǒng)的設(shè)備中之所以沒(méi)法被抓包,是因?yàn)閍ndroid 7.0之后的應(yīng)用是默認(rèn)只信任系統(tǒng)證書(shū),不信任用戶證書(shū),那么我們可以想辦法將Fiddler證書(shū)裝到系統(tǒng)證書(shū)目錄下,偽裝成系統(tǒng)證書(shū),那么就不存在因?yàn)閒iddler證書(shū)不被信任而無(wú)法抓包的問(wèn)題了。找到根源了,既然是用戶證書(shū)不被信任,那么我們制作一個(gè)系統(tǒng)證書(shū)安裝在手機(jī)上你就解決這一問(wèn)題了。接下來(lái)宏哥就按這個(gè)思路解決問(wèn)題。
1.宏哥之前演示可以抓安卓手機(jī)的https的包,是因?yàn)楹旮绲囊股衲M器的Android版本是5.1.1,所以可以抓到包。
2.宏哥點(diǎn)擊夜神模擬器右邊菜單里的夜神多開(kāi)器,如下圖所示:
3.添加一個(gè)Android版本大于7.0的模擬器,如下圖所示:
4.設(shè)置好代理,再次使用Fiddler抓包百度手機(jī)助手。提示網(wǎng)絡(luò)繁忙。具體表現(xiàn)為APP中的WebView無(wú)法打開(kāi)內(nèi)容,抓不到APP的包了,如下圖所示:
5.Fiddler抓包結(jié)果:Fiddler中可以看到大量的CONNECT然后就沒(méi)有下文了。如下圖所示:
3.導(dǎo)出Fiddler證書(shū)
1.下載安裝Fiddler抓包工具,下載完成之后先不要點(diǎn)擊打開(kāi)運(yùn)行(如果你是首次安裝,如果你已經(jīng)安裝好了,不要啟動(dòng)fiddler)。
2.下載fiddlercertmaker.exe這個(gè)Bouncy Castle證書(shū)生成器,因?yàn)樾掳姹镜腁ndroid拒絕超過(guò)兩年有效期的證書(shū),雙擊下載好的fiddlercertmaker.exe(確保已關(guān)閉Fiddler),會(huì)彈出提示導(dǎo)入證書(shū)成功這個(gè)對(duì)話框。(如果你的新版本可以安裝,這一步可以省略)。
3.將Fiddler的證書(shū)導(dǎo)出到電腦,點(diǎn)擊Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop。如下圖所示:
4.導(dǎo)出成功之后,就可以在桌面上看到導(dǎo)出的FiddlerRoot.cer證書(shū)文件 。如下圖所示:
4.下載和安裝openssl
1.下載Window版openssl, 下載地址:http://slproweb.com/products/Win32OpenSSL.html,下拉到下面,選擇最上面的64位EXE點(diǎn)擊下載安裝即可,如下圖所示:
2.安裝完成之后,在openssl的安裝目錄bin下,打開(kāi)cmd命令行試試openssl命令是否生效,要是有如下輸入信息,就說(shuō)明安裝成功:
5.證書(shū)格式轉(zhuǎn)換與重命名
1.將Fiddler cer證書(shū)轉(zhuǎn)pem證書(shū),在cmd輸入如下命令進(jìn)行轉(zhuǎn)換:
openssl x509 -inform DER -in C:\Users\DELL\Desktop\FiddlerRoot.cer -out C:\Users\DELL\Desktop\FiddlerRoot.pem
2.用md5方式顯示pem證書(shū)的hash值, 在cmd輸入如下命令:
openssl x509 -inform PEM -subject_hash_old -in C:\Users\DELL\Desktop\FiddlerRoot.pem
從上面可以看到,咱們生成Fiddler證書(shū)的hash值是269953fb?
3.將pem證書(shū)重命名,使用上面顯示的值269953fb對(duì)pem證書(shū)進(jìn)行重命名,以下命令僅適用于window,linux請(qǐng)用mv。如下圖所示:
ren C:\Users\DELL\Desktop\FiddlerRoot.pem 269953fb.0
注意:ren
命令第二個(gè)參數(shù),直接輸入新的文件名即可,不要輸入完整路徑,否則會(huì)報(bào)錯(cuò)。如下圖所示:
6.安裝證書(shū)到系統(tǒng)目錄(/system/etc/security/cacerts)
6.1適合有Android基礎(chǔ)的開(kāi)發(fā)者
1.找一臺(tái)root過(guò)的手機(jī)或者任意一款模擬器,因?yàn)橹挥衦oot過(guò)的手機(jī)才有可能執(zhí)行各種高權(quán)限的命令。我這邊下載了一款叫夜神android 7系統(tǒng)的模擬器。如下圖所示:
2.cmd輸入adb connect 127.0.0.1:62001,使adb跟夜神模擬器連接上(這部分不清楚的可以看宏哥有關(guān)Appium的文章,里邊有詳細(xì)的介紹如何連接)。
(1)安裝完夜神模擬器在cmd檢測(cè)時(shí),提示adb server version (36) doesn't match this client (41); killing...
說(shuō)明andriod adb版本和模擬器adb版本不匹配
查找原因:
(2)查看Android-adb 版本,cmd輸入adb --version,可以看到當(dāng)前版本是1.0.41 ,簡(jiǎn)稱41版本
(2)查看模擬器(夜神)中adb的版本,在安裝目錄\Nox\bin下有個(gè)nox_adb.exe ,其實(shí)就是adb.exe。(這里便于和Android的adb做區(qū)分)
(3)然后在上一步中的目錄地址欄輸入cmd進(jìn)入命令行,然后輸入nox_adb,看到模擬器中的adb版本是36
?
(4)找到原因后,將platform-tools文件夾中adb.exe 替換到模擬器根目錄下的nox_adb.exe即可,接下來(lái)把a(bǔ)ndroid-sdk里面的adb.exe版本復(fù)制出來(lái),然后改名為nox_adb.exe,然后替換\Nox\bin下的nox_adb.exe,就可以了,關(guān)閉模擬器,再次啟動(dòng)模擬器進(jìn)行檢測(cè),能看到127.0.0.1:62001 就是模擬器的設(shè)備名稱表示連接成功
3.cmd 輸入adb shell,進(jìn)入到夜神模擬器的終端shell中。直接輸入后,發(fā)現(xiàn)報(bào)錯(cuò):error:more than one device/emulator 。如下圖所示:
(1)查看是由于宏哥打開(kāi)了兩個(gè)模擬器,直接輸入命令,系統(tǒng)不知道進(jìn)入那個(gè)模擬器,你必須指定一個(gè)。如下圖所示:
(2)指定模擬器然后進(jìn)去shell,就可以成功進(jìn)入,如下圖所示:
4.cmd 輸入 cd /system/etc/security, 然后輸入ls -l, 可以看到cacerts目錄,我們只有讀與執(zhí)行權(quán)限,并沒(méi)有寫(xiě)入的權(quán)限。如下圖所示:
5.cmd輸入chmod 777 cacerts, 讓咱們對(duì)該目錄擁有寫(xiě)入權(quán)限,執(zhí)行之后,在輸入ls -l可以看到我們已經(jīng)獲取到寫(xiě)入權(quán)限了。如下圖所示:
敲黑板?。?!
有些小伙伴可能在其他模擬器輸入chmod 777 cacerts,會(huì)被提示Read-only file system。如下圖所示:
這種情況需要重新掛載一下系統(tǒng),設(shè)置為可讀寫(xiě),輸入mount -o remount,rw /system,然后再輸入chmod 777 cacerts,你會(huì)發(fā)現(xiàn)可以成功設(shè)置了。如下圖所示:
6.輸入exit退出shell終端,然后輸入adb push C:\Users\DELL\Desktop\269953fb.0 /system/etc/security/cacerts(同樣道理需要指定模擬器),將事先轉(zhuǎn)換好的Fiddler證書(shū)推送到夜神模擬器的/system/etc/security/cacerts目錄下。如下圖所示:
7.到這里就已經(jīng)成功的把Fiddler證書(shū)安裝到系統(tǒng)目錄了,咱們點(diǎn)擊模擬器的設(shè)置 -> 安全性與位置信息 -> 加密與憑據(jù) -> 信任的憑據(jù) -> 系統(tǒng),往下拉可以看到咱們的Fiddler證書(shū)。如下圖所示:
?現(xiàn)在再打開(kāi)Fiddler進(jìn)行抓包,你會(huì)發(fā)現(xiàn)可以成功抓包了(記得模擬器在wifi那里設(shè)置好代理),如下圖所示:
6.2適合沒(méi)有Android基礎(chǔ)的小白
1.找一臺(tái)root過(guò)的手機(jī)或者任意一款模擬器,因?yàn)橹挥衦oot過(guò)的手機(jī)才有可能執(zhí)行各種高權(quán)限的命令。我這邊下載了一款叫夜神android 7系統(tǒng)的模擬器
2.點(diǎn)擊夜神模擬器側(cè)邊欄的電腦圖標(biāo),選擇打開(kāi)電腦文件夾,會(huì)跳轉(zhuǎn)打開(kāi)電腦的目錄C:\Users\Administrator\Nox_share,將轉(zhuǎn)換好的Fiddler證書(shū)269953fb.0復(fù)制到ImageShare目錄下即可
3.下載MT管理器,下載地址:MT管理器(bin.mt.plus) - 2.14.5 - 應(yīng)用 - 酷安?。拖拉到模擬器中安裝完成,點(diǎn)擊打開(kāi)應(yīng)用,左邊打開(kāi)Pictures目錄就可以看到剛才電腦ImageShare目錄的Fiddler證書(shū)269953fb.0
4.右邊點(diǎn)擊進(jìn)入到system/etc/security/cacerts目錄,然后長(zhǎng)按左邊的269953fb.0文件,點(diǎn)擊復(fù)制即可復(fù)制到右邊打開(kāi)的目錄那里
5.一般人到這里以為就結(jié)束,但是你留意看一下剛才復(fù)制到system/etc/security/cacerts目錄下的269953fb.0文件,你會(huì)發(fā)現(xiàn)跟其他已有的系統(tǒng)證書(shū)相比,269953fb.0根本就沒(méi)有讀的權(quán)限,到時(shí)你到信任的憑據(jù)也是沒(méi)法找到這個(gè)Fiddler證書(shū)的,點(diǎn)擊MT管理器的左上角,找到打開(kāi)終端
6.進(jìn)入到終端之后,輸入以下命令將269953fb.0文件設(shè)置為可讀即可
7.再看看system/etc/security/cacerts目錄下269953fb.0文件的權(quán)限,發(fā)現(xiàn)確實(shí)有讀權(quán)限了
8.咱們回到模擬器桌面,點(diǎn)擊模擬器的設(shè)置 -> 安全性與位置信息 -> 加密與憑據(jù) -> 信任的憑據(jù) -> 系統(tǒng),往下拉終于看到咱們的Fiddler證書(shū),嘗試一下抓包也是沒(méi)問(wèn)題了
?現(xiàn)在再打開(kāi)Fiddler進(jìn)行抓包,你會(huì)發(fā)現(xiàn)可以成功抓包了(記得模擬器在wifi那里設(shè)置好代理),如下圖所示:
7.小結(jié)
1.雷電4模擬器經(jīng)過(guò)上述設(shè)置之后,你會(huì)發(fā)現(xiàn)依然是沒(méi)法成功抓包,這時(shí)需要允許以下命令給雷電4設(shè)置全局代理
adb shell settings put global http_proxy <代理ip>:<代理端口>
其中adb在模擬器安裝目錄可以找到。
2.在操作前一定要保證手機(jī)or模擬器已經(jīng)開(kāi)啟了root,若模擬器的話還要開(kāi)啟usb調(diào)試選項(xiàng),需要在設(shè)置 - 關(guān)于平板電腦或關(guān)于手機(jī) - 對(duì)著Android版本號(hào)的位置猛戳5下(開(kāi)啟開(kāi)發(fā)者選項(xiàng))- 返回進(jìn)入開(kāi)發(fā)者選項(xiàng)? - 打開(kāi)USB調(diào)試按鈕開(kāi)關(guān) ps:用力越猛效果越好。
3.記得要進(jìn)入openssl的安裝目錄bin,才能使用openssl命令,否則會(huì)提示命令不存在,如果需要在其他目錄下使用openssl命令,需要你配置環(huán)境變量即可,具體配置方法自己可以查一下,畢竟宏哥今天這里不是主要講解openssl的。
4.這里還有一點(diǎn)需要單獨(dú)說(shuō)明,/system/etc/security/cacerts/目錄的寫(xiě)權(quán)限,需要手機(jī)root權(quán)限。也就是說(shuō)復(fù)制證書(shū)到該目錄需要您root自己的設(shè)備。關(guān)于Android手機(jī)的root,通常手機(jī)廠家都會(huì)有自己官方的教程,建議大家按官方的操作進(jìn)行root。
8.拓展
可能到這里有小伙伴會(huì)有疑問(wèn),系統(tǒng)證書(shū)是放在system/etc/security/cacerts目錄下,那么假如是安裝的用戶證書(shū)是在保存在哪個(gè)目錄下,其實(shí)就保存在data/misc/keystore目錄。
?每天學(xué)習(xí)一點(diǎn),今后必成大神-
往期推薦(由于跳轉(zhuǎn)參數(shù)丟失了,所有建議選中要訪問(wèn)的右鍵,在新標(biāo)簽頁(yè)中打開(kāi)鏈接即可訪問(wèn)):
Appium自動(dòng)化系列,耗時(shí)80天打造的從搭建環(huán)境到實(shí)際應(yīng)用精品教程測(cè)試
Python接口自動(dòng)化測(cè)試教程,熬夜87天整理出這一份上萬(wàn)字的超全學(xué)習(xí)指南
Python+Selenium自動(dòng)化系列,通宵700天從無(wú)到有搭建一個(gè)自動(dòng)化測(cè)試框架
Java+Selenium自動(dòng)化系列,仿照Python趁熱打鐵嘔心瀝血317天搭建價(jià)值好幾K的自動(dòng)化測(cè)試框架
Jmeter工具從基礎(chǔ)->進(jìn)階->高級(jí),費(fèi)時(shí)2年多整理出這一份全網(wǎng)超詳細(xì)的入門到精通教程
Fiddler工具從基礎(chǔ)->進(jìn)階->高級(jí),費(fèi)時(shí)100多天吐血整理出這一份全網(wǎng)超詳細(xì)的入門到精通教程文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-827338.html
Pycharm工具基礎(chǔ)使用教程文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-827338.html
到了這里,關(guān)于《吐血整理》高級(jí)系列教程-吃透Fiddler抓包教程(27)-Fiddler如何抓取Android7.0以上的Https包-中篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!