第1章 我惦记的神颜,你却惦记我的技术
蓝桉已遇释槐鸟,不爱万物唯爱你。——题记
A国的夏天热得不像话。
窗外的蝉鸣一浪接着一浪,像是有人在耳边拉着一把破提琴。偶尔夹杂几声鸟叫,清脆倒是清脆,可在这黏腻的热风里,听着也让人觉得烦躁。
索性蓝桉房间的空调开得足,十六度,呼呼地往外送冷气,把整个房间冻得像冷藏室。她裹着一条薄毯,整个人窝在床里,只剩一双眼睛和一双手露在外面。
电脑屏幕上,网课正在进行。
“ROM中的数据或程序一般是在将ROM装入计算机前事先写好的。”屏幕里的声音低沉、平稳,是蓝桉专门给自己找的安抚小曲,“一般情况下,计算机工作过程中只能从ROM读出事先存储的数据,而不能改写。这是ROM与RAM最本质的区别……”
蓝桉咬了一大口西瓜,汁水顺着嘴角往下淌,她手忙脚乱地用纸巾去擦,眼睛却一秒钟都没离开过屏幕。
苏归耀今天穿了一件黑色的短袖,领口微微敞开,露出一小截锁骨。他坐在书桌前,背景是一面落满书的墙,灯光从侧面打过来,把他半张脸映得明亮,半张脸落在阴影里。
小麦色的皮肤,鼻梁挺直,嘴唇薄而形状分明,一双丹凤眼好似会说话一般。
他讲课时总是微微皱眉,像是总在思考什么比眼前更深远的问题,偶尔停下来,抬眼看向镜头,那双眼睛颜色偏浅,像是秋天被阳光洗过的琥珀。
蓝桉每次被那双眼睛扫过,都觉得心脏被人攥了一下。
“啊呜!”她又咬了一口西瓜,含混地嘟囔了一句:“这张脸讲什么课啊,去演戏不好吗……”
她当然知道苏归耀不会去演戏。
清大最年轻的计算机教授,博士毕业那年直接被学校特聘回来,研究方向是网络安全与密码学。
这些她早就通过手段翻来覆去查了个遍,连苏归耀硕士期间发过哪几篇顶会论文都倒背如流。
蓝桉把二郎腿换了个方向翘,薄毯滑下来一半,露出她穿着短裤的腿。
空调太冷了,她又懒得伸手去拽,就这么缩着脚趾头,整个人像一只蜷在窝里的猫。
屏幕上的苏归耀正在黑板上写代码,手指修长,指节分明,敲键盘的动作干脆利落。
“今天的课就到这里,大家晚安。”
苏归耀说完这句话,难得地笑了一下。不是那种对着镜头的营业式微笑,而是嘴角轻轻一弯,眼睛里带着一点不易察觉的温度,像是真的在跟屏幕对面的人道别。
蓝桉顿时有些失落,要知道自己看他就是为了放松,这还没讲多久呢,就结束了。
下一秒,直播结束,画面定格,随即弹出“直播已结束”的提示框。
蓝桉盯着那个提示框发了三秒钟的呆,然后长长地呼出一口气,把手里啃了一半的西瓜皮扔进垃圾桶,翻身下床。
“要命了。”她一边往卫生间走一边自言自语,“苏归耀这个人是不是不知道自己长什么样?他怎么能那样笑?他怎么能!”
“我要是男的,有他这张脸我一定迷倒万千少女!”
她拧开水龙头,冷水哗哗地冲在脸上,凉意从皮肤渗进去,总算让自己清醒了几分。
昨晚蓝桉忙着给家里的公司做数据采集,直接熬了个通宵。刚才本来想着看直播助眠的,结果猪瘾犯了,吃了个大西瓜彻底睡不着了。
蓝桉抬起头,看着镜子里湿漉漉的自己。头发乱得像鸡窝,嘴角还有西瓜汁没擦干净,眼角甚至还挂着一粒眼屎。
她沉默了两秒,面无表情地挤了洗面奶,开始认认真真地洗脸。
洗完脸,换了身见得了人的衣服,蓝桉下了楼。
楼下的客厅宽敞明亮,落地窗外是一个打理得整齐的小花园,阳光穿过玻璃照进来,在地板上铺了一层金色的光。
蓝桉的爸爸蓝思莫正坐在沙发上,一手端着咖啡,一手拿着报纸,那叫一个悠闲。
蓝桉扫了一眼客厅,没找到那个熟悉的身影。
“爸!我妈呢?”
蓝思莫头都没抬,翻过一页报纸,语气淡淡的:“出去了。”
蓝思莫瞥了眼蓝桉,开口道:“有熬夜了?”
蓝桉顿时心虚了,要知道这个活儿是她自己找哥哥要过来的,目的就是赚点外快。如今被自己老爸拆穿,蓝桉只觉得尴尬。
蓝桉凑过去,一屁股坐在蓝思莫旁边,歪着脑袋看他的表情。
见蓝思莫面上没什么情绪起伏,蓝桉这才松了口气。
“我亲爱的爸爸,”蓝桉嬉皮笑脸地凑上去,“你怎么那么冷漠?我可是你亲生的女儿啊!要不工资多给点?”
蓝思莫终于看了她一眼。那一眼从上到下,从她没梳的头发到她没换的睡裤,最后落在她光着的脚上。
“蓬头垢面,衣衫不整,”蓝思莫面无表情地评价,“既然那么喜欢,就和你哥一起去公司打下手!”
蓝桉:“……”
蓝桉愤怒,蓝桉起身,蓝桉窝囊地坐回自家老爸身边。
让蓝桉去打理公司是不可能的,当年她为了不去接触公司,特地把专业改成计算机。如今跟别说让她去打下手了。
她刚要撒娇企图蒙混过关,余光瞥见蓝思莫手里的报纸,头版上的一行标题猛地撞进眼睛里,“清大教授直播上课,有失文人风骨。”
配图是一张苏归耀的直播截图。截图上苏归耀正对着镜头微笑,就是那个让蓝桉心跳漏了一拍的笑容。
照片拍得很清晰,连他眼角那颗小小的痣都能看见。
蓝桉的脑子“嗡”了一下。
她立即凑了上去,仔细阅读起报纸,飞快地扫了一眼正文。
通篇都是些酸溜溜的话。“教授本应潜心治学,岂能沦为网络哗众取宠之辈”
“直播授课虽有创新之名,然举止轻浮,有失体统”
字里行间全是恶意,就差没指着苏归耀的鼻子骂他不务正业、沽名钓誉了。
“这些人脑子有病吧?”蓝桉的声音一下子拔高了八度,“人家直播上课又没犯法,他碍着谁了?什么叫‘有失文人风骨’?他讲计算机组成原理讲得比清大本校的老师都好,你们去看过他的课吗?你们听得懂吗?一群什么都不懂的人在这里指手画脚……”
“又春心萌动了?犯花痴到楼上犯。”蓝思莫打断她,声音不大,但带着一种让人不敢顶嘴的威压。他伸手把报纸从蓝桉手里抽回来,不紧不慢地叠好,放在茶几上。
蓝思莫看着这个不争气的女儿,只觉得头疼。
蓝桉张了张嘴,想反驳,但对上蓝思莫那双眼睛,到底还是把话咽了回去。
她“哼”了一声,站起来,光着脚踩在地板上,“咚咚咚”地跑上了楼。
一进房间,门“砰”地关上,蓝桉的怒火彻底烧起来了。
“什么狗屁报纸!什么狗屁文人风骨!”她把自己摔进椅子里,椅子发出一声惨叫,“写这文章的人懂个屁的计算机!”
她越想越气,胸口像是被人塞了一团火,烧得她坐立不安。打开电脑,手指噼里啪啦地敲在键盘上,新建了一个文档,开始写反驳的长文。写了两行觉得不够,删掉重来,又写了两行又觉得太温和了,直接关了文档。
“不行,”她盯着屏幕,眼睛亮得像两颗烧红了的炭,“不能跟他们讲道理,这帮人根本听不懂人话。得用他们听得懂的方式说话。”
蓝桉深吸一口气,开始了她的复仇计划。
代码一行一行地生成,她先是用了一个分布式爬虫框架,把那条新闻底下所有的恶意评论全部抓取下来,按照IP地址和账号行为模式做了聚类分析——不出所料,其中超过百分之六十的账号都是同一批水军公司在操作,IP段高度集中,发布时间呈明显的脉冲式特征。
“果然。”蓝桉冷笑了一声,嘴角勾起一个危险的弧度。
蓝桉手指在键盘上继续编辑。
这次她写了一个自动化脚本,针对那家报社的官网。不是什么高深的东西,就是一个精准的HTTP请求注入——利用他们评论区接口没有做参数过滤的漏洞,把那些水军账号的评论数据反写回他们的数据库里。不是删评论,不是黑服务器,只是在他们自己的地盘上,用他们自己的数据,打他们自己的脸。
每一条被识别为水军的评论后面,脚本会自动追加一条置顶回复,内容只有一个公式:P(ext{恶意评论}|ext{IP聚类},ext{时间模式})=0.997
看不懂的人会觉得莫名其妙,看得懂的人会后背发凉。
做完这些,蓝桉又打开苏归耀直播的社交账号评论区。评论区已经乱成了一锅粥,黑粉和水军混在一起,偶尔夹杂几个真正的学生在那里据理力争,声音小得像蚊子叫。
蓝桉撸起袖子,开始了第二轮战斗。
她注册了二十个账号,每个账号都有独立的浏览器指纹和User-Agent,IP地址通过她自建的代理池轮换,完全模拟真实用户的行为模式。
她给每个账号设定了一个人设,有的是计算机系的研究生,有的是苏归耀以前的学生,有的是看过他所有课程的普通网友……
然后用这些账号分别在不同的时间段、以不同的语气和角度,逐条驳斥那些黑粉的言论。
有的账号理性客观,摆数据讲事实:“苏教授近三年在CCF A类会议上发表论文七篇,其中第一作者四篇,这个产出在清大计算机系排前三。说他不务正业的,麻烦拿出你们的学术成果来比一比。”
有的账号感性温情:“我是苏老师的学生,他每周组会都开到凌晨一点,一个一个帮我们改论文。直播讲课只是他希望能让更多人接触到好的教育资源而已。你们不了解他,凭什么骂他?”
有的账号阴阳怪气,专门对付那些不讲理的黑粉:“对对对,您说得都对。一个快三十岁的清大正教授,网络安全领域引用量过万,确实不如您这个在键盘后面敲字的懂什么叫‘文人风骨’。”
蓝桉一个人活成了一支军队,愣是给自己搭建了一个水军组织。
从上午八点,一直撕到下午四点。中间只吃了两包薯片,喝了一瓶可乐,厕所都没上过几回。
她的眼睛始终盯着屏幕,手指始终在键盘上,嘴角始终挂着一个倔强的、不肯服输的弧度。
蓝桉在这方面从来没怕过的,她可不信对面再多的人能有她的大数据算的快。
但不知道的是,在大洋彼岸,另一个人也在看着这场混战。
C国,晚上十点。
苏归耀的职工宿舍里只亮着一盏台灯。
暖黄色的光笼罩着书桌的一角,把周围的一切都推入朦胧的暗影中。窗外是B国首都的夜景,万家灯火,车流如织,但窗帘拉了一半,只露出一线城市的剪影。
苏归耀靠在椅背上,手里拿着手机,眉头微皱。
他的室友林知序从浴室出来,擦着头发,瞥了一眼苏归耀的表情,好奇地凑了过来。
林知序跟苏归耀是大学同学,同门师兄弟,一路从本科读到博士,现在又在同一个实验室做博士后研究,两人之间的关系说是兄弟也不为过。
“怎么了?一脸便秘的表情。”林知序问。
苏归耀没说话,把手机递给他看。
林知序接过去一看,是苏归耀社交账号的评论区。他往下划了两下,眉毛渐渐挑高,再划几下,嘴已经张成了O形。
“你这手机都成蜘蛛网了,还不换?”林知序一接过手机,就对着苏归耀这部“老年机”发出灵魂质问。
“卧槽。”林知序脱口而出,“姓苏的,你的粉丝可以啊。”
“嗯?”
“这么猛的吗?”林知序把屏幕凑近了些,仔细看了几条评论,越看越觉得不对劲,“你等等!这个账号,还有这个,你看它们的回复风格不一样,但攻击的目标和使用的论据是高度协同的。还有这个回复时间分布。等等,你看到这个没有?”
他把屏幕指给苏归耀看。
那条置顶的、带着贝叶斯公式的回复,在所有水军评论下方整齐地亮着。
苏归耀接过手机,盯着那个公式看了几秒钟。他的表情没什么变化,但眼睛微微眯了一下。
“这是什么意思?”林知序问,他有些看不懂发表评论人的意思了。
“意思是,”苏归耀的声音不急不缓,像是在课堂上回答学生的问题,“有人用贝叶斯分类器对这些评论做了分析,识别出了水军账号,然后把后验概率直接贴在了他们脸上。”
林知序愣了一下,然后大笑起来:“我靠,这谁干的?这也太损了吧!”
苏归耀没笑。他又划了几页评论区,越看越觉得不对劲。
不是那些评论的内容让他惊讶,那些反驳虽然角度不同,但内核是统一的,显然是同一个人的手笔。让他惊讶的是这些账号的操作方式。
他点进一个账号的主页,查看它的活动时间线,又点进另一个,对比了一下。
两个账号从来没有在同一IP段下出现过,用户代理的分布也完全符合真实用户的行为习惯,甚至连每次请求的时序特征都看不出任何规律。
“这是一个分布式伪装,”苏归耀喃喃自语,声音低得几乎只有自己能听见,“多账号、动态IP、指纹隔离……这个人在用做渗透测试的思路做舆论对抗。”
林知序凑过来:“你说什么?”
苏归耀没有回答。
“林知序,你的电脑借我用一下!”
林知序把电脑给了苏归耀,随后吐槽道:“大哥你好歹把电脑换一下不行吗?你怎么说也是个计算机专业的教授!”
“学校不是提供电脑吗?”苏归耀话还没说完,已经打开了电脑,手指飞快地敲着键盘,调出了一个他常用的网络分析工具。他把其中一个蓝桉使用的账号作为目标,开始追踪它背后的网络行为。
他不打算查对方的真实身份,那太简单了,而且多少有点没品。毕竟人家这么做是为了帮他。
他只是好奇,这个人的技术到底到了什么程度。
十分钟后,苏归耀盯着屏幕上那一串被他逆向出来的数据包,沉默了很久。
“怎么了?”林知序问。
苏归耀缓缓开口:“我破不了。”
“啥意思?”
“这个人的防护。”苏归耀指了指屏幕上那些被他拆解开又重组的数据流,“我用了一般的逆向手段,想看看她是怎么做指纹隔离的。但她在每一层都做了混淆——不是简单的加密,是语义层面的混淆。她把正常的HTTP请求伪装成了游戏数据包,把时序特征随机化到了无法建立行为模式的程度。”
林知序听懂了,脸上露出难以置信的表情:“你的意思是,连你都破不了?”
苏归耀没有说话。他靠在椅背上,台灯的光落在他脸上,把那双浅色的眼睛照得近乎透明。他的表情还是那样平静,但眼底有一丝疲惫。
苏归耀努力思索着对方的身份,他不明白对方帮他的意图,也不明白对方的目的。
“这个人,”苏归耀慢慢地说,“我要找到她。”
他给那个账号发了一条私信。
苏归耀:你是黑客?
消息发出去,石沉大海。一个小时过去了,两个小时过去了,六个小时过去了。对面始终没有回复。
苏归耀把手机放在书桌上,屏幕朝上,每隔一会儿就忍不住瞥一眼。
林知序在旁边的床上躺着,看着他这副样子,忍不住笑了。
“我说,你追姑娘都没这么上心过。”
苏归耀没理他。
“不对,”林知序想了想,更正道,“你根本就没追过姑娘。”
苏归耀还是没理他,对于林知序的这种调侃,他一向视为空气。
苏归耀此时并不知道,幕后黑手如今正四仰八叉的瘫在床上睡大觉。
直到第二天早上,B国的阳光从窗帘缝隙里挤进来,落在苏归耀的手机上。屏幕亮了一下,提示音清脆地响了一声。
苏归耀几乎是瞬间从半梦半醒中清醒过来,一把抓起手机。
一个有毒的树:是。
只有一个字。看来还是一个高冷的人。
苏归耀盯着那个字看了几秒钟,开始打字。
苏归耀:你是怎么把防火墙编得那么好的?
发完之后他又觉得这话说得太直接了,像审犯人。他删掉重打,又觉得太绕了,再删掉,最后保持了原样。
他用了一天的时间去破解那个防火墙,或者说,试图去破解。
从早上八点到晚上八点,他换了七种不同的思路,用了四种编程语言,写了超过三百行的测试代码。每一次都以为自己找到了突破口,每一次都在最后一步被某个精巧的、他完全没想到的机制挡了回来。
那不是市面上任何一种现成的防火墙方案。
那是从底层重新设计的一套防御逻辑,每一层的混淆都是语义级别的,不是简单的加扰,而是让攻击者即使拿到了数据包也看不懂它在说什么。
更让苏归耀在意的是,这套方案里有几个地方的设计思路跟他自己正在研究的一个方向高度相似,不是抄袭,是趋同进化,是两个人独立地走到了同一个路口。
这种感觉很奇妙。像是在一条没人走过的路上,突然看见了另一个人的脚印。
他等不及了。
苏归耀守在电脑面前,每隔几分钟刷新一次私信界面。窗外C国的夜色越来越深,星星一颗一颗地亮起来,他的屏幕是房间里唯一的光源。
终于,头像闪了一下。
一个有毒的树:告诉你有什么好处?再说了我做的这些对你百利而无一害。
苏归耀几乎是在消息弹出的同一秒就开始打字。
苏归耀:你想要什么?
他发完这句话,才意识到自己问得太快了,像是个迫不及待的毛头小子。但他顾不上那么多了。
对面沉默了几秒,也可能是十几秒,苏归耀不确定,因为他的心跳声太大了,盖过了时间。
而在另一边的蓝桉揉着自己因为超负荷工作而快要爆炸的头,思考起来。
一个有毒的树:想要你的自拍照片。
苏归耀:……
他看着屏幕上那行字,表情凝固了整整三秒钟。
然后他的眉头皱了起来,心想着对面会拿自己的照片做什么。
他开始怀疑对方是不是变态。一个技术好到能让他花一整天都破解不了防火墙的人,开口第一件事就是要自拍?
这不对。这完全不按常理出牌。
但破解防火墙的方法实在太诱人了。
那种感觉就像你站在一扇门前,你知道门后面有你一直在找的东西,而钥匙就在这个人手里,你不可能转身走开。
但苏归耀又想了想,如今的自己好像也没什么可以失去的了。
于是苏归耀闭了闭眼,深吸一口气,打开手机相册,翻了好一会儿。他的自拍很少,翻来翻去就那么几张,还都是被林知序强行拉着拍的。
最后他选了一张一个月前拍的,不是什么精心准备的照片,就是几天前参加活动被领导拉过去拍的。
照片里的他穿着有些泛黄的白衬衫,背景是图书馆的大窗户,午后的阳光把他的侧脸镀了一层暖金色,睫毛的影子落在颧骨上,给人一种瘦弱书生的感觉。
他看了两秒钟,觉得这张还行,不太刻意,也不算太丑。
然后他点了发送。
林知序经过,不禁发问:“不是,大教授!你的反诈意识呢?就这么给对方了?”说着还凑了过来,看了看聊天记录。
“我还有什么好骗的,难不成给对方几个欠条让他帮我还债?”苏归耀靠在椅子上,摘下眼镜,耐心等待着对方的反馈。
林知序不说话了,灰溜溜的离开了。
远在A国的蓝桉,此刻正趴在床上,手机屏幕的蓝光照亮了她那张因为头痛而有些苍白的脸。她看到“对方正在输入”的提示闪了好几下,然后一张照片弹了出来。
蓝桉的眼睛猛地瞪大了,大脑停滞一瞬,立即忘记了头疼这件事。
她盯着那张照片,一动不动地看了足足十秒钟。然后她慢慢地、慢慢地,把手机捂在了胸口,整个人像一只被煮熟的虾一样蜷了起来,在床上滚了两圈,脸埋进枕头里,发出一声闷闷的、带着笑的尖叫。
“完了,”她闷在枕头里说,声音又小又哑,“完了完了完了……”
她翻过身,把手机举到眼前,又看了一眼那张照片。
苏归耀的白衬衫在阳光下白得发亮,他的侧脸好看得不像真的,嘴角有一个几乎看不见的、淡淡的弧度,像是刚想到了什么有趣的事情。
蓝桉盯着那个弧度看了很久。
然后她又想到了什么,开始打字。
一个有毒的树:不够。再来一张。
苏归耀:?
一个有毒的树:我知道你想要知道关于防火墙的事!那你要不要学防火墙了?
对面沉默了五秒钟。
然后第二张照片发了过来。
蓝桉把两张照片翻来覆去看了好几遍,最后心满意足地锁了屏,把手机放在枕头旁边。她望着天花板,空调的风吹过来,薄毯被她蹬到了床脚,她也不觉得冷。
窗外的蝉还在叫,夜风吹动窗帘,露出一角深蓝色的天空,上面挂着一弯细细的月亮。
蓝桉弯起嘴角,轻声说了句什么。声音太小了,连她自己都没听清。
但大概的意思是,这个夏天,好像要发生点什么了。

