安卓7.0以上手機寫入安全證書


谷歌在安卓7.0修改了安全策略,用戶添加的CA證書不能再用於安全連接,對於https傳輸的數據就抓取不到了,會顯示 <unknown>
我的解決方法是將charles的CA證書安裝進系統信任的證書目錄下,這樣在開啟charles代理的時候,系統就會認為CA證書安全,從而可以獲取https數據。
 
准備工作:
一台已root過的手機,我用的是小米5,開啟開發者選項連接電腦。
下載charles證書,電腦端瀏覽器輸入chls.pro/ssl即可下載,如果未下載也可以在charles>>help>>SSL Proxying>>Save Charles Root Certificate保存證書到本地文件夾
 
具體步驟:
1.重命名證書
安卓系統的安全證書在   /system/etc/security/cacerts/目錄下,進入adb shell,打開目錄就能看到這些證書文件,文件名是Hash值加數字后綴。后綴名的數字是為了防止文件名沖突的,比如如果兩個證書算出的Hash值是一樣的話,那么一個證書的后綴名數字可以設置成0,而另一個證書的后綴名數字可以設置成1
 
用 “openssl x509 -subject_hash_old -in 證書名加后綴”計算出hash值,並將后綴設為0
修改后的文件為<hash>.0
 
2.將證書傳到系統證書目錄下
首先將文件<hash>.0 push到/sdcard/Download目錄下(cmd 要進入文件目錄下操作)
adb push <hash>.0 /sdcard/Download
 
然后復制到/system/etc/security/cacerts/目錄下
adb shell
su
cp /sdcard/Download/<hash>.0 /system/etc/security/cacerts/
然后修改權限
chmod 644 /system/etc/security/cacerts/<hash>.0
 
如果出現 //<hash>.0:Read-only file system這個警告,這是因為system文件為只讀,需要將其掛載為可讀寫。
一般的解決方法是
mount -o rw,remount /system
修改system讀寫權限,然后再進行復制操作
 
如果修改了之后還是提示Read-only file system,還有方法
adb root
adb disable-verity
adb reboot #手機會重啟,不用關閉cmd窗口,手機可能需要拔掉數據寫重新連接
adb root
adb shell 
mount -o rw,remount /system    #再次進行修改
 
然后就可以進行復制操作了。(我是遇到了這種情況,這個方法可行)
復制完之后輸入reboot重啟
 
3.測試
重啟之后,小米手機打開設置-更多設置-系統安全-信任的憑據中可以看到安裝的證書

 

 

 

 

然后通過設置charles代理就可以查看到https的數據了。
 
總結:
在抓取手機app數據的時候遇到了很多問題,查看了很多的博客資料,在此向他們提出感謝
 
我抓取的是所在公司開發的app數據,爬蟲僅僅作為測試而已。手機常用app的數據一般都是經過了加密,一些涉及個人隱私的數據爬取是違法的,所見即所得,否則即違法。
希望我的這篇文章能幫到大家,有任何意見還請不吝賜教。
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM