146AU的D卡神秘面纱之下(六)
146AU换Key(即所谓自动升级)的时间是我这一段关心的主要问题。为了了解带Key的EMM指令的间隔时间,以及解码时间长短,我编写了特殊

的实验程序,进行了实验。实验的部分结果已经在(五)中作了介绍,程序也已经公开给有兴趣的星友做实验了(有些星友误以为是收视用的

程序,不知道是实验用的程序。希望星友们能先看完文章再下载、写卡)。

为了更准确地了解解码时间,了解ECM指令下行的情况,我利用007黑卡,在其上加装了红色和绿色两个LED,红色LED在程序对带Key的EMM指令

解码时点亮,绿色LED在ECM指令解码时点亮。红色LED从亮到暗,说明对Key的解码已完成。绿色LED闪亮表示接收机IRD请求卡提供收视密钥,

绿色LED在红色LED点亮期间,因为尚未获得新的密钥,所以会报告“无权收视”,红色LED亮过之后绿色LED闪亮,则恢复正常收视。

图示如下:
LED状态:绿LED闪---------------红LED亮------------绿LED闪-------------红LED暗----------------绿LED闪...
LED含义:收到ECM 收到含Key的EMM,开始解码 收到ECM 含Key的EMM解码完成,获得Key 收到ECM
IRD状态:正常收视 仍旧正常收视 “无权收视” 仍为“无权收视” 恢复正常收视
ECM时间: |------------------10秒钟-----------------|-----------------10秒钟------------------|---....
解码用时:           |----------------解码用时----------------|
无权时间:                      |--------无权收视阶段,10秒的倍数---------|
时间分析:                      |---解码必须的延时---|-----额外的延时-----|

从改造后的黑卡和新的程序试验中我得到的结果如下:
1. IRD(接收机)在没有换台时,以准确的10秒钟周期,向CAM(收视卡)发出ECM指令,询问收视密钥;如果有换台,那么IRD立即发出ECM指

令,了解是否能收视该台的节目,CAM可以借此询问,让IRD使用新的Key。

2. IRD发出ECM指令与发出带Key的EMM指令之间并没有固定的时间间隔;

3. 卡解开Key后,无法告知IRD已解开并获得密钥,只能等待IRD的下一次询问,因此,在获得密钥之后,还会有一定的延时,具体时间不定,

最长可达近10秒钟。如果解码方法较慢(如旧方法为16秒),那么,有可能在解码期间IRD两次发出ECM询问收视卡,延时会更长。如果解码期

间频繁换台,将迫使IRD频繁发出ECM指令,可以在卡获得新的Key之后,立即恢复收视,不会有额外的延时;

4. 我对解码程序的改进取得了明显的效果:原始的黑卡程序采用“移位-加”方法完成大整数的乘法,解码时间为16秒;我改进的3种不同的方

法,用时分别为11、12和14秒,其中,用时12秒的代码较短,亦有些用处。

5. 如果采用哈西效验核对方法后,可以仅对带Key的EMM指令进行解码,那么,解码时间与等待ECM时间相加,原来的黑卡用时最快近11秒,最

慢要30秒,出现超过超过10秒的机会较大;改进加速后的黑卡解码用时一般为11秒,很少出现20秒,不可能超过20秒。

6. 如果没有进行哈西效验核对方法,卡将耗用许多时间在无用的EMM解码上,会漏过带Key的EMM,解码时间可能超过数分钟。

7. 卡写好后第一次插入接收机,换Key的时间为:等待带Key的EMM解码与获得Key的时间+10秒(对快速146AU)。
第一次换Key的时间,受到Key到来的时间限制,可能只要十几秒,也可能要一分多钟,个别情况下,Key迟迟不来,也可能要数分钟。追求第一

次快速换Key,没有什么意义,应当追求的是,使用中尽可能快的换Key,减少收视的中断时间。

主要结论:
如果没有方法在收视卡已解开密钥之后及时让接收机发出ECM指令来使用新的Key,那么,已插入接收机的使用中的D卡最短的换Key等待时

间为11秒;如果不停地换台,换Key时间可以缩短到10秒以内,最短可达2-3秒。但无论如何用目前的程序和方法,我做不到无等待换Key。

我特向星友征集方法与思路,在收视卡解码之后能让接收机立即发出ECM指令,如方法可行,我负责编写代码和实现。
----------------------------------------
附1:StuntGuy的有关论述(我的译文):
从卡上读取解扰信号所需的数据:
  接收机的主要功能是提供电视信号,让收视者靠在沙发上舒适地观赏节目。如此说来,接收机只要将输入的卫星信号转为可收视的信号就

可以了。但节目的提供者的主要目的是为他的老板能呆在他的豪华游艇上就可以轻松地从中赚取更多的钱,因此,节目的提供者并不想让大众

观看他播放的电视,为此,他就要将节目加密。为了收视时解密电视信号,接收机必须要有正确的密码(通常为64位长的密码)。可是生产能

自己产生解密密码的接收机在他们看来并不是好主意,因为这样太容易被破解,于是计算出解密密码的任务就落到了智能卡的身上,因为从理

论上讲,智能卡是接收系统中最保密的东西了。
  接收机解密的过程是:接收机从卫星上收到它不知如何解开的一个或两个加密了的电视解密密钥,还有用来确定收视者必须付费才能收看

的特定的收视频道服务信息,当然也是加密了的。因为接收机不知如何解开这些信息,因此它转而将信息传给接收卡。卡解开这些信息,检视

其中的付费要求,以确定收视者是否被允许收看节目。如果卡确定收视者可以收看,它就会将收到的解密密码再次加密,不过这次的加密却可

以被插卡的接收机解开(理论上讲,别的接收机是无法解开的),这样接收机就可以解开加密的卫星电视信号,让大家看个够。这一过程如下


1: 接收机从卫星上接收到加密的用于解开电视信号的信息流
2: 接收机向卡发出ECM-$03命令,其中包含经过编码的要求卡提供解密卫星信息流的密码数据
3: 卡向接收机回应$83命令,告诉接收机它正在处理解码所需的信息
4: 卡解开接收机编码信息,确定所收的节目是否允许收视。如果节目允许收视,卡就将卫星解密的密码(控制字)再度用DES加密方法编码,

编码所用的密码是只有接收机能了解的DES密码
5: 接收机向卡送出CAM状态请求-$C0命令,确定对ECM-$03命令的处理是否已经完成
6: 卡向接收机回应$B0命令,告诉接收机命令处理情况
7: 接收机检视卡的$B0回应,如果回应表明ECM-$03命令尚未处理完毕,回到第5步
8: 如果接收机从$B0回应中了解到ECM-$03命令已经处理完成,接收机向卡送出控制字请求-$13命令,要求它在第2步的$03命令中请求的解密密


9: 如果卡在第4步中已确定节目允许收视,卡送出$93回应,在回应中包含了解开卫星信息的密钥,该密钥在$93命令中是加密的;如果节目不

允许收视,在$93命令中原本放密码的地方都存放$00。
----------------------------------
附2:007黑卡改造方法,用于观察ECM与带Key的EMM命令解码情况,以及我将来的其他研究试验(程序会陆续给出)。
007黑卡上的ATMega8芯片为DIP-28,即双列直插28脚IC。
将红色LED串接一个1K的电阻后,正端接23脚(PC0),负端接22脚(地)。
将绿色LED串接一个1K的电阻后,正端接24脚(PC1),负端接22脚(地)。
两个LED最好都焊在底层。
这是一个有意义的实验研究,它不影响黑卡换程序后的正常使用。焊接小心一点,对IC和卡都没有任何影响。
如果哪个星友有兴趣,并已经对007黑卡做了以上修改,可以给我Email,我会寄上供观察和试验研究用的程序。
另外,我打算以后发表的黑卡程序都带有这两个LED的驱动部分,让007黑卡可以观察有关现象。

发信人:追星 日期:2005年10月7日