之前安裝了Fiddler 抓包雷電模擬器中的數據,很容易抓包到,最近測試抓包,但是一直抓包不到數據,網友反映是因為雷電升級了的原因,4.0以上都抓包不到了
今天安裝了逍遙模擬器,設置好后,馬上就抓包到了,但是SSL的https,抓包不到實質數據,全部提示:Tunnel to
網上搜索了一堆,找到了解決方案:
原因:之前在模擬器中安裝證書的時候,是直接訪問PC端的地址+端口,下載並安裝證書的,這樣證書安裝后會在用戶證書這里
但是現在的SSL,需要把證書推到系統證書里面才行
安卓上證書的目錄是放在 /System/etc/security/cacerts 中,但是不能直接把證書從PC端復制到安卓中
所以需要做幾件事情
1.從Fiddler中導出證書,導出來的證書一般是.cer 格式的,我們要把它轉換成 .pem 格式。
轉換格式的時候,需要用於命令:
使用openssl的時候,命令出錯的話,需要先下載一個openssl 並安裝
https://slproweb.com/products/Win32OpenSSL.html
#1. 證書轉換,已經是pem格式的證書不需要執行這一步 openssl x509 -inform DER -in xxx.cer -out cacert.pem #2. 進行MD5的hash顯示 #openssl版本在1.0以上的版本的執行這一句 openssl x509 -inform PEM -subject_hash_old -in cacert.pem #openssl版本在1.0以下的版本的執行這一句 openssl x509 -inform PEM -subject_hash -in cacert.pem 將第二條指令輸出的類似347bacb5的值進行復制 tips: 查看openssl版本的指令openssl version
命令執行后生成 269953fb, 然后把這個pem文件手工修改成 269953fb.0
將pem證書重命名,使用上面復制的值(類似於269953fb)對pem證書進行重命名,
用 mv cacert.pem 269953fb.0 會出錯,我就手工修改了。可能是mv這個命令我這邊環境不對
2. 再用adb命令把這個改名后的證書文件推送到系統證書里面去。不能手工從PC復制進去,也找不到這個目錄
adb root adb remount adb disable-verity adb push 269953fb.0 /system/etc/security/cacerts adb enable-verity adb reboot
執行到這里,重啟一下模擬器,就可以抓到包了
參考:
https://blog.csdn.net/weixin_53485288/article/details/118786741
https://helloworddm.blog.csdn.net/article/details/98363056