下一章 上一章 目录 设置
3、第 3 章 逆向追踪 ...
-
周日凌晨两点十七分。
季寒声没有睡。
她坐在书房的圈椅里,面前是一台深灰色的笔记本电脑,屏幕上同时开着六个窗口——数据包分析、行为特征建模、IP跳转路径回溯、论坛帖子时间线聚类,以及一个她正在写的Python脚本。
书房不大,朝北,窗外是北京十一月的夜空,没有星星,只有远处写字楼顶端那盏红色的航空障碍灯,一明一暗,像某种古老的心跳。
她穿着一件黑色的薄毛衣,袖子卷到小臂,露出左手腕上的欧米茄手表。乌木簪已经取下来了,黑色直发散在肩头,发尾微微卷着——天生的,不是烫的。
茶桌上,一把紫砂壶里泡着今年的新肉桂,茶汤已经泡到第四泡,颜色淡了,但香气还在。
她端起茶杯,没喝,只是放在手心里暖着。
屏幕上,她写的那个Python脚本正在运行。
进度条: 43%。
这个脚本做的事情很简单——把Celestine七年来所有公开帖子的发布时间提取出来,转换成时间戳,做成一个活跃时间分布图。
她不是第一个做这件事的人。
圈内早有人分析过Celestine的活跃时间,结论一致:凌晨,深夜,偶尔通宵。
但没有人把这些数据点和她做更深层的关联。
季寒声的脚本不止在分析时间。
它同时在抓取每一个帖子发出去之后,Celestine的在线时长——她发了帖子之后会在论坛停留多久?是发了就走,还是留下来看回复?
结果很有意思。
Celestine发完技术帖之后,平均在线停留时长是47分钟。
但如果发的是问答帖,停留时长会缩短到15分钟左右。
这说明两件事:第一,她对“输出”比“输入”更有耐心;第二,她在意别人怎么看待她的技术成果,但不太在意别人教她怎么做。
不是傲慢。
是自信。
或者说,是她对自己的判断足够笃定。
季寒声把脚本的运行结果截图保存,打开另一个窗口——IP跳转路径回溯。
这个回溯不是追踪Celestine的IP——那三天的经验告诉她,对方的代理链设计得滴水不漏,每一跳的日志清除都在三秒内完成,没有任何可追溯的痕迹。
但有一个细节,她注意到了。
Celestine的自动跳转脚本,在每个节点停留的时间不是随机的,而是符合某种规律——
短、短、长、短、长、长。
像某种密码。
或者像某种节奏。
季寒声盯着那串停留时长数据,忽然想起一件事。
她七岁开始学钢琴,学了六年,虽然最后没有走专业路线,但她的节奏感是被巴赫的赋格曲训练出来的。
那个节奏——
短长短。
不是密码。
是切分音。
Celestine的自动跳转脚本,是按照音乐的节奏来写的。
季寒声靠在椅背上,盯着天花板,忽然笑了一下。
幅度很小,几乎看不出来。
但确实在笑。
一个把代理跳转脚本写成乐谱的人。
她拿起手机,打开那个论坛私信对话框。
Celestine最后一条消息还是那句“你说话像在写诗”,她回复的“你也是”之后,对方没有再发。
对话框停在那个位置,像一盘下到中局的棋,双方都在等。
季寒声打了一行字,想了想,删掉了。
又打了一行,又删掉了。
最后她只发了一个字:
“嗯。”
发完之后她觉得自己可能疯了——凌晨两点半,给一个身份不明、可能正在睡觉的小黑客发一个“嗯”字。
但两秒钟后,对方回了。
“你也不睡。”
这次不是问句,是陈述句。
季寒声的手指在屏幕上停了一下。
“你也是。”
“我在做事情。”
“我也是。”
“你在做什么?”
季寒声看着这个问题,犹豫了三秒。
“在想你那个弹窗。”
对面秒回了六个点:
“......”
季寒声盯着那排省略号,嘴角又动了一下。
“为什么加波浪号?”
对面沉默了几秒。
“因为我猜对面是个叔叔阿姨,加个波浪号显得可爱一点。”
“万一不是呢?”
“不是什么?”
“不是叔叔阿姨。”
对面又沉默了。
这次沉默更久,久到季寒声以为她不会回了。
然后一条消息弹了出来:
“那你是什么?”
季寒声看着这五个字,手指悬在键盘上方,打了两个字,删掉,又打了四个字,又删掉。
最后她打了三个字:
“喝茶的。”
对面发来一个翻白眼的表情包——一只白色的小猫翻着白眼,配字是“行吧”。
季寒声盯着那只翻白眼的小猫看了三秒,保存了这张图。
她不知道自己为什么保存。
大概是觉得,这个表情包,和Celestine的语气,很配。
---
周日白天,季寒声没去办公室。
她在家里的书房坐了一整天,对着电脑,没有喝茶,喝了整整一壶白开水。
她在画一张图。
一张Celestine的技术人格画像。
这不是什么正规的刑侦手段,更接近行为分析,或者说,接近一种直觉层面的拼图。
她把搜集到的所有信息铺在桌面上:
- 137篇论坛帖子,按时间排列,标注出每一个技术方向的变化轨迹。
- 所有公开的代码片段,按语言分类(Python、C、JavaScript、Go)。
- 所有弹窗、注释、回复中的语气特征。
- 所有活跃时间的分布规律。
- 那串切分音节奏的代理跳转。
- 那只翻白眼的小猫。
她把这些信息当成碎片,试图拼出一个完整的人。
不是找出她的真实身份——那是技术协查的事。
而是理解她:她怎么思考,她为什么这么写代码,她在意什么,她不怕什么。
季寒声拿起一支铅笔,在A4纸上写下了几个关键词:
年轻(心理年龄比生理年龄更年轻)
直觉型(不是不会逻辑推演,是更喜欢跳步)
审美驱动(代码写得不好看,宁可重写)
夜间动物(夜晚是她的主场)
孤独但不寂寞(深夜在线,但没有社交需求)
挑衅但不恶意(弹窗加波浪号,本质是玩耍)
写完这六条,她盯着最后一条看了很久。
挑衅但不恶意。
她在网安系统干了八年,见过太多黑客——有的出于政治目的,有的为了钱,有的单纯因为恨。真正“为了好玩”的,很少。
Celestine是其中一个。
而且她玩得很认真。
季寒声把这张纸折起来,夹进她常用的那本《灵飞经》字帖里,然后拿起手机,打开日历。
周二下午,北邮。
讲座。
她不确定Celestine会不会来。
但她确定一件事:如果Celestine是北邮的学生,这场讲座的主讲人是公安大学的教授,讲的是“网络空间安全的前沿挑战”,这个主题,Celestine大概率会感兴趣。
不是因为她想学什么。
是因为她想看看,官方的人怎么看她所热爱的领域。
季寒声把手机放在桌上,起身去泡茶。
水烧开的时候,她站在厨房的窗前,看到对面楼的阳台上有人晾了被子,白色的棉被在十一月的风里鼓起来,像一面柔软的帆。
她忽然想,Celestine会不会也晾被子?
这个念头冒出来的时候,她自己愣了一下。
然后她把水倒进紫砂壶,茶叶在热水中慢慢舒展开来,肉桂的香气弥漫开来,辛辣的,温暖的,像冬天的第一口热汤。
---
周二下午两点,北京邮电大学。
季寒声到得很早。
她穿了一件黑色的羊毛大衣,里面是深灰色的高领毛衣,黑裤子,低跟皮鞋。乌木簪还是那支,低低地挽着。银框眼镜架在鼻梁上,镜片后面那双狭长的单眼皮眼睛,看起来比平时更沉静。
她站在教学楼门口,抬头看了一眼。
楼不高,灰白色的外墙上爬着枯黄的藤蔓,窗户反射着冬天下午寡淡的阳光。学生们三三两两地从她身边经过,有人看她一眼,又迅速移开视线。
季寒声习惯了这种目光。
她的长相和气质,在这个年纪的人堆里,是会被多看两眼的。
她走进教学楼,找到讲座所在的阶梯教室。
教室能坐两百人,这会儿已经来了七八十个,大部分是北邮网安学院的学生,也有一些外校来蹭课的。季寒声选了一个靠墙的位置,第三排,不是正中间,是偏左的角落。
坐在这里,她能看到整个教室,但不容易被看到。
讲座三点开始。
主讲人是公安大学的刘建国教授,六十多岁,头发全白了,声音不大,但讲得很清楚。题目是“网络空间安全的前沿挑战——从技术到法律”。
季寒声听得很认真。
不是因为内容对她来说是新的——恰恰相反,大部分内容她早就知道。但她听的是刘教授讲这些内容时的角度和取舍,哪些被强调,哪些被一笔带过。
官方叙事和技术真相之间,往往隔着一条河。
她想知道,这条河有多宽。
讲座进行到一半的时候,教室后门被轻轻推开了。
一个人影闪了进来。
动作很快,声音很小,但季寒声的余光捕捉到了。
她没有回头。
只是稍微调整了一下坐姿,让视线可以覆盖到教室后半部分。
那个人影在最后一排靠门的位置坐下了。
季寒声没有直接看。
她等了几秒,假装低头看笔记本,借着镜片的反光,捕捉到了那个人的大概轮廓——
长头发,深色的外套,书包是红色的。
季寒声的心脏跳了一下。
但她脸上没有任何表情,继续抬头听讲座,手里的笔在本子上写写画画,看起来一切如常。
讲座持续了整整两小时。
期间,季寒声没有回头看第二次。
但她一直在注意声音。
那个人坐得很安静,没有玩手机,没有跟旁边的人说话。偶尔有翻动笔记本的声音——纸质的那种,不是电脑。
快结束的时候,她听到了一个声音。
很小的声音,像在自言自语,又像在跟旁边的人说。
只有一个词。
“有意思。”
声音不大,但很清亮,像冬天里咬了一口脆苹果。
季寒声的手指在笔记本上停了一下。
她没有动。
讲座结束了,掌声响起来。
季寒声站起来,把笔记本合上,黑色大衣的衣角随着她的动作轻轻摆动。
她转过身。
最后一排,那个红色的书包刚刚闪出门外。
季寒声没有追。
她把笔记本放进包里,慢慢地走向门口。
走廊里已经有很多人了,三三两两地往外走,讨论着讲座的内容。季寒声在人群里走得很慢,目光平静地扫过每一张脸。
没有看到那个红色的书包。
她在教学楼门口站了一会儿,点了支烟。
她几乎不抽烟,只有在需要想事情的时候。
风把她散下来的几缕头发吹到脸上,她抬手别到耳后,指尖碰到自己冰凉的耳廓。
她想。
她没有看到那个人的脸。
只看到了一个轮廓,一个红色的书包。
还有那句“有意思”。
这三个字的语气,她认得。
和她翻了三天的Celestine的帖子,语气一模一样。
不是直接的证据,不是技术协查的结果,不是任何可以被写在报告里的东西。
但她知道。
季寒声把烟掐灭在垃圾桶顶端的灭烟盘里,掏出手机,给周正安发了一条消息:
“周组长,帮我查一个人。”
“谁?”
“北邮网安学院的研究生,女生,长头发,背一个斯凯奇红色的书包。”
对面发来一排省略号。
“没照片?”
“嗯。”
“季寒声,你是不是……”
“查到了请她喝杯茶。”
季寒声把手机揣进口袋,往停车场走。
十一月下午的风很冷,她把大衣的领子竖起来,踩在满地的银杏叶上,发出细碎的声响。
走出校门的时候,她的手机震了。
是论坛私信。
Celestine:
“你今天心情不好吗?”
季寒声停下脚步,站在街边,看着这行字。
“为什么这么问?”
“因为你只回了一个‘嗯’。”
季寒声盯着这行字,忽然想起昨天凌晨她发的那个“嗯”字。
Celestine把它记着了。
“没有心情不好。”她打字。
“那为什么只回一个字?”
季寒声想了想。
“因为没有比‘嗯’更合适的回答。”
对面沉默了几秒。
“你说话真的好奇怪。”
“哪里奇怪?”
“像在写诗,又像在下棋。”
季寒声站在路边,十一月的风吹过她的脸,银杏叶在她脚边打着旋。
她打了很长一段话,又删掉了。
最后只发了三个字:
“谢谢。”
对面发来一个问号。
季寒声没有解释。
她锁上手机,打开车门,坐进驾驶座。
车子发动的时候,音响自动连接了手机,播放的是巴赫的无伴奏大提琴组曲。
她调高了音量。
大提琴的声音低沉而克制,像一个人在对另一个人说话,说了很久,但没有用太多词语。
季寒声把车开出停车场,汇入北京晚高峰的车流。
她开得很慢,不急。
像她的追踪。
像她的等待。
像她今天没有追出去看那张脸,只是记住了那个红色的书包。
她有的是时间。
她一直很有耐心。