阳光从眼皮上移开了。
陈默敲完那行字,保存文档。屏幕光刺得眼睛发酸,他向后靠进椅背,后脑抵着冰凉的塑料头枕。窗外传来鸽子扑翅的声音,由近及远,消失在楼宇之间。
周浩的键盘声停了。
他抬起头,揉了揉脖子。“陈总,光流补丁的测试脚本写好了。”他声音里带着倦意,“今晚跑一遍?”
“明天吧。”陈默说。
刘倩合上笔记本,金属搭扣发出清脆的咔哒声。她站起身,把椅子推回桌下,椅腿划过地板,刮出短促的摩擦音。窗外的光又暗了一度。
傍晚的风吹进来,带着凉意。
陈默看了眼时间,下午五点四十。他关掉客户价值案例的文件夹,加密保存。桌面恢复成默认的星空壁纸,深蓝色的背景上,星点稀疏。
周浩开始收拾背包。
拉链拉上一半,他停住。“陈总,”他转过头,“那个蜜罐……真能钓到鱼吗?”
陈默没立刻回答。
他点开后台监控界面,屏幕分成四块,每块显示一个虚拟服务器的访问日志。日志是空的,只有光标在闪。一下,一下,像心跳。
“等。”他说。
周浩点点头,拉好拉链。背包甩到肩上,带子勒进衬衫布料,压出褶皱。他走到门边,手搭在门把上,又回头看了一眼。
“走了啊。”
门关上,锁舌弹回的声响很轻。
刘倩也拿起包。她走到白板前,盯着“技术护城河”那五个字看了几秒。然后她伸手,用板擦擦掉下面那行小字。
粉笔灰飘起来,在夕阳的光柱里打旋。
她没写新的,放下板擦,拍了拍手。灰白色的粉末沾在指尖,她捻了捻,走到洗手池边。水龙头拧开,水流冲过皮肤,发出哗哗的响声。
洗了很久。
关掉水,她从纸巾盒里抽出两张,擦干手。纸巾揉成团,扔进垃圾桶,塑料桶壁被砸出咚的一声闷响。她走向门口。
“陈总。”她停下脚步。
陈默抬起头。刘倩站在逆光里,轮廓被夕阳描了圈金边,脸藏在阴影中。她声音很低:“如果钓到了,下一步怎么办?”
“看是什么鱼。”陈默说。
刘倩沉默了几秒。她推了推眼镜,镜片反着光,看不清眼睛。“需要我留下吗?”
“不用。”
她点点头,拉开门。门轴吱呀一声,走廊的声控灯应声亮起,黄光泼进来一角。门又关上,灯光被切断,房间里暗下来。
只剩下陈默一个人。
他重新看向屏幕。四块监控界面依旧空白,光标规律地闪烁。他伸手调整了刷新频率,从五秒一次改成一秒一次。
日志开始快速滚动。
全是系统自检的条目,时间戳规律得像钟摆。他看了十分钟,眼睛有些干涩,眨了眨,眼眶里泛起湿意。他起身去倒水。
饮水机咕噜响了一声。
温水流进纸杯,杯壁慢慢变软。他喝了一口,水没什么味道,划过喉咙时有点涩。走回座位时,脚踢到了地上的笔帽。
塑料笔帽滚出去,撞到桌腿,停住。
他没捡。坐下,屏幕光重新包裹住脸。监控界面还是老样子,空荡荡的,像无人造访的荒野。他靠进椅子,闭上眼睛。
耳朵里很静。
远处隐约有汽车驶过的声音,轮胎碾过路面,沙沙的,像风吹过落叶。更远处是施工的电钻,闷闷的,隔了几栋楼传过来。
他睁开眼。
右下角的时间跳到了七点整。窗外彻底黑了,玻璃映出房间里的景象:电脑屏幕,他的影子,天花板上日光灯管苍白的光。
他点开行业资讯网。
首页又更新了,“迅捷科技”的新闻掉到了第十位。新的头条是关于某大厂收购案的传闻,标题用加粗的红字,很扎眼。
他扫了一眼,关掉。
邮箱里有新邮件,是李建国发来的优化升级确认函,附件里是永安居住区的平面图,用红笔圈出了几个重点监控区域。
他下载,打开。
图纸扫描得有点歪,边缘有折痕的阴影。他放大,看那几个红圈的位置:儿童游乐区,老年人活动角,地下车库入口。
都是容易出事的地方。
他回复:“收到,周三准时到。”发送。邮件发出去后,他忽然想起什么,点开加密云盘,找到蜜罐的设计文档。
文档最后一页有行小字。
是他自己写的备注:“诱饵文件命名:‘核心算法_优化版_v23’。访问权限:伪装成内部测试服务器漏洞。”后面跟了个时间戳,两周前。
他关掉文档。
手指在桌面上敲了敲,嗒,嗒。敲到第五下,停住。他点开另一个隐藏文件夹,里面是周浩写的追踪脚本源代码。
代码写了三百多行。
逻辑很清晰,从ip解析到地理位置映射,每个函数都有注释。他快速浏览,看到中间有一段异常处理,写得特别细。
如果访问者使用代理,脚本会尝试剥离伪装层。
如果访问者跳转多个节点,脚本会记录跳转路径。
如果访问者……
他往下翻,最后几行是数据打包指令,捕获到的所有痕迹会被加密压缩,自动上传到指定的云端存储桶。存储桶地址是一串乱码。
他记下了那串乱码。
关掉文件夹,他重新看向监控界面。四块屏幕,三块依旧空白。但右下角那一块,日志滚动的速度慢了下来。
光标停在一行新条目上。
时间戳:19:24:17。访问类型:get请求。
陈默的呼吸停了一拍。
他坐直身体,手指悬在键盘上方。屏幕上的光标又开始闪烁,但那行条目没有消失,静静地躺在日志列表的顶端。
下面又跳出一行。
时间戳:19:24:23。访问类型:文件下载尝试。状态:伪装成功,开始传输。
传输进度条弹出来。
蓝色的,从零开始,慢慢向右爬。百分之十,百分之二十。速度很稳定,每秒大约两百kb。陈默盯着那条进度条,眼睛一眨不眨。
房间里只剩下电脑风扇的低鸣。
嗡——嗡——像某种昆虫的振翅。进度条爬到百分之五十时,日志里又跳出几行。都是请求头信息,用户代理,来源ip。
ip地址很长。
是一串数字和字母的组合,中间用冒号隔开。陈默复制下来,粘贴到追踪脚本的输入框。点击运行。
脚本开始解析。
屏幕上弹出黑色命令行窗口,绿色字符飞速滚动。解析代理类型……剥离伪装层……追踪真实出口节点……字符跳动得很快,像暴雨砸在玻璃上。
陈默的手心开始出汗。
黏糊糊的,贴在鼠标侧面。他松开手,在裤子上蹭了蹭,布料有点粗糙,摩擦皮肤时传来细微的刺痛。他又握回鼠标。
命令行窗口停住了。
最后一行显示:“真实出口节点定位完成。地理位置:江州市高新区科技园b栋。”后面跟着经纬度坐标,精确到小数点后六位。
陈默放大地图。
高新区科技园,离这里十二公里。b栋是一栋老旧的写字楼,外墙贴着白色瓷砖,有些已经剥落。他记得那栋楼,三年前他在那里参加过技术沙龙。
楼里有很多小公司。
也有共享办公空间。他盯着地图上的红点,红点正好落在b栋的中央区域,不偏不倚。他截屏,保存。
进度条爬到了百分之百。
“传输完成”的提示弹出来,绿色的小勾一闪而过。日志里多了一行:“文件已成功发送至客户端。连接保持活跃。”
连接没有断开。
陈默皱起眉。正常情况下,下载完成就该断开了。他点开连接详情,看到tcp状态显示“established”,端口号还开着。
对方在等什么?
他切换到蜜罐的交互日志。里面记录了几条命令尝试,都是基础的目录查看,像在确认服务器环境。命令执行得很生疏,像新手。
不像专业黑客。
更像……临时被派来的人。陈默手指在键盘上敲了几下,模拟服务器响应,返回一个虚拟的目录列表。列表里塞了几个诱饵文件。
命令停了。
连接状态维持了三十秒。然后,新的命令进来:尝试打开那个pdf。陈默设置pdf需要密码,密码提示是:“创始人手机尾号”。
对方输入了错误密码。
一次,两次。第三次时,连接突然断了。日志显示“客户端主动断开”,时间戳停在19:27:11。之后再也没有动静。
陈默靠回椅背。
后颈的肌肉绷得太紧,一阵酸麻。他抬手揉了揉,指节压到骨头,发出轻微的咯噔声。窗外有警笛声由远及近,又由近及远。
消失了。
他重新看向地图上的红点。科技园b栋。他调出那栋楼的公开信息,业主是某物业公司,租户名单不透明。但有一家公司的名字跳了出来。
“迅捷科技咨询服务有限公司”。
注册地址写的就是b栋307室。注册资本五十万,法人代表是个陌生名字。陈默搜了那个名字,关联企业只有这一家。
空壳公司。
他点开企业信息查询网站,输入“迅捷科技”四个字。搜索结果跳出来十几条,大部分是赵志刚那个“迅捷科技”的子公司或关联企业。
其中有一条很扎眼。
“迅捷科技(江州)数据研究院”,注册地址也是高新区,但在另一栋楼。法人代表还是陌生名字,但股东列表里有个熟悉的名字。
赵志刚。
持股百分之十,不是大股东,但足够有分量。陈默截屏,保存。他把两张截屏并排放置,左边是蜜罐追踪到的地理位置,右边是赵志刚关联的公司信息。
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
中间隔着十二公里。
但都在高新区。他放大卫星地图,测量两栋楼的实际距离。三点七公里,开车十分钟。步行……大概四十分钟。
他关掉地图。
房间里很闷,空调早就关了,空气凝滞不动。他起身走到窗边,推开一扇窗。夜风灌进来,带着初秋的凉意,吹在脸上像冷水泼过。
楼下街道空荡荡的。
只有路灯照着沥青路面,光晕黄黄的,边缘模糊。一辆外卖电动车驶过,轮胎碾过积水,溅起细碎的水花。水花落下,路面又恢复平静。
陈默站了很久。
直到冷风吹得手臂起了一层鸡皮疙瘩,他才关窗。玻璃合拢时发出轻响,隔绝了外面的声音。他走回座位,屏幕已经暗了,进入休眠状态。
他晃了晃鼠标。
屏幕亮起,监控界面还是老样子,四块空白。只有右下角那块,日志停留在断开连接的那一行,像一道伤疤。
他打开追踪脚本的输出文件。
里面详细记录了ip解析的全过程,从虚拟服务器到真实节点,中间经过四次跳转。四次跳转都在国内,没有出境记录。
跳转路径画成了图表。
像树枝分叉,从主干延伸出去,最后落在科技园b栋那个端点。他盯着图表看,脑子飞快运转。虚拟服务器,代理跳转,空壳公司,赵志刚。
链条很清晰。
但太清晰了。清晰得像故意摆出来的。他想起蜜罐捕获的命令,生疏,试探,像新手作业。可ip跳转却做得干净利落。
矛盾。
他重新打开蜜罐的交互日志,一帧一帧看。命令输入的间隔时间不规律,有时快,有时慢。慢的时候像在等什么,快的时候像在赶时间。
他注意到一个细节。
在尝试打开pdf之前,对方用了条命令:查看系统时间。服务器返回的是模拟时间,比实际时间慢了八分钟。
对方没有纠正。
直接进行了下一步。如果是专业黑客,至少会怀疑时间同步问题。但对方没有。陈默皱起眉,手指在桌面上敲。
嗒。嗒。嗒。
敲到第七下,他停住。他忽然想到一种可能:蜜罐钓到的不是真正的入侵者。而是另一层诱饵。对方知道他在设蜜罐,所以派了个新手来踩。
踩给他看。
留下痕迹,留下ip,留下关联信息。像在说:看,我在这儿,来抓我啊。可真正的黑手,藏在更深的阴影里。
陈默后背窜起一股凉意。
他关掉所有窗口,屏幕恢复成星空壁纸。深蓝色的背景上,星点稀疏,冷冷地亮着。他盯着那些星点,看了很久。
然后他打开系统。
没有启动推演,只是调出历史记录。记录列表很长,从第一次绑定到现在,每次推演的建议、消耗、结果。他快速下滑,找到最近几条。
关于竞争压力的推演。
关于技术迭代的推演。
关于融资沟通的推演。每条建议都很实用,像精密的齿轮,严丝合缝地嵌进他的决策链里。他往下翻,翻到最底部。
第一条记录。
时间是他被辞退的那天晚上。建议只有三个字:“先活着。”后面跟着精神力消耗数值,当时是百分之百,现在回看,那个数字红得刺眼。
他关掉历史记录。
准备退出系统时,界面忽然闪烁了一下。不是屏幕的闪烁,是系统界面本身的抖动,像信号受到干扰。抖动持续了半秒。
然后,界面上浮现一行字。
不是推演建议,不是数据提示。而是一串乱码似的字符,混合着数字、字母和无法识别的符号。字符排列成某种规律,像密码。
陈默屏住呼吸。
他试图截图,但快捷键失效。他试图复制,但鼠标点击没有反应。字符静静浮在那里,散发着微弱的蓝光,像深海里的磷火。
十秒后,字符消失了。
系统界面恢复正常,仿佛什么都没发生过。但左下角的精神力数值跳了一下,从六十五降到六十四,又弹回六十五。
消耗了一点。
就一点。陈默盯着那个数字,心脏在胸腔里重重地跳。一下,两下。他伸手按住胸口,隔着衬衫布料,能感受到温热的搏动。
他退出系统。
房间里重新安静下来,只有电脑风扇的低鸣。嗡——嗡——他靠进椅背,闭上眼睛。眼前不是黑暗,而是那串乱码字符的残影。
蓝莹莹的,飘在视网膜上。
他睁开眼,残影消失了。他深吸口气,又缓缓吐出。空气里有灰尘的味道,还有刚才汗水干涸后淡淡的咸腥。
他重新打开蜜罐监控。
日志没有更新。追踪脚本的输出文件还在,图表上的端点依旧指向科技园b栋。赵志刚关联的公司信息也还在,白底黑字,清清楚楚。
证据链很完整。
完整得可疑。他保存所有材料,加密,备份到三个不同的云端。做完这些,他看了眼时间,晚上九点二十。
手机震了。
是沈清澜发来的消息:“简报李贺回复了,说数据很有说服力。”后面跟了个文档附件,是李贺团队整理的初步问题清单。
陈默点开。
问题有二十多条,从技术架构到市场拓展,问得很细。最后一条是:“如何应对‘锐瞳’的低价竞争策略?”
他回复:“用价值打价格。”
发送。过了几秒,沈清澜回了个“嗯”。然后又发来一条:“你声音有点哑,没休息好?”
陈默愣了一下。
他清了清嗓子,确实有点哑,像砂纸磨过。他打字:“还好。”发送后觉得太敷衍,又补了一句:“刚才在查东西。”
“蜜罐?”
“嗯。”
沈清澜没再追问。对话框显示“正在输入”,持续了十几秒,但最后只发来一句话:“注意安全。”后面跟了个句号。
陈默盯着那个句号。
他回:“你也是。”关掉对话框。窗外又传来警笛声,这次更远,像隔着几重山。声音慢慢消散在夜色里,留下更深的寂静。
他站起来,活动了一下肩膀。
骨头发出细碎的响声,像生锈的齿轮。他走到白板前,看着被擦掉的那行小字的位置。粉笔灰还有残留,在白板底部积了薄薄一层。
他拿起马克笔。
犹豫了几秒,又放下。笔滚到桌边,掉在地上,和之前的笔帽挨在一起。一黑一白,像围棋棋子。他没捡。
走回座位,关电脑。
屏幕暗下去,房间彻底陷入黑暗。只有窗外路灯的光透进来,在地板上切出斜斜的亮条。亮条里有灰尘在飘,慢悠悠的,像深海里的浮游生物。
他背上背包。
拉链拉好,布料摩擦发出沙沙的响声。走到门边,手搭在门把上,金属冰凉。他顿了顿,回头看了一眼房间。
黑暗里,什么都看不清。
只有白板隐约反着微光,像一面沉默的镜子。他拉开门,走廊声控灯应声亮起,黄光泼进来,照亮了他半边脸。
他走出去,锁门。
钥匙转了两圈,锁舌卡到位,发出沉闷的咔哒声。他把钥匙揣进兜里,金属隔着布料硌着大腿。转身,走下楼梯。
脚步声在楼梯间回荡。
咚,咚,咚。像心跳,也像倒计时。走到一楼,推开玻璃门,夜风迎面扑来,带着潮湿的泥土气息。刚下过雨,地面还是湿的。
他抬头看了一眼天空。
云层很厚,遮住了星星,只有月亮露出一角惨白的光。光很淡,照不亮什么,只在天边晕开一片朦胧的灰白。
他走出创业园。
闸机嘀了一声,保安室里收音机还在放戏曲,咿咿呀呀的,在空旷的夜里格外清晰。他没回头,沿着街道往地铁站走。
路灯把影子拉得很长。
影子在前面引路,随着他的步伐晃动,时而缩短,时而拉长。像另一个自己,沉默地走着,走向更深沉的夜色。
口袋里的手机又震了一下。
他没看。脚步加快,鞋底踩过积水,溅起细小的水珠。水珠落在裤脚上,洇开深色的斑点。他不在乎,继续走。
风更大了。
吹得路边的梧桐树哗哗作响,枯叶纷纷落下,擦过他的肩膀,飘向身后。他伸手接住一片,叶子边缘已经干枯卷曲。
轻轻一捏,碎了。
碎屑从指缝间漏下去,落在积水里,随波漂走。他拍了拍手,继续向前。地铁站口的光在远处亮着,白惨惨的,像深夜诊所的灯。
他走向那团光。
脚步声敲在寂静的街道上,一声,一声。像锤子,敲打着这个夜晚,也敲打着他心里那根绷紧的弦。弦还在颤,余音未散。
蜜罐已经布下。
獠牙藏在哪里,他还不知道。但至少,他看到了第一滴血。血从暗处渗出来,沿着链条,一点点往上爬。
爬向那个名字。
赵志刚。他默念这三个字,舌尖抵着上颚,像在品尝某种苦涩的药。药味在口腔里弥漫开,顺着喉咙往下淌,一直淌到胃里。
灼烧感。
他深吸口气,夜风灌进肺里,冷得刺痛。刺痛让他清醒。清醒地意识到,这局棋,才刚刚开始。他摸了摸口袋里的手机。
屏幕冰凉。
像一块冰,贴着掌心。他握紧,又松开。地铁站到了,自动扶梯缓缓下行,铁制的阶梯反射着惨白的灯光。
他站上去。
扶梯带着他向下沉,像沉入深海。头顶的地面越来越远,灯光越来越模糊。最后,他彻底沉入地下,被隧道和铁轨包围。
列车进站的轰隆声由远及近。
风压掀起他的衣摆,带着机油和铁锈的腥气。他握紧背包带子,指节泛白。车门打开,车厢里的光涌出来,吞没了他的影子。