新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于Android的機頂盒CAS系統的開發

        基于Android的機頂盒CAS系統的開發

        作者: 時間:2012-08-21 來源:網絡 收藏

        從圖2可以看出此TS流中的CAT表中含有ca_descriptor描述符,并可以得出ECM的ca_pid為0x0562。而從圖3中可以看出,PMT表中含有的EMM表的ca_pid為0xoffe。此時就可以設置操作demod來分配filter通道,過濾出EMM、ECM表的section_descriptor_table,來取得CA有關的信息。如果用戶要流暢地播放節目,(Set_Top Box,STB)就要不斷地獲得密文CW送入智能卡中,從整個解碼過程中可以把整個終端子分為3個模塊:EMM解析模塊、ECM解析模塊、智能卡任務模塊。采用的是Linux內核,保留了posix的pthread、message、memory pool等通用的API,所以在設計3個模塊時,可以使用pthread_create()創建任務模塊;使用msgget()創建消息,實現3個任務模塊的通信與同步。
        2.1 EMM任務模塊
        由圖1可知,TS流經tuner調諧,把高頻載波去掉,再經過demod解調,就可以根據PES包的PID號和TABLEID號設置其里面的filter。一般來說一個demod含有多個filter,在啟動開始就會分配PAT表的filter,有PAT表的setction descriptor的描述就可以得到PMT表的PID,此時同樣分配PMT表的filter。如果此節目是加密節目,在其段描述符中就會含有EMM表的PID號,一旦找到EMM的PID號,就可以為EMM表分配filter。如果EMM里面的CA信息版本號和智能卡存儲的CA信息版本號一致,就舍棄此EMM;如果不一致,就重新改寫智能卡里面的CA用戶的信息。EMM任務模塊流程如圖4所示。

        本文引用地址:http://www.104case.com/article/154097.htm

        d.JPG


        在EMM任務模塊中,通過_EMM_TASK()函數創建任務,在_EMM_TASK()中調用CAS_EMM_ReceiveMessage()函數來接收EMM filter發送過來的CA信息。在沒有EMM流時,EMM任務一直掛起,而一旦filter發現EMM表,就會把EMM的CA信息發送到EMM任務中,同時關掉filter,避免其未處理完此EMM,而又接收新的EMM。此時EMM任務從掛起進入就緒態,從而處理來自filter的EMM信息,處理完之后再次分配EMM的filter。
        2.2 ECM任務模塊
        通過解瀆CAT表可知,此節目表是否加密,如果加密則設置相應ECM的filter過濾出對應的ECM表,此時結合智能卡中存儲的EMM的CA信息,就可以判斷出用戶是否對此節目授權,若授權則取出智能卡中的SK業務密鑰,找出對應的奇偶控制字(CW),送入到智能卡中,通過智能卡系統解密出CW,送入到STB中實現數據、視頻、音頻的解碼。整個過程如圖5所示。

        e.JPG


        在ECM任務模塊中,通過CAS_ECM_TASK()創建線程任務,在其內部調用CAS_ECM_ReceiveMessage()函數接收來自ECM的filter過濾出的CA信息;此時通過CAS_CARD_ReadMessage()讀取智能卡內部用戶授權信息,來判斷ECM是否有效且取出對應的密文的CW;而用CAS_ECM_Send To Card()函數把密文CW送入到智能卡中解密,解密出明文CW;用CAS_CW_SendToSTB()函數送入到,此時解復用模塊接收到明文CW就可以得到解碼加密流了。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 玉溪市| 连城县| 砀山县| 塔河县| 新巴尔虎左旗| 息烽县| 收藏| 安阳市| 贡觉县| 井陉县| 辽阳市| 洛宁县| 遂平县| 凌云县| 邵阳县| 防城港市| 姚安县| 山东| 壤塘县| 灵寿县| 杂多县| 易门县| 长兴县| 集安市| 望江县| 枣强县| 渝北区| 富锦市| 峨边| 定结县| 高唐县| 吴江市| 科尔| 项城市| 东乡| 寿宁县| 吴川市| 奈曼旗| 奉节县| 镇康县| 乳源|