"); //-->
重开CA破解专题英雄帖:各路黑马黑客都请进!
重发一个CA破解的英雄帖,各路黑人黑马黑客都请进!
本来这个话题是只做不说的,但从魔道制约相得彰益的角度看,探讨这个话题还是有必要的。该行当从古至今一直兴盛不衰,说的冠冕堂皇一些,有的仿制国家也是大力支持的,因为它和国家以及人们的利益相关联,如军事设备,高新技术等!现在在CA行当里如果那个厂商闭门造车仍然天真的以为自己的产品万无一失那就错了,这个帖子就当是俺浇出来的第一瓢凉水吧!
首先再次说明,提这个话题不是鼓励破解,所谓邪不胜正,希望大家把这些学来的东西用在正确的途径上!
本讨论试图从以下几个步骤探讨CA的破解与反制:
第一章:CA智能卡的破解与反制
第二章:流行CA系统的漏洞分析实践
第三章:流行CA应用算法的破解分析设想
破解讨论综述
CA安全保障的三层关键:传输流的加扰,控制字的加密,加密体制的保护。
这三种技术是CA系统重要的组成部分,在处理技术上有相似之处,但在CA系统标准中是独立性很强的三个部分。加解扰技术被用来在发送端CA系统的控制下改变或控制被传送的服务(节目)的某些特征,使未被授权的用户无法获取该服务提供的利益;而加密技术被用来在发送端提供一个加密信息,使被授权的用户端解扰器能以此来对数据解密;而保密机制则用于控制该信息,并以加密形式配置在传输流信息中以防止非授权用户直接利用该信息进行解扰,不同的CA系统管理和传送该信息的机制有很大不同。在目前各标准组织提出的条件接收标准中,加扰部分往往力求统一,而在加密部分和保密机制则一般不作具体规定,是由各厂商定义的部分。
1、对传输流的加扰,DVB已有标准。目前在国际上占主流的有欧洲的DVB标准、北美国家的ATSC标准及日本的ISDB标准三种标准中,对于CA部分都作了简单的规定,并提出了三种不同的加扰方式。欧洲DVB组织提出了一种称之为通用加扰算法(Common Scrambling Algorithm)的加扰方式,由DVB组织的四家成员公司授权,ATSC组织使用了通用的三迭DES算法,而日本使用了松下公司提出的一种加扰算法。通用加扰算法是DVB标准组织推荐的对于TS流的标准加扰算法。目前,在欧洲的数字广播节目中普遍采用了这个算法。我国目前商业化的CA中,TS节目的加扰也基本上是采用的这个算法。如果从破解的角度,攻破这个算法的意义要远远大于破解智能卡和攻破CA系统本身。
2、对控制字的加密算法一般采用RSA以及3DES算法,各家CA厂商各不相同。值得一提的是DVB里有一个规定,提到的同密技术要求每个CA系统可以使用不同的加密系统加密各自的相关信息,但对节目内容的加扰必须采用同一个加扰算法和加扰控制字,可以方便多级运营商的管理,为多级运营商选择条件接收系统提供了灵活性。这就为黑客攻破智能卡创造了条件。
3、对加密体制,不同厂家的系统差别很大,其技术大体有两种: 一种是以爱迪德系统为代表的密码循环体制,另一种是以NDS系统为代表的利用专有算法来进行保护,由于牵涉到系统安全性,厂家一般不会公开。因此从破解角度,对系统的破解是难度也是比较大的。
第一章:CA智能卡的破解与反制
前言
对于广播电视尤其是卫星广播的电视节目通常有两种,一种是不加密的,称为FTA(Free To All),只要有一般的收视设备就可以收看。它一般是公益性质、宗教性质,宣传性质或广告性质的,其支撑费用通过其他途径得到;另一种是加密的,即所谓“有条件收视”,除了一般设备外,还需要收视卡才能收看。它一般是盈利性质的或是出于特殊理由的,前者是要收视者付费后才能收视,以便让节目商赚进尽可能多的钱;后者是仅让特定的人能享受,防止其他人接触。对于这两类加密节目,在用户需求的驱使下破解加密成为经济利益和黑客心理共同追逐的目标;为了防止被破解,许多公司和研究部门花重金聘请人才,研究和设计了各种各样的条件收视的加密系统。这些设计都十分复杂和聪明,但从实践来看,并不是十分有效。各流行的加密系统不断被攻破,不断更换卡上的密码也没有多少效果,有的干脆整体更新、升级。Viaccess,Nagravision,Irdeto,Conax等系统是被攻击最多的条件收视系统,目前也都出现了第二代,不少卫星电视台也进行了升级,但有的刚升级不久就已经被破解。这正是“水涨船高”,“道高一尺,魔高一丈”。多半是设计者对黑客们的能耐以及毅力估计不足,以为当前的设计已足够复杂,足以让试图破解者知难而退,不料黑客队伍中天才云集,高手成群,以此为乐,乐此不疲。于是在一个通过学习和知识的增长的同时又能享受信息特权的可能性的诱惑之下,许多人开始狂热地学习与解密收视有关的知识。----于是,CA系统不可攻破的理论神话,在倒背原理如流的开发者的梦想中破灭了。
第一章:CA智能卡的破解与反制
第一节
对于CA智能卡的破解分为两种,
1、从硬件破解的角度,完全地仿照正版卡来定制IC卡;
2、 从软件破解的方向,将正版卡的程序读出,最后将程序写入IC卡中,就变成与正卡无差别的D卡了。
仿制正版卡,可以将IC卡的触点剥离下来,再将保护的塑料蚀掉,暴露出元件和内部电路连接,就可以绘制成电原理图,最后交给能订制生产的IC卡的厂家生产。这些仿制还有一个冠冕堂皇的名称叫“反向工程”。国内在深圳和厦门等地都有能生产定制IC卡的厂家,在利益的驱使下,他们往往不会过问敏感问题。
IC卡中的元件如果是通用元件,通常可以通过IC卡的功能原理的分析来确定,虽然困难,但总是可以最终确定。例如深圳目前直接使用流在市面上的ROM10与ROM11卡来制成D卡,ROM10与ROM11实际上是XX系统正版卡的“基础卡”,这些卡具有与正版卡相同的硬件基础,至于怎么流落到社会上的不得而知,但有一个事实就是大家应该都收到过安装卫星电视的短信,这是个可以想象的到的异常庞大的地下产业!
继续:IC卡中的元件如果是专用元件,确定元件的事情就变得极其困难和十分渺茫了。那么这个时候硬件仿制的路走不通了,那么看看软件仿真的路能不能走得通。
再看软件仿真的路能不能走得通前,首先阐明软件仿真的路能不能走得通有不同的判断标准。
如果仅以在一段时段中,软件仿真的D卡与正版卡都具有相同的条件收视功能来判断,那么无疑,从D卡的实践来看,软件仿真已经成功了。
但如果以任何时段中,软件仿真的D卡与正版卡都具有相同的功能,特别是对抗反制的功能来判断,那么我要说,同样无疑,软件仿真是不可能成功的。
因此我们仅承认这种事实就够了:自动对抗新的反制,使D卡与正版卡一样免除后顾之忧,肯定是D卡研究的终极目标。但是即便达不到这个目标,只要能保证一段时间的仿真成功,CA破解的商业价值就依然存在!
补充说明反制:由于D卡的成功,尤其是带AU(自动换Key0/Key1)的D卡程序的广泛扩散,正版服务商感到了巨大的压力,逐步开始采用种种反制手段,让D版的AU卡实效。
我们先研究一下这个反制是个什么东东:学习和搞嵌入式控制器开发的人都用过仿真器,如“伟福”系列的MCS-51的仿真器等。大家一定知道硬件仿真与软件仿真存在一个本质区别,即I/O功能的不同。一条取端口引脚值的指令就足以区分是硬件仿真还是软件仿真了。硬件仿真可以真实地取到引脚上的实际输入,而软件仿真得到的只能是不会变化的内存仿真值。
利用这个原理实现的反制程序分为两部分,前面的部分通过I/O端口的访问,区别出是真的硬件存在,还是软件仿真;后半部分对非法的仿真卡简单地返回主程序,不能解开Key0/Key1;对正版卡,则修改Key0/Key1,使之正确,然后返回主程序并保存key,保存的Key0/Key1用于ECM的解码。
从历次搜集的反制EMM中的方法中,可以将反制归纳为两种,一种是从硬件或软件上区别D卡与正版卡,从而产生条件分支指令,使D卡仿真的程序失效;另一种是调用D卡中不可能有的,只有正版卡硬件才具备的MAP子程序,使D卡无法执行正确的程序。
先介绍前一种方法:
使用硬件端口区别正版卡与仿真卡的反制方法,由于具有特殊性能的端口数的限制,因此不可能有多种变化,一旦Hacker知道了反制的EMM结构与原理,很容易就可以避开端口判断的指令,直接转到修改Key0/Key1部分。这虽然并不是程序指令的直接仿真,只能算是功能仿真,却可以使已知反制失效。
另外你也许会提出一些其他办法,如目前的一些Nagra系统在下行的EMM命令中加入了甄别真伪和“杀卡”指令,对于“正改卡”,毫不留情地清除卡中程序并且让它成为废卡。
我可以说,为了对抗“杀卡”,这类“正改卡”的程序如果采用Block技术,可以抵抗多数杀卡指令,同样能够使这类“正改卡”得以安全使用。
先写到这,后面介绍根据正版卡特有的机器指令代码,让正版卡能进行解码、而没有正版卡程序的仿真卡无法正确解码、从而获得KEY的EMM思路。
最后说明一下,本来前面是有个这方面的讨论帖的,因为受不了有些干扰因素,一气之下自己开帖了,欢迎技术人士拍砖,善于人身攻击的高手免进!
补充编辑说明:9月30日,这个帖子没想到被管理员置顶了,为了不至于引起太多负面影响,我不断对我发表的言论进行修改,再次申明,破解CA不是什么深不可测的神秘魔术,这些东东现在已经不是什么卖X的遮羞布并不是只可意会不可言传,我仅仅本着基于学术研讨角度和态度来谈这件事,关键的技术细节我会用XX来代替的,真正到了利用这些技术去破解某个CA,还需要天赋,这个是学不来的,应当尊重的一个现实是:在今天这个领域目前许多高手同步研究已达到很高的水平,许多道理只差一层窗户纸,一捅就破了。一些关键的提示对一般人可能一点感觉也没有,但对于水平相近,在进行类似研究的人,就可能“一语点醒梦中人”,但是倘若不提示,和我没说有什么区别?相反真正的正版高手,反而会理解其中的含义把精力投入到更高水平的反制研究当中去,这点来看,披露CA的破解在网上公布的积极意义是远大于消极意义的----所谓的地球黑客都知道了只有厂家还不知道,这才是天下CA最大的讽刺和笑话呢!
转贴wengrey大作:
大家知道银行卡可以被复制吗?很简单的技术,商业化的技术想%保密是不可能的。
不过,想攻破银行卡密码就不简单了,银行卡密码是个性化一对一的,破解所花费的精力远远大于所获取的收益,因此一般是复制卡,然后通过其他手段盗密码。
所以,tsexpert兄不要再说什么复制卡很难的话了。
至于攻密码,因为CA采用广播机制,因此破解CA的密码可以一次攻击,n多卡收益,基于这个前提,复制CA卡是具备经济利益的。
再说CA公司的保密问题,理论上,商业化的系统不可能完全保证人员的保密的,因此,有CA公司内部攻破的基础。
再说,如果不知道算法,破密也是可行的,情报系统的破密,往往基于对对方的算法一无所知的基础上进行攻击的,这样做的基础是比较明文和密文,进而推算可能的加密算法……只要密文和明文的对应足够多,完全足以破密高手推算算法:大家知道,CA基于广播和商用的机制,明/密文是足够多的。
算法推演后破密,应该说是基于心理学、数学、密码学和大型计算机的工作,基本上说,一般密码的破密不是通过完全穷举破密的,而是部分穷举破密,甚至,如果选用算法具备漏洞,那么,破密的计算复杂性将大为简单。
攻广播系统的密码,是密码学破密中最简单的事情,如果具备足够好的商业流通体系,我相信,现有的CA公司没有说自己系统不被攻破的。
至于为什么集中在对卫星进行攻击,道理很简单:卫星的运营往往是跨国域的,因此,在中国破解,在美国发行,这样风险降低,收益增加,尤其,现在盗版卡基本上是发到发展中国家的。
第二节:
以下介绍根据正版卡特有的机器指令代码,让正版卡能进行解码,而没有正版卡程序的仿真卡无法正确解码,从而获得KEY的EMM思路。
按照道理,D卡使用的是****R或其他类型的CPU,“正改卡”中的程序与正版卡也不相同,照理这些卡中都没有正版ROM10/ROM11卡的程序。因此,用只有正版卡才有的特定机器指令代码作为密钥来解密key0与key1,自然是十分聪明的反制措施。
该反制的EMM以前146Dream TV可能曾使用过。目前XG有线又重新启用,大致在一个周期的8天中,有两天使用本类EMM,另外6天使用另一个“超级MAP”程序。
这种反制的具体思路是:
下行的EMM中携带的Key与Key1是经过加密编码的,不能直接使用。解开它们需要的密钥“种子”(即产生密钥的原始数据)的地址由下行的EMM给出。注意!EMM中并没有给出密钥“种子”,而是给出了它们在正版ROM10/ROM11卡程序存储区中的地址,这个地址是随机数,不同的key0/key1,地址就不同。它的值总是大于S4000,防止取到ROM10卡低端的无法读出的无意义内容。反制设计者设想,D卡或“正改卡”无法获得正版卡的内部程序,因此,即使给出了地址,D卡也无法取得正确的机器码作为密钥的“种子”,自然也就无法生成密钥,解开key0/key1了。
对于正版卡,按照给出的地址,取到16字节的机器指令代码,经过类似计算Hash效验的方法,产生正确的密钥,再对key0/key1进行DES编码运算,就解出正确的key0/key1了。
上面介绍的“利用正版卡程序随机地址处的机器码作为Key的解码密钥”的EMM反制方法非常厉害,曾难倒了一大批的高手。
对比一下昨天前一篇帖子中给出的EMM与上面介绍的EMM,就会发现,前一篇帖子中给出的EMM是一种简单的反制,只要知道了正确的Key0/Key1,再经过认真分析和思考,就会明白其反制原来并找出解出Key的方法,目前Dream TV的反制都属于这类简单反制;但上面今天介绍的EMM是一种高级和复杂的反制,即使知道了正确的Key0/Key1,也难以得知其反制的原理与找出解key的方法,目前XG有线和国外一些CA系统采用的是这类反制。由于XX的反制汇聚在低级和高级的两类难度上,所以黑客们怀疑这是两类不同水平的技术人员的作品。低级难度的反制是卫视服务系统内部技术人员的手笔,而高级的反制则直接出自CA系统研制人员的杰作。
两种级别的反制也将国内修改、编写D卡程序的高手分成了两类:有一些写一点程序应付低级反制的,往往采用“头痛医头、脚痛医脚”的补丁程序,可以对付目前146-Dream TV的反制;只有少数高手中的高手具有整体编写程序以及仿真MAP功能的能力,能采用更合理的对抗策略,能研制出复杂程序和新类型的D卡,最终可以对付高级难度的反制。对付低级反制写出对抗程序的时间大约是数小时到几天,而对付高级反制找到方法并写出程序的时间往往需要数个月之久,而且还需要国内外Hacker 们的协同配合。国内高手中的高手人数很少,都是单兵作战和埋头苦干的,与其他高手之间一般互不交流。
本节介绍的“利用正版卡程序随机地址处的机器码作为Key的解码密钥”的EMM反制方法十分成功,但它采用程序的机器码作为解开Key的密钥,可能会出现以下几个问题:
1. 如果电视系统历史悠久,在用的卡可能有几种,那么可能产生内部机器指令码不尽相同的问题;
2. 如果电视系统想要更新程序,也可能存在部分尚未更新程序的正版卡,同样会产生内部机器指令码不相同的问题。这个问题还可能阻止正版卡通过下行信号进行的升级:我们设想一下,正版卡用户中,有的人天天看卫视节目,他们的卡顺利升了级,而一部分人外出,卡很久都没有使用了,刚回来想看卫视,结果因为卡的程序不对,无法收看,肯定对卫视服务商大发雷霆。在用户是上帝的外国,电视服务商对可能引起用户的怒气一定很忌讳的。
3. 对该反制最致命打击是,可以设法读出正版卡作为密钥的那一部分程序机器码,通过在D卡的硬件上安排外部EEPROM,存储量有64KB、128KB、256KB等,将正版卡作为密钥的程序机器码全部保存起来,解开KEY时,照样可以从外部EEPROM中取到与正版卡一样的解Key的密钥,来对抗反制,使该方法失效,这是该类反制的终结者。
经过了利用软件仿真在I/O功能上的区别进行的反制和利用正版卡指令代码作为密钥进行的反制之后,目前几个在运行的CA系统(146的Dream TV与其他卫视,XG以及国内一些地方的本地有线数字电视等)纷纷进入了使用MAP功能来进行反制的阶段。
使用正版卡中的MAP编码/解码协处理器进行反制,是正版卡在设计阶段就预留的终极反制杀手。可以看到,正版卡设计者防范于未然,预估到终有一天,第一道门(ECM与EMM的解码)将被攻破,预先留好了第二道门做最后的防守。未雨绸缪,是我们不得不佩服这些设计者的智慧与远见。
今天到这里,明天继续!我一般晚上思路清醒,白天怪话连篇请各位见谅!各位仁兄,喜欢的就跟个帖吧!鼓励鼓励。
第三节
在深入讨论MAP功能及其仿真实现之前,为了后续文章读起来不算费劲,需要先说明两个方面的知识:一是什么是收视卡防守的第一道门与第二道门? 二是EMM指令与Logging等知识。
今天让我们先说说什么是收视卡防守的第一道门与第二道门?
收视卡是防止非法收视的守门员,在卡中设计了多种加密方法,最主要的有解决收视功能的ECM和自动换key的EMM的解密,它们的解码是第一道门。ECM与EMM的编码与解码使用的虽是不同的方法,但都是固定不变的标准方法。不同的条件接收系统仅仅是编码/解码采用的数据有不同而已。举个例子,有的卡可以解开多个同一类型CA系统,该类卡是按照下行的ECM或EMM的系统标识(如146 Dream TV为4E和4F,XG有线为94和95等)选择不同的数据,而运行的程序基本相同的。
仍然以XX为例,ECM的编/解码采用DES与EDES算法,其原理早已公之于世。编/解码所用的S_Boxes数据也已经公开,并且在不同的系统中固定不变。与标准的DES相比,XX系统的DES只是多了对字节进行了反序排列而已。ECM使用的VerifyKey等数据,通过后门密码进入正版卡保留的数据空间,可以读出这些关键的信息,加上BoxKey等信息,只要能获得当前的Key0/Key1,就可以配合IRD解开解密收视用的控制字(Control Word),可以正常收看卫视节目。
ECM的解码可以解决收视的问题,但还需要手动输入Key0/Key1。如果要象正版卡一样自动换Key即所谓的AU,就需要能解开EMM,并能正确地找到并保存Key0/Key1。与ECM的解码相比,EMM的解码要复杂的多!经过Hacker的努力,EMM的RSA编码原理已经完全弄明白,所需要的PK,VK等数据也可以通过Hacker的软件和ROM10/ROM11卡的后门读出,再算出N1,P,Q,EP,EQ,IQModP,IPModQ,PPrimA,QPrimA等方便编程的数据,就可以顺利解出EMM。
收视卡的第二道门是对EMM 中Key解密的防守。它的方法没有固定的套路,可以任意变化。如XX系统的设计者安排了可以通过EMM中携带程序的执行,以及正版卡通过下行信号更新的EEPROM中补丁程序的运行来解码。正版卡设计者可能料到攻破第一道门是迟早的事,于是第二道门上的防守就成了最后的防线。前面章节介绍的几种对EMM中的Key0/Key1进行再加密,就是在第二道门上的防守。它的思路是:当EMM解开后,如果其中的Key0,Key1是经过加密的,D卡仍然无法得到正确的Key。
国内早期的D卡程序是移植国外Hacker 的,针对想收视的系统,修改了相应的数据就可以实现本地化,由于要得到正确的Key需要的解码方法没有固定的套路,Hacker不可能事先料到,总是要反制后分析它的原理,再更新部分D卡程序,进行对抗和补救。一般人没有自己编写D卡程序的能力,即使有写卡器掌握了写卡方法,但程序又难以得到,这些麻烦会迫使许多人放弃D卡,转而加入正版卡缴费收视的行列。
不过正版卡虽好,但其高额的收视费还是让国内广大爱好者望之却步,大家的希望还是寄托在D卡程序的完善上,希望终有一天,D卡能与正版卡一样不受反制。
以上为第一道门和第二道门,好了今天又晚了,可能白天会开多了,脑袋懵的利害,先到这里吧,明天再说说EMM指令与Logging等知识。
第四节 EMM指令与Logging知识
EMM是“授权控制命令”,简单说就是“更改收视卡中信息的命令”。现有系统如XX系统中的EMM命令很多,EMM指令中的FA(针对ROM10卡)和FB(针对ROM11卡)是所有EMM指令中功能最为强大的指令。在该指令中携带了6805指令写的小段程序。CAM(收视卡)将EMM解码后,将该EMM携带的机器指令码存入正版卡从S81开始的固定地址。以子程序调用的方式,转到该地址,执行这段程序。这段程序的结束可以只是一个简单的子程序返回指令,也可以用转移指令转到保存Key的子程序去。前者一般不保存Key,后者才保存Key。
还以XX系统为例,其EMM长度最大为64字节,既要包含Key0/Key1和一些标识与过滤指令,又要包含一小段程序。受到大小的限制,程序的长度不能超过37个字节。对于复杂的解码反制,程序很长时,一般通过下行的信息将大部分的程序写到正版卡的EEPROM中,由EMM中的小段程序来调用,正如XG有线当前的反制所采用的方法。对于二次加密了的Key0/Key1,只有正确执行该段程序后,才可以还原Key0/Key1。
防止D卡正确执行该部分程序是不难做到的,实际上,由于D卡采用的CPU不是6805家族的,D卡也不直接执行该段程序,但防止D卡研制者人工判读该段程序却是极端困难的。
如果D卡研制者采用人工判读的方法,读懂了新的EMM的反制原理,找到对抗反制的方法,那么就可以在反制后的不长时间内研制出升级改进的对抗程序。这些程序通常会放到专业的黑客网站上开放给众多黑客会员下载,具体地址本文就不讨论了,只是要说明这些网站确实存在,而且很活跃,这也是对DVBCN论坛上CA厂家的那些穿着皇帝新装的抢手最大的一个讽刺,说什么“ca是很安全的”之类的自欺欺人的瞎话,有空的话还是花点精力去琢磨琢磨仿制和复制的区别,看看自己的水平到了什么地步,能不能入流。
判读EMM内容与反汇编其中的6805程序的步骤如下:
1、 通过某种手段,将EMM纪录下来。这个步骤也称为Logging,Logging通常可以通过1020卡或通过Season卡等来进行卡等来进行。有的高级黑客用的Logging是用含有自己写的特殊程序的卡,在新的含Key的EMM到来时写入EEPROM,再用写卡器读出即可;(一般圈内没有1020卡,都是用自己写的卡程序log。)
2、 将Logging的文件交给XX程序。该软件是学习和分析EMM、ECM以及XX系统其他信息的优秀软件,其中含有不少有用的工具,对此有兴趣的网友应当熟悉它的使用;
3、 如果你的XX程序目录中含有正确的ROM10/ROM11的BIN,Keys.INI,Labels.INI,以及Routimes.INI等文件,那么XX程序中的EMM XX功能会将该EMM解开,反汇编并加注释成为易读的源程序;
4、 阅读EMM程序与包含的数据,对比已知的正确的Key0/Key1,分析之后就可能知道反制的原理,但也可能分析之后仍然找不出头绪。
如果分析明白了,就可以着手编程。对于1020卡,程序按照6805汇编语言编写,汇编后加入ROM10/ROM11.BIN文件,放到Fennir的XX目录下;对于Fun卡,按照****R汇编语言编程,替换或修改原来卡的部分程序,汇编成*.hex就可以使用了。对于从事嵌入式控制器工作,或是信息类专业的人,编这些程序应当不是什么难事,但要编得好,却也不容易。对计算机汇编语言不熟悉的人,要自编程序,当然要先学习和实践,能否成功,全看各人努力和造化了。
排除干扰,继续探讨!明天开始说说MAP功能调用反制的对抗办法。
再次申明,破解CA不是什么深不可测的神秘魔术,这些东东现在已经不是什么卖X的遮羞布并不是只可意会不可言传,我仅仅本着基于学术研讨角度和态度来谈这件事,关键的技术细节我会用XX来代替的,真正到了利用这些技术去破解某个CA,还需要天赋,这个是学不来的,应当尊重的一个现实是:在今天这个领域目前许多高手同步研究已达到很高的水平,许多道理只差一层窗户纸,一捅就破了。一些关键的提示对一般人可能一点感觉也没有,但对于水平相近,在进行类似研究的人,就可能“一语点醒梦中人”,但是倘若不提示,和我没说有什么区别?相反真正的正版高手,反而会理解其中的含义把精力投入到更高水平的反制研究当中去,这点来看,披露CA的破解在网上公布的积极意义是远大于消极意义的----所谓的地球黑客都知道了只有厂家还不知道,这才是天下CA最大的讽刺和笑话呢!
第五节MAP
本节开始说起MAP攻略的技术基础知识,有网友该问了为什么是基础知识而不是详细介绍?该攻略是全世界高手共同努力得出的宝贵结果,可想而知,这份资料的宝贵不言而喻!由于是在DVBCN这种公开论坛,另外当初写这些文字也是因为一时意气用事和一个叫tsexpert的网友进行理论,结果到现在该老兄跑得无影无踪,偶尔回个帖也是顾左右而言他,对于技术的推演无片言只语的贡献,变成了我孤家寡人在这里卖弄,所以也就没意思了动力也小了很多,因此本文不准备展开和深入介绍。详细的研究和讨论,可以在日后归纳出“MAP技术专题”资料了专门交流,不过就不是这种方法了。
OK,切入正题。XG有线“新例”超级反制的程序是利用MAP进行的反制程序。由于反制十分复杂,程序较长,所以分为两部分:小部分的是EMM携带的程序,大部分是通过下行信号预先已经存入EEPROM的程序。通过阅读它们,hacker们可以了解MAP的调用($90E3)在反制中的作用。
调用MAP的EMM有难有易,以Dream TV为例,其MAP $0E功能就可以通过正确的Key,比较容易猜出来,它是与成片数据交换有关的操作;而XG有线调用的MAP $11,$28,$39,$3A功能就极难猜出来,就像是一个“谜”。
反制进入使用MAP功能的阶段后,D卡要对抗反制,必须研究MAP功能,只有弄懂了有关的MAP功能,并且在功能上仿真它们,才可以有效对抗这类反制。大家可能会设想:如果我们将MAP协处理器的功能都了解了,将它们都仿真出来,那么不就可以与正版卡完全一样了吗?不过要弄懂MAP的功能,可不是一件容易的事。先让我们了解一下协处理器是什么东西: iB
一般计算机为了处理数据的需要,可以配上协处理器。协处理器的程序是不对外开放的,它的程序存储区对其它器件而言是完全隔离和封闭的。无论如何,用目前的技术和手段,我们都读不出Map协处理器的程序。因此,彻底了解MAP协处理器的功能,是不可能的,除非开发MAP的技术人员被收买了或派间谍打入了研制MAP协处理器的公司,盗取了它的技术资料...。这又有点像tsexpert老兄前面说的中央情报局的笑话故事了。 gy9
想像带来虚幻的快感,却不能解决问题,要解决问题,还是脚踏实地,认真学习与研究。
ROMX卡调用MAP功能是通过一个固定入口地址$9E03的子程序实现的,该子程序称为:CALL_MAP,调用时必须在A寄存器中存入MAP的功能号。
我们看到EMM实际执行的是一段很长的程序,EMM中的部分只是其中的一小段,绝大部分都存到了EEPROM区,它们是通过下行信号写入卡中的EEPROM的。
据我所知,ROM3或ROM10或ROM11的正版卡在$4000~$99FF的程序代码都相同,它们存在ROM区,是固定不能改变的,如果改变了,那么,“利用正版卡程序随机地址处的机器码作为Key的解码密钥”的EMM反制方法就要产生兼容性问题了(这也许就是ROM卡称谓的由来)。Hacker们将这部分程序称为ROM卡的“ROM区基本程序”。卡复位后执行的就是这部分的程序。 ‑Kg{qu-
那么固定程序的ROMX卡是如何改变其程序的功能呢?
不少网友都知道,只要在ROM卡中可以改写的EEPROM区中按规定写入*.BIN文件的程序代码,就可以改变ROMX卡的实际功能。
那么为什么在EEPROM区写入的程序代码能改变程序执行时的实际流程呢?这是如何做到的呢?
PC微机的操作系统或程序,如Windows,发现了Bug,用补丁更改时,需要先下载补丁,然后运行有关修补程序,改变原来程序的代码,才能完成修补。这种修补通常是在原来程序中要修改之处放上转移指令,转到补丁程序,执行后再回到原来的程序继续完成后续工作。这是修改程序功能常用的办法。
但如果原来的程序不像PC微机那样存在硬盘上可以更改,而是存在不可更改的ROM区,补丁下载后,没有改变原来程序的任何部分,补丁就可以自动起作用,就是奇怪的事了!
由于ROM区基本程序不可更改,又要能自动运行装入EEPROM区中的补丁程序,ROM卡的设计者想出了一种巧妙的方法。该方法能自动检查EEPROM区是否有补丁程序,补丁程序补在原来程序的什么地方,如何自动运行这些补丁程序等等。
有了这种巧妙的方法,在不改变ROM卡基本程序的前提下,只要将添加的程序或数据存入可更改的EEPROM区,卡的程序功能就可以得到增强或修改,就可以在不必收回或报废原来卡的情况下,适应各种不同的卫视系统或其他应用,或对卡进行升级换代,特别地,可以通过下行信号自动变更原来程序的逻辑功能。
OK,今天到这里,明天继续,祝国庆长假没有出去度假还呆在DVBCN上值班潜水的老鸟们,节日可要保重身体啊,别学我一样为了一个鸟帖子搞得这么累,死了都没人可怜。
自怜一下先。
第六节:
为了学习和掌握D卡技术,必须能够读懂别人编写的程序,然后再自己修改或编写自己的程序,所有这些,都需要了解汇编语言源程序知识。可以说汇编语言程序知识是D卡技术入门的一道门槛,跨过了这道门槛,就得到了一把打开宝库的钥匙。有不少网友开始上信誓旦旦,但往往乘兴而来,败兴而去,不少人开始畏难,甚至逃跑了,就是难以跨越汇编语言这道门槛。同时因为后续章节中经常提到ASM、HEX、BIN等格式的文件,因此调整一下文章结构,补充一点汇编语言程序基础知识,真正想学习的网友友,还是要自己找资料踏踏实实系统地学习。
汇编语言源程序(简称“源程序”)是面向CPU的低层语言,该语言的指令(注意:不称为“语句”)与CPU的机器指令代码一一对应。对不同类型CPU的计算机,指令不同。源程序可以编写或通过反汇编得到。运行汇编程序就可以将汇编语言源程序转为机器语言目标代码,这个转换称为“汇编”(注意:不称为“编译”)。源程序为纯文本文件,扩展名一般为ASM。目标代码文件格式很多,常用的有Intel的HEX格式和存机器码的BIN格式等,它们都可以被编程器接受用于将代码烧写入CPU或EEPROM等存储介质中。计算机CPU只能执行机器指令。
汇编语言源程序的指令有两种,一种是对应CPU执行的机器码的“助记符指令”,另一种是指示汇编程序工作的“伪指令”,再有一种“宏指令”实际上属于伪指令,它可以用一个符号串简化表示很多符号信息。
用一种类型的CPU执行另一种