永新同方公司作为中国广电行业的专业技术和服务提供商,依靠清华大学的强大技术支持,汇集了众多国内权威的技术专家,自主研发了符合国内和国际标准的数字条件接收系统,并于2003年12月一举通过了广电总局条件接收系统入网测评,获得了A级认证证书。TFCAS以其开放的体系,优越的性能,安全的加密体系,稳定的现场运行,优质的服务赢得了国内运营商和合作伙伴的广泛认同,市场占有率一直名列前茅。
1功能
1.1 硬件要求:
a)FLASH要求:总FLASH大小:128K(用来保存CA私有数据,其中包括了邮件数据)b)E2P 要求:总提供E2P大小:8K
| E2P? 标识区 | 32 Bytes |
| CA FLASH数据块180个字节的CRC | 4 Bytes |
| E2P? 中 CA FLASH数据块备份数据的CRC | 4 Bytes |
| E2P? 中 CA FLASH数据块180个字节备份数据区 | 180 Bytes |
| NIT表中NetWorkId值 | 4 Bytes |
| 保留数据区 | |
| 智能卡升级信息 | 100 Bytes |
| CA其他数据区 | 100 Bytes |
| 保留数据区 |
1.2 TFCA流程图
1.3 TFCAS系统功能
a.节目定期预定(ppc)
b.按次节目预定 (PPV)
c.IPPV(Impulse Pay Per View),可远程充值
d.免费预览
e.录像控制(需要机顶盒支持)
f.智能卡工作时段设置
(注:如果开始时间小于结束时间,则工作时段为开始时间到当天的结束时间,例如:开始时间是8:12:26,结束时间是10:00:00,那么可工作时段为8:12:26~10:00:00。如果开始时间大于结束时间,则工作时段为开始时间到次日的结束时间。例如:开始时间是10:00:00,结束时间是8:12:26,那可以工作时段为10:00:00~次日的8:12:26。如果开始时间等于结束时间,则工作时段为全天。)
g.指纹显示
(注:同方CA每通知一次指纹,要求应用将指纹在屏幕上的显示位置随机改变一次,最终要求指纹能够随机显示在屏幕上的任何一个位置。)
h.机卡对应
(注: 机卡配对有自动机卡配对功能,如果当前卡未配对过或已取消机卡配对,则插入机顶盒切换到要求机卡配对节目后见自动机卡配对。如果当前卡已与其他机顶盒配对,则要求前端发送取消机卡配对指令才能完成机卡自动配对。)
i.区域控制
(注:调同方接口获取运营商特征值,第一个4字节为区域码,第二个4字节为Bouquet ID。)
j.条件禁播和准播
k.节目分级控制,家长锁定
(注:观看级别取值范围是4~18,如果观看级别设置为15,则只有当前端播放的节目级别小于15时,智能卡才会解密CW,否则不解密CW,并提示相应信息。)
l.广播寻址方式的OSD屏显和电视邮件
(注:osd屏显风格有:top显示在屏幕上方;bottom显示在屏幕下方;fullscreen整屏显示;falfscreen半屏显示。)
m.子母卡功能
(注:子卡过期时,拔出子卡,插入母卡,应用调接口读取母卡喂养数据,成功时提示插回子卡,插入子卡后,把喂养数据写入子卡,并取消提示框。)
1.4 智能卡
CDCAS系统使用的智能卡遵循IS07816-1,2,3标准,T0协议,因此要求机顶盒的智能卡接口也同样遵循该标准。同时,为了方便后续的移植工作,减少移植过程中的修改和反复,现将其中应严格遵循的参数和流程明确如下:1.4.1 电气参数CDCAS智能卡除VCC外,只需要提供I/O,CLK.RST三种信号,各信号的具体要求参见ISO7816,需要特殊说明的要求如下:VCC:3V或5V。+/-10%.I/O:空闲时为高电平。CLK:周期1MHz~5MHz,占空比40%~60%。1.4.2 卡复位时序
CDCAS智能卡复位遵从ISO7816标准,具体时序如下图所示:
其中:t1为RST变为高电平到卡开始送出ATR的时间间隔;t2为CLK信号被加载到I/O稳定为高电平的时间间隔;t3为CLK信号被加载到RST变为高电平的时间间隔;这些时间间隔在ISO7816-3中规定如下:t2<=200/f;400/f<=t1<=40000/f;40000/f<=t3.需要特殊说明的是:
对于t3的上限,ISO7816没有规定,为减少卡复位所用时间,并保证卡可以正确复位,CDCAS智能卡要求t3的上限为500ms。
为了保证卡片的安全性,某些CDCAS智能卡的t1会延迟到50ms。
2 经验案例
2.1同方机卡配对数据备份
同方机卡配对信息是写在盒子FLASH上,有时候由于软件问题,导致FLASH数据出现异常丢失的情况,但是由于FLASH比较大(128k),我们只选择备份重要的数据到E2P上,从同方技术支持那里得知,写在FLASH上的前180字节即有机卡配对相关数据,所以我们备份了这180字节数据,代码上每次开机初始化FLASH的时候,都会去校验FLASH前180字节数据的crc跟E2P数据的crc是不是相同,以此达到备份的作用。
2.2 不插卡开机,出现CA消息混乱,有时出现“加扰信息错误”。
出现这样的问题,是由于之前软件上传表数据给CA内核的时候,我们还没通知CA内核卡状态,导致CA内核判断出错,发错消息,解决办法是在传表给CA内核之前,一定要先从驱动上获取卡状态,并通知给CA内核,之后才传表数据。
2.3 同方的AClist数据
在应用开发的过程,常会被问到区域码是放在哪的,在这里讲下同方的AClist函数接口,其中第一个参数是运营商id,第二个参数是一个int型数组,代码上我们给的是19字节,其中目前有用的是前10个字节。
第一个4字节为: 区域码。
第二个4字节为: Bouquet ID。
第三跟第四个4字节为保留位。
第五到第十个4字节为客户自定义特征值,根据运营商需要定义。
2.4 永新视博SIM卡插卡短路重启问题
3 相关词条
4 扩展阅读
同方智能卡命令和应答(按时间先后顺序)。STB:机顶盒。Card:智能卡。STB -> Card:机顶盒发送给智能卡。Card -> STB:智能卡发送给机顶盒。
| 智能卡命令或应答 | 传输方向,命令或应答的详细说明 |
| 0x3b 0x6c 0x00 0x00 0x4e 0x54 0x49 0x43 0x30 0x91 0x69 0x00 0x4a 0x03 0x00 0x00 | Card -> STB。YXTF的ATR。 |
| 0x00 0xa4 0x04 0x00 0x050xf9 0x5a 0x54 0x00 0x06 | STB -> Card。初始命令。 |
| 0x90 0x00 | Card -> STB。表示智能卡收到了正确的初始命令 |
| 0x80 0x46 0x00 0x00 0x040x01 0x00 0x00 0x04 | STB -> Card。获取智能卡号码命令。 |
| 0x61 0x04 | Card -> STB。告知机顶盒号码占用0x04个字节。 |
| 0x00 0xc0 0x00 0x00 0x04 | STB -> Card。读取智能卡号码。 |
| 0xaa 0xbb 0xcc 0xdd0x90 0x00 | Card -> STB。告知机顶盒智能卡号码,并以0x90 0x00结尾告知机顶盒获取智能卡号码的命令被完整而成功地执行。 |
| 0x80 0x46 0x00 0x00 0x040x03 0x00 0x00 0x09 | STB -> Card。获取智能卡年龄等级命令。 |
| 0x61 0x09 | Card -> STB。告知机顶盒年龄等级信息占用0x09个字节 |
| 0x00 0xc0 0x00 0x00 0x09 | STB -> Card。读取智能卡年龄等级信息。 |
| 0x30 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x000x90 0x00 | Card -> STB。告知机顶盒智能卡年龄等级信息,并以0x90 0x00结尾告知机顶盒获取智能卡年龄等级的命令被完整而成功地执行。 |
| 0x80 0x44 0x00 0x00 0x08 | STB -> Card。读取智能卡运营商信息。 |
| 0x17 0x17 0x00 0x00 0x00 0x0a 0x00 0x000x90 0x00 | Card -> STB。告知机顶盒运营商信息,例如0x1717十进制为5911,表示第一个运营商是电话区号为0591的第一个城市。并以0x90 0x00结尾告知机顶盒获取智能卡年龄等级的命令被完整而成功地执行。 |
| 0x80 0x4c 0x00 0x00 0x040xff 0xff 0xff 0xff | STB -> Card。检查智能卡是否需要机卡配对。 |
| 0x94 0xb2 | Card -> STB。如果为0x94 0xb2,说明此卡需要机卡配对。如果为0x94 0xb1,说明此卡不需要机卡配对。 |
| 0x80 0x4c 0x00 0x00 0x040x5e 0xe4 0x82 0xf2 | STB -> Card。给卡发送四个配对字节:0x5e 0xe4 0x82 0xf2,看是否能配对成功 |
| 0x90 0x00 | Card -> STB。如果为0x90 0x00,说明四个配对字节与此卡配对成功。如果回复其他数据,说明配对失败。 |
| 0x80 0x46 0x17 0x17 0x040x04 0x00 0x00 0x48 | STB -> Card。获取运营商一产品包列表。其中0x17 0x17是运营商一的号码。 |
| 0x61 0x48 | Card -> STB。告知机顶盒运营商一产品包列表占用0x48个字节 |
| 0x00 0xc0 0x00 0x00 0x48 | STB -> Card。读取运营商一产品包列表。 |
| 0x00….. 0x00(共0x48个)0x90 0x00 | Card -> STB。返回运营商一产品包列表。并以0x90 0x00结尾告知机顶盒获取运营商一产品包列表的命令被完整而成功地执行。 |
| 0x80 0x48 0x17 0x17 0x040x81 0x00 0x00 0x3e | STB -> Card。获取运营商一授权信息。其中0x17 0x17是运营商一的号码。 |
| 0x61 0x27 | Card -> STB。告知机顶盒运营商一授权信息占用0x27个字节 |
| 0x00 0xc0 0x00 0x00 0x27 | STB -> Card。读取运营商一授权信息。 |
| 0x00 0x00 0x090x00 0x00 0x00 0x000x00 0x00 0x00 0x01 0x00 0x00 0x01 0x000x00 0x00 0x80 0x00 0x00 0x01 0xff 0xfe0x00 0x00 0x00 0x02 0x00 0x01 0x00 0x010x00 0x01 0x00 0x02 0x00 0x01 0x00 0x040x90 0x00 | Card -> STB。返回机顶盒运营商一授权信息。其中前三个字节0x00 0x00 0x09表示授权信息共有0x09条,以后每四个字节作为一条授权信息。例如0x00 0x01 0xff 0xfe表示ID号为65534(0xff fe)的节目,第二个字节0x01表示在界面上显示此节目ID,第二个字节为0x00表示不显示。 |
| 0x80 0x46 0x00 0x0a 0x040x04 0x00 0x00 0x48 | STB -> Card。获取运营商二产品包列表。其中0x00 0x0a是运营商二的号码。 |
| 0x61 0x48 | Card -> STB。告知机顶盒运营商二产品包列表占用0x48个字节 |
| 0x00 0xc0 0x00 0x00 0x48 | STB -> Card。读取运营商二产品包列表。 |
| 0x00….. 0x00(共0x48个)0x90 0x00 | Card -> STB。返回运营商二产品包列表。并以0x90 0x00结尾告知机顶盒获取运营商二产品包列表的命令被完整而成功地执行。 |
| 0x80 0x48 0x00 0x0a 0x040x81 0x00 0x00 0x3e | STB -> Card。获取运营商二授权信息。其中0x00 0x0a是运营商二的号码。 |
| 0x61 0x0b | Card -> STB。告知机顶盒运营商二授权信息占用0x0b个字节 |
| 0x00 0xc0 0x00 0x00 0x0b | STB -> Card。读取运营商二授权信息。 |
| 0x00 0x00 0x020x00 0x00 0x00 0x000x00 0x00 0x00 0x010x90 0x00 | Card -> STB。返回机顶盒运营商一授权信息。其中前三个字节0x00 0x00 0x02表示授权信息共有0x02条。分析方法同上面运营商一授权信息的分析方法。 |
热门跟贴