zoukankan      html  css  js  c++  java
  • CAS解扰小结

    1、每个ts数据包由:1、包头 2、包数据
      包头有个字段 PID ,该字段指示包数据的类型。比如说:
      PID 为 0x0000 包数据的类型就是 PAT表
      PID 为 0x0001 包数据的类型就是 CAT表

    2、PAT表定义了当前TS流中所有的节目,其PID为0x0000,
    要查寻找节目必须从PAT表开始查找。也就是说每个频点有且只有一个PAT表

    3、当包数据为PAT表时,PAT表主要包含该频点下面的每个节目对应的号码和PMT的PID值,以及一个NIT表的PID。
    当PAT表的program_number的值为0时,获得的是NIT表的PID。
    当PAT表的program_number的值大于0时,获得的是PMT表的PID。
    机顶盒可以根据获得的PID在ts流中找到对应的ts包。该ts包的包数据就是对应的表。

    4、使用SK加密后的CW形成ECM,使用PDK加密后的SK形成EMM。

    5、解扰:就是解密EMM和ECM的到CW,并用CW对加扰的流进行解扰的过程。
    1、在信号的接收端,解码器首先在传送流中查找到PMT和CAT表,从中获取到EMM_PIDS,ECM_PIDS,CASystemIDS
    等信息.
    2、根据EMM_PID,找到相应的加密的EMM信息,智能卡中存有加密系统号和ECM密钥,EMM密钥等,智能卡首先
    使用EMM密钥对加密的EMM解密,根据解出的EMM信息来确定本智能卡是否被授权看该套节目,如没授权则不能进行
    后续的解密,也不就不能收看该节目.
    3、如该卡已被授权,则利用ECM_PID,找到相应的加密的ECM信息,利用智能卡的ECM密钥对ECM进行解密,得到
    控制字CW.
    4、利用CW解扰。

    ECM和EMM怎么获取?
    1、前面提到在传输流中查找PMT表和CAT表,CAT的PID为0x0001,所以可以直接在传输流中直接查找。而PMT表则需要
    先获取PAT表,从PAT表的program_number 和 program_map_pid字段中,获取每个节目号码对应的PID,也就是PMT
    表的PID,由此我0们就可以查找获得PMT表。
    2、接收到相应的PMT和CAT表,这两个表中可能会存在CA_descriptor(){加密节目的PMT表会出现}的描述符,通过该描
    述符号,可以获取到对应的EMM_PIDS,ECM_PIDS,CASystemIDS。
    CA_system_ID: 表示适用于相关ECM和EMM流的相关的CA系统类型(CA厂家标识符).
    CA_PID: PMT表中的该描述信息为ECM_PID, CAT 表中的该描述信息为EMM_PID.
    一般来说,ecm table id为0x80/0x81,emm table id为0x82~0x8F这个值是由ca厂家决定的。

    Slot说明:
    1、Slot可以把其看成一个管理对象,管理PID、Filter、Buffer。
    2、一个Slot对应一个PID,一个Buffer空间,但可以对应多个Filter。

  • 相关阅读:
    CF251D
    P6914
    CF1100F
    双连通 / 圆方树 胡扯笔记
    P4082
    SparkSql使用Hive中注册的UDF函数报类找不到问题解决
    Oracle 查询时使用时间作为where报错hour must be between 1 and 12
    【面试-python】
    Linux和Git
    AMBA初探
  • 原文地址:https://www.cnblogs.com/ThatsMyTiger/p/7373441.html
Copyright © 2011-2022 走看看