STK

STK
(SIM Application Toolkit),中文名为SIM卡应用工具包。它包含一系列手机与SIM卡的交互指令,SIM卡可以运行卡内的小应用程序与手机以及用户进行交互,从而实现增值服务的目的。
别名:
CAT:Card Application Toolkit,另一个常用名,Android的STK应用就被命名为CatAppUSAT:USIM Application Toolkit ,3G SIM卡的STK功能。但是一般不会特别指出是3G的STK,所以这个命令不常用。
协议
2G协议:3GPP TS 11.143G协议:
3GPP TS 31.1112G测试协议:
3GPP TS 51.010-43G测试协议:3GPP TS 31.124,里面有大量引用ETSI TS 102.384的case对于测试协议,不论51.010-4,31.124还是102.384,测试项都是27.22.。
功能

Profile Download,配置下载开机初始化SIM卡的过程中,手机告诉SIM卡手机支持哪些STK命令。在STK中,Download指的是手机将数据发送给SIM卡。
Proactive SIM,主动式命令通过主动式命令,SIM卡可以指示手机执行一系列的行为,如:

  • 显示菜单
  • 显示文本
  • 发短信
  • 拨出电话
  • 发SS(辅助业务)或者USSD给网络
  • 发点声音
  • 重新初始化SIM卡或者更新手机缓存的SIM卡内容
  • 获取一些手机信息
  • 连接数据网络,上传/下载数据。

主动式命令可以认为是STK最重要的功能之一很多其他的功能都需要有主动式命令来构成。
Data download to SIM,数据下载使用Envelope命令,下载点对点短消息或者小区广播给SIM卡。
Menu selection,菜单选择菜单选择功能。一般是刚开机的时候,SIM卡发送菜单给手机,手机缓存下来,生成STK应用(如Android的CatApp)的主菜单。当用户点击进入应用的时候,该菜单会显示给客户,由用户进行选择,从而进入二级菜单或者触发其他功能。
Call control,呼叫控制如果手机/SIM卡支持呼叫控制功能,则手机拨出电话的时候(以及发送SS/USSD),必须先将通话请求发送给SIM卡,SIM卡可以决定是否允许通话/拒绝通话/修改参数之后通话。
MO Short Message control by SIM,短消息控制类似于呼叫控制,SIM卡也可以对发出的短消息进行控制。
Event download,事件下载SIM卡可以向手机发送主动式命令(SET UP EVENT LIST),要求监听一些列事件。当这些事件发生时,手机需要使用ENVELOPE命令通知SIM卡详细的事件信息。这些事件包括:

  • 来电
  • 电话接通/挂断
  • 位置更新
  • 用户操作
  • 手机进入待机界面
  • 手机语言变化
  • 数据网络状态变化
  • 有数据到达

BIP(Bearer Independent Protocol),承载无关业务 一般使用BIP来表示承载无关业务,其实就是数据网络相关功能,包括5个主动式命令和2个事件。主动式命令包括:

  • OPEN CHANNEL:打开数据通道
  • CLOSE CHANNEL:关闭数据通道
  • SEND DATA:发送数据
  • RECEIVE DATA:接收数据
  • GET CHANNEL STATUS:获取数据通道状态事件为:
  • Data Available:有数据到达
  • Channel Status Change:数据通道状态变化

命令流程
因为手机与SIM卡之间的交互,总是手机主动给SIM卡发出命令,这意味着SIM卡是无法主动向手机发出命令的。如下图所示:

这里写图片描述
为此,定义了一个名为Fetch的命令。当手机给SIM卡发送普通命令(如Status等)的时候,SIM卡的返回值可以是:我有一条主动式命令要发出(值为91XX)。当手机收到这个返回值时候,就立即发送Fetch命令给SIM卡,从而在SIM卡的返回值中获取到这条主动式命令。在手机执行完命令之后,需要发送返回值给SIM卡。如果没有后续命令,SIM卡返回结束消息(值为9000)如下图所示:
这里写图片描述
从上图还可以看出,手机对命令的执行结果,通过Terminal Response发送给SIM卡。
Terminal Response可以是:

  • 成功
  • 失败,有临时性问题。如手机正在打电话,有些命令暂时不能执行。
  • 失败,有永久性问题。如命令无法解析,命令超出手机执行能力,或者和网络相关的命令被网络拒绝等。

命令 根据前面的描述,可以总结出来,STK功能通过如下4个命令实现

  • TERMINAL PROFILE:告知SIM卡手机对STK的支持能力。初始化SIM卡的过程中发给SIM卡。
  • FETCH:手机从SIM卡获取命令
  • TERMINAL RESPONSE:手机返回SIM卡执行主动式命令的结果
  • ENVELOPE:手机发送数据或者事件给SIM卡。

流程举例
下图是一个最常见的STK流程

  • 开机SIM卡初始化阶段,手机发送Terminal Profile给SIM卡,告知手机的支持能力。然后SIM卡将Menu菜单发送给手机,手机保存该菜单并生成CatApp。
  • 开机之后,用户点击CatApp,选择菜单中的某一项,开始用SIM卡的STK交互。
  • SIM卡根据用户选择的主菜单的菜单项,返回select item命令,内容是一个item 列表,用于生成子菜单
  • 在子菜单中,用户选择某一项,触发不同的行为。可能是显示一段文本,或者是发送SS给网络,或者输入一段文本,等等。
    STK流程

命令解析
STK命令为TLV结构,即Tag(标签),Length(长度),Value(值)。如下图所示

TLV结构
命令的Tag在协议11.14的第13.1和13.2章节中定义,常用的有:

  • D0:Proactive SIM command tag
  • D3:Menu Selection tag
  • D6:Event download tag命令TLV结构的Value部分,由多个内容TLV组成。内容的Tag在协议11.14的第13.2章节中定义,太多,不在这里一一列举。每一种内容的value结构定义都不同,在协议的第12章定义,每一种内容有一个小节详细说明。

举例
下面是一个显示文本命令的实例。在手机开机时,会弹出欢迎界面,这个欢迎界面就是STK的主动式命令“Display Text”发起的。
命令:

D0308103012101820281028D25085C0A656C768475286237FF0C6B228FCE60A84F7F75284E2D56FD8054901A4E1A52A1FF01

解析:

D0:  TAG,表示主动式命令
30:  LENGTH,0x30=48,表示命令的VALUE部分长度为48 byte。
以下是命令内容
81:  Command details tag
03:  Command details length
01:  cmd.number
21:  cmd.type -> DISPLAY TEXT
01:  cmd.qual -> 
  high priority;
  clear message after a delay;

82:  Device identity tag
02:  Device identity length
81:  Devices.source -> SIM
02:  Devices.dest -> Display

8D:  Text string tag
25:  Text string length
08:  Data coding scheme,表示字串使用UCS2编码
5C0A:  UCS2[0]: 尊
656C:  UCS2[1]: 敬
7684:  UCS2[2]: 的
7528:  UCS2[3]: 用
6237:  UCS2[4]: 户
FF0C:  UCS2[5]: ,
6B22:  UCS2[6]: 欢
8FCE:  UCS2[7]: 迎
60A8:  UCS2[8]: 您
4F7F:  UCS2[9]: 使
7528:  UCS2[10]: 用
4E2D:  UCS2[11]: 中
56FD:  UCS2[12]: 国
8054:  UCS2[13]: 联
901A:  UCS2[14]: 通
4E1A:  UCS2[15]: 业
52A1:  UCS2[16]: 务
FF01:  UCS2[17]: !
执行结果就是:手机立即显示“尊敬的用户,欢迎您使用中国联通业务!”,并且显示一会儿后会自动消失
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容