UICC Send USSD 加密信息解析

已以下指令为例

已知发送 USSD 的格式为:
Send USSD aaaxxxxxxxxxxxx*yyyyyyy#

;Fetch:==:SEND USSD
SEND 801200001F
ASSERT D01D81030112008202818305008A100F2A5C0DA782C564335ACDA6CAE57223 9000

;命令类型: Send USSD
;设备标识: SIM==>Network
;α标识符=()
;DCS=(0F)
;USSD String=(2A5C0DA782C564335ACDA6CAE57223)
;           =(2A3835382A303132333435362A39393923)

首先对ASSERT指令进行拆解:

ASSERT D01D81030112008202818305008A100F2A5C0DA782C564335ACDA6CAE57223

Proactive command
命令类型  12 : SEND USSD
============================
命令细节
----------------------------
    命令细节标记    81
    长度="03"        03
    命令代码        01
    命令类型        12
    命令限定符        00  RFU
============================
设备标识
----------------------------
    设备标识标记    82
    长度="02"        02
    起始端设备标识    81:UICC;
    目的端设备标识    83:Network;
============================
α标识符
----------------------------
    α标识符标记    05
    长度            00
    α标识符        
============================
USSD字符串
----------------------------
    USSD字符串标记    8A
    长度            10
    TON和NPI        0F
    USSD字符串        2A5C0DA782C564335ACDA6CAE57223

然后对USSD 字符串使用7bit解码方式进行解析,即可得到发送的原始数据:

USSD字符串        2A5C0DA782C564335ACDA6CAE57223
解析后的字符串    *858*0123456*999#

注:
GSM默认采用7bit编码,实际上,7位编码是种压缩算法,因为,ASCII码(不包括扩展ASCII),其值小于0x80,最高位bit8是0,被忽略了;而7bit编码就利用了这一位来存储数据;其编码时,依次将下一7位编码的后几位逐次移至前面,形成新的8位编码。

 

posted @ 2023-02-07 21:19  禅主  阅读(51)  评论(0编辑  收藏  举报