UICC Send USSD 加密信息解析

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位编码。

你可能感兴趣的:(UICC,物联网)