新聞中心

EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于Android的機頂盒CAS系統(tǒng)的開發(fā)

基于Android的機頂盒CAS系統(tǒng)的開發(fā)

作者: 時間:2012-08-21 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://butianyuan.cn/article/154097.htm

d.JPG


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

e.JPG


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



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉