莫嘉妮首先给我看了怡年的解答。由于我们从小都把考试当作是选拔的工具,只要老师不讲卷子,我和怡年都习惯在考完之后不再谈论具体的答题情况,所以这是我第一次看到她对这道题的作答。
其实今年圣哲学园录取的四名新生中,我是唯一一个做出最后那道题的人,但我的解法剑走偏锋,没办法直接用在解决最终的数学问题上。其他三个人虽然没能够解决那道题,但分别给出了他们关于那道题独到的看法,这些看法本身也提供了一些解决问题的新思路。
这是一篇大约 800 字的文章,与其说是答案,不如说是对题目的质疑。开篇第一句话就指出了题目的不合理之处,之后罗列了几种常见的解题法,并证明了这几种方法都不可能有效求得结果,看上去特别像是我们在考试中遇到不会的题时那种不求功劳但求苦劳的答题法。
「没错,这就是今晚的工作安排。阿珵,我先和你讲一下目前这道题的进度。」莫嘉妮道。
不过她的答案有很大的价值,因为这几种解法表面上看都有解决问题的可能,如果不是她堵死了这些路径,我们将在这些方面浪费大量的时间。
我从他俩志在必得的气势中找回了一些信心,道:「云丛、梁炯,这件事就拜托你们了。我也开始我的工作,想办法找到这个数学问题的简单解法。」
云丛和梁炯的答案也是选择将题目本身绕开,开头就直言对题目无能为力,但是如果有人给出了答案,他们有办法对其中的关键步骤做快速验证。两个人选择验证的步骤各不相同,但都选择了用计算机程序做形式化证明的办法,并分别给出了各自的编程思路。如此看来,我们只需要不断去想新的解法,无论是否可行都可以迅速得到验证。
「包在我身上。」梁炯道。
接下来,莫嘉妮又给我看了一些他们之前的尝试,是另外几条路径的探索,其中有一些已经被证明无法成功,剩下几种方法也都有不同程度的尝试,但都没有确定的结论。我们的突破口只能是剩下这几种方法了。
在上一次出外勤的时候,云丛和梁炯在指挥中心负责处理一部分数据。通过这次合作,云丛显然已经对梁炯的技术水平有所了解。
看完这些后,莫嘉妮对我说:「我们技术组的同事也在努力尝试最后这几种方法,他们都很优秀,但有时候长期从事某项工作,容易把自己局限在之前的工作流程中,而你作为一个新人,很有可能会带来一些不一样的想法。关于这道题,我们的直觉是一定有解,并且感觉就快要找到答案了,但却总也抓不住。」
云丛打开文件包快速扫了一眼,道:「没问题,不过需要梁炯帮我写一段小的代码,用来掩盖文件大小的变化。因为就算我们能够伪装文件的校验过程,但掩饰不了文件大小的改变,如果人间失格内部有比较细心的人,可能会发现这一点。我前面的代码写得那么好,最好不要在这个小阴沟翻船。」
其实我在考场上也和莫嘉妮有同样的感觉,她现在这么说增加了我不少信心。我并不相信超自然的直觉,但专业人士的直觉很少是超自然的。他们的直觉很多时候是基于过往经验的一种判断,只是我们习得经验的过程并不全是通过语言,习得的经验也并不是都能用语言描述,对于基于这种无法用语言描述的经验而作出的判断,往往会被冠以「直觉」之名。
「我觉得没有什么大问题,但你的代码你最熟悉,与其把代码给技术组做修订,不如你直接和技术组的人联系,让他们把需要做的事情交给你,由你来直接完成这部分代码,我想这样的效率最高。」莫嘉妮迅速在电脑上敲了一段代码,可以看到从远程传过来一个文件包。
为了提高效率,我和莫嘉妮简单分了一下任务,在剩下的五种方法中,我从前往后看,她从后往前看。我深吸一口气,努力让自己不分心去想怡年,以云丛和梁炯敲击键盘的声音为背景,我沉浸在了题目中。
「好了别废话了,莫嘉妮你觉得我这个代码可以用吗?」云丛道。
与这场人生大考相比,之前的考试根本就不算什么。
梁炯由衷赞叹道:「云丛你真是个天才啊!」
对于第一个方法的尝试很快有了确定的结果,但并不是什么好消息:我证明了它无效。第二个方法略微有些复杂,需要做大量的计算和验证,我想如果用电脑来尝试可能会更好。这时莫嘉妮也在第五个方法后面用笔打了个叉,并冲我摇摇头。
说话间,云丛已经从云端下好了代码,拉着我们一起看。虽然我不懂编程,但我还是能从莫嘉妮和梁炯的神情当中看到他们对云丛的欣赏与佩服。
我看了一眼时间,凌晨两点,已经有两种方法得到了确定的结果,对于解决这种问题来说,速度已经非常快了,但这样的结果越多,我们的希望就越渺茫。
「莫嘉妮你们调查过我的履历,一定知道我曾经参加过香港的一个黑客大赛。共有三百多人参赛,我拿到了第十二名。这在我的履历中并不算显眼,估计你们都忽视了吧?因为以当时比赛的水准,我拿冠军应该也是轻而易举的。不过当时我想的是既然是黑客大赛,就不能按照常规的方式提交作品,所以我故意等到大赛提交通道关闭后,才把自己的作品通过某种特殊的方式放进了参赛列表。所有评审都没有发现这一点,以为我是正常提交了作品,最终按照那件作品给了我第十二名,但我认为自己提交作品的方法才是真正的参赛作品,可惜没有人发现。」云丛在说这段话的时候带着一种当仁不让的气势,「当时组委会的防火墙和莫嘉妮刚刚说的有点像,我尝试了很多绕开它的办法,都以失败告终,就在这时一个大陆朋友给我讲起了小时候看过的一个叫《崂山道士》的动画片,里面有种技术叫『穿墙术』,我想既然无法绕开墙壁,不如穿墙而过,于是就有了我刚刚的解决方案。」
莫嘉妮好像已经觉察到了我的伤感情绪,她的直觉确实厉害:「我们休息一下,喝杯咖啡,哪怕只有最后一丝希望,也不能放弃。」
莫嘉妮点点头,云丛开始操作电脑,而我和梁炯都诧异地看着她,显然我们都没想到云丛这里竟然会有现成的方法。
她打开了一扇柜门,里面是一个简易的车载咖啡机,做了四杯咖啡。在怡年和梁炯身边的杯座上各放了一杯,他俩似乎完全没有看到,依然全神贯注于屏幕上的代码。
「不用从头开始,我手里有写好的代码可以复用,可能简单修改一下就可以搞定了。」云丛一边说一边按亮了面前的电脑屏幕,并问莫嘉妮:「我可以登录自己的云端硬碟吗?」
我从她手里接过咖啡,告诉了她第二种方法的情况,她随即用对讲机通知了技术组的人,并把我手里的演算纸给他们拍照传了一份,让他们开始尝试验证。
「听上去很美好,但很难实现吧,从头开始做的话不知道要花多长时间啊。」梁炯道。
我一口干掉手里的咖啡,继续工作。第三种方法似乎有戏,我研究了半个小时之后甚至开始后悔为什么没有一开始就看这种方法,如果一开始就看它的话,也许问题已经解决了。不知道是咖啡因的效果还是这种希望带来的刺激,我的思考和演算效率有了明显的提高,很快得到了结果:第三种方法也无效。
童云丛说:「其实原理不复杂,既然他们的防火墙能够监控到我们的程式,那么完整的程式肯定没有办法通过网络进入他们的系统。听你刚才的描述,交易数据的传输和升级补丁的传送应该是分开的,我们可以根据程式文件的特征,把代码分成两部分,一部分嵌入交易数据,另一部分嵌入升级补丁。无论是后门程式还是校验程式,只有两部分合在一起才能真正发挥作用。」
我转过头去看身旁的莫嘉妮正在纸上写下一个演算式,这应该是第四种方法的倒数第二步了,结果我已经看出来了:无效。
这时我们才发现在莫嘉妮的头发里面藏着一个小小的实时对讲耳麦。
我愣在了那里,脑子突然变得空白,此刻思考已经没有了意义,只能在心中默默祈祷刚刚交给技术组验证的第二种方法能够有效。
莫嘉妮指指自己的长发,道:「我让他们在想到办法的第一时间通知我,现在我还没有听到任何消息,说明他们还在努力。如果你有什么办法的话快说,我马上告诉他们。」
这时梁炯已经完成了他那部分代码,了解到了我们的工作状况,然后拿起我的演算纸道:「虽然可能性很小,但万一你们错了呢,我还是检查一遍吧。」
在我们嚼着能量棒的同时,童云丛仍然没有放弃刚才的问题:「莫嘉妮,刚刚的问题你们找到答案了吗?如果没有的话,我有一个想法倒是可以试一试。」
他的说法提醒了我,我赶紧也拿起了莫嘉妮的演算纸,虽然前面尝试的东西有些多,纸面上的内容很乱,但最后的证明过程很简洁,我反复看了两遍,确认没有什么问题。
莫嘉妮此刻才给我们吃的,而不是让我们刚才边吃边聊,看似浪费了时间,实则用心良苦。如果一刻不停地想着眼前面临的复杂问题,很可能陷入思维死角而不自知。现在我们差不多了解了问题的情况,这时单独给我们一点时间吃饭,在积蓄能量的同时也能让我们大脑放空,说不定会有什么灵感涌入。
梁炯看完了我的证明,道:「第一种和第三种确实无效,第二种也不好说。」
她说:「因为有些外勤工作需要赶时间,所以车里配备了一套完整的工作设备,这辆车也是我们几个今天的临时办公场所。每人一台电脑,每个键盘上放着两条能量棒,这是你们今天的晚餐。在开始工作之前,必须先把这两条能量棒吃掉,只有能量充足,我们才能最高效率地思考。」
不过关于第二种是否有效,我们也很快就有了结果。
莫嘉妮说完这句话,我们到了地下三层。她带我们径直走向了一辆商务车,从后门进入之后,我们发现里面电脑和通讯设备一应俱全。
「请讲。」莫嘉妮下意识地按了一下耳机,然后抬头看向我并朝我摇摇头。
「只会传输一些他们表面上合法的交易数据,不会触及到系统的底层,而且就算在这些数据中嵌入我们的后门程式或校验程式,依然会被防火墙发现。」
我坐在椅子上用双拳托着额头,难道我们营救怡年的最后一丝希望就这样破灭了吗?她的生死只能听天由命了吗?
「那么除了这次补丁升级之外,他们的电脑是否还会和外界网络产生联系?」童云丛问。
梁炯的状态也不比我好多少,扶着桌子站在那里,似乎松开手就会倒下。一直冷静理性的莫嘉妮也一言不发,也许她也找不到合适的措辞了吧。
「改动文件校验程式也不难,但如果和补丁一起推送到他们的电脑,特征如此明显的文件一定也会被防火墙发现,所以真正的难点还是第一个问题:如何绕过防火墙。」莫嘉妮道。
这时童云丛重重的敲了一下键盘,然后举起双手伸了一个懒腰道:「代码修改完毕,正在传给技术组,测试的工作就交给他们了,他们人多力量大。」
我心里和他们一样着急,但作为一个编程的门外汉,只能干看着他们你一言我一语地讨论插不上话。
听到这句话我心中一动,但却不知道是因为什么。
「对于第二个问题,我们有没有可能改动文件校验程式,让它伪装出校验成功的信息呢?」梁炯道。
「欸,你们都怎么了?」云丛看到我们几个表情不太对,马上就猜到了情况不妙,「是不是进展不太顺利?但你们不能就这样放弃啊。你们觉得进入了死胡同,也许只是因为太累呢?莫嘉妮、阿珵,你们的工作比我们要费脑许多,我建议你俩睡半小时,现在的状况只能越想越找不到办法。梁炯你过来,工作还没有结束,我们需要编写当时自己在卷子上写的验证程式。这样阿珵他们尝试出关键步骤的解法时,我们就可以马上知道这条路是否走对了,不用每次都把全部流程走完才能做验证。」
「这个我们早写好了,但目前面临两个问题。首先,他们的防火墙可以识别到特征如此明显的后门软体;其次,在补丁升级时,他们会校验文件的一致性,所以任何对补丁的改动都会被发现。」莫嘉妮道。
梁炯听到她的话,马上走到了电脑旁边道:「对,我们不能放弃,莫嘉妮、阿珵,为了怡年,不能放弃。」
「现在后门程式设计出来了吗?」云丛问道。
我稍稍冷静了一点,现在已经早上五点了,我和莫嘉妮是累了,虽然可以撑下去,但确实不可能想清楚什么问题。刚刚云丛说「人多力量大」,我突然想到一个人,她应该休息得比我们好很多,而且从未接触过这个问题,说不定会有新的思路。只是我为什么现在才想到!
「要确认他们究竟采用了哪种加密措施,我们必须想办法在人间失格的电脑系统中植入一个后门程式,但所有有权限进入系统的人都是 R 先生最信任的人,从他们身上下手可能性不大。不过根据卧底打探的消息,系统明天会有一个安全补丁升级,开发这个补丁的和开发加密算法的人是同一个人,R 先生对他有绝对信任,不出意外的话明天系统都会安装这个补丁,目前看来这是我们唯一的机会。只要我们能让后门程式伪装成这个补丁或者捆绑在这个补丁上,我们的目的就能够实现。」莫嘉妮说着带我们走进了电梯,并按下了地下三层的按钮。
我右手在额头上拍了一下道:「莫嘉妮,我想打电话给我姐姐。」
「情况大家都知道了,大家先跟我走,接下来的话我们边走边说。」虽然莫嘉妮没有说去哪里,我们几个都跟着她走出了办公室。
「现在看来,找她算是最好的选择了。」莫嘉妮抬起头,眼睛里布满了血丝。
莫嘉妮的安排其实是给这次营救行动上了双保险,那么只能祈求天意站在我们这一边了。
电话里,我简单说了一下目前的情况,姐姐责备了我一句为什么不早说。不过她知道事情的轻重缓急,马上开始切入核心问题,让我把现在手里所有的材料都打包发了她一份。
「大家别担心,为了防止泄密,R 先生经常会远程修改密码。如果没有非对称加密算法,这种修改没有办法安全实现。另外,为防万一我们也考虑过他采用其他加密算法的可能性,所以在这边抓紧时间破解算法的同时,另一组人也在想办法获得密码锁加密方式的确切消息。」
然后她说:「材料我收到了,你和莫嘉妮现在唯一能做的事情就是睡觉,先睡半个小时再说,现在的状态非常不适合继续思考这个问题。」
不过云丛又提出了一个疑问:「你们能够确定门锁的加密方式和那种专有的加密方式一致吗?电子锁其实并不非要使用非对称加密算法。」
她似乎对这件事充满信心。的确一直以来只要是我的事情,到了她手里总会有个圆满的结局,希望这次也能如此。
人间最痛苦的事情之一莫过于当你最爱的人需要帮助时,你没有办法伸出援手。莫嘉妮的话让我们对营救怡年有了希望,更重要的是,我们终于不用像一个废物一样等待结果了。
只是,这一次我从她坚定的声音中听出了一丝不易觉察的颤抖。