数码反制最新研究成果(转)
浏览:1367 发布日期:2014-11-09

I have investigated this problem To whom in the CCCAM team: 1,please parse the engima PMT Object correctly, you should decrypt at less one EMM/ECM per stream, not only per program 2,please use the follow code to set two control word to STBx25 descrambler #define CA_SET_PID _IOW('o', 135, ca_pid_t) struct ca_pid { unsigned int pid; int index; /* -1 == disable*/ } ca_pid_t; ca_pid_t ca_pid; ca_pid.index=0; ca_pid.pid=vpid; ioctl(ca_fd,CA_SET_PID,ca_pid) ; ca_pid.index=1; ca_pid.pid=apid; ioctl(ca_fd,CA_SET_PID,ca_pid) ; then use ioctl CA_SET_DESCR with index=0 for video with index=1 for audio 高手看 看 估计数码反制马上就能解决了!!!!!!!!!!!!!!!!!!!!!!!!!!!! 基本上现在看起来是原因是因为cccam默认一套节目只处理一个ecm,成功了便不再理会剩余的ecm9 而数码视频和音频分别用了不同的控制字(cw)加密,所以同时只有一个流能正常播放。 如果有cccam的源代码,改起来就应该很容易,唯一的技术问题就是我们必须把两个控制字送到解扰器(descrambler) 中间,然后要设置不同的pid对应不同的控制字。dm500的cpu(IBM STBx25xx)内置的解扰器的文档没有公开,但是我在另外一个解扰器的文档里面看到可同时支持16组pid cw对。我想这个解扰器至少也会支持2组吧。另外的一个证据是我反汇编了dm500 的driver(你们机器上的/lib/modules/2.6.9/extra/head.ko).发现里面有这些函数 00009a84 r descrambler_caps 00007364 T descrambler_demux_set_pid 000072b8 T descrambler_disable_oldapi 000072a8 T descrambler_enable_oldapi 000078a0 T descrambler_exit2 `, 0000080c d descrambler_fops 000072c8 T descrambler_get_keyindex 00009a70 r descrambler_info3 W 00000b00 T descrambler_init 000073f4 t descrambler_ioctl 00007794 t descrambler_open 00007808 t descrambler_poll 000077d4 t descrambler_release 00009a78 r descrambler_slot_info, 这个驱动没有源代码,可能需要进一步的反汇编。 另外cccam的作者如果没有兴趣为我们来改动。而我们又没有办法获得cccam的源代码的情况下我们也有办法来处理。当然前提也是我们要先解决上面那个共同的问题,设置不同的pid cw对到解扰器中间然后我们需要改动enigma的源代码,(感谢,这个源代码是开放的)。 然后需要写一个虚拟的ca设备驱动模块让cccam去写控制字。 具体的思路是enigma分两次发送PMT信息到cccam,对cccam开起来好像换台一样。 第一次发送视频流部分,同时通知我们的虚拟设备驱动当前的视频vpid,等cccam解密好把控制字cw送给我们。 我们的虚拟驱动就把这个vpid cw对设置给解扰器然后发送音频部分,同时通知我们的虚拟设备驱动当前的音频apid,当cccam把另一个cw送进来时,又设置apid cw对) 给解扰器。" 另外指出enigma送pmt object给cccam是通过/tmp/camd.socket或者是cccam去读/tmp/.listen.camd.socket,这种是新的方式,不确定cccam会用。 这样应该就可以正常解码

扫码下方或搜索关注公众号“卫星参数网”,独家内幕新闻!

卫星参数网公众号