得知了这个人的存在,林默马不停蹄的布置新任务:“如果大家还撑得住的话,就先从顺风资本的档案入手吧。”
“撑得住!”
众人异口同声。
脸上都很兴奋。
因为林默的快速推理让他们见了世面,这种通过细节寻找,然后抽丝剥茧一般的慢慢找到真相的感觉他们还是第一次体验。
自然是很兴奋的。
众人二话不说就开始在顺风资本的服务器里面来回翻找。
几个小时后。
魏音的头从电脑屏幕里面拔了出来,看向其他人,其他人也都摇摇头。
魏音皱了皱眉头,只能跟林默汇报道:“林主任,邓奇的档案被删得干干净净。
我们翻遍了顺风资本所有人事系统,入职记录、薪酬发放记录、门禁卡激活记录、工位分配表、甚至连访客登记簿都查过三轮。
都没有找到那人的任何痕迹。
没有加密和隐藏的痕迹,像是有人用管理员权限在底层数据库里直接将其物理删除了。
等于是把这个人从顺风资本的每一套系统里连根拔掉了。
我们没找到任何有用的信息。”
所有人都看向了林默,神色茫然。
让他们自己找的话,他们还真不知道下一步从哪里开始,作为技术宅,线上线索断了,就没办法了。
会议室内沉默了。
林默也闭目思索了起来。
几十秒后,林默才睁开眼睛问道:“那他们那个自动化脚本还在更新吗?”
魏音一愣,立马把顺风资本金流拆分系统的后台运维日志拉出来,指着上面那一排排精确到毫秒的时间戳。
“还在更新!”魏音一喜:“这个自动脚本是更新的。”
魏音打开三个窗口并排显示,将其投到了办公室内的大屏幕上。
第一个窗口是运维日志,每隔二十八天,凌晨三点十一分,系统准时触发一次全量更新,误差从来没有超过三秒钟。
第二个窗口是银行接口的适配升级记录,最近一次发生在三周前,把三套旧版银企直连接口替换成了最新的加密协议版本,全程耗时三分四十六秒。
第三个窗口是壳公司模板库的更新日志,上个月新上线了一套注册在开曼群岛的离岸公司模板,包含十三个虚拟股东身份和完整的倒签合同,上线耗时四分零二秒。
“定期维护、适配银行新规、更换壳公司模板。”魏音一边说,一边兴奋的把那些时长的数字一个一个圈出来,“全部发生在凌晨,登录时间极短,操作极精准,不留任何多余的动作!”
林默看着屏幕,点了点头:“程序的事情我虽然不会,但我懂一点,高手的写代码都有自己的习惯!从他的脚本代码入手,找到代码里面的习惯,人事资料能够删掉,代码里面的习惯删不掉!”
此话一出。
魏音包括所有技术人员眼神一亮,无比激动!
同时脸色也有些红涨。
这么简单的事情,他们这些内行竟然没注意到!
一瞬间,所有人又噼里啪啦的操作了起来。
魏音立马把金流拆分模板的所有历史版本全部拉了出来。
一共一百多个版本,从三年前顺风资本这套系统上线开始,每个季度一次大版本迭代,每个月两次小版本修补。
每个版本被保存的时候都会留下注释掉的旧代码片段。
那些片段是程序员在重构时觉得不再需要,但又不忍心直接删除的旧逻辑。
魏音把这些被注释掉的重构片段全部导出,按修改时间排序,铺满了三块屏幕。
那些代码像地质层一样一层一层堆叠。
魏音边操作边说道:“最底层的注释是三年多前写的,用的还是最初版的变量命名风格,注释写得很详细很啰嗦。
每个函数的功能、参数的含义、修改的原因都写得清清楚楚。
越往上,注释风格越简洁。
变量命名越来越趋向于一套固定的缩写习惯,到最后几个版本,注释只剩下几个字母,像是只有写代码的人自己才能看懂的暗号........”
她在凌晨两点十七分发现了第一处不同。
又是几个小时后,时间已经进入了凌晨。
每一个技术员的眼球里面都布满了血丝,但依旧兴奋的在操作中。
终于,通过众人的努力,找到了关键的东西。
魏音喊道:“林主任!”
林默立马跑了过来看着屏幕:“我不懂这些,你直接用大白话解释。”
魏音点点头:“这是在负责壳公司账户余额校验的模块里,一段被注释掉的老代码。
函数本身没什么特别,就是一个很普通的余额核对逻辑,但作者在函数末尾的注释里写了一个分隔符。
是三个连在一起的井号后面跟了三个字母——#KLM。
我没见过这种分隔符。
机器生成的UUID通常是一串没有语义的十六进制数字和字母组合,版本号通常用小数点和数字表示,例如v2.1.3。
而井号加三个字母,这是人随口敲进去的东西,没有任何技术规范要求程序员用这种格式做标记。
林默皱了皱眉头:“K-L-M,二十六个字母里连着三个,这不像随机敲的,随机敲不会刚好敲到连续的三个字母。所以...这是他给自己留的记号?”
魏音听闻继续往下翻。
在接下来三个版本的注释片段里。
同样的井号加三个字母出现了六次。
有时候是#KLM,有时候是#MNO,有时候是#LMN。
但永远是相邻的三个字母,永远是井号开头。
永远放在注释的最末尾,像是在写完整段注释之后随手敲上去的,漫不经心但又保持了固定的格式。
“他在排序。”林默用手指在桌上画了二十六个字母的排列,“KLM、MNO、LMN,每次都是相邻的三个字母,每次顺序都不一样。
这等于给每段被废弃的代码标了序号。
KLM是第一类,处理的是账户余额相关的逻辑。
MNO是第二类,可能是触发机制或者定时任务。
LMN是第三类,可能是壳公司信息比对。
所以他用字母,是因为字母在代码编辑器里更容易被搜索到,而相邻的三个字母连续出现,可以避免和其他代码里的随机字母串混淆。”
魏音听闻诧异的看了一眼林默,眼神好像在说:“您这都懂?!”(记住本站网址,Www.WX52.info,方便下次阅读,或且百度输入“ xs52 ”,就能进入本站)