華爲HiCar投屏音頻卡頓問題分析—抓取wifi tcpdump及 sniffer log 步驟

注意: 由於需要在同一臺電腦同時連接adb 抓取log,附件中所有腳本的 adb device serial number 需要更新爲對應的號。

示例如下:

ciellee@sh:~/Videos$ adb devices
List of devices attached
9c2d9ab5device             ---------------> 車機
5T7HGD199A038896device             ---------------> 手機

所有車機腳本adb 改爲 :   adb -s 9c2d9ab5 shell
所有手機腳本adb 改爲 :   adb -s 5T7HGD199A038896 shell

附件內容如下:
在這裏插入圖片描述

操作步驟如下:

一、 對數據解密,push 解密的so 庫文件到車機中

操作示例如下:

ciellee@sh:~/Videos$ adb root
adbd is already running as root
ciellee@sh:~/Videos$ adb remount
remount succeeded

ciellee@sh:~/Videos$ adb shell
msm8937_32go:/ # find ./system/ -name libmsdpmediasdk.so                       
./system/lib/libmsdpmediasdk.so
./system/lib64/libmsdpmediasdk.so
msm8937_32go:/ # exit

ciellee@sh:~/Videos$ adb push arm64-v8a/libmsdpmediasdk.so  /system/lib64/
3103 KB/s (1768624 bytes in 0.556s)
ciellee@sh:~/Videos$ adb push armeabi-v7a/libmsdpmediasdk.so /system/lib/
2950 KB/s (1444272 bytes in 0.478s)

二、車機手機分別打開adb功能,運行腳本清除手機 和 車機內部現有的log,會自動重啓

運行 《1.清除華爲手機log並重啓.bat》 和 《2.清除車機log並重啓.bat》


三、車機手機分別打開adb功能,開始push tcpdump 可執行文件,並開始抓取tcpdump log

運行《3.push_手機tcpdump並開始抓 取tcpdump.bat》 和 《4.push_車機tcpdump並開始抓 取tcpdump.bat》

注意,運行這兩個腳本後會開始同步抓取tcpdump log,這兩個窗口保留,別關閉。

如下:

ciellee@sh:~/Videos$ adb -s 5T7HGD199A038896 shell "/data/tcpdump -i any -p -vv -s 0 -w /sdcard/phone_capture.pcap"
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
Got 177     ----------> 看到這個數字在增長,說明正在抓取tcpdump

四、開始配置 sniffer 工具,抓取sniffer log

由於 hicar 投屏是動態選擇信道的,所以 建議在一個較爲乾淨的環境下(投屏及wifi 比較少的地方)。

在 sniffer 工具中,固定 149 信道,配置只過濾 車機 和 手機的 mac 地址。

開始抓取 sniffer log。
在這裏插入圖片描述

五、 此時開始投屏

在投屏時,可以看到有大量數據出來。

此時檢查一下:


5.1 確認信道是否是 149

如果沒有大量數據出來,說明可以投屏此時可以信道不是 149,
也可以通過 adb 來確認 wifi 信道 是否正確,文件 /data/misc/wifi/hostapd.conf , 參考本文第七章。


5.2 確認四次握手協議已經抓全(因爲可以會少抓 ,如果少抓了,無法解密log)

往前翻sniffer log, 看下有沒有看到 四個 EAPOL-key 的數據,這個是四次握手,如下圖:
在這裏插入圖片描述
如果前兩個中有一個確認不成功,就說明這次抓的不好,此時只要重新從 第四步配置 sniffer log 做就行了。
即,重新開啓 sniffer log,配置好後,重新投屏,然後再檢查上面的信道 及 握手協議 這兩項。


六、開始復現問題

在前面 tcpdump 和 wifi sniffer log 確認抓的沒問題後,此時可以開始復現問題了。
復現問題時,建議記錄下,出現問題對應的時間點,方便快速定位分析。


七、導出車機 wifi cfg 文件,查看wifi 密碼

ciellee@sh:~/Videos$ mkdir wifi_cfg
ciellee@sh:~/Videos$ adb pull /data/misc/wifi/ ./wifi_cfg/
pull: building file list...
skipping special file 'wlan0'
skipping special file 'p2p0'
skipping special file 'wlan0'
pull: /data/misc/wifi/hostapd.deny -> ./wifi_cfg/hostapd.deny
pull: /data/misc/wifi/hostapd.accept -> ./wifi_cfg/hostapd.accept
pull: /data/misc/wifi/hostapd.conf -> ./wifi_cfg/hostapd.conf
pull: /data/misc/wifi/hostapd.pid -> ./wifi_cfg/hostapd.pid
pull: /data/misc/wifi/entropy.bin -> ./wifi_cfg/entropy.bin
pull: /data/misc/wifi/p2p_supplicant.conf -> ./wifi_cfg/p2p_supplicant.conf
pull: /data/misc/wifi/wpa_supplicant.conf -> ./wifi_cfg/wpa_supplicant.conf
pull: /data/misc/wifi/WifiConfigStore.xml -> ./wifi_cfg/WifiConfigStore.xml
pull: /data/misc/wifi/softap.conf -> ./wifi_cfg/softap.conf
pull: /data/misc/wifi/WCNSS_qcom_cfg.ini -> ./wifi_cfg/WCNSS_qcom_cfg.ini
10 files pulled. 0 files skipped.
60 KB/s (52043 bytes in 0.834s)
ciellee@sh:~/Videos$ 

對應的wifi SSID 和 密碼在 hostapd.conf 文件中,如下:

# /data/misc/wifi/hostapd.conf 

# SSID to be used in IEEE 802.11 management frames
ssid=HiCar-1120
wpa_passphrase=53881216

在該文件中同樣也可以確認wifi 信道是多少,如下說明是 153 信道 ,

在hicar 投屏比較多的地方信道較不確定,在hicar 投屏少的地方,一般是 149 開始:

# /data/misc/wifi/hostapd.conf 

# Channel number (IEEE 802.11)
# (default: 0, i.e., not set)
# Please note that some drivers (e.g., madwifi) do not use this value from
# hostapd and the channel will need to be configuration separately with
# iwconfig.
channel=153

八、重現完畢後,開始導出log

8.1 停上 sniffer log 抓取,保存 sniffer log 文件。


8.2 停止 tcpdump log 抓取

調出之前抓取 tcpdump 的兩個窗口,ctrl + c ,n , 停止腳本,然後腳本會自動導出 tcpdump log 到本地來。

車機tcpdump log 名爲:car_capture.pcap
手機tcpdump log 名爲:phone_capture.pcap

ciellee@sh:~/Videos$ adb -s 260b9696  push car_tcpdump  /system/bin/tcpdump
car_tcpdump: 1 file pushed. 12.0 MB/s (709464 bytes in 0.056s)

ciellee@sh:~/Videos$ db -s 260b9696  shell chmod 777 /system/bin/tcpdump

ciellee@sh:~/Videos$ echo ===========Start Capture car tcpdump ,ctrl+c to stop capture ===========
===========Start Capture car tcpdump ,ctrl+c to stop capture ===========

ciellee@sh:~/Videos$ adb -s 260b9696 shell "tcpdump -i any -p -vv -s 0 -w /sdcard/car_capture.pcap"
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C終止批處理操作嗎(Y/N)? n

ciellee@sh:~/Videos$ echo ===========開始導出 tcpdump log 完畢===========
===========開始導出 tcpdump log 完畢===========

ciellee@sh:~/Videos$ adb -s 260b9696 pull /sdcard/car_capture.pcap  .
/sdcard/car_capture.pcap: 1 file pulled. 3.6 MB/s (56232 bytes in 0.015s)

ciellee@sh:~/Videos$ echo ===========導出 tcpdump log 完畢===========
===========導出 tcpdump log 完畢===========

ciellee@sh:~/Videos$ pause
請按任意鍵繼續. . .

8.3 導出手機 和 車機的 android_log

運行《5.抓取手機log.bat》 和 《6.抓取車機log.bat》自動導出log


九、相關腳本內容

3.push_手機tcpdump並開始抓取tcpdump.bat》

adb -s 5T7HGD199A038896 wait-for-device
adb -s 5T7HGD199A038896 root

adb -s 5T7HGD199A038896 wait-for-device
adb -s 5T7HGD199A038896 remount

adb -s 5T7HGD199A038896 push phone_tcpdump  /data/tcpdump
adb -s 5T7HGD199A038896 shell chmod 777 /data/tcpdump

echo ===========Start Capture phone tcpdump ,ctrl+c to stop capture ===========
adb -s 5T7HGD199A038896 shell "/data/tcpdump -i any -p -vv -s 0 -w /sdcard/phone_capture.pcap"
echo ===========tcpdump capture done===========

adb -s 5T7HGD199A038896 pull /sdcard/phone_capture.pcap  .
echo ===========tcpdup file pull done===========

pause

4.push_車機tcpdump並開始抓取tcpdump.bat》

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  root

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  remount

adb -s 66f80af6  push car_tcpdump  /system/bin/tcpdump
adb -s 66f80af6  shell chmod 777 /system/bin/tcpdump

echo ===========Start Capture car tcpdump ,ctrl+c to stop capture ===========
adb -s 66f80af6 shell "tcpdump -i any -p -vv -s 0 -w /sdcard/car_capture.pcap"
echo ===========¿ªÊŒµŒ³ö tcpdump log Íê±Ï===========

adb -s 66f80af6 pull /sdcard/car_capture.pcap  .
echo ===========µŒ³ö tcpdump log Íê±Ï===========

pause

5.抓取手機log.bat》

@echo on

adb -s 8UJ0119828000422  wait-for-device
adb -s 8UJ0119828000422  root

adb -s 8UJ0119828000422  wait-for-device
adb -s 8UJ0119828000422  remount

set ver_str=3.5
echo =====================GetLog version %ver_str% ================================
:: echo Current: %time% ŒŽ %time:~0,2%µã%time:~3,2%·Ö%time:~6,2%Ãë%time:~9,2%ÀåÃë@
echo ####Current: %date% %time%

set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%"
set Folder="LogHub\GetApp_%ver_str%_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%_phone"
echo ####start to get log to (%CD%\%Folder%)...
mkdir %Folder%

adb -s 8UJ0119828000422  pull /data/log/bt %Folder%/bt
adb -s 8UJ0119828000422  pull /data/log/android_logs %Folder%/android_logs
adb -s 8UJ0119828000422  pull /sdcard/phone_capture.pcap  %Folder%/phone_capture.pcap

echo ===========tcpdup file pull done===========
:: adb -s 8UJ0119828000422  shell rm -rf /data/log/bt
:: adb -s 8UJ0119828000422  shell rm -rf /data/log/android_logs

pause
@echo on

6.抓取車機log.bat》
@echo on

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  root

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  remount

set ver_str=3.5
echo =====================GetLog version %ver_str% ================================
:: echo Current: %time% ŒŽ %time:~0,2%µã%time:~3,2%·Ö%time:~6,2%Ãë%time:~9,2%ÀåÃë@
echo ####Current: %date% %time%

set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%"
set Folder="LogHub\GetApp_%ver_str%_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%_car"
echo ####start to get log to (%CD%\%Folder%)...
mkdir %Folder%

adb -s 66f80af6  pull /private/log %Folder%/android_logs/
adb -s 66f80af6  pull /data/brlink %Folder%/brlink/

adb -s 66f80af6  pull /sdcard/car_capture.pcap  %Folder%/car_capture.pcap

mkdir -p %Folder%/wifi_cfg/
adb -s 66f80af6  pull /data/misc/wifi/ %Folder%/wifi_cfg/

adb -s 66f80af6  pull /data/misc/bluedroid/ %Folder%/conf/
adb -s 66f80af6  pull  /data/misc/bluetooth/logs/ %Folder%/btlogs/

pause
@echo on
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章