,整理思路。
他先是把今天上午系统的上电自检波形、基本操作的通信时序仔细研究了一下,接着又翻开笔记本,结合着前前后后的分析,开始思索具体的策略。
日方的加密确实很强。
根据这几天对信号日志的分析,自检时会对r0区做完整性校验,任何改动都会触发锁死:通信协议里有复杂的握手串行,象一把结构精巧的密码锁。
但陆怀民知道自己有一个山崎乃至所有日本专家做梦也想不到的优势。
他知道一个在1980年几乎不可能被发现的漏洞。
在ye6的硬件架构中,系统上电自检完成后、正式进入用户操作界面之前,cpu
会短暂地释放总线控制权,等待外置设备响应。
这个时间窗口只有不到两百毫秒。
陆怀民知道,在后世,这种“上电自检窗口期漏洞”是早期嵌入式系统的经典缺陷,直到九十年代才被安全研究人员系统性揭露。
陆怀民的思路很简单,他打算写一段汇编程序运行在数控机床的外置计算机上,在监测到数控系统自检通过的电平跳变后,于一百八十毫秒内发送一段精心构造的“伪协处理器应答串行”,诱使cpu将运动控制总线的裁决权移交给外置设备。
一旦接管成功,事情就简单了。
锁死在ro里的后进程会被彻底绕过。
割枪将直接由外置计算机上自研的编译器指挥。
理论上完全可行。
但在一九八〇年,一百八十毫秒意味着什么?
意味着程序必须用汇编语言写,每一条指令的执行时间都必须尽量压缩。
从检测到电平跳变开始,到发送完最后一个伪应答字节为止,中间不能浪费哪怕一个时钟周期。
这就象在高速行驶的火车上,把一根针从一扇只开了几毫秒的安全门缝里扔出去。
扔慢了一点,针就撞在门框上。
陆怀民深吸一口气,开始写技术文档。
功能:在ye6上电自检窗口期内接管运动控制总线
目标平台:dj系列外置计算机,c6800指令集时间约束:自检测到1—4脚上升沿起,至发送完最后一个伪应答字节止,必须在180内完成全部操作。”】
写到这里,陆怀民想了想,又把最后一句话改为:
【时间约束:自检测到1—4脚上升沿起,须在150内完成全部操作,留30馀量应对硬件离散性。”】
陆怀民翻过一页,开始写主程序的基本结构。
【主程序流程:
ep1:初始化串口,设置1通信参数ep2:循环监测1—4脚电平,等待上电自检完成信号ep15:若验证通过,转入正常通信模式,开始接收系统下发的g代码指令————】
夜深了,但陆怀民斗志昂扬,毫无睡意。
第二天一早,陆怀民带着连夜写好的技术文档来找周永年汇报自己的思路。
周永年不是计算机专业出身,对陆怀民所说的其实也不是很懂。
他问道:“你说的这个办法,理论上有多大的把握?”
陆怀民说道:“最大的变量在于程序能否在两百毫秒内完成对设备的控制,如果能做到,我有九成以上的把握。”
“那就是说,也有可能失败。”
“对。”陆怀民坦然地点了点头。
周永年把身子往椅背上一靠,沉默了。
陆怀民知道他为什么沉默。
roo板一旦写入失败,或者伪协处理器应答串行的校验和不匹配,系统会直接触发ro完整性锁死。
到那时候,这台十几万美元买来的设备,就会变成一块十几吨重的废铁。
日方一定会以“非法操作造成设备损坏”为由,拒绝任何形式的售后服务。
而江南厂没有能力自己修,全国也没有人能修。
这台设备就彻底废了。
这是一场豪赌。
“怀民,”周永年忽然抬起头,语气忽然变得很认真:“你必须跟我交个底。你刚才说,程序能在规定时间内完成桥接,你就有九成以上的把握。这个九成,是实打实的,还是为了让我放心往高了说的?”
“实打实的。”陆怀民很坚决,“周总工,我不会拿几十万国家外汇开玩笑。”
周永年盯着他看了足足五秒钟,然后一巴掌拍在桌上:“好!我信你!”
他站起身,走到陆怀民面前,双手按在陆怀民的肩膀上,说:“你放手去干。这台床子要是真成了废铁,是我周永年拍板的,所有责任我一个人扛。跟你们科大没关系,跟你陆怀民没关系。”
陆怀民张了张嘴,想说什么。
周永年摆了摆手:“反正这个机床不买日本的技术服务,用处本来就不大,与其受这个窝囊气,不如豁出去,赌一把!”
陆怀民重重点了点头:“周总工,您放心。这一仗,我们不会输。不过,有件事我必须现在跟您讲清楚。”
“什么事?你尽管说。”