android開發透過wireshark實現flutter應用抓包

yongfengnice發表於2024-08-21

android開發透過wireshark實現flutter應用抓包

1. 為什麼要使用wireshark抓包

  • 1.有了上一篇Charles的抓包文章,為什麼還寫這篇抓包文章呢?單獨論http請求抓包的話Charles比wireshark好用

  • 2.這是因為flutter應用使用的不是系統的證書,而是使用flutter框架自己的證書,這就導致了Charles即使配置了系統證書抓包不了,所以只能使用wireshark透過網路代理實現抓包

  • 3.wireshark抓包工具下載地址:https://www.wireshark.org/download.html

2. flutter應用實現抓包的方法

1. 方法一 (有原始碼)

  • 1.如果是自己的應用,也就是有原始碼,這個方法一就是就好處理的

  • 2.一般flutter應用的網路請求都是透過dio框架實現的,那就給dio設定代理ip和埠就搞定

  • 3.給dio網路請求新增代理如下:

      import 'package:dio/dio.dart';​
      var dio = Dio();
      (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
        client.findProxy = (uri) { return 'PROXY 192.168.137.1:8888';};  //設定為Charles代理ip,檢視方法:Help -> Local IP Address
        client.badCertificateCallback = (X509Certificate cert, String host, int port) => true; //忽略證書
      }; 
    
  • 4.這樣就能實現抓包了,連之前說的在手機安裝Charles證書都不用,因為flutter應用不走系統代理使用的都不是系統的證書,而且自己的框架內部的。

2. 方法二 (沒原始碼)

  • 1.沒有原始碼,那怎麼辦?那就只能hook了,使用frida框架hook住flutter框架的關鍵點,讓它支援代理抓包

  • 2.實現起來有點麻煩,網上自己找方法試一下吧,這裡隨便貼一遍作為參考:https://blog.csdn.net/weixin_51111267/article/details/131733067

3. 方法三 (沒原始碼)

  • 1.連Charles工具抓包都無能為力了,還有其他方法嗎?有的,就是本文要講解的使用wireshark透過網路代理實現抓包

  • 2.首先window電腦開啟熱點,然後讓手機連線電腦開啟的熱點,這樣手機訪問的網路必然經過這個熱點,然後使用wireshark工具抓包這個熱點網路的通訊資料就可以了

  • 3.window開啟熱點方法如下

  • 4.安裝wireshark工具,然後開啟它。安裝的時候會提示安裝其他外掛比如tcpdump,最好儘量都安裝上,安裝多了不影響。開啟wireshark工具後選擇window開啟的熱點,進行追蹤抓包

  • 5.透過http過濾器過濾出http請求,也可以透過http && ip.src==192.168.137.12 、 ip.addr==xx等等過濾規則過濾出自己想要的抓包資料

  • http流追蹤分析,能具體檢視http請求資料和響應資料,使用紅色區分,預設紅色部分是請求資料,藍色部分是響應資料

  • 統計http請求資料

  • 其他高階用法自己搜尋學習,不過抓包一般就這些使用,wireshark比charles強大,就是抓包使用起來沒有charles方便,主要還是看個人習慣吧

相關文章