破解GAL加密逻辑的一种方法
磊悬翥萎.s第litu.le卷~第..20靳0.Vo1.22
破解
8e
李新玉
杨三清
GAL加密逻辑的一种方法
(江汉石油学院计算机酗学,湖北荆州434102)
(江石曲学院电子与信息工程鬲,湖北荆州434102)
[tlil要]提出了一种破解通用阵列逻辑(GAL)加密逻辑的方法该方法首先分析如密器件所在的硬件电路?
确定GAL器件各十引脚的输/k/输出特性,然后利用计算机接口技术获取对应于GAL器件的每一十转出
端的真值
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
,从而分析出逻辑表达武,达到破解GAL加密逻辑的目的. [关键词]加密;解密;通用阵列逻辑器件;接口技盘AII)
[中图分类号]TP309.7[文献标识码]At文章编号]1000—9752(2000)02—0085—02 通用阵列逻辑(GAL)器件是一种结构灵活,性能优越,功能可靠的可编程逻辑器件.在GAL器件
的内部结构中有一个加密位,一旦这个加密位被编程,就可以使其内部存取数据的
从而 电路中止工作,
防止再次被编程或检验,也就无法读取已经存放在芯片内的阵列逻辑.加密位只能在对芯片进行整体擦
除时与阵列逻辑一起被擦除.正是利用了GAL器件的这一特性,当前市场上的一些比较流行的软件加密
卡或智能仪器中的加密电路常用GAL加密逻辑来作为一种行之有效的硬件加密手段.
从数字逻辑的角度来看,可以将GAL器件内部逻辑的所有不同的组合划分为2种类型的结构:一种
是组合网络,它的输出和输入具有固定的
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
关系;另一种是时序电路,它的输出不仅与输人有关,还
与它内部寄存器的状态有关,而且其内部寄存器的状态还可以根据输出值的不同而发生变化J.笔者对
GAL加密逻辑(组合网络结构)的解密作了一点探索,仅供同行参考. 1解密算法
GAL器件的加密位被编程以后,其内部的阵列逻辑虽然无法直接读取,但若其内部的阵列逻辑属于
组合网络,也即其输出是输人的函数.我们就可以采用穷举法将每一种可能的输人状态分别施加在它的
输入端,再从其输出端测得输出结果,这样便可得到对应于每一个输出端的函数真值表,从而分析出函
数表达式.理论上这样得到的真值表可能会很复杂,分析起来困难很大.实际上由于受到GAL器件内部
结构的限制,其内部能够实现的逻辑关系不可能很复杂,最多只能有7个逻辑积项之和.而每一个逻辑
积项分析起来比较简单,所以整个分析过程也不难实现.
由于GAL器件的部分引脚既可以被定义成输入引
脚,也可以被定义成输出引脚,解密工作首先要从分析
GAL器件的硬件连线着手,弄清GAL器件的哪些引脚是
输人端,哪些引脚是输出端.这一过程没有固定的规律可
循,只能凭借与之相连的非加密器件引脚的输人/输出特
性或分析者的工作
经验
班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验
来确定.若某个引脚经过分析后暂
时无法确定其输入/输出特性,则可先假定其为输入端;如
果最后解密不成功,则再次尝试解密时将其确定为输出
端.另外,有时GAL器件的某些引脚处于空闲状态例
如,笔者曾经分析过这样一个GAL16V8加密芯片,其输
入/输出引脚分布如图1所示.其中有9个引脚为输人端( q
2O21l GALl6?
l23456789io
f1l2l3l4lsfEI7fl
图l确定GA【器件各个引脚的输入/输出特性 ,
)一有3个引脚为输出端(0.,O),其他
[收稿日期]0?o一毗一20
[作者简介]享新玉(1964),男,[989年台肥工业大学毕业.硕士,讲师,现M事计算机
硬件的研究与教学
弓,~
2/
?86?江汉石j田学院2000年6月
引脚空闲不用.
在确定了被解密器件的所有引脚的输入/输出特性以后,便可以按照上述方法进一
步分析出输出与输
入的函数关系.
2解密电路
为了快速准确地获取加密逻辑的真值表.我们在一台微型计算机的扩展槽中插入
一块工控机的开关
量输入/输出板(输入/输出电压为+5V),并将该板上的 开关量输出端与GAL器件的输入引脚一一相连,将开关 量输入端与GAL器件的输出引脚一一相连,构成图2所 示的一种简单的解密电路.PC
3软件设计
程序可以用高级语言编写.其工作过程是t使开关量
输入/输出板的输出端循环输出000IFFH共512种状
态(若GAL器件的输入端较多,则程序的输出状态数也
图2解密电路示意豳
相应增多)?并从开关量输入/输出板的输入端读取各个相应状态的输出值(GAL器件).每循环输出/输
入一次,都要将其数据对应地存人数据文件.以下是用BASIC语言编写的解密程序.
FORI=0TO511'循环输出512种状态
II—IMOD256'由于BASIC一次只能输出8位二进制数
12=INT(I/25e)'故需将1分解为两个8位二进制数(高8位与低8位) OUT&H2E0,II'开关量输出端口的口地址为:2EOH和2ElH OUT&H2E1,12
D=INP(~H2F0)开关量输入端口的口地址为;2FOH
IF(DAND1)THENPRINTI'只打印出符合要求的真值
NEXTl
以上程序只能得到与GAL器件的Ot引脚有关的真值表要想得到与.2和O引脚有关的真值表,只
要将IF语句的条件表达式分别改为:DAND2和DAND4即可(可依此类推8,16,32等).最后得到
整个加密逻辑的函数真值表.并根据这个真值表进一步分析出对应于GAL芯片每一个输出端的开关代
数表达式,利用这些开关代数表达式重新编程并写入一个新的GAL芯片,以实现解密.笔者在对微机系
统或仪器的维修工作中,曾用此法分析过多种加密电路的GAL芯片,效果很好 [参考文献]
[1]贾耀国-计算机科学导论[M].武汉:华中理工大学出版杜,1989. [2]居悌-可缩程逻辑器件的开发与应用[M].北京:人民邮电出版杜1995. [囊辑]适然