黄昏过去了,夜没有声息地落下来。窗外的天色从灰白过渡到铅灰,再从铅灰沉入墨蓝,像一杯被不断兑浓的茶,颜色越来越深,直到再也看不见对面的楼顶。风大了些,刮得窗外的树枝一下一下地扫在玻璃上,沙沙的。
云飞一个人在机房里坐了很久。
那声闷响之后,隔壁工位的同学探出头来看了他一眼,没人敢问。他维持着那个姿势:右手攥着拳,指节发红,桌上的冰红茶被震倒又被他扶正了。他盯着张若木留下的那张名片,白底黑字,姓名下面一行职务,一个手机号。他把名片翻过来,背面是空的。又翻回去,看了几秒,然后塞进了口袋里。
他没有关机,也没有继续敲代码。他站起来,把椅子推回桌下,拿了那瓶已经喝了大半的冰红茶,走出了机房。走廊里已经没什么人了,日光灯管在天花板上嗡嗡地响,窗外的天色正在往下沉,从灰白变成铅灰,再从铅灰往深色过渡。他走过走廊尽头的时候,掏出手机看了一眼:没有新消息,没有未接来电。张若木没有再打过来。
他回宿舍的路上经过操场,有几拨人在跑圈,篮球场上的声音传得很远。他把卫衣帽子拉起来,遮住半边脸,低着头走过去,没有看任何人。宿舍门是锁着的,他掏钥匙开了门,屋里没人,顾樗这学期在外面实习,很少回来住。四人间空了三张床,桌面上落了薄薄一层灰。他把那瓶冰红茶放在桌上,没开灯,在黑暗里坐了一会儿。然后他打开了电脑。
屏幕亮起来的时候,他的脸被光打亮了一半。他打开了一个加密的浏览器,不是市面上常见的那种,是自己写的壳,套了三层代理,出口伪装成东南亚某个小国的普通宽带用户。他输入了一串地址。页面加载了大概四五秒,然后出现了一个深灰色的界面,没有logo,没有欢迎语,只有一个搜索框和一行小字:「输入邀请码,或返回。」
他没有邀请码。他也不需要。
他从口袋里的那叠便利贴上撕下一张,上面是他刚才在机房里随手记的一串字符,从张若木说到的那个加密频道的信息里反推出来的一个哈希值前缀。他没当着张若木的面做任何事,但那些数字已经在他脑子里转了无数遍。他只需要一个入口。
他的手指在键盘上停了片刻,然后敲了一行命令。不是通过那个搜索框,是通过开发者工具直接向后端发送了一个伪造的握手请求。页面上跳出了一个弹窗,上面写着:「连接被拒绝」。他又试了一次,换了端口和协议头。又被拒绝了。第三次。他在参数里附加了一小段特殊构造的payload。这一次,页面没有弹窗,而是直接跳转了。屏幕上的界面变成了一行一行滚动的代码,像是在某个系统的后台日志里。
他看到了自己的代码。
不是完全一样的,但骨架没变。那套P2P节点跳转的核心算法,他三年前在一间出租屋里写的,那时候他还不满十八,一台破笔记本,半箱泡面,花了整整两个通宵。他记得那段代码里有一个故意的冗余,一个没有任何功能意义的变量,只是他个人的习惯,像个签名。他往下翻了几屏,找到了那个变量。还在。一个字都没改。
云飞靠在椅背上,盯着屏幕上那行代码看了很久。屏幕的蓝光映在他脸上,没有表情。然后他把浏览器关了,合上电脑,在黑暗里坐着。窗外操场上的人声已经远了,不知道谁在远处放了一首歌,听不清歌词,只有旋律在夜风里断断续续。他掏出手机,翻到通讯录里新存进去的那个号码。没有存名字,只有一串数字。他把手机放在桌上,屏幕朝下。三秒后,他又把手机翻过来,打开微信,搜索了那个号码,没有对应的微信号。又搜了一下手机号,归属地云城,中国移动。在刑警队干了七年的人,连微信都不加。什么年代了。
他不知道为什么自己要较这个劲。他又把手机扣了过去。
第二天上午,十点刚过。张若木正在市局看周天倪整理出来的白罍资料。蓝光科技的技术总监,三十七岁,已婚,有一个七岁的女儿,在公司干了五年,风评不错,看不出任何跟暗网有关的迹象。周天倪说"这人看着不像啊",张若木没有接话。他拿起杯子喝了口水,发现杯子已经空了,放下杯子的时候,他看了一眼手机。没有未接来电,没有短信。他划了一下屏幕,又放回去。
手机在桌面上震了一下。不是来电,是一条短信。陌生的号码。他点开,屏幕上只有一行字:「你来我学校南门的咖啡厅,现在。」
没有署名。张若木看了那行字两秒钟,嘴角动了一下。幅度很小,像是某种意料之中的确认,然后他站起来,拿了外套。周天倪抬头看他:"出去?""嗯,你们先看着。"他走到门口又回过头来,"姚姐那边有什么进展让她直接打我电话。"
第二天是个阴天。云层压得很低,没有风,空气里有一种水汽将凝未凝的湿润感。街上的行人都裹紧了外套,早餐摊的热气在冷空气中凝成白雾,一团一团地升起来再散开。
云城大学南门外有一条不宽的街,两边全是各种针对学生的店铺:奶茶店、打印店、麻辣烫、水果摊,空气中混杂着各种气味。那家咖啡厅夹在一家奶茶铺和一家文具店之间,门脸很小,进去之后倒比想象中宽敞些。张若木推门进去的时候,云飞已经坐在最里面靠墙的位置了,面前放着一杯喝了一半的美式,加了冰的,冰块快化了。他还穿着昨天那件黑色T恤,外面套了件深灰色的衬衫,敞着没系扣子,袖子卷了两圈,露出一截小臂。
他在玩手机。看到张若木走进来,也没抬头,用下巴朝对面的椅子点了点。张若木在他对面坐下来。桌上没有菜单,云飞也没打算问他喝什么。"我昨晚把你的case搜了一遍。"云飞把手机放到桌上,抬眼看他,"你那个加密频道,我进去看了一眼。"张若木没有立刻追问。他靠在椅背上,看着云飞,等他把下一句话说出来。云飞没有让他等太久。"它用了P2P的隧道协议,但不是最主流的那几种架构,它用的是自己魔改过的版本。核心算法是基于一段三年前的开源代码改的,那个开源项目我熟。"
云飞停下来,端起杯子喝了一口冰美式,冰块在杯子里晃了一下。他把杯子放回去,没有看张若木。"那段代码是我写的。"
他等了一下,像是在等张若木的反应。但张若木只是坐在那里,没有惊讶,没有追问,表情甚至没有什么变化。云飞皱了一下眉:"你听懂了没有?我说那个暗网平台的核心技术,用的是我的代码。""我听懂了。"张若木说,"所以你知道那个平台怎么来的?""我只知道代码是我写的,不代表我知道是谁拿去用的。那个项目我三年前就开源了,谁都可以下载。""但你把核心代码开源,不是为了让别人拿去做直播杀人的吧?"
云飞的手指在杯沿上停了一下。"当然不是。""那你的代码被人拿去做了这种东西,你不想查清楚?"
云飞看着他,忽然笑了一下。那笑容里有自嘲的成分。"许队长,你套路挺深的。"他往椅背上一靠,双手交叉搁在桌面上,"行,我帮你。但我有条件。"张若木没有说话,做了个"你说"的手势。
"第一,我只负责技术层面的事。解码、溯源、节点定位,这些我来。但抓捕、审讯、跟嫌疑人面对面,你们警察自己搞,我不掺和。""可以。""第二,我不要警方的任何身份,协警、技术顾问、线人,什么都不要。你让我来我就来,我不想来了随时可以走,你不能拿任何协议卡我。"
张若木沉默了几秒。"这个我需要回去跟上面商量。""你商量。"云飞说,"第三。"他顿了一下,表情里那种吊儿郎当的神色稍微收敛了一点,"你们在我机器上装的任何监控软件,经过我的同意再用。我不喜欢有人在背后盯着我。"
张若木看了他片刻。"就这些?""就这些。同意我就干。不同意你回去继续找你的技术科。"他歪了歪嘴角,又恢复了那副不太正经的样子,"省厅那边应该也有其他能人,就是不知道有没有你许队长这么闲,亲自跑到大学里来请。"
张若木没有接他的玩笑。他站起来,"你在这等着。"他走到咖啡厅外面,站在门口,拨了方子綦的电话。电话响了四声,接了。"方队,他答应了,但有条件。"
他在电话里把三个条件说了一遍。电话那头沉默了一会儿。方子綦的声音从听筒里传来,带着一种"我早就知道会这样"的无奈:"第一条可以,第二条我原则上同意,但得有底线:他要是接触到核心证据之后中途退出,这个口子我不能开。第三条:你跟他说,市局的设备不装监控软件,他自己带设备来用。"
张若木挂了电话,走回咖啡厅,在云飞对面重新坐下。"第一、第三条没问题。第二条:你要是接触到核心证据之后半路撂挑子,那我麻烦也很大。方队的意思是,你可以随时走,但如果走了之后发现你手上拿着的证据有问题,你得配合交接清楚。"
云飞想了想,点了点头。"行。合作愉快。"他伸出手,越过桌面。
张若木握住了他的手。云飞的手比他凉很多,骨节分明,握过来的时候力度不大不小,像是一个公事公办的握手但他在松开之前,指腹在张若木的掌心里不轻不重地划了一下。不是无意识的触碰,力道和方向都太精准了,像是一串摩斯密码里的一个短促信号。
张若木没有立刻松手。他看了云飞一眼,目光里带着一种"你的小动作我注意到了"的审视。云飞没有避开他的目光,甚至还歪了歪嘴角,表情无辜得像是刚才什么都没发生过,但他眼底那一点促狭的光出卖了他。
张若木松了手。指腹上还残留着那一下触碰的温度,凉凉的,像冰红茶瓶壁上凝结的水珠。
"那什么时候开始?"
"那什么时候开始?"张若木问。"随时。"云飞把最后一口咖啡喝完,冰块哗啦一声撞在杯壁上,"你那边有能用的机器吧?学校机房的设备太破,跑不动我要用的东西。""市局技术科的设备你随便用。""行。"他站起来,把那件敞着的衬衫下摆随意地扯了扯,朝门口走了两步,又回过头来,"对了,许队长。你早上吃饭了吗?"
张若木愣了一下。"吃了。""那下次别吃。街口的煎饼果子不错,你来的时候给我带一个,加蛋加辣。"他说完就推门出去了,没有回头。
梦远书城已将原网页转码以便移动设备浏览
本站仅提供资源搜索服务,不存放任何实质内容。如有侵权内容请联系搜狗,源资源删除后本站的链接将自动失效。
推荐阅读