電視機(jī)頂盒的方法,收看免費(fèi)數(shù)字電視。 游走在灰色地帶,大打擦邊球的數(shù)字電視機(jī)頂盒共享器 隨著有線(xiàn)電視數(shù)字化發(fā)展進(jìn)程的加快,數(shù)字電視這一新興的電視觀看及傳輸方式已經(jīng)開(kāi)始被更多的普通市民 所熟悉,數(shù)字電視以接近于DVD的畫(huà)質(zhì)和立體聲甚至5.1聲道伴音這兩大最明顯的特點(diǎn)受到了不少有線(xiàn)電視用戶(hù)的關(guān) 注,同時(shí)更多可選擇的電視臺(tái)、點(diǎn)播節(jié)目也為豐富市民的業(yè)余生活增添了不少色彩,不過(guò)在數(shù)字電視剛剛起步的萌芽階段,還有多的不足和缺點(diǎn)需要改進(jìn)。 按照國(guó)際慣例,數(shù)字電視機(jī)頂盒(SET-TOP-BOX,簡(jiǎn)稱(chēng)STB)分為數(shù)字地面STB、數(shù)字衛(wèi)星STB、數(shù)字有線(xiàn)STB和網(wǎng)絡(luò)STB這4種,南京市目前正在大力發(fā)展的數(shù)字電視類(lèi)型是數(shù)字有線(xiàn)STB,是目前成本最為低廉,也最適合大力向普通市民所推廣的。整體來(lái)說(shuō),數(shù)字機(jī)頂盒以支持HDTV和互動(dòng)性作為發(fā)展方向,而就目前的機(jī)頂盒產(chǎn)品來(lái)看,一部機(jī)頂盒內(nèi)包括了接收數(shù)字信號(hào)的調(diào)制解調(diào)芯片、視頻信號(hào)編解碼芯片、音頻處理器、音視頻數(shù)模轉(zhuǎn)換芯片等,一些高端的機(jī)頂盒中甚至還會(huì)整合安全芯片甚至可錄像硬盤(pán),可見(jiàn)數(shù)字電視機(jī)頂盒在未來(lái)的發(fā)展空間還是相當(dāng)寬廣的。 創(chuàng)維C6000采用了意法的Qami5516方案;熊貓3216采用了意法的5516芯片,帶有180MHZ的CPU,銀河則采用了最為簡(jiǎn)單的富士通功能單芯片H20A,雖然這三種機(jī)頂盒在內(nèi)部的設(shè)計(jì)上有一定的區(qū)別,但它們都是需要通過(guò)插入數(shù)字電視智能卡才能夠工作的,而數(shù)字電視智能卡就相當(dāng)于一個(gè)人有了駕照才能合法地駕駛汽車(chē)一樣。在使用模擬電視信號(hào)的時(shí)候,大家只需要申請(qǐng)有線(xiàn)電視開(kāi)戶(hù)之后就可以在家中通過(guò)自帶電視信號(hào)調(diào)諧器的電視觀看節(jié)目,如果有多部電視的話(huà)只要購(gòu)買(mǎi)有線(xiàn)電視信號(hào)分配器就可以在所有的電視上觀看有線(xiàn)電 視。而數(shù)字電視卻將這種免費(fèi)的電視信號(hào)共享給“封殺”了,機(jī)頂盒需要在插入有效的智能卡之后才能使用就是為了保證數(shù)字電視信號(hào)不被盜用的一種方式,同時(shí)也能夠保證數(shù)字信號(hào)不被盜版商用來(lái)作為盜版節(jié)目源。 為了保證數(shù)字信號(hào)不被盜用,數(shù)字電視內(nèi)容管理方式以條件式接?。–A)和數(shù)字版權(quán)管理(DRM)作為基本保護(hù)機(jī)制,目前國(guó)內(nèi)的數(shù)字電視機(jī)頂盒采用的管理方式就是條件式接取這種機(jī)卡分離的方式,用戶(hù)必須通過(guò)專(zhuān)屬的智能卡來(lái)取得授權(quán)才能夠接收被解碼的信號(hào),而服務(wù)提供商也能夠通過(guò)這種方式接收用戶(hù)的信息,包括用戶(hù)戶(hù)名、地址、智能卡卡號(hào)和收看數(shù)字電視的費(fèi)用等信息。這種機(jī)卡分離的機(jī)頂盒使用方式被美國(guó)、歐洲和亞洲等國(guó)視為數(shù)字電視發(fā)展的機(jī)頂策略。 DRM采用的是許可證管理策略,由數(shù)字電視信號(hào)運(yùn)營(yíng)商對(duì)節(jié)目源進(jìn)行加密,在用戶(hù)通過(guò)機(jī)頂盒發(fā)出節(jié)目接收請(qǐng)求之后 系統(tǒng)會(huì)自動(dòng)檢查是否經(jīng)過(guò)許可,而認(rèn)證的方式也同樣是通過(guò)IC卡等帶有帳號(hào)、密碼等信息的進(jìn)行的,不過(guò)DRM管理的 規(guī)格相當(dāng)繁多:Windows%20Media的DRM、開(kāi)放移動(dòng)聯(lián)盟OMA推出的DRM%201.0/2.0規(guī)格、UT-DRM、NDS、SecureMedia 、WideVine、BesDRM等,規(guī)格的不統(tǒng)一使其并不被大多數(shù)有限數(shù)字電視運(yùn)營(yíng)商所接受。 無(wú)線(xiàn)機(jī)頂盒共享其與有線(xiàn)機(jī)頂盒共享器一樣都是通過(guò)音視頻接口接受機(jī)頂盒上的第二路信號(hào)輸出接口來(lái)實(shí)現(xiàn)數(shù)字電 視信號(hào)的“共享”的,不過(guò)無(wú)線(xiàn)的共享器的傳輸方式是通過(guò)紅外、調(diào)頻或2.4GHz來(lái)實(shí)現(xiàn)的, 值得注意的是,目前的 機(jī)頂盒在背后的接口都帶有兩路信號(hào)輸出接口,只要使用連接線(xiàn)將機(jī)頂盒的信號(hào)與兩臺(tái)電視連接就同樣可以實(shí)現(xiàn)這 樣的所謂“共享”功能,而這樣一來(lái)機(jī)頂盒共享器的作用也只有在不同房間都可以用遙控器控制機(jī)頂盒這種“遙控 共享器”的功能了。 那么這種有限數(shù)字電視機(jī)頂盒共享器是不是一無(wú)是處呢?事實(shí)上有一定動(dòng)手能力的消費(fèi)者完全可以將這種共享器與 客廳中的DVD連接使用,這樣沒(méi)有DVD的臥室里的電視機(jī)也同樣能夠收看DVD影碟。不過(guò)需要注意的是,目前的有線(xiàn)電 視管理相關(guān)規(guī)定顯示:如果在有線(xiàn)電視網(wǎng)絡(luò)上連接其他設(shè)備,必須通過(guò)廣播電視管理機(jī)構(gòu)的審查、批準(zhǔn)和備案,否 則就是非法入網(wǎng)。到目前為止,在有線(xiàn)電視網(wǎng)絡(luò)允許入網(wǎng)的設(shè)備中,還沒(méi)有機(jī)頂盒共享器這種產(chǎn)品,這也就意味著 沒(méi)有入網(wǎng)手續(xù)的機(jī)頂盒共享器在有線(xiàn)電視管理部門(mén)將被視為一種違規(guī)的產(chǎn)品。 不過(guò)目前機(jī)頂盒共享器的經(jīng)銷(xiāo)廠家認(rèn)為:他們銷(xiāo)售的機(jī)頂盒共享器與機(jī)頂盒連接可以將機(jī)頂盒輸出的電視信號(hào)放大 ,傳輸?shù)狡渌娨暀C(jī)上,達(dá)到多臺(tái)電視機(jī)共看數(shù)字電視的目的。而共享器所解決的只是信號(hào)傳輸問(wèn)題,并未涉及到 、轉(zhuǎn)換數(shù)字電視信號(hào)的問(wèn)題,所以不算是盜取數(shù)字電視信號(hào)的行為。 歸根結(jié)底,市場(chǎng)上之所以會(huì)出現(xiàn)機(jī)頂盒共享器這種產(chǎn)品的最大原因,就在于如果要多部電視 收看數(shù)字電視,需要再 另外購(gòu)買(mǎi)一部?jī)r(jià)值680元的機(jī)頂盒。而按照南京廣電目前有線(xiàn)數(shù)字電視的以有的有線(xiàn)電視線(xiàn)纜帶寬,每個(gè)家庭中最多 能夠同時(shí)使用三部機(jī)頂盒分別對(duì)應(yīng)三部電視,如果你想要使用第4部電視觀看節(jié)目的話(huà)就需要再另外開(kāi)戶(hù),令外開(kāi)戶(hù) 就意味著除了有線(xiàn)初裝費(fèi)之外,每月的收視費(fèi)用都要翻倍,相比之下每只售價(jià)在200元-500元之間不等的機(jī)頂盒共享 器自然有著一定的生存空間。至于這種大打擦邊球的數(shù)字電視信號(hào)的共享行為究竟算不算違規(guī)產(chǎn)品,還要待相關(guān)的 法律或法規(guī)修正后才能夠界定。 電視機(jī)頂盒,可接多臺(tái)電視。錄入者聲明:本意在學(xué)習(xí)電子技術(shù)、交流電子技術(shù)。如有用本技術(shù)去非法接入有線(xiàn)電視線(xiàn)路,造成的不必要損失及觸犯法律,圴與本人無(wú)關(guān)!電視機(jī)頂盒,可接多臺(tái)電視。錄入者聲明:本意在學(xué)習(xí)電子技術(shù)、交流電子技術(shù)。如有用本技術(shù)去非法接入有線(xiàn)電視線(xiàn)路,造成的不必要損失及觸犯法律,圴與本人無(wú)關(guān)?。?/font> 一、思路 二、原理 三、方法 四、原理圖 一、思路 有線(xiàn)電視加密的原理是這樣的:電視臺(tái)把接改來(lái)的電視信號(hào)先輸入數(shù)字加密設(shè)備,把電視信 號(hào)通過(guò)算法加密后向外 輸出終端的解密設(shè)備(機(jī)頂盒子)解密后輸出普通的射頻信號(hào),再送到我們的終端接收設(shè)備,由電視放出畫(huà)面。因 電視只能是接收普通的射頻信號(hào)(模擬信號(hào)),所以只能解密后再輸入電視,由電視放出畫(huà)面。有線(xiàn)電視加密法有 多種,這里的是使用“加擾法”。在加密到解密這段線(xiàn)路,要想非法接入偷接電視信號(hào),成功的可能性幾乎是 10000000分之一。但經(jīng)解密器(機(jī)頂盒)解密后的信號(hào)任何可以常接收電視信號(hào)的電視機(jī)都能播放(即通用性,也 可說(shuō)是共用性),這就是的切入點(diǎn)(軟件也需要切入點(diǎn))。既然這樣,但為什么一個(gè)機(jī)頂盒只能接一臺(tái)電 視機(jī)用呢?我也試驗(yàn)過(guò),當(dāng)通簡(jiǎn)單的方法接上兩臺(tái)電視機(jī)的時(shí)候,什么畫(huà)面也沒(méi)有了(因機(jī)頂盒有智能的識(shí)別功能 )。問(wèn)題就在這里,也是我要教會(huì)大家的精要所在。 至于如何利用這個(gè)“切入點(diǎn)”進(jìn)行我們的“小人”行為呢?我們通過(guò)什么手段來(lái)欺騙機(jī)頂盒,讓他以為是一臺(tái)電視 機(jī)呢?(就如軟件的時(shí)候,我們有時(shí)也要采用欺騙的方法來(lái)進(jìn)行)。我將會(huì)在下一點(diǎn)“原理”中向大 家說(shuō)明。 二、原理: 裝在我們家里的那個(gè)盒子的工作原理:經(jīng)加密的信號(hào)經(jīng)輸入端子輸入,由其內(nèi)部有關(guān)電路解除干擾信號(hào)(加擾法加 密),再經(jīng)輸出端子輸出正常的信號(hào)。其解密電路是否工作要有一個(gè)外部條件,就是電視的高頻頭反饋回來(lái)的信號(hào) 。如果沒(méi)有這個(gè)信號(hào)反饋回機(jī)頂盒,則其解擾電路不工作,照樣輸出未解密的信號(hào),因而不能正常收看。其解密的 頻段分做若干段解密,如電視正在接收3頻道,則電視的高頻頭就反饋3頻道的諧振頻率給機(jī)頂盒,機(jī)頂盒就能輸出1 ——5頻道的正常信號(hào),如此類(lèi)推。 因此可用以下兩種方法進(jìn)行: 1、把機(jī)頂盒放在其中一臺(tái)電視機(jī)(下稱(chēng)電視1)高頻頭附近,讓其可以正常收看,再用分支器從輸出端分支出信號(hào) 到另外的電視機(jī)。這樣的做法的一個(gè)缺點(diǎn):就是另外的電視機(jī)只能接收電視1接收的頻道附近的5個(gè)頻道。 2、用非與門(mén)電路或555電路制作一個(gè)開(kāi)放式多諧振動(dòng)器,其諧振頻率只要能履蓋有線(xiàn)電視的整個(gè)頻段即可。(制作 成本約6元左右)把這個(gè)諧振動(dòng)器放在機(jī)頂盒的旁邊。讓機(jī)頂盒能接收到振動(dòng)器發(fā)出的信號(hào),再用分支器從機(jī)頂盒的 輸出端分支出多臺(tái)電視機(jī),這樣,所有電視機(jī)就能接收所有頻道的信號(hào)了。 3、用高頻三極管如9018做一個(gè)高頻發(fā)射電路,利用射頻輸出再次發(fā)射,只要小小發(fā)射功率,讓機(jī)頂盒能接收得到即 可?;蛴猛S視頻線(xiàn)分支接入輸入或輸出端,的除去外層屏蔽線(xiàn),只留中間的線(xiàn)長(zhǎng)約1米,把這線(xiàn)繞在機(jī)頂盒。讓泄 漏出來(lái)的信號(hào)感應(yīng)給機(jī)頂盒接收。 第一章:CA智能卡的與反制 第二章:流行CA系統(tǒng)的漏洞分析實(shí)踐 第三章:流行CA應(yīng)用算法的分析設(shè)想 討論綜述 CA安全保障的三層關(guān)鍵:傳輸流的加擾,控制字的加密,加密體制的保護(hù)。 這三種技術(shù)是CA系統(tǒng)重要的組成部分,在處理技術(shù)上有相似之處,但在CA系統(tǒng)標(biāo)準(zhǔn)中是獨(dú)立性很強(qiáng)的三個(gè)部分。加 解擾技術(shù)被用來(lái)在發(fā)送端CA系統(tǒng)的控制下改變或控制被傳送的服務(wù)(節(jié)目)的某些特征,使未被授權(quán)的用戶(hù)無(wú)法獲 取該服務(wù)提供的利益;而加密技術(shù)被用來(lái)在發(fā)送端提供一個(gè)加密信息,使被授權(quán)的用戶(hù)端解擾器能以此來(lái)對(duì)數(shù)據(jù)解 密;而保密機(jī)制則用于控制該信息,并以加密形式配置在傳輸流信息中以防止非授權(quán)用戶(hù)直接利用該信息進(jìn)行解擾, 不同的CA系統(tǒng)管理和傳送該信息的機(jī)制有很大不同。在目前各標(biāo)準(zhǔn)組織提出的條件接收標(biāo)準(zhǔn)中,加擾部分往往力求 統(tǒng)一,而在加密部分和保密機(jī)制則一般不作具體規(guī)定,是由各廠商定義的部分。 1、對(duì)傳輸流的加擾,DVB已有標(biāo)準(zhǔn)。目前在國(guó)際上占主流的有歐洲的DVB標(biāo)準(zhǔn)、北美國(guó)家的ATSC標(biāo)準(zhǔn)及日本的ISDB標(biāo) 準(zhǔn)三種標(biāo)準(zhǔn)中,對(duì)于CA部分都作了簡(jiǎn)單的規(guī)定,并提出了三種不同的加擾方式。歐洲D(zhuǎn)VB組織提出了一種稱(chēng)之為通用 加擾算法(Common Scrambling ALGorithm)的加擾方式,由DVB組織的四家成員公 司授權(quán),ATSC組織使用了通用的 三迭DES算法,而日本使用了松下公司提出的一種加擾算法。通用加擾算法是DVB標(biāo)準(zhǔn)組織推薦的對(duì)于TS流的標(biāo)準(zhǔn)加 擾算法。目前,在歐洲的數(shù)字廣播節(jié)目中普遍采用了這個(gè)算法。我國(guó)目前商業(yè)化的CA中,TS節(jié)目的加擾也基本上是 采用的這個(gè)算法。如果從的角度,攻破這個(gè)算法的意義要遠(yuǎn)遠(yuǎn)大于智能卡和攻破CA系統(tǒng)本身。 2、對(duì)控制字的加密算法一般采用RSA以及3DES算法,各家CA廠商各不相同。值得一提的是DVB里有一個(gè)規(guī)定,提到的 同密技術(shù)要求每個(gè)CA系統(tǒng)可以使用不同的加密系統(tǒng)加密各自的相關(guān)信息,但對(duì)節(jié)目?jī)?nèi)容的加擾必須采用同一個(gè)加擾 算法和加擾控制字,可以方便多級(jí)運(yùn)營(yíng)商的管理,為多級(jí)運(yùn)營(yíng)商選擇條件接收系統(tǒng)提供了靈活性。這就為黑客攻破 智能卡創(chuàng)造了條件。 3、對(duì)加密體制,不同廠家的系統(tǒng)差別很大,其技術(shù)大體有兩種: 一種是以愛(ài)迪德系統(tǒng)為代表的密碼循環(huán)體制,另一 種是以NDS系統(tǒng)為代表的利用專(zhuān)有算法來(lái)進(jìn)行保護(hù),由于牽涉到系統(tǒng)安全性,廠家一般不會(huì)公開(kāi)。因此從角度, 對(duì)系統(tǒng)的是難度也是比較大的。 第一章:CA智能卡的與反制 第一節(jié) 對(duì)于CA智能卡的分為兩種, 1、從硬件的角度,完全地仿照正版卡來(lái)定制IC卡; 2、 從軟件的方向,將正版卡的程序讀出,最后將程序?qū)懭隝C卡中,就變成與正卡無(wú)差別的D卡了。 仿制正版卡,可以將IC卡的觸點(diǎn)剝離下來(lái),再將保護(hù)的塑料蝕掉,暴露出元件和內(nèi)部電路連接,就可以繪制 成電原理圖,最后交給能訂制生產(chǎn)的IC卡的廠家生產(chǎn)。這些仿制還有一個(gè)冠冕堂皇的名稱(chēng)叫“反向工程”。國(guó)內(nèi)在 深圳和廈門(mén)等地都有能生產(chǎn)定制IC卡的廠家,在利益的驅(qū)使下,他們往往不會(huì)過(guò)問(wèn)敏感問(wèn)題。 IC卡中的元件如果是通用元件,通??梢酝ㄟ^(guò)IC卡的功能原理的分析來(lái)確定,雖然困難,但總是可以最終確 定。例如深圳目前直接使用流在市面上的ROM10與ROM11卡來(lái)制成D卡,ROM10與ROM11實(shí)際上是XX系統(tǒng)正版卡的“基礎(chǔ) 卡”,這些卡具有與正版卡相同的硬件基礎(chǔ),至于怎么流落到社會(huì)上的不得而知,但有一個(gè)事實(shí)就是大家應(yīng)該都收 到過(guò)安裝衛(wèi)星電視的短信,這是個(gè)可以想象的到的異常龐大的地下產(chǎn)業(yè)! 繼續(xù):IC卡中的元件如果是專(zhuān)用元件,確定元件的事情就變得極其困難和十分渺茫了。那么這個(gè)時(shí)候硬件仿 制的路走不通了,那么看看軟件仿真的路能不能走得通。 再看軟件仿真的路能不能走得通前,首先闡明軟件仿真的路能不能走得通有不同的判斷標(biāo)準(zhǔn)。 如果僅以在一段時(shí)段中,軟件仿真的D卡與正版卡都具有相同的條件收視功能來(lái)判斷,那么無(wú)疑,從D卡的實(shí)踐來(lái)看 ,軟件仿真已經(jīng)成功了。 但如果以任何時(shí)段中,軟件仿真的D卡與正版卡都具有相同的功能,特別是對(duì)抗反制的功能來(lái)判斷,那么我要 說(shuō),同樣無(wú)疑,軟件仿真是不可能成功的。 因此我們僅承認(rèn)這種事實(shí)就夠了:自動(dòng)對(duì)抗新的反制,使D卡與正版卡一樣免除后顧之憂(yōu),肯定是D卡研究的 終極目標(biāo)。但是即便達(dá)不到這個(gè)目標(biāo),只要能保證一段時(shí)間的仿真成功,CA的商業(yè)價(jià)值就依然存在! 補(bǔ)充說(shuō)明反制:由于D卡的成功,尤其是帶AU(自動(dòng)換Key0/Key1)的D卡程序的廣泛擴(kuò)散,正版服務(wù)商感到 了巨大的壓力,逐步開(kāi)始采用種種反制手段,讓D版的AU卡實(shí)效。 我們先研究一下這個(gè)反制是個(gè)什么東東:學(xué)習(xí)和搞嵌入式控制器開(kāi)發(fā)的人都用過(guò)仿真器,如“偉?!毕盗械?/font> MCS-51的仿真器等。大家一定知道硬件仿真與軟件仿真存在一個(gè)本質(zhì)區(qū)別,即I/O功能的不同。一條取端口引腳值的 指令就足以區(qū)分是硬件仿真還是軟件仿真了。硬件仿真可以真實(shí)地取到引腳上的實(shí)際輸入,而軟件仿真得到的只能 是不會(huì)變化的內(nèi)存仿真值。 利用這個(gè)原理實(shí)現(xiàn)的反制程序分為兩部分,前面的部分通過(guò)I/O端口的訪(fǎng)問(wèn),區(qū)別出是真的硬件存在,還是 軟件仿真;后半部分對(duì)非法的仿真卡簡(jiǎn)單地返回主程序,不能解開(kāi)Key0/Key1;對(duì)正版卡,則修改Key0/Key1,使之 正確,然后返回主程序并保存key,保存的Key0/Key1用于ECM的解碼。 從歷次搜集的反制EMM中的方法中,可以將反制歸納為兩種,一種是從硬件或軟件上區(qū)別D卡與正版卡,從而 產(chǎn)生條件分支指令,使D卡仿真的程序失效;另一種是調(diào)用D卡中不可能有的,只有正版卡硬件才具備的MAP子程序, 使D卡無(wú)法執(zhí)行正確的程序。 先介紹前一種方法: 使用硬件端口區(qū)別正版卡與仿真卡的反制方法,由于具有特殊性能的端口數(shù)的限制,因此不可能有多種變化 ,一旦Hacker知道了反制的EMM結(jié)構(gòu)與原理,很容易就可以避開(kāi)端口判斷的指令,直接轉(zhuǎn)到修改Key0/Key1部分。這 雖然并不是程序指令的直接仿真,只能算是功能仿真,卻可以使已知反制失效。 另外你也許會(huì)提出一些其他辦法,如目前的一些Nagra系統(tǒng)在下行的EMM命令中加入了甄別真?zhèn)魏汀皻⒖ā敝?/font> 令,對(duì)于“正改卡”,毫不留情地清除卡中程序并且讓它成為廢卡。 我可以說(shuō),為了對(duì)抗“殺卡”,這類(lèi)“正改卡”的程序如果采用Block技術(shù),可以抵抗多數(shù)殺卡指令,同樣 能夠使這類(lèi)“正改卡”得以安全使用。 先寫(xiě)到這,后面介紹根據(jù)正版卡特有的機(jī)器指令代碼,讓正版卡能進(jìn)行解碼、而沒(méi)有正版卡程序的仿真卡 無(wú)法正確解碼、從而獲得KEY的EMM思路。 第二節(jié): 以下介紹根據(jù)正版卡特有的機(jī)器指令代碼,讓正版卡能進(jìn)行解碼,而沒(méi)有正版卡程序的仿真卡無(wú)法正確解碼, 從而獲得KEY的EMM思路。 按照道理,D卡使用的是AVR或其他類(lèi)型的CPU,“正改卡”中的程序與正版卡也不相同,照理這些卡中都沒(méi)有正 版ROM10/ROM11卡的程序。因此,用只有正版卡才有的特定機(jī)器指令代碼作為密鑰來(lái)解密key0與key1,自然是十分聰 明的反制措施。 該反制的EMM以前146Dream TV可能曾使用過(guò)。目前XG有線(xiàn)又重新啟用,大致在一個(gè)周期的8天中,有兩天使用本 類(lèi)EMM,另外6天使用另一個(gè)“超級(jí)MAP”程序。 這種反制的具體思路是: 下行的EMM中攜帶的Key與Key1是經(jīng)過(guò)加密編碼的,不能直接使用。解開(kāi)它們需要的密鑰“種子”(即產(chǎn)生密鑰 的原始數(shù)據(jù))的地址由下行的EMM給出。注意!EMM中并沒(méi)有給出密鑰“種子”,而是給出了它們?cè)谡鍾OM10/ROM11 卡程序存儲(chǔ)區(qū)中的地址,這個(gè)地址是隨機(jī)數(shù),不同的key0/key1,地址就不同。它的值總是大于S4000,防止取到 ROM10卡低端的無(wú)法讀出的無(wú)意義內(nèi)容。反制設(shè)計(jì)者設(shè)想,D卡或“正改卡”無(wú)法獲得正版卡的內(nèi)部程序,因此,即 使給出了地址,D卡也無(wú)法取得正確的機(jī)器碼作為密鑰的“種子”,自然也就無(wú)法生成密鑰,解開(kāi)key0/key1了。 對(duì)于正版卡,按照給出的地址,取到16字節(jié)的機(jī)器指令代碼,經(jīng)過(guò)類(lèi)似計(jì)算Hash效驗(yàn)的方法,產(chǎn)生正確的密鑰 ,再對(duì)key0/key1進(jìn)行DES編碼運(yùn)算,就解出正確的key0/key1了。 上面介紹的“利用正版卡程序隨機(jī)地址處的機(jī)器碼作為Key的解碼密鑰”的EMM反制方法非常厲害,曾難倒了一 大批的高手。 對(duì)比一下昨天前一篇帖子中給出的EMM與上面介紹的EMM,就會(huì)發(fā)現(xiàn),前一篇帖子中給出的EMM是一種簡(jiǎn)單的反制 ,只要知道了正確的Key0/Key1,再經(jīng)過(guò)認(rèn)真分析和思考,就會(huì)明白其反制原來(lái)并找出解出Key的方法,目前Dream TV的反制都屬于這類(lèi)簡(jiǎn)單反制;但上面今天介紹的EMM是一種高級(jí)和復(fù)雜的反制,即使知道了正確的Key0/Key1,也 難以得知其反制的原理與找出解key的方法,目前XG有線(xiàn)和國(guó)外一些CA系統(tǒng)采用的是這類(lèi)反制。由于XX的反制匯聚在 低級(jí)和高級(jí)的兩類(lèi)難度上,所以黑客們懷疑這是兩類(lèi)不同水平的技術(shù)人員的作品。低級(jí)難度的反制是衛(wèi)視服務(wù)系統(tǒng) 內(nèi)部技術(shù)人員的手筆,而高級(jí)的反制則直接出自CA系統(tǒng)研制人員的杰作。 兩種級(jí)別的反制也將國(guó)內(nèi)修改、編寫(xiě)D卡程序的高手分成了兩類(lèi):有一些寫(xiě)一點(diǎn)程序應(yīng)付低級(jí)反制的,往往采用 “頭痛醫(yī)頭、腳痛醫(yī)腳”的補(bǔ)丁程序,可以對(duì)付目前146-Dream TV的反制;只有少數(shù)高手 中的高手具有整體編寫(xiě)程 序以及仿真MAP功能的能力,能采用更合理的對(duì)抗策略,能研制出復(fù)雜程序和新類(lèi)型的D卡,最終可以對(duì)付高級(jí)難度 的反制。對(duì)付低級(jí)反制寫(xiě)出對(duì)抗程序的時(shí)間大約是數(shù)小時(shí)到幾天,而對(duì)付高級(jí)反制找到方法并寫(xiě)出程序的時(shí)間往往 需要數(shù)個(gè)月之久,而且還需要國(guó)內(nèi)外Hacker 們的協(xié)同配合。國(guó)內(nèi)高手中的高手人數(shù)很少,都是單兵作戰(zhàn)和埋頭苦干 的,與其他高手之間一般互不交流。 本節(jié)介紹的“利用正版卡程序隨機(jī)地址處的機(jī)器碼作為Key的解碼密鑰”的EMM反制方法十分成功,但它采用程 序的機(jī)器碼作為解開(kāi)Key的密鑰,可能會(huì)出現(xiàn)以下幾個(gè)問(wèn)題: 1. 如果電視系統(tǒng)歷史悠久,在用的卡可能有幾種,那么可能產(chǎn)生內(nèi)部機(jī)器指令碼不盡相同的問(wèn)題; 2. 如果電視系統(tǒng)想要更新程序,也可能存在部分尚未更新程序的正版卡,同樣會(huì)產(chǎn)生內(nèi)部機(jī)器指令碼不相同的 問(wèn)題。這個(gè)問(wèn)題還可能阻止正版卡通過(guò)下行信號(hào)進(jìn)行的升級(jí):我們?cè)O(shè)想一下,正版卡用戶(hù)中,有的人天天看衛(wèi)視節(jié) 目,他們的卡順利升了級(jí),而一部分人外出,卡很久都沒(méi)有使用了,剛回來(lái)想看衛(wèi)視,結(jié)果因?yàn)榭ǖ某绦虿粚?duì),無(wú) 法收看,肯定對(duì)衛(wèi)視服務(wù)商大發(fā)雷霆。在用戶(hù)是上帝的外國(guó),電視服務(wù)商對(duì)可能引起用戶(hù)的怒氣一定很忌諱的。 3. 對(duì)該反制最致命打擊是,可以設(shè)法讀出正版卡作為密鑰的那一部分程序機(jī)器碼,通過(guò)在 D卡的硬件上安排外 部EEPROM,存儲(chǔ)量有64KB、128KB、256KB等,將正版卡作為密鑰的程序機(jī)器碼全部保存起來(lái),解開(kāi)KEY時(shí),照樣可以 從外部EEPROM中取到與正版卡一樣的解Key的密鑰,來(lái)對(duì)抗反制,使該方法失效,這是該類(lèi)反制的終結(jié)者。 經(jīng)過(guò)了利用軟件仿真在I/O功能上的區(qū)別進(jìn)行的反制和利用正版卡指令代碼作為密鑰進(jìn)行的反制之后,目前幾個(gè) 在運(yùn)行的CA系統(tǒng)(146的Dream TV與其他衛(wèi)視,XG以及國(guó)內(nèi)一些地方的本地有線(xiàn)數(shù)字電視等)紛紛進(jìn)入了使用MAP功 能來(lái)進(jìn)行反制的階段。 使用正版卡中的MAP編碼/解碼協(xié)處理器進(jìn)行反制,是正版卡在設(shè)計(jì)階段就預(yù)留的終極反制殺手??梢钥吹剑?/font> 版卡設(shè)計(jì)者防范于未然,預(yù)估到終有一天,第一道門(mén)(ECM與EMM的解碼)將被攻破,預(yù)先留好了第二道門(mén)做最后的 防守。未雨綢繆,是我們不得不佩服這些設(shè)計(jì)者的智慧與遠(yuǎn)見(jiàn)。 第三節(jié) 在深入討論MAP功能及其仿真實(shí)現(xiàn)之前,為了后續(xù)文章讀起來(lái)不算費(fèi)勁,需要先說(shuō)明兩個(gè)方面的知識(shí):一是什么是收 視卡防守的第一道門(mén)與第二道門(mén)? 二是EMM指令與Logging等知識(shí)。 今天讓我們先說(shuō)說(shuō)什么是收視卡防守的第一道門(mén)與第二道門(mén)? 收視卡是防止非法收視的守門(mén)員,在卡中設(shè)計(jì)了多種加密方法,最主要的有解決收視功能的ECM和自動(dòng)換key的EMM的 解密,它們的解碼是第一道門(mén)。ECM與EMM的編碼與解碼使用的雖是不同的方法,但都是固定不變的標(biāo)準(zhǔn)方法。不同 的條件接收系統(tǒng)僅僅是編碼/解碼采用的數(shù)據(jù)有不同而已。舉個(gè)例子,有的卡可以解開(kāi)多個(gè)同一類(lèi)型CA系統(tǒng),該類(lèi)卡 是按照下行的ECM或EMM的系統(tǒng)標(biāo)識(shí)(如146 Dream TV為4E和4F,XG有線(xiàn)為94和95等)選擇不同的數(shù)據(jù),而運(yùn)行的程 序基本相同的。 仍然以XX為例,ECM的編/解碼采用DES與EDES算法,其原理早已公之于世。編/解碼所用的S_Boxes數(shù)據(jù)也已經(jīng)公開(kāi), 并且在不同的系統(tǒng)中固定不變。與標(biāo)準(zhǔn)的DES相比,XX系統(tǒng)的DES只是多了對(duì)字節(jié)進(jìn)行了反序排列而已。ECM使用的 VerifyKey等數(shù)據(jù),通過(guò)后門(mén)密碼進(jìn)入正版卡保留的數(shù)據(jù)空間,可以讀出這些關(guān)鍵的信息,加上BoxKey等信息,只要 能獲得當(dāng)前的Key0/Key1,就可以配合IRD解開(kāi)解密收視用的控制字(Control Word),可以正常收看衛(wèi)視節(jié)目。 ECM的解碼可以解決收視的問(wèn)題,但還需要手動(dòng)輸入Key0/Key1。如果要象正版卡一樣自動(dòng)換Key即所謂的AU,就需要 能解開(kāi)EMM,并能正確地找到并保存Key0/Key1。與ECM的解碼相比,EMM的解碼要復(fù)雜的多!經(jīng)過(guò)Hacker的努力,EMM 的RSA編碼原理已經(jīng)完全弄明白,所需要的PK,VK等數(shù)據(jù)也可以通過(guò)Hacker的軟件和ROM10/ROM11卡的后門(mén)讀出,再 算出N1,P,Q,EP,EQ,IQModP,IPModQ,PPrimA,QPrimA等方便編程的數(shù)據(jù), 就可以順利解出EMM。 收視卡的第二道門(mén)是對(duì)EMM 中Key解密的防守。它的方法沒(méi)有固定的套路,可以任意變化。如XX系統(tǒng)的設(shè)計(jì)者安排了 可以通過(guò)EMM中攜帶程序的執(zhí)行,以及正版卡通過(guò)下行信號(hào)更新的EEPROM中補(bǔ)丁程序的運(yùn)行來(lái)解碼。正版卡設(shè)計(jì)者可 能料到攻破第一道門(mén)是遲早的事,于是第二道門(mén)上的防守就成了最后的防線(xiàn)。前面章節(jié)介紹的幾種對(duì)EMM中的 Key0/Key1進(jìn)行再加密,就是在第二道門(mén)上的防守。它的思路是:當(dāng)EMM解開(kāi)后,如果其中的Key0,Key1是經(jīng)過(guò)加密 的,D卡仍然無(wú)法得到正確的Key。 國(guó)內(nèi)早期的D卡程序是移植國(guó)外Hacker 的,針對(duì)想收視的系統(tǒng),修改了相應(yīng)的數(shù)據(jù)就可以實(shí)現(xiàn)本地化,由于要得到 正確的Key需要的解碼方法沒(méi)有固定的套路,Hacker不可能事先料到,總是要反制后分析它的原理,再更新部分D卡 程序,進(jìn)行對(duì)抗和補(bǔ)救。一般人沒(méi)有自己編寫(xiě)D卡程序的能力,即使有寫(xiě)卡器掌握了寫(xiě)卡方法,但程序又難以得到, 這些麻煩會(huì)迫使許多人放棄D卡,轉(zhuǎn)而加入正版卡繳費(fèi)收視的行列。 不過(guò)正版卡雖好,但其高額的收視費(fèi)還是讓國(guó)內(nèi)廣大愛(ài)好者望之卻步,大家的希望還是寄托在D卡程序的完善上,希 望終有一天,D卡能與正版卡一樣不受反制。 第四節(jié) EMM指令與Logging知識(shí) EMM是“授權(quán)控制命令”,簡(jiǎn)單說(shuō)就是“更改收視卡中信息的命令”?,F(xiàn)有系統(tǒng)如XX系統(tǒng)中 的EMM命令很多,EMM指令 中的FA(針對(duì)ROM10卡)和FB(針對(duì)ROM11卡)是所有EMM指令中功能最為強(qiáng)大的指令。在該指令中攜帶了6805指令寫(xiě) 的小段程序。CAM(收視卡)將EMM解碼后,將該EMM攜帶的機(jī)器指令碼存入正版卡從S81開(kāi)始的固定地址。以子程序 調(diào)用的方式,轉(zhuǎn)到該地址,執(zhí)行這段程序。這段程序的結(jié)束可以只是一個(gè)簡(jiǎn)單的子程序返回指令,也可以用轉(zhuǎn)移指 令轉(zhuǎn)到保存Key的子程序去。前者一般不保存Key,后者才保存Key。 還以XX系統(tǒng)為例,其EMM長(zhǎng)度最大為64字節(jié),既要包含Key0/Key1和一些標(biāo)識(shí)與過(guò)濾指令,又要包含一小段程序。受 到大小的限制,程序的長(zhǎng)度不能超過(guò)37個(gè)字節(jié)。對(duì)于復(fù)雜的解碼反制,程序很長(zhǎng)時(shí),一般通過(guò)下行的信息將大部分 的程序?qū)懙秸婵ǖ腅EPROM中,由EMM中的小段程序來(lái)調(diào)用,正如XG有線(xiàn)當(dāng)前的反制所采用的方法。對(duì)于二次加密了 的Key0/Key1,只有正確執(zhí)行該段程序后,才可以還原Key0/Key1。 防止D卡正確執(zhí)行該部分程序是不難做到的,實(shí)際上,由于D卡采用的CPU不是6805家族的,D卡也不直接執(zhí)行該段程 序,但防止D卡研制者人工判讀該段程序卻是極端困難的。 如果D卡研制者采用人工判讀的方法,讀懂了新的EMM的反制原理,找到對(duì)抗反制的方 法,那么就可以在反制后的不 長(zhǎng)時(shí)間內(nèi)研制出升級(jí)改進(jìn)的對(duì)抗程序。這些程序通常會(huì)放到專(zhuān)業(yè)的黑客網(wǎng)站上開(kāi)放給眾多黑客會(huì)員下載,具體地址 本文就不討論了,只是要說(shuō)明這些網(wǎng)站確實(shí)存在,而且很活躍,這也是對(duì)DVBCN論壇上CA廠家的那些穿著皇帝新裝的 搶手最大的一個(gè)諷刺,說(shuō)什么“ca是很安全的”之類(lèi)的自欺欺人的瞎話(huà),有空的話(huà)還是花點(diǎn)精力去琢磨琢磨仿制和 復(fù)制的區(qū)別,看看自己的水平到了什么地步,能不能入流。 判讀EMM內(nèi)容與反匯編其中的6805程序的步驟如下: 1、 通過(guò)某種手段,將EMM紀(jì)錄下來(lái)。這個(gè)步驟也稱(chēng)為L(zhǎng)ogging,Logging通??梢酝ㄟ^(guò)1020卡或通過(guò)Season 卡等來(lái)進(jìn)行卡等來(lái)進(jìn)行。有的高級(jí)黑客用的Logging是用含有自己寫(xiě)的特殊程序的卡,在新的含Key的EMM到來(lái)時(shí)寫(xiě)入 EEPROM,再用寫(xiě)卡器讀出即可;(一般圈內(nèi)沒(méi)有1020卡,都是用自己寫(xiě)的卡程序log。) 2、 將Logging的文件交給XX程序。該軟件是學(xué)習(xí)和分析EMM、ECM以及XX系統(tǒng)其他信息的優(yōu)秀軟件,其中含 有不少有用的工具,對(duì)此有興趣的網(wǎng)友應(yīng)當(dāng)熟悉它的使用; 3、 如果你的XX程序目錄中含有正確的ROM10/ROM11的BIN,Keys.INI,Labels.INI,以及Routimes.INI等 文件,那么XX程序中的EMM XX功能會(huì)將該EMM解開(kāi),反匯編并加注釋成為易讀的源程序; 4、 閱讀EMM程序與包含的數(shù)據(jù),對(duì)比已知的正確的Key0/Key1,分析之后就可能知道反制的原理,但也可能分析之后仍然找不出頭緒。 如果分析明白了,就可以著手編程。對(duì)于1020卡,程序按照6805匯編語(yǔ)言編寫(xiě),匯編后加入ROM10/ROM11.BIN文件, 放到Fennir的XX目錄下;對(duì)于Fun卡,按照AVR匯編語(yǔ)言編程,替換或修改原來(lái)卡的部分程序,匯編成*.hex就可以使 用了。對(duì)于從事嵌入式控制器工作,或是信息類(lèi)專(zhuān)業(yè)的人,編這些程序應(yīng)當(dāng)不是什么難事,但要編得好,卻也不容 易。對(duì)計(jì)算機(jī)匯編語(yǔ)言不熟悉的人,要自編程序,當(dāng)然要先學(xué)習(xí)和實(shí)踐,能否成功,全看各人努力和造化了。 第五節(jié)MAP 本節(jié)開(kāi)始說(shuō)起MAP攻略的技術(shù)基礎(chǔ)知識(shí),有網(wǎng)友該問(wèn)了為什么是基礎(chǔ)知識(shí)而不是詳細(xì)介紹?該攻略是全世界高手共同 努力得出的寶貴結(jié)果,可想而知,這份資料的寶貴不言而喻!由于是在DVBCN這種公開(kāi)論壇,另外當(dāng)初寫(xiě)這些文字也 是因?yàn)橐粫r(shí)意氣用事和一個(gè)叫tsexpert的網(wǎng)友進(jìn)行理論,結(jié)果到現(xiàn)在該老兄跑得無(wú)影無(wú)蹤,偶爾回個(gè)帖也是顧左右 而言他,對(duì)于技術(shù)的推演無(wú)片言只語(yǔ)的貢獻(xiàn),變成了我孤家寡人在這里賣(mài)弄,所以也就沒(méi)意思了動(dòng)力也小了很多, 因此本文不準(zhǔn)備展開(kāi)和深入介紹。詳細(xì)的研究和討論,可以在日后歸納出“MAP技術(shù)專(zhuān)題”資料了專(zhuān)門(mén)交流,不過(guò)就 不是這種方法了。 OK,切入正題。XG有線(xiàn)“新例”超級(jí)反制的程序是利用MAP進(jìn)行的反制程序。由于反制十分復(fù)雜,程序較長(zhǎng),所以分 為兩部分:小部分的是EMM攜帶的程序,大部分是通過(guò)下行信號(hào)預(yù)先已經(jīng)存入EEPROM的程序。通過(guò)閱讀它們,hacker 們可以了解MAP的調(diào)用($90E3)在反制中的作用。 調(diào)用MAP的EMM有難有易,以Dream TV為例,其MAP $0E功能就可以通過(guò)正確的Key,比較容易猜出來(lái),它是與成片數(shù) 據(jù)交換有關(guān)的操作;而XG有線(xiàn)調(diào)用的MAP $11,$28,$39,$3A功能就極難猜出來(lái),就像是一個(gè)“謎”。 反制進(jìn)入使用MAP功能的階段后,D卡要對(duì)抗反制,必須研究MAP功能,只有弄懂了有關(guān)的MAP功能,并且在功能上仿 真它們,才可以有效對(duì)抗這類(lèi)反制。大家可能會(huì)設(shè)想:如果我們將MAP協(xié)處理器的功能都了解了,將它們都仿真出來(lái) ,那么不就可以與正版卡完全一樣了嗎?不過(guò)要弄懂MAP的功能,可不是一件容易的事。先讓我們了解一下協(xié)處理器 是什么東西: iB 一般計(jì)算機(jī)為了處理數(shù)據(jù)的需要,可以配上協(xié)處理器。協(xié)處理器的程序是不對(duì)外開(kāi)放的,它 的程序存儲(chǔ)區(qū)對(duì)其它器 件而言是完全隔離和封閉的。無(wú)論如何,用目前的技術(shù)和手段,我們都讀不出Map協(xié)處理器的程序。因此,徹底了解 MAP協(xié)處理器的功能,是不可能的,除非開(kāi)發(fā)MAP的技術(shù)人員被收買(mǎi)了或派間諜打入了研制MAP協(xié)處理器的公司,盜取 了它的技術(shù)資料...。這又有點(diǎn)像tsexpert老兄前面說(shuō)的中央情報(bào)局的笑話(huà)故事了。 gy9 想像帶來(lái)虛幻的快感,卻不能解決問(wèn)題,要解決問(wèn)題,還是腳踏實(shí)地,認(rèn)真學(xué)習(xí)與研究。 ROMX卡調(diào)用MAP功能是通過(guò)一個(gè)固定入口地址$9E03的子程序?qū)崿F(xiàn)的,該子程序稱(chēng)為:CALL_MAP,調(diào)用時(shí)必須在A寄存 器中存入MAP的功能號(hào)。 我們看到EMM實(shí)際執(zhí)行的是一段很長(zhǎng)的程序,EMM中的部分只是其中的一小段,絕大部分都存到了EEPROM區(qū),它們是 通過(guò)下行信號(hào)寫(xiě)入卡中的EEPROM的。 據(jù)我所知,ROM3或ROM10或ROM11的正版卡在$4000~$99FF的程序代碼都相同,它們存在ROM區(qū),是固定不能改變的, 如果改變了,那么,“利用正版卡程序隨機(jī)地址處的機(jī)器碼作為Key的解碼密鑰”的EMM反制方法就要產(chǎn)生兼容性問(wèn) 題了(這也許就是ROM卡稱(chēng)謂的由來(lái))。Hacker們將這部分程序稱(chēng)為ROM卡的“ROM區(qū)基本程序”??◤?fù)位后執(zhí)行的就 是這部分的程序。 ?Kg{q-u- 那么固定程序的ROMX卡是如何改變其程序的功能呢? 不少網(wǎng)友都知道,只要在ROM卡中可以改寫(xiě)的EEPROM區(qū)中按規(guī)定寫(xiě)入*.BIN文件的程 序代碼,就可以改變ROMX卡的實(shí) 際功能。 那么為什么在EEPROM區(qū)寫(xiě)入的程序代碼能改變程序執(zhí)行時(shí)的實(shí)際流程呢?這是如何做到的呢? PC微機(jī)的操作系統(tǒng)或程序,如Windows,發(fā)現(xiàn)了Bug,用補(bǔ)丁更改時(shí),需要先下載補(bǔ)丁,然后運(yùn)行有關(guān)修補(bǔ)程序,改 變?cè)瓉?lái)程序的代碼,才能完成修補(bǔ)。這種修補(bǔ)通常是在原來(lái)程序中要修改之處放上轉(zhuǎn)移指令,轉(zhuǎn)到補(bǔ)丁程序,執(zhí)行后再回到原來(lái)的程序繼續(xù)完成后續(xù)工作。這是修改程序功能常用的辦法。 但如果原來(lái)的程序不像PC微機(jī)那樣存在硬盤(pán)上可以更改,而是存在不可更改的ROM區(qū),補(bǔ)丁下載后,沒(méi)有改變?cè)瓉?lái)程序的任何部分,補(bǔ)丁就可以自動(dòng)起作用,就是奇怪的事了! 由于ROM區(qū)基本程序不可更改,又要能自動(dòng)運(yùn)行裝入EEPROM區(qū)中的補(bǔ)丁程序,ROM卡的設(shè)計(jì)者想出了一種巧妙的方法 。該方法能自動(dòng)檢查EEPROM區(qū)是否有補(bǔ)丁程序,補(bǔ)丁程序補(bǔ)在原來(lái)程序的什么地方,如何自動(dòng)運(yùn)行這些補(bǔ)丁程序等 等。 有了這種巧妙的方法,在不改變ROM卡基本程序的前提下,只要將添加的程序或數(shù)據(jù)存入可更改的EEPROM區(qū),卡的程 序功能就可以得到增強(qiáng)或修改,就可以在不必收回或報(bào)廢原來(lái)卡的情況下,適應(yīng)各種不同的衛(wèi)視系統(tǒng)或其他應(yīng)用, 或?qū)ㄟM(jìn)行升級(jí)換代,特別地,可以通過(guò)下行信號(hào)自動(dòng)變更原來(lái)程序的邏輯功能。 第六節(jié): 為了學(xué)習(xí)和掌握D卡技術(shù),必須能夠讀懂別人編寫(xiě)的程序,然后再自己修改或編寫(xiě)自己的程序,所有這些,都需要了 解匯編語(yǔ)言源程序知識(shí)??梢哉f(shuō)匯編語(yǔ)言程序知識(shí)是D卡技術(shù)入門(mén)的一道門(mén)檻,跨過(guò)了這道門(mén)檻,就得到了一把打開(kāi) 寶庫(kù)的鑰匙。有不少網(wǎng)友開(kāi)始上信誓旦旦,但往往乘興而來(lái),敗興而去,不少人開(kāi)始畏難,甚至逃跑了,就是難以跨 越匯編語(yǔ)言這道門(mén)檻。同時(shí)因?yàn)楹罄m(xù)章節(jié)中經(jīng)常提到ASM、HEX、BIN等格式的文件,因此調(diào)整一下文章結(jié)構(gòu),補(bǔ)充一 點(diǎn)匯編語(yǔ)言程序基礎(chǔ)知識(shí),真正想學(xué)習(xí)的網(wǎng)友友,還是要自己找資料踏踏實(shí)實(shí)系統(tǒng)地學(xué)習(xí)。 匯編語(yǔ)言源程序(簡(jiǎn)稱(chēng)“源程序”)是面向CPU的低層語(yǔ)言,該語(yǔ)言的指令(注意:不稱(chēng)為“語(yǔ)句”)與CPU的 機(jī)器指令代碼一一對(duì)應(yīng)。對(duì)不同類(lèi)型CPU的計(jì)算機(jī),指令不同。源程序可以編寫(xiě)或通過(guò)反匯編得到。運(yùn)行匯編程序就 可以將匯編語(yǔ)言源程序轉(zhuǎn)為機(jī)器語(yǔ)言目標(biāo)代碼,這個(gè)轉(zhuǎn)換稱(chēng)為“匯編”(注意:不稱(chēng)為“編譯”)。源程序?yàn)榧兾?/font> 本文件,擴(kuò)展名一般為ASM。目標(biāo)代碼文件格式很多,常用的有Intel的HEX格式和存機(jī)器碼的BIN格式等,它們都可 以被編程器接受用于將代碼燒寫(xiě)入CPU或EEPROM等存儲(chǔ)介質(zhì)中。計(jì)算機(jī)CPU只能執(zhí)行機(jī)器指令。 匯編語(yǔ)言源程序的指令有兩種,一種是對(duì)應(yīng)CPU執(zhí)行的機(jī)器碼的“助記符指令”,另一種是指示匯編程序工作的 “偽指令”,再有一種“宏指令”實(shí)際上屬于偽指令,它可以用一個(gè)符號(hào)串簡(jiǎn)化表示很多符號(hào)信息。 用一種類(lèi)型的CPU執(zhí)行另一種CPU的程序,只能用仿真的方式,實(shí)現(xiàn)其功能,而不 能直接照搬來(lái)執(zhí)行。 在Nagra系統(tǒng)的Hack領(lǐng)域,常見(jiàn)的匯編語(yǔ)言有ST7/6805和AVR等,前者是正版卡的語(yǔ)言,后者是仿真卡的語(yǔ)言。 以下給出一些范例: 某種EMM攜帶的6805的源程序: Org $0081 ; 指定以下程序或數(shù)據(jù)開(kāi)始地址 StartAddr81H: Lda $CE01 ; A:=EEPROM單元 [$CE01] Cmp #$01 ; 該單元內(nèi)容是否等于$01 Bne $A7 ; 如果不是,則EEPROM未裝入適當(dāng)?shù)某绦?,退?00A7 Jmp $CE02 ; 否則EEPROM有適當(dāng)?shù)某绦?,轉(zhuǎn)去執(zhí)行該程序 #N9=i7 @3 匯編后的地址、機(jī)器碼與源程序?yàn)椋海ㄔ摬糠质?.LST即列表文件,它包含了源程序和匯編后機(jī)器指令或數(shù)據(jù),地址 等) Org $0081 ; 指定以下程序或數(shù)據(jù)開(kāi)始地址 0081: C6 CE 01 StartAddr81H: lda $CE01 ; A:=EEPROM單元 [$CE01] 0084: A1 01 cmp #$01 ; 該單元內(nèi)容是否等于$01 0086: 26 A7 bne $A7 ; 如果不是,則EEPROM未裝入適當(dāng)?shù)某绦?,退?00A7 0088: CC CE 02 jmp $CE02 ; 否則EEPROM有適當(dāng)?shù)某绦?,轉(zhuǎn)去執(zhí)行該程序 。。。。。。。 以上部分略。 從以上范例中我們可以看到一些普遍規(guī)律(這幾點(diǎn)請(qǐng)認(rèn)真記錄): 0. 計(jì)算機(jī)識(shí)別的信息都是二進(jìn)制數(shù),或簡(jiǎn)潔標(biāo)示的十六進(jìn)制形式。 如十六進(jìn)制與二進(jìn)制的不同形式:$C6=0xC6=0C6H = 0B11000110=%11000110=11000110B 等 1. 相同程序功能,但CPU不同,則機(jī)器指令碼不同,不能互換。 2. 匯編語(yǔ)言源程序由4部分組成: 標(biāo)號(hào) 操作碼 操作數(shù) 注釋 StartAddr81H: Lds r16,$CE01 ; A:=EEPROM單元 [$CE01] 3. Org或.Org是偽指令,它不產(chǎn)生對(duì)應(yīng)的機(jī)器指令,但仍起了一定的作用。 4. 多數(shù)指令是助記符指令,它們都產(chǎn)生了一一對(duì)應(yīng)的機(jī)器指令,它們都要占據(jù)一定的存儲(chǔ)單元,都有對(duì)應(yīng)的地 址。 5. CPU按照指令的地址,逐條取出機(jī)器指令并執(zhí)行,如果沒(méi)有轉(zhuǎn)移操作,就按照順序執(zhí)行。 6. 匯編語(yǔ)言源程序很難看懂和記憶,因此需要認(rèn)真寫(xiě)注釋?zhuān)话阕⑨屖怯糜⑽膶?xiě),也可以用中文。 7. HEX文件有特定的格式,它包含地址,數(shù)據(jù)和效驗(yàn)和,十分嚴(yán)謹(jǐn)和靈活。 第七節(jié) 為了研究正版卡的反制,特別是XG有線(xiàn)類(lèi)型的高級(jí)反制,不僅要研究帶Key的EMM,還要關(guān)注和跟蹤修改EEPROM的EMM 。一直關(guān)注這些EMM動(dòng)向的黑客會(huì)從相關(guān)論壇得到正版卡修改后的EEPROM代碼,它們一般以*.BIN的形式給出。 如果得到了ROM卡的*.BIN文件,就可以了解到正版卡在EEPROM中加入了哪些新的補(bǔ)丁程序或采取了什么反制方 法。 研究和了解的第一步是反匯編。反匯編是將機(jī)器指令或數(shù)據(jù)代碼轉(zhuǎn)為源程序的一種操作,它是匯編過(guò)程的反向 操作,是反向工程的一種手段。 一般開(kāi)發(fā)產(chǎn)品,自主編寫(xiě)源程序后,主要的工作是匯編,很少反匯編。但黑客在我國(guó)衛(wèi)視界的過(guò)程中,卻 常常進(jìn)行反匯編。 原因之一,是因?yàn)樗讲粔?,無(wú)法自編源程序,只好用國(guó)外或國(guó)內(nèi)高手贈(zèng)送的目標(biāo)代碼通過(guò)反匯編來(lái)轉(zhuǎn)為源程 序,再進(jìn)行學(xué)習(xí)和修改,這成了必要的步驟。 原因之二,是研究正版卡的反制方法與原理的需要,必須通過(guò)反匯編將EMM或EEPROM中的機(jī)器碼轉(zhuǎn)為易讀的源程 序,再進(jìn)行分析和研究。 匯編是將源程序轉(zhuǎn)換為目標(biāo)代碼的過(guò)程,它比較簡(jiǎn)單,指令或數(shù)據(jù)轉(zhuǎn)為機(jī)器碼時(shí)都是唯一的,沒(méi)有二義性;而 反匯編就復(fù)雜得多!由于二進(jìn)制代碼的多義性,即,同一個(gè)字節(jié),可以代表多種信息,它即可以代表CPU的操作指令 ,又可以代表各種字符、無(wú)符號(hào)數(shù)、帶符號(hào)數(shù)、浮點(diǎn)數(shù)和其他種種信息,因此,一般情況下反匯編是不可能返回匯 編前的源程序的,如果反匯編能將指令或數(shù)據(jù)正確區(qū)別開(kāi)來(lái),就是很不錯(cuò)的了。 大家可能有疑問(wèn):要反匯編的是程序,只要轉(zhuǎn)為助記符指令就可以了,怎么還會(huì)有轉(zhuǎn)為數(shù)據(jù)的問(wèn)題呢?為什么 難以區(qū)別程序與數(shù)據(jù)呢? 原來(lái),程序是指令與數(shù)據(jù)的集合,程序存儲(chǔ)區(qū)中即可以存放CPU的指令,又可以存放程序使用的數(shù)據(jù),它們都是 二進(jìn)制代碼。在源程序中,不僅有CPU執(zhí)行的指令,也還有程序用到的數(shù)據(jù),這些數(shù)據(jù)是用數(shù)據(jù)定義偽指令來(lái)描述的 。指令與數(shù)據(jù)匯編后產(chǎn)生的目標(biāo)代碼都是二進(jìn)制數(shù),它們可能是指令也可能是數(shù)據(jù),單從二進(jìn)制代碼本身并不能區(qū) 別出它們是指令還是數(shù)據(jù)。 以**卡的EEPROM中的部分機(jī)器碼反匯編為例: 在**.BIN文件中,取從地址$CE18開(kāi)始的機(jī)器碼:CD CB 21 00 96 02 70 08 A6 01 用反匯編軟件,如XX軟件中的XX功能,反匯編得到的源程序:(是錯(cuò)誤的) CE18: CD CB 21 jsr $CB21 ; 調(diào)用子程序$CB21 CE1B: 00 96 02 brset0 $96, $CE20 ; 如果$96單元的位0=1則轉(zhuǎn)到$CE20 CE1E: 70 neg $X ; 對(duì)X尋址的單元進(jìn)行求負(fù)操作 CE1F: 08 A6 01 brset4 $A6, $CE23 ; 如果$A6單元的位4=1則轉(zhuǎn)到 $CE23 正確的反匯編應(yīng)當(dāng)?shù)玫揭韵略闯绦颍?/font> CE18 CD CB 21 jsr $CB21 ; 調(diào)用子程序$CB21,將$0096開(kāi)始的$08個(gè)字節(jié)數(shù)據(jù)復(fù)制到$0270開(kāi)始 的單元中 CE1B 00 96 02 dc.b $00,$96,$02,$70,$08; 這六個(gè)字節(jié)是傳給子程序$CB21的數(shù)據(jù),用偽指令“dc.b”來(lái) 描述 CE1E 70 08 CE20 A6 01 ld a, #$01 ; a 取值$01 對(duì)比以上兩個(gè)反匯編的源程序,就可以看出,反匯編后的源程序差別有多大! 前面的反匯編沒(méi)有正確區(qū)別指令與數(shù)據(jù),得到的源程序?qū)⒄`導(dǎo)閱讀者,使之無(wú)法了解正確的程序思路。 而后面的反匯編正確區(qū)別了數(shù)據(jù)與指令,閱讀者就可以明白程序的思路。 像這樣的情形大量發(fā)生在XG有線(xiàn)的超級(jí)反制程序中,正如某黑客所講:“cb 與ce code內(nèi),有很多都是特別的 subroutine,用Xx功能時(shí)要小心一點(diǎn),否則會(huì)看到不明所以…尤其是"cd" 等字眼,多是地址位置而不是opcode。早 一頁(yè)post 出的就是例子,自己用XX軟件時(shí)會(huì)出現(xiàn)不同結(jié)果。而keychange 的bytedump 部分全是random parameters for MAP CALL,再多例子也沒(méi)分別。再有不明可以大家研究一下,反正結(jié)果都會(huì)是『謎』一個(gè)! 第八節(jié) 反匯編2 真正的源程序的價(jià)值是非常高的,而簡(jiǎn)單反匯編得到的所謂源程序就沒(méi)有什么價(jià)值,因?yàn)檫@樣的源程序難以閱 讀,難以修改。 如何能將目標(biāo)代碼轉(zhuǎn)換成為真正的源程序呢? 以下是正確反匯編的基本步驟: 1. 反匯編首先要選對(duì)反匯編的工具程序XX,反匯編工具應(yīng)當(dāng)針對(duì)目標(biāo)代碼適用的CPU。亂抓一個(gè)來(lái),也可以反 匯編,但產(chǎn)生出來(lái)的是莫名其妙的東西。一般的匯編程序都順便帶有反匯編的功能,也有專(zhuān)門(mén)的反匯編工具可以使 用。大型的反匯編工具使用起來(lái)比較復(fù)雜,初學(xué)者可以先試試簡(jiǎn)單的。 2. 其次,反匯編得到的源程序要能再匯編成為目標(biāo)代碼,這個(gè)目標(biāo)代碼必須與原先用于反匯編的目標(biāo)代碼完全 相同,這可以檢驗(yàn)反匯編是否基本正確。 3. 再次,反匯編得到的源程序必須經(jīng)過(guò)人工的閱讀、分析和判斷,確定哪些是指令代碼,哪些是數(shù)據(jù),確定之 后,再告訴反匯編工具程序,讓它做相應(yīng)的處理,產(chǎn)生更合理的源程序。這個(gè)步驟要反復(fù)進(jìn)行,直到數(shù)據(jù)和指令正 確分離為止。判斷哪些是數(shù)據(jù),哪些是指令,要有敏銳的觀察力。通常,如果出現(xiàn)“Unknown”字樣,或不合邏輯的 指令(如對(duì)同一個(gè)變量重復(fù)賦值等),或程序沒(méi)有入口標(biāo)號(hào)等,就可以認(rèn)為這部分是數(shù)據(jù);如果程序中出現(xiàn)了不合 理的標(biāo)號(hào),說(shuō)明其它地方還存在數(shù)據(jù)被當(dāng)成指令的錯(cuò)誤。 4. 最后,對(duì)這種反匯編得到的原始源程序進(jìn)行人工修改,使用有意義的變量名、常數(shù) 名和子程序名替換原來(lái)沒(méi) 有意義的標(biāo)號(hào),加上詳細(xì)的注釋?zhuān)罱K才形成真正的源程序。這一步是一個(gè)再創(chuàng)造的過(guò)程,是反匯編中最難和最關(guān) 鍵的工作。不會(huì)編程的人,一般無(wú)法完成這一步,因此說(shuō)“反匯編是一個(gè)再創(chuàng)造的過(guò)程,需要的能力絕不比編程低 !”,是否真正能得到可以供修改和繼續(xù)開(kāi)發(fā)的源程序,關(guān)鍵都在這一步。可以說(shuō),反匯編的工作,工具軟件僅僅 幫了我們反匯編工作的其中一小部分,僅處理了那些死板的固定套路的事,而關(guān)鍵的智力活動(dòng)都必需要人來(lái)完成。 許多初學(xué)者可能過(guò)分相信和依賴(lài)工具軟件,這是不正確的。好的工具軟件可以幫助我們,減輕不少繁瑣的勞動(dòng) 。但工具是死的,而人是活的,是創(chuàng)造性的源泉。反匯編這種需要高智力的勞動(dòng),更是單純依靠工具軟件不可能完 成的。 以下例子是部分取自146-D卡中的Flash程序,用于說(shuō)明上述反匯編過(guò)程: 第九節(jié) 反匯編3 要了解正版卡的反制原理,首先要反匯編ROM卡中EEPROM的程序。仍以XXCA使用的ROM卡為例: 該ROM卡使用的CPU是ST7,它是STMicroelectronix8位處理器家族的成員,指令系統(tǒng)與硬件結(jié)構(gòu)向下兼容Motorola的 6805計(jì)算機(jī),可以直接執(zhí)行EMM中攜帶的6805指令集。 通過(guò)下行的信號(hào)對(duì)ROM卡更新后,產(chǎn)生了新的程序。這些新的EEPROM的信息往往以*.BIN文件的形式出現(xiàn)在一些黑客 網(wǎng)站上。我們得到后,可以選擇文件中我們有興趣的一部分信息,交給Xx軟件進(jìn)行反匯編。之所以選擇Xx軟件,是 因?yàn)閄x軟件專(zhuān)門(mén)針對(duì)ROM卡,它的反匯編具有一定智能,可以自動(dòng)處理變量名、ROM卡中已知的子程序和特定子程序 夾帶的數(shù)據(jù)等,還可以加上注釋?zhuān)恢灾粚?duì)一部分代碼反匯編,是因?yàn)閄x軟件對(duì)反匯編調(diào)入的代碼長(zhǎng)度有限制, 不允許超過(guò)4KB即$1000。 下面以XG有線(xiàn)反制的EEPROM程序的反匯編為例,介紹ROM卡的*.BIN文件中部分代碼進(jìn)行反匯編的基本方法: 根據(jù)Xx軟件解開(kāi)的EMM,我們可以看到XG有線(xiàn)下行的EMM中夾帶了這樣的一段程序: 。。。。。。。(略) 從中我們知道,一切的關(guān)鍵都在$CE03這個(gè)子程序中,必須要反匯編存在ROM卡的EEPROM中的地址為$CE02開(kāi)始的程序 。 1. 將含有$CE02程序的*.BIN文件讀入某種編程器的緩沖區(qū),緩沖區(qū)地址從$0000開(kāi)始。記住ROM10/ROM11文件的 *.BIN文件是從$C000地址開(kāi)始的。 2. 計(jì)算保存文件的開(kāi)始地址=需要反匯編的程序地址的開(kāi)始地址-$C090。如,希望反匯編$CE02開(kāi)始的子程序,則 計(jì)算出的保存文件開(kāi)始地址=$ CE02-$C090=$0D72。 3. 用編程器保存文件的功能,保存一份文件,文件類(lèi)型為*.BIN,保存的緩沖區(qū)地址為計(jì)算得到的開(kāi)始地址,文 件長(zhǎng)度為$1000。注意:Xx軟件的Xx只接受長(zhǎng)度為$1000的文件。例,保存文件名定為:CE02.BIN,開(kāi)始地址為$0D72 ,長(zhǎng)度為$1000。 4. 進(jìn)入Xx軟件,點(diǎn)擊Xx功能,點(diǎn)擊“Extract Bss Code From EEPROM Image…”,選擇在3.中保存的文件名,將 Initial Addresses和Code Base 都改為程序的真實(shí)地址,如在上例中,地址都改為$CE02,選擇ROM卡的類(lèi)型,如 ROM10,最后點(diǎn)擊“XX!”,完成反匯編。 5. 當(dāng)然,特殊的子程序,如后面跟隨數(shù)據(jù)的,反匯編可能不正確,需要人工判讀,并采取 特殊處理(處理方法略 )。 第十節(jié)介紹MAP與反制原理,第十一節(jié)介紹如何用程序來(lái)仿真。 不過(guò)看現(xiàn)在的情形,大家對(duì)算法的討論感興趣的比 較多,因此覺(jué)得有必要停下來(lái)討論討論算法的問(wèn)題??赡苡腥苏f(shuō),一提算法可能又會(huì)把問(wèn)題搞的非常發(fā)散,最終又 會(huì)偏離我們的主題太遠(yuǎn),但談CA又不可能不提算法,所以我們暫且轉(zhuǎn)貼一篇網(wǎng)絡(luò)上流行的基礎(chǔ)帖子,從這里插 敘開(kāi)始談起: 轉(zhuǎn)貼:CA算法的方法 理論上說(shuō),CA算法的方法有兩種:一種是解析法,另一種是窮舉法。 解析法是根據(jù)CA的算法,找到其中的要素,推斷出未知因素從而算法,這是一種相對(duì)比較有把握的方法。對(duì)于 一種固定的算法,從算法理論上說(shuō),它由四個(gè)要素構(gòu)成:第一是被加密的對(duì)象(明文);第二是加密完成的結(jié)果(密文 );第三是實(shí)現(xiàn)加密的數(shù)學(xué)模式;第四是采用的密碼。在電視廣播應(yīng)用中,一般來(lái)說(shuō),明文和密文是可以獲取的,算 法是不能保密的(易泄露),密鑰是大家攻擊的對(duì)象,一旦密鑰被攻破,加密的方法也就隨之告破。雖然科學(xué)家們?cè)O(shè) 計(jì)了很多種巧妙的算法,但是卻沒(méi)有人敢保證自己的算法是不可的。但是通過(guò)系統(tǒng)實(shí)現(xiàn)可以增加算法的難 度:把兩重算法結(jié)合在一起,將第一重加密算法的密文作為第二重加密算法的明文,這樣用戶(hù)只能看到原始的明文 和兩次加密以后的密文,如此就無(wú)法找到每個(gè)算法三大要素的對(duì)應(yīng)關(guān)系,從而無(wú)法用解析法來(lái)推斷密碼。 目前絕大 多數(shù)CA被都使用了窮舉法。由于明文和密文形成了一定的對(duì)應(yīng)關(guān)系,只要拿到足夠多的明文和密文對(duì),通過(guò)數(shù) 學(xué)的試探方法可以找出中間的對(duì)應(yīng)關(guān)系。對(duì)窮舉法的防御一方面要加大密鑰的長(zhǎng)度,使明文和密文的位數(shù)大大加長(zhǎng) ,另一種方法是讓者無(wú)法在一定的時(shí)間段內(nèi)拿到足夠多的對(duì)應(yīng)關(guān)系,典型的做法是將時(shí)間因子作為加密內(nèi)容加 進(jìn)去。只要時(shí)間不重復(fù),明文和密文就很難找到對(duì)應(yīng)的關(guān)系。 但有了一個(gè)好的算法并不表示系統(tǒng)就是安全的,如果 在實(shí)施過(guò)程中留下了漏洞,還是有機(jī)會(huì)被破密。如果CA的算法很?chē)?yán)密,但全是由外部計(jì)算機(jī)軟件實(shí)現(xiàn)的,只要有一 個(gè)手段高明的黑客,就可以比較容易地將程序下載下來(lái),經(jīng)過(guò)反匯編,讀取原始代碼,從而密碼。在歐洲某國(guó) 就發(fā)生過(guò)這樣的事,有個(gè)系統(tǒng)工程師下載了某CA的程序,成功地進(jìn)行了破譯?,F(xiàn)在,為了提高系統(tǒng)的安全性,人們 普遍采用了軟硬結(jié)合的方法,把核心的算法和密鑰都放在保密性相對(duì)較好的專(zhuān)用IC卡里,使破密者無(wú)法打開(kāi)IC卡里 的內(nèi)部程序,從而保護(hù)核心機(jī)密。所以考察安全性的另一個(gè)要素,就是要判斷廠商提供的IC卡是否足夠安全,是否 有國(guó)際國(guó)內(nèi)的相應(yīng)標(biāo)準(zhǔn)能夠認(rèn)證其安全等級(jí)。如果IC卡本身不夠安全,那么CA再?gòu)?qiáng)大也無(wú)濟(jì)于事。另外,IC卡必須 是專(zhuān)用卡,絕不能將在其他領(lǐng)域通用的卡用作數(shù)字電視IC卡,以免破密者因可以輕易獲得所需的卡而大大增加破密 的機(jī)會(huì)。 MAP 前幾節(jié)談了不少反匯編的方法,通過(guò)反匯編可以閱讀程序,了解不少程序的原理,這種方法對(duì)于得到目標(biāo)代碼的情 形,是十分直接和有用的方法,但對(duì)于MAP功能,卻無(wú)能為力,因?yàn)镸AP程序的代碼無(wú)法得到! 對(duì)于MAP功能的分析,只有通過(guò)不斷調(diào)用MAP的某個(gè)功能,用不同的輸入數(shù)據(jù)喂給它,觀察它的輸出從而判讀出MAP完 成的是何種操作。 由于MAP協(xié)處理器在ROM卡的內(nèi)部,因此要實(shí)現(xiàn)不斷測(cè)試MAP功能的操作,需要特殊的方法: 1. 需要編寫(xiě)一段特殊的類(lèi)似“Trojon Horse(木馬)”的程序(行內(nèi)稱(chēng)為“MAPLogger”),該程序的功能是在 EEPROM中紀(jì)錄MAP執(zhí)行前ROM卡有關(guān)內(nèi)存的數(shù)據(jù),然后調(diào)用MAP功能,執(zhí)行后在EEPROM中紀(jì)錄MAP調(diào)用后ROM卡有關(guān)內(nèi)存 的數(shù)據(jù); 2. 修改ROM卡EEPROM中的部分程序,用MAPLogger的調(diào)用取代原先MAP的調(diào)用,讓MAPLogger程序起作用; 3. 將特定的EMM發(fā)送給ROM卡,讓它執(zhí)行EMM中的程序,觸發(fā)引起調(diào)用特定的MAP Call,這時(shí),我們埋伏在其中的 MAPLogger會(huì)起作用,紀(jì)錄下我們希望看到的數(shù)據(jù); 4. 將ROM卡的EEPROM區(qū)讀出,取出MAPLogger 紀(jì)錄的數(shù)據(jù),供分析和研究。 這種嵌入-logging的方法是hanker們研究的常用手段。 對(duì)于ROM卡,需要的工具與軟件有: 1.XX 寫(xiě)卡器,寫(xiě)卡器的晶振頻率應(yīng)當(dāng)為3.38MHZ。 圖解: 寫(xiě)卡器的作用是配合XX和XX軟件,完成:往ROM10卡中寫(xiě)入*.BIN文件,發(fā)送 或其他信息;從ROM10卡的 EEPROM中讀出紀(jì)錄的信息。 MAPLogger程序由某個(gè)高手編寫(xiě)成功,又經(jīng)其他高手反匯編后加上注釋?zhuān)谐鋈缦拢﹨⒖迹海▽?duì)特定讀者,略) MAPLogger的嵌入與使用方法如下: 例如,我們想了解EMM 解Key中用到的MAP-$28功能,我們可以先找到有關(guān)的程序: 然后,將:jsr $90E3 機(jī)器碼為:CD90 E3 改為: jsr $c702 機(jī)器碼為:CD C7 02 即,將CE4A地址處的CD 90 E3改為:CD 07 02就可以了。 這個(gè)工作要直接針對(duì)*.BIN文件修改,最好要有編程器,調(diào)入原來(lái)的*.BIN文件,查找定位到要修改的地方,直接將 十六進(jìn)制數(shù)改到緩沖區(qū)中,存盤(pán)后就得到了嵌入MAPLogger的*.bin文件。 第一章:CA智能卡的與反制 第二章:流行CA系統(tǒng)的漏洞分析實(shí)踐 第三章:流行CA應(yīng)用算法的分析設(shè)想 討論綜述 CA安全保障的三層關(guān)鍵:傳輸流的加擾,控制字的加密,加密體制的保護(hù)。 這三種技術(shù)是CA系統(tǒng)重要的組成部分,在處理技術(shù)上有相似之處,但在CA系統(tǒng)標(biāo)準(zhǔn)中是獨(dú)立性很強(qiáng)的三個(gè)部分。加解擾技術(shù)被用來(lái)在發(fā)送端CA系統(tǒng)的控制下改變或控制被傳送的服務(wù)(節(jié)目)的某些特征,使未被授權(quán)的用戶(hù)無(wú)法獲取該服務(wù)提供的利益;而加密技術(shù)被用來(lái)在發(fā)送端提供一個(gè)加密信息,使被授權(quán)的用戶(hù)端解擾器能以此來(lái)對(duì)數(shù)據(jù)解密;而保密機(jī)制則用于控制該信息,并以加密形式配置在傳輸流信息中以防止非授權(quán)用戶(hù)直接利用該信息進(jìn)行解擾,不同的CA系統(tǒng)管理和傳送該信息的機(jī)制有很大不同。在目前各標(biāo)準(zhǔn)組織提出的條件接收標(biāo)準(zhǔn)中,加擾部分往往力求統(tǒng)一,而在加密部分和保密機(jī)制則一般不作具體規(guī)定,是由各廠商定義的部分。 1、對(duì)傳輸流的加擾,DVB已有標(biāo)準(zhǔn)。目前在國(guó)際上占主流的有歐洲的DVB標(biāo)準(zhǔn)、北美國(guó)家的ATSC標(biāo)準(zhǔn)及日本的ISDB標(biāo)準(zhǔn)三種標(biāo)準(zhǔn)中,對(duì)于CA部分都作了簡(jiǎn)單的規(guī)定,并提出了三種不同的加擾方式。歐洲D(zhuǎn)VB組織提出了一種稱(chēng)之為通用加擾算法(Common Scrambling Algorithm)的加擾方式,由DVB組織的四家成員公司授權(quán),ATSC組織使用了通用的三迭DES算法,而日本使用了松下公司提出的一種加擾算法。通用加擾算法是DVB標(biāo)準(zhǔn)組織推薦的對(duì)于TS流的標(biāo)準(zhǔn)加擾算法。目前,在歐洲的數(shù)字廣播節(jié)目中普遍采用了這個(gè)算法。我國(guó)目前商業(yè)化的CA中,TS節(jié)目的加擾也基本上是采用的這個(gè)算法。如果從的角度,攻破這個(gè)算法的意義要遠(yuǎn)遠(yuǎn)大于智能卡和攻破CA系統(tǒng)本身。 2、對(duì)控制字的加密算法一般采用RSA以及3DES算法,各家CA廠商各不相同。值得一提的是DVB里有一個(gè)規(guī)定,提到的同密技術(shù)要求每個(gè)CA系統(tǒng)可以使用不同的加密系統(tǒng)加密各自的相關(guān)信息,但對(duì)節(jié)目?jī)?nèi)容的加擾必須采用同一個(gè)加擾算法和加擾控制字,可以方便多級(jí)運(yùn)營(yíng)商的管理,為多級(jí)運(yùn)營(yíng)商選擇條件接收系統(tǒng)提供了靈活性。這就為黑客攻破智能卡創(chuàng)造了條件。 3、對(duì)加密體制,不同廠家的系統(tǒng)差別很大,其技術(shù)大體有兩種: 一種是以愛(ài)迪德系統(tǒng)為代表的密碼循環(huán)體制,另一種是以NDS系統(tǒng)為代表的利用專(zhuān)有算法來(lái)進(jìn)行保護(hù),由于牽涉到系統(tǒng)安全性,廠家一般不會(huì)公開(kāi)。因此從角度,對(duì)系統(tǒng)的是難度也是比較大的。 第一章:CA智能卡的與反制 第一節(jié) 對(duì)于CA智能卡的分為兩種, 1、從硬件的角度,完全地仿照正版卡來(lái)定制IC卡; 2、 從軟件的方向,將正版卡的程序讀出,最后將程序?qū)懭隝C卡中,就變成與正卡無(wú)差別的D卡了。 仿制正版卡,可以將IC卡的觸點(diǎn)剝離下來(lái),再將保護(hù)的塑料蝕掉,暴露出元件和內(nèi)部電路連接,就可以繪制成電原理圖,最后交給能訂制生產(chǎn)的IC卡的廠家生產(chǎn)。這些仿制還有一個(gè)冠冕堂皇的名稱(chēng)叫“反向工程”。國(guó)內(nèi)在深圳和廈門(mén)等地都有能生產(chǎn)定制IC卡的廠家,在利益的驅(qū)使下,他們往往不會(huì)過(guò)問(wèn)敏感問(wèn)題。 IC卡中的元件如果是通用元件,通常可以通過(guò)IC卡的功能原理的分析來(lái)確定,雖然困難,但總是可以最終確定。例如深圳目前直接使用流在市面上的ROM10與ROM11卡來(lái)制成D卡,ROM10與ROM11實(shí)際上是XX系統(tǒng)正版卡的“基礎(chǔ)卡”,這些卡具有與正版卡相同的硬件基礎(chǔ),至于怎么流落到社會(huì)上的不得而知,但有一個(gè)事實(shí)就是大家應(yīng)該都收到過(guò)安裝衛(wèi)星電視的短信,這是個(gè)可以想象的到的異常龐大的地下產(chǎn)業(yè)! 繼續(xù):IC卡中的元件如果是專(zhuān)用元件,確定元件的事情就變得極其困難和十分渺茫了。那么這個(gè)時(shí)候硬件仿制的路走不通了,那么看看軟件仿真的路能不能走得通。 再看軟件仿真的路能不能走得通前,首先闡明軟件仿真的路能不能走得通有不同的判斷標(biāo)準(zhǔn)。 如果僅以在一段時(shí)段中,軟件仿真的D卡與正版卡都具有相同的條件收視功能來(lái)判斷,那 么無(wú)疑,從D卡的實(shí)踐來(lái)看,軟件仿真已經(jīng)成功了。 但如果以任何時(shí)段中,軟件仿真的D卡與正版卡都具有相同的功能,特別是對(duì)抗反制的功能來(lái)判斷,那么我要說(shuō),同樣無(wú)疑,軟件仿真是不可能成功的。 因此我們僅承認(rèn)這種事實(shí)就夠了:自動(dòng)對(duì)抗新的反制,使D卡與正版卡一樣免除后顧之憂(yōu),肯定是D卡研究的終極目標(biāo)。但是即便達(dá)不到這個(gè)目標(biāo),只要能保證一段時(shí)間的仿真成功,CA的商業(yè)價(jià)值就依然存在! 補(bǔ)充說(shuō)明反制:由于D卡的成功,尤其是帶AU(自動(dòng)換Key0/Key1)的D卡程序的廣泛擴(kuò)散,正版服務(wù)商感到了巨大的壓力,逐步開(kāi)始采用種種反制手段,讓D版的AU卡實(shí)效。 我們先研究一下這個(gè)反制是個(gè)什么東東:學(xué)習(xí)和搞嵌入式控制器開(kāi)發(fā)的人都用過(guò)仿真器,如“偉?!毕盗械腗CS-51的仿真器等。大家一定知道硬件仿真與軟件仿真存在一個(gè)本質(zhì)區(qū)別,即I/O功能的不同。一條取端口引腳值的指令就足以區(qū)分是硬件仿真還是軟件仿真了。硬件仿真可以真實(shí)地取到引腳上的實(shí)際輸入,而軟件仿真得到的只能是不會(huì)變化的內(nèi)存仿真值。 利用這個(gè)原理實(shí)現(xiàn)的反制程序分為兩部分,前面的部分通過(guò)I/O端口的訪(fǎng)問(wèn),區(qū)別出是真的硬件存在,還是軟件仿真;后半部分對(duì)非法的仿真卡簡(jiǎn)單地返回主程序,不能解開(kāi)Key0/Key1;對(duì)正版卡,則修改Key0/Key1,使之正確,然后返回主程序并保存key,保存的Key0/Key1用于ECM的解碼。 從歷次搜集的反制EMM中的方法中,可以將反制歸納為兩種,一種是從硬件或軟件上區(qū)別D卡與正版卡,從而產(chǎn)生條件分支指令,使D卡仿真的程序失效;另一種是調(diào)用D卡中不可能有的,只有正版卡硬件才具備的MAP子程序,使D卡無(wú)法執(zhí)行正確的程序。 先介紹前一種方法: 使用硬件端口區(qū)別正版卡與仿真卡的反制方法,由于具有特殊性能的端口數(shù)的限制,因此不可能有多種變化,一旦Hacker知道了反制的EMM結(jié)構(gòu)與原理,很容易就可以避開(kāi)端口判斷的指令,直接轉(zhuǎn)到修改Key0/Key1部分。這雖然并不是程序指令的直接仿真,只能算是 功能仿真,卻可以使已知反制失效。 另外你也許會(huì)提出一些其他辦法,如目前的一些Nagra系統(tǒng)在下行的EMM命令中加入了甄別真?zhèn)魏汀皻⒖ā敝噶?,?duì)于“正改卡”,毫不留情地清除卡中程序并且讓它成為廢卡。 我可以說(shuō),為了對(duì)抗“殺卡”,這類(lèi)“正改卡”的程序如果采用Block技術(shù),可以抵抗多數(shù)殺卡指令,同樣能夠使這類(lèi)“正改卡”得以安全使用。 先寫(xiě)到這,后面介紹根據(jù)正版卡特有的機(jī)器指令代碼,讓正版卡能進(jìn)行解碼、而沒(méi)有正版卡程序的仿真卡無(wú)法正確解碼、從而獲得KEY的EMM思路。 電視機(jī)頂盒 數(shù)字機(jī)頂盒 機(jī)頂盒智能卡 創(chuàng)維數(shù)字機(jī)頂盒 第二節(jié): 以下介紹根據(jù)正版卡特有的機(jī)器指令代碼,讓正版卡能進(jìn)行解碼,而沒(méi)有正版卡程序的仿真卡無(wú)法正確解碼,從而獲得KEY的EMM思路。 按照道理,D卡使用的是AVR或其他類(lèi)型的CPU,“正改卡”中的程序與正版卡也不相同,照理這些卡中都沒(méi)有正版ROM10/ROM11卡的程序。因此,用只有正版卡才有的特定機(jī)器指令代碼作為密鑰來(lái)解密key0與key1,自然是十分聰明的反制措施。 該反制的EMM以前146Dream TV可能曾使用過(guò)。目前XG有線(xiàn)又重新啟用,大致在一個(gè)周期的8天中,有兩天使用本類(lèi)EMM,另外6天使用另一個(gè)“超級(jí)MAP”程序。 這種反制的具體思路是: 下行的EMM中攜帶的Key與Key1是經(jīng)過(guò)加密編碼的,不能直接使用。解開(kāi)它們需要的密鑰“種子”(即產(chǎn)生密鑰的原始數(shù)據(jù))的地址由下行的EMM給出。注意!EMM中并沒(méi)有給出密鑰“種子”,而是給出了它們?cè)谡鍾OM10/ROM11卡程序存儲(chǔ)區(qū)中的地址,這個(gè)地址是隨機(jī)數(shù),不同的key0/key1,地址就不同。它的值總是大于S4000,防止取到ROM10卡低端的無(wú)法讀出的無(wú)意義內(nèi)容。反制設(shè)計(jì)者設(shè)想,D卡或“正改卡”無(wú)法獲得正版卡的內(nèi)部程序,因此,即使給出了地址,D卡也無(wú)法取得正確的機(jī)器碼作為密鑰的“種子”,自然也就 無(wú)法生成密鑰,解開(kāi)key0/key1了。 對(duì)于正版卡,按照給出的地址,取到16字節(jié)的機(jī)器指令代碼,經(jīng)過(guò)類(lèi)似計(jì)算Hash效驗(yàn)的方法,產(chǎn)生正確的密鑰,再對(duì)key0/key1進(jìn)行DES編碼運(yùn)算,就解出正確的key0/key1了。 上面介紹的“利用正版卡程序隨機(jī)地址處的機(jī)器碼作為Key的解碼密鑰”的EMM反制方法非常厲害,曾難倒了一大批的高手。 對(duì)比一下昨天前一篇帖子中給出的EMM與上面介紹的EMM,就會(huì)發(fā)現(xiàn),前一篇帖子中給出的EMM是一種簡(jiǎn)單的反制,只要知道了正確的Key0/Key1,再經(jīng)過(guò)認(rèn)真分析和思考,就會(huì)明白其反制原來(lái)并找出解出Key的方法,目前Dream TV的反制都屬于這類(lèi)簡(jiǎn)單反制;但上面今天介紹的EMM是一種高級(jí)和復(fù)雜的反制,即使知道了正確的Key0/Key1,也難以得知其反制的原理與找出解key的方法,目前XG有線(xiàn)和國(guó)外一些CA系統(tǒng)采用的是這類(lèi)反制。由于XX的反制匯聚在低級(jí)和高級(jí)的兩類(lèi)難度上,所以黑客們懷疑這是兩類(lèi)不同水平的技術(shù)人員的作品。低級(jí)難度的反制是衛(wèi)視服務(wù)系統(tǒng)內(nèi)部技術(shù)人員的手筆,而高級(jí)的反制則直接出自CA系統(tǒng)研制人員的杰作。 兩種級(jí)別的反制也將國(guó)內(nèi)修改、編寫(xiě)D卡程序的高手分成了兩類(lèi):有一些寫(xiě)一點(diǎn)程序應(yīng)付低級(jí)反制的,往往采用“頭痛醫(yī)頭、腳痛醫(yī)腳”的補(bǔ)丁程序,可以對(duì)付目前146-Dream TV的反制;只有少數(shù)高手中的高手具有整體編寫(xiě)程序以及仿真MAP功能的能力,能采用更合理的對(duì)抗策略,能研制出復(fù)雜程序和新類(lèi)型的D卡,最終可以對(duì)付高級(jí)難度的反制。對(duì)付低級(jí)反制寫(xiě)出對(duì)抗程序的時(shí)間大約是數(shù)小時(shí)到幾天,而對(duì)付高級(jí)反制找到方法并寫(xiě)出程序的時(shí)間往往需要數(shù)個(gè)月之久,而且還需要國(guó)內(nèi)外Hacker 們的協(xié)同配合。國(guó)內(nèi)高手中的高手人數(shù)很少,都是單兵作戰(zhàn)和埋頭苦干的,與其他高手之間一般互不交流。 |