第021章 姓江的查询

全文复制 3889 字

林朗坐在一台二手联想笔记本前,屏幕的蓝色光在斑驳的墙壁上投下一片不规则的光斑。这是他昨天从电子市场淘来的机器——没有联网历史,没有个人数据,干净得像是刚从工厂出来。

但此刻它并不干净。林朗用U盘导入了从LGK Analytics服务器下载的访问日志,几十万个数据点,每一个都记录着谁在什么时间查询了什么。

他盯着屏幕上密密麻麻的时间戳,手指在键盘上敲击着一个Python脚本。时间序列分析——这是他最熟悉的领域。在前公司,他用同样的方法分析过用户行为模式,预测过流量峰值,甚至帮产品团队优化过推荐算法。

但这次不一样。

他不是在为用户服务。他是在找一个人。

"你在找什么?"苏晓禾的声音从身后传来。

林朗没有回头。他的注意力完全集中在屏幕上一行代码上。

"一个规律。"他说。

"什么规律?"

"姓氏。"

林朗把脚本跑了起来。屏幕上开始滚动输出,一行行数据像瀑布一样倾泻而下。他把查询条件限定为"姓氏=江",然后将结果按时间轴排列。

然后他看到了一个模式。

不是随机的。不是偶然的。是精确的——每隔72小时,就会有一条"姓氏=江"的查询记录。没有任何其他姓氏出现如此规律的周期。

林朗的手指停在键盘上方。72小时。三天。这意味着什么?

他打开另一个窗口,输入一行命令,把查询条件进一步细化:加上"纺织厂职工后代"这个标签。

结果跳出来了。

那些72小时周期的查询,全部附加了同一个筛选条件:"纺织厂职工后代"。

林朗的心跳漏了一拍。

他想起在公司U盘里看到的那些文件——琅城纺织集团的旧档案,一九八九年改制的记录,四万工人下岗的名单。那些泛黄的扫描件里,有无数个名字,无数个家庭,无数个被时代碾碎的人生。

而此刻,有人在系统性地查询"姓江的纺织厂职工后代"。

每三天一次。

"怎么样?"苏晓禾把一杯热茶放在桌上。

林朗没有回答。他打开了一个新的分析窗口,把"姓江+纺织厂职工后代"的查询时间戳导出到一个表格里。

然后他拿起了自己的手机。

手机里有一条匿名短信。发件人是一串乱码,时间是三天前:"注意你身边的人。"

他把这条短信的时间戳和查询时间戳并排放在一起。

重合了。

不是完全重合,但误差在两个小时以内。那条匿名短信发出的时间点,正好夹在两次"姓江查询"的正中间。

这意味着什么?

"你脸色不太好。"苏晓禾说。

"有人在找一个人。"林朗说,"每三天找一次。而且他们很急——每次查询都在工作时间之外,说明是紧急任务,绕过了正常流程。"

"找谁?"

"姓江的。琅城纺织厂职工的后代。"

苏晓禾沉默了。她的表情告诉林朗,这个名字让她想起了什么。

"怎么了?"林朗问。

"没什么。"苏晓禾移开了目光,"只是……我大学有个同学姓江。琅城人。"

"叫什么?"

"江跃。"

林朗在搜索引擎里输入了这两个字。

屏幕上跳出了结果。

第一条是一个二手交易平台的店铺页面:"跃哥二手车——南城旧车市场"。店铺评分4.8,主营二手车交易,评论区有人说"老板眼光毒,一眼能看出车有没有毛病"。

配图里有一个年轻男人,站在一辆旧桑塔纳旁边,穿着洗白的皮夹克,嘴角微微上扬。左眉骨有一道旧疤。

林朗盯着这张照片看了很久。

他不知道这个人是谁。但他知道,LGK Analytics的查询日志里,"南城旧车市场"这个地理标签出现了十七次。

十七次。全部和"姓江"的查询一起出现。

这意味着什么?意味着对方不仅知道目标姓江,还知道他在南城旧车市场附近活动。

林朗继续往下翻。第二条结果是一篇本地论坛的帖子,标题是"南城旧车市场有个牛人,看车一眼准"。帖子里提到"跃哥"的真名是江跃,二十六岁,父亲曾是琅城纺织厂的工人。

第三条结果是一个社交媒体账号,发布了一些二手车行业的日常。最近一条发布于两天前,配图是一碗牛肉面,配文"老刘的牛肉面,南城最好吃的,没有之一"。

林朗注意到这条动态的地理位置标签:南城旧车市场,距离琅跃大桥1.2公里。

他的手指在触摸板上滑动,把这些信息一一截图保存。然后他打开了LGK Analytics的查询日志,将"南城旧车市场"作为新的筛选条件。

结果让他屏住了呼吸。

不只是"姓江"的查询。在过去三十天里,LGK服务器还对"南城旧车市场"进行了超过两百次地理围栏查询。范围从500米到2公里不等,时间分布从凌晨到深夜。

这不是随机的市场调查。这是监控。

有人在用LGK的系统,对一个旧车市场周边区域进行高频次的地理监控。

而那个"姓江"的人,正好在这个区域里。

"你在发抖。"苏晓禾说。

林朗低头看了看自己的手。确实在抖。不是害怕,是兴奋。他的数据嗅觉在告诉他——所有的碎片正在拼成一张图。

"LGK不是在找客户。"他说,"他们在找人。"

"找谁?"

"我不知道具体是谁。但我知道他们在南城旧车市场附近找一个人,姓江,父亲是琅城纺织厂的下岗工人。"

苏晓禾的脸色变了。她拿过林朗的手机,盯着那张"跃哥二手车"的照片。

"我见过他。"她说。

"什么?"

"大学时候。江跃。琅城师范隔壁技校的。我们有过一面之缘。"苏晓禾的声音很轻,像是在回忆,"那时候他就已经在南城混了。听说家里条件不好,父亲……"

她停顿了一下。

"父亲怎么了?"

"听说他父亲下岗后出了事。具体我不清楚。"

林朗把这些信息在脑子里过了一遍。苏晓禾认识江跃。江跃的父亲是纺织厂下岗工人。LGK在系统性地查询"姓江+纺织厂职工后代"。

这不是巧合。

"你有没有他的联系方式?"林朗问。

"没有。"苏晓禾摇头,"我们根本不熟。只是……"

"只是什么?"

"只是他给我留下了很深的印象。因为他笑起来的时候,嘴角是歪的。别人笑是开心,他笑的时候像是在说'我知道你们在笑什么'。"

林朗重新看向屏幕上的照片。

确实。那个笑容不像是在开心。像是在说"我知道"。

林朗决定再做一件事。

他已经分析了查询日志,找到了目标的身份信息。但他还不知道是谁在发起这些查询。如果能找到查询者的IP地址,他就能知道LGK内部谁在执行这个任务。

他打开了一个终端窗口,输入了一行命令,筛选所有"姓氏=江"的查询记录,提取发起查询的IP地址,并按频率排序。

屏幕上开始滚动输出。大部分IP地址只出现了一两次。但有一个IP出现了超过五十次。

林朗把这个IP复制下来,打开了一个IP查询网站。

归属地:中国,琅城市,北城区。

运营商:琅城电信。

他正要把这个IP纳入他的关联分析脚本,手指悬在键盘上方,迟迟没有落下。

不是因为犹豫。是因为他突然意识到一件事——

如果LGK Analytics在找姓江的人,每三天一次,持续三个月,那么那些查询记录本身就是一张时间表。而这张时间表上,下一次查询的时间点,是明天凌晨。

林朗看向屏幕右下角的时间:晚上十一点十七分。

距离下一次查询,还有不到三个小时。

他打开了一个新窗口,把"南城旧车市场"的地理围栏查询记录也调了出来。两百次查询,每一次都在缩小范围——从两公里到一公里,再到五百米。对方不是在找一片区域。他们在找一个具体的人。

而那个人,此刻就在南城的某个角落里,可能正在吃一碗牛肉面,可能正在和老刘聊天,可能正在看一辆车。他不知道有人在找他。他不知道那些蓝色的光点正在地图上向他靠近。

林朗不知道这个人是谁。

但他知道,有人在找他。而那个人,比林朗想象的更近。

他把江跃的照片保存到U盘里,然后把电脑合上。

"怎么了?"苏晓禾问。

林朗没有回答。他看向窗外,南城的灯火在远处闪烁,像一只不会眨眼的眼睛。

"明天凌晨,"他说,"他们会再次查询。"

"然后呢?"

"然后我们就知道,"林朗说,"他们在找的到底是谁。"

苏晓禾没有说话。她看着林朗的侧脸,突然意识到——这个人已经不再是她在校友会上认识的那个沉默寡言的程序员了。他的眼睛里有一种她从未见过的东西,不是恐惧,是一种更冷的火焰。

林朗不知道这种火焰会把他们带向哪里。

但他知道一件事:从这一刻起,他不再只是一个被裁的程序员。

他是一个正在找答案的人。

而那些不想让他找到答案的人,已经知道了他在找。