SCAT:信令收集和分析工具

SCAT是一個由python編寫的信令收集和分析工具,它會通過USB解析Qualcomm和Samsung基帶的診斷信息,並生成包含蜂窩控制平面消息的GSMTAP數據包流。

安裝要求PC

目前僅在Linux上測試過,且多數為Ubuntu的各種衍生版本。Python版本不得低於python 3,另外還需要安裝以下外部模塊:

pyUSB

pySerial

要正確解碼SCAT生成的GSMTAP數據包,需要Wireshark 2.6.0或更高版本。對於老版本的Wireshark,我們提供了一個Wireshark Lua插件來幫助其擴展GSMTAP解碼功能。SCAT使用的GSMTAP定義基於libosmocore 0.11.0。

智能手機

蜂窩設備必須通過USB暴露診斷端口。這主要取決於所使用的設備,我們無法為所有設備提供一個通用的解決方案。使用關鍵字(你的設備名稱)qpst在網上搜索獲取,基於Qualcomm的智能手機暴露診斷端口的方法。

三星:在撥號器中輸入*#0808#,選擇包含DM的任意USB模式條目;

韓版:在撥號器中輸入3197123580,密碼為9964127764320821。

2018年以後的某些版本的固件,將會阻止使用上述代碼訪問隱藏菜單。目前並無解決方案。

LG:在撥號器中輸入277634#*#(TODO:USB測試菜單的確切位置)

在某些LG設備上,即使啟用USB測試模式診斷端口也不會在Linux中暴露。這是由於使用了多個USB設備配置導致的;建議在此類設備中更改當前USB配置的udev規則。

索尼:需要root。獲取一個有root權限的adb shell,並輸入命令setprop persist.usb.eng 1。

Nexus:需要root。獲取一個有root權限的adb shell,並輸入命令setprop sys.usb.config diag,adb。

不適用於Pixel設備!

Sailfish OS:( TODO:如何修改usb-moded設置)

雖然我們建議大家直接使用USB來訪問診斷端口,但如果你的智能手機的診斷端口可以通過串行端口訪問,那也是個不錯的選擇。所有基於Qualcomm的智能手機的qcserial內核模塊並沒有包含有關診斷端口的信息,而基於三星的智能手機也沒有這樣的模塊。

通過USB訪問基帶診斷:

$ scat.py -t qc -u -a 001:010 -i 2

-t qc 定義我們正在解析Qualcomm基帶。對於Samsung基帶需要將qc替換為sec,且需要我們手動提供型號,如下所示:

$ scat.py -t sec -m e333 -u -a 001:006 -i 2

可用型號類型如下:

-m cmc221s:CMC221S,用於早期的三星LTE調制解調器/智能手機;

-m e303:調制解調器芯片Exynos Modem 303;

-m e333:調制解調器芯片Exynos Modem 333

較新的Exynos調制解調器可與-m e333選項一起使用,YMMV。

雖然有啟發式算法可以確定連接的設備,但還是建議大家能明確指定診斷節點的USB設備地址和接口編號。-a 001:010 指定地址,該地址遵循lsusb命令中可見的相同語法。-i 2 指定診斷節點的接口編號,該編號也是特定於設備的。

通過串口訪問基帶診斷:

$ scat.py -t qc -s /dev/ttyUSB0

將/dev/ttyUSB0替換為你的診斷設備。

默認情況下,scat將包發送到127.0.0.1,控制平面包作為gsmtap發送到udp端口4729,用戶平面包作為ip發送到udp端口47290。

使用Ctrl+C退出應用程序。

高級選項

可以使用-H 127.0.0.2開關更改發送GSMTAP數據包的目的地。例如,以下命令將所有數據包發送到127.0.0.2:

$ scat.py -t sec -m e333 -u -a 001:006 -i 2 -H 127.0.0.2

使用以下命令,以便能夠使用Wireshark輕鬆對其進行排序:

ifconfig ethUSB 127.0.0.2 netmask 255.255.255.0 upsudo route add -net 127.0.0.0 netmask 255.255.255.0 gw 127.0.0.1

可以使用其他命令的輸出自動確定USB總線地址。以下示例適用於三星Galaxy S5 Mini:

設備名稱/型號處理器基帶必要參數是/否需要root

Nokia 8110 4G (TA-1048)Snapdragon 205 MSM8905X5-t qcYes

Google Nexus 5 (LG-D821)Snapdragon 800 MSM8974MDM9x25-t qcYes

Google Nexus 5X (LG-H791)Snapdragon 808 MSM8992X10-t qcYes

Google Pixel 2 (G011A)Snapdragon 835 MSM8998X16-t qcYes還需修改系統分區LG G Flex 2 (LG-H955)Snapdragon 810 MSM8994X10-t qcNo

Sierra Wireless EM7455-X7 (MDM9635)-t qc-

Sony Xperia X (F5122)Snapdragon 650 MSM8956X8-t qcYes

Samsung Galaxy S III LTE (SHW-M210K)Exynos 4412CMC221S-t sec -m cmc221sNo

Samsung Galaxy S4 LTE (GT-I9505)Snapdragon APQ8064TQualcomm MDM9215-t qcNo

Samsung Galaxy S5 Mini (SM-G800F)Exynos 3470Exynos Modem 303-t sec -m e303No

Samsung Galaxy S6 (SM-G920F)Exynos 7420Exynos Modem 333-t sec -m e333No/Yes

Samsung Galaxy S6 Edge+ (SM-G928F)Exynos 7420Exynos Modem 333-t sec -m e333No/Yes

Samsung Galaxy S8 (SM-G950F)Exynos 8895Exynos Modem 355-t sec -m e333No/Yes

注:以上列表並未列出所有基於Qualcomm的設備。

已知錯誤

在某些Qualcomm設備上,退出並多次啟動應用程序後初始化最終會掛起,並且不會顯示任何消息。根本原因仍在調查中。解決方案:重啟智能手機;

在某些三星設備上,缺少EARFCN等元數據信息或沒有出現控制平面消息。如果遇到此類情況,請告知你的環境以獲取解決方案。

參考文獻

Byeongdo Hong,Shinjo Park,Hongil Kim,Dongkwan Kim,Hyunwook Hong,Hyunwoo Choi,Jean-Pierre Seifert,Sung-Ju Lee,Yongdae Kim。

窺視蜂窩圍牆花園 - 一種封閉式網絡診斷方法 - IEEE Transactions on Mobile Computing(2018.2)


分享到:


相關文章: