對簡訊的一點接觸
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)方式(參考http://www.smartposition.nl/resources/sms_pdu.html)。這次遇到的就是PDU格式的SMS,見下圖:
知道格式和編碼方式後,就可以用SMS-PDU方式進行解碼了,而且有在線工具https://www.diafaan.com/sms-tutorials/gsm-modem-tutorial/online-sms-pdu-decoder/,或者用萬能的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報文?