對簡訊的一點接觸

GSM(Global System for Mobile Communications)是數字移動通訊標準,它的頻段通常在900MHz左右,部分情況是在1800-1900MHz,所以協議上通常以GSM-900或者GSM-1900來區分。SMS(Short Message Service)是GSM這項技術的其中一部分,對於我們這些di duan ren kou而言特指簡訊。它通常是由140個字元或160個字元組成,每個字元佔7bit,並通過GSTN(General Switch Telephone Network)發送和接收。

對移動通信不甚了解,但還是在一個Wireshark包中遇到了一個叫ISI的協議,它的全稱是Intelligent Service Interface,是一種簡訊通訊的協議,基於RFC5724的標準。

現在智能手機遍地都是的情況下,RFC5724特別規範了SMS協議在移動端或網頁端進行簡訊發送,就像mailto用來發送郵件一般。ISI就是這種方式下客戶端與Modern之間進行通訊的協議。

SMS通常有兩種方式發送和接收消息,一種文本方式,一種是PDU(protocol discription unit)方式(參考smartposition.nl/resour)。這次遇到的就是PDU格式的SMS,見下圖:

知道格式和編碼方式後,就可以用SMS-PDU方式進行解碼了,而且有在線工具diafaan.com/sms-tutoria,或者用萬能的Python:

def gsm7bitdecode(f):

f = .join(["{0:08b}".format(int(f[i:i+2], 16)) for i in range(0, len(f), 2)][::-1])

return .join([chr(int(f[::-1][i:i+7][::-1], 2)) for i in range(0, len(f), 7)])

推薦閱讀:

Wireshark使用技巧及數據包分析方法
《Wireshark的簡單使用》
wireshark找不到介面?
簡明 Wireshark 和 TCP 入門指南
wireshark怎麼捕捉lacp報文?

TAG:簡訊 | Wireshark | GSM |