
上海往事:第九章 我和Alan的邂逅
那年春天,人民广场的鸽子比往年多。
我站在喷水池旁边,等一个人。不是等人,是等光。那天的云走得很快,阳光一阵一阵的,落下来,又收回去。我举着那台佳能,等着下一束光落在那群鸽子身上。
快门按下去的时候,有人拍了一下我的肩膀。
我回头,一个老外站在我身后,背着双肩包,手里也拿着一台相机。金发,蓝眼睛,笑起来露出一口白牙,像牙膏广告里那种。他指了指我镜头对着的方向,又指了指自己的相机,然后竖起大拇指。
我用英文说,谢谢。
他愣了一下,用中文说,你会说中文?
我说,我是中国人。
他笑了,有点不好意思,说,对不起,我以为你也是游客。你拍照的样子,很认真。
就这样认识了Alan。
后来我们坐在广场的长椅上聊天。他说他叫Alan,新西兰人,来上海半年,在一家软件公司做程序员。他中文说得不错,虽然带着奇怪的口音,但能表达清楚。他说他大学学过两年中文,来上海是为了练习。
我说我也是程序员,在外企。
他眼睛亮了一下,问,你喜欢什么语言?
我说,C,刚学没多久。
他说,C好,C是根本。但Windows上用C++多。
我说,我在学Windows编程,看那本厚厚的大部头。
他做了个痛苦的表情,说,那本书我也看过。用来垫枕头,睡了一个月。
那天下午我们聊了很久。聊编程,聊操作系统,聊Windows的漏洞和补丁。他说他感兴趣的是底层,是那些别人看不见的东西。我说部队出来的人,对看不见的东西比较敏感。
他问,部队?
我说,野战部队,很多年前了。
他点点头,没再问。然后忽然说,我看得出来。你站的样子,你看东西的样子,不像程序员,像军人。
我说,也许都是。
他笑了,说,军人好。军人不会因为代码编译不过就放弃。
临走的时候,他问我,你有没有兴趣一起研究点东西?
我问,什么?
他说,Windows的RPC。135端口。听说有个漏洞,可以研究研究。
我说,研究?
他说,对,研究。不是破坏,是知道它怎么工作。
那时候我对这些还不太懂。但他说话时的表情,让我想起部队里的侦察兵——那种对未知领域的好奇,那种想钻进去看看的冲动。
我说,好啊。但如果被抓了,我不认识你。
他说,成交。
就这样认识了Alan。
后来我们每周都见面。
有时候在咖啡馆,有时候在他住的地方,有时候在我钦州南路那间朝南的房间。他住在静安寺附近,一间老公房,比我大一点,桌上永远堆着电脑零件和中文技术书——他看中文的技术书,虽然慢,但能看懂。他说这样能学到专业术语的中文说法。
他教我很多。RPC是什么,DCOM是什么,135端口和1433端口有什么不同。他说Windows NT 4.0的架构有问题,微软自己都补不了。他说2000年之后,微软的漏洞一个接一个,像筛子一样。
有一次,他拿出一台旧笔记本电脑,装的是Windows 2000 Server。他说,你看好。然后在命令行里敲了一串代码,回车。屏幕上开始滚动一些我看不懂的信息,最后停在一个提示符前。
他说,进去了。
我问,进哪了?
他说,进这台机器自己。这叫后门。
我说,那我们成黑客了?
他严肃地摇头,说,不是黑客,是研究者。黑客搞破坏,我们只是看看,然后说,有意思。
我说,黑客搞破坏之前也说有意思。
他想了想,说,有道理。
那天晚上他给我讲了一个概念:wnmax。他说不是官方的名字,是他们自己起的。W-N-Max,Windows Network Maximum,意思是在Windows网络上,做到极致。
我说,听起来像黑客组织。
他笑了,说,就是。一个很小的组织。
我说,两个人能叫组织?
他说,在新西兰,两个人就算聚会了。
后来我们真的组了一个小团体,就我们两个人。他起名叫wnmax联盟。我说联盟就两个人?他说,两个人知道的秘密,叫阴谋。比组织还厉害。
我们开始系统性地研究Windows的漏洞。他负责逆向工程,我负责写测试代码。135端口的RPC服务,1433端口的SQL Server,那些别人懒得看的底层协议,我们一行一行地啃。
那时候Windows XP刚出来不久,漂亮是漂亮,但漏洞一点没少。Alan说,微软做软件,像宜家家具。看着好看,但一碰就散。
我说,那碰不得的是什么?
他说,开机。
那年夏天,我们去了一个音乐节。
百威办的,在虹口足球场外面搭了台。阿杜、动力火车、迪克牛仔,还有几个叫不出名字的乐队。Alan说,来上海一年了,还没去过音乐节,太丢人了。
我说,我也没去过。
他说,好,那我们一起丢人。
那天傍晚,天还没黑,人已经很多了。我们站在人群后面,听得见声音,看不太清楚舞台。Alan买了一打啤酒,我们坐在草坪上,一边喝一边听。
阿杜唱《他一定很爱你》的时候,旁边有个女孩哭了。她男朋友搂着她,拍她的背。Alan看着他们,没说话,把啤酒举起来,喝了一口。
我说,你知道他唱什么吗?
他说,不懂。但听得出难过。那种被甩了然后写歌的感觉。
我说,你还真说对了。
他想了想,说,新西兰男人不写这种歌。我们去酒吧,假装没事。
我说,装得像吗?
他说,我们是装没事的世界冠军。
音乐节结束的时候,已经快十点。人群散开,往地铁站走。我们走在人群里,脚步不快,谁也不说话。路灯亮着,把影子拉得很长。
Alan忽然说,你知道我喜欢上海什么吗?晚上十点,这个城市还活着。在新西兰,十点街上就没人了,只能听见自己的脚步声。
我说,听着有点惨。
他说,是,所以我来这儿了。
走到地铁站,他往静安寺方向,我往上海南站。进站前他回头说,下周老时间?我在1433端口发现了点有意思的东西。
我说,我带啤酒。
那年七月,微软出了一个严重的漏洞公告。
MS03-026,RPC接口的缓冲区溢出,可以远程执行代码。Alan看到新闻的那天晚上就打电话给我,说,你看到了吗?
我说,看到了。
他说,就是这个。我们看的那个。我们是对的。
电话里他的声音很兴奋。我也兴奋。但那种兴奋,不是发现了什么了不起的东西,而是——我们走的路,是对的。
后来那个漏洞被大规模利用。冲击波病毒,震荡波病毒,一个接一个。新闻里说,这个漏洞比Code Red和Slammer还严重。
Alan打电话给我,说,别人先用了。
我说,我们本来也不用。
他说,我知道。但还是觉得,像发现了一片漂亮的海滩,拿着毛巾回去的时候,已经全是游客了。
我说,至少我们知道那片海滩漂亮。
他沉默了一会儿,说,对,对,是这样。
那年八月,上海的景观灯因为高温暂停了。晚上走在街上,到处都暗暗的。有次我们从人民广场经过,喷水池没开灯,鸽子都睡了。广场上只有几盏路灯,照着空荡荡的石板路。
Alan说,这样挺好。
我说,什么挺好?
他说,暗一点,能看到星星。
我抬头看了看,上海的天空,哪有什么星星。
但他说有,我就假装有。
那年秋天,我们开始去酒吧。
不是那种热闹的酒吧,是衡山路上一家小小的爵士吧。门脸不起眼,里面暗暗的,台上有人弹钢琴,有人吹萨克斯。Alan喜欢爵士,说在新西兰的时候听过一场现场,后来就爱上了。
我比他更早爱上。那台自制的音箱,那些黑胶唱片,那些深夜一个人听的Bill Evans——都是爵士。
我们去的那家酒吧,老板是个老上海,头发花白,戴金丝眼镜。他认得Alan,每次去都点头,然后用英文说,欢迎回来,年轻人。Alan说,他叫我年轻人,我都三十二了。
我说,在中国,五十以下都叫年轻人。
他说,我喜欢这个国家。
有一次,台上换了一个女歌手,唱的是《Fly Me to the Moon》。她的声音有点沙,低低的,像在叹气。Alan听着,忽然说,我可能不会一直留在上海,你知道吗。
我说,我知道。
他说,但我会记得这些晚上。
我说,我也是。
那首歌结束的时候,他举起酒杯,对着我晃了晃。我也举起来,碰了一下。玻璃杯发出轻轻的声响,混在酒吧的嘈杂里,很快就没了。
他说,敬wnmax。
我说,敬两个整天盯着端口看的傻子。
他说,最好的那种傻子。
那年冬天,Alan的签证到期了。
他去续签,等了一个多月,最后批下来了。又一年。
那天他打电话给我,说,出来了。我说,出来吃饭?他说,出来喝酒。我说,好。
那天晚上我们去了那家爵士吧,还是老位子,还是威士忌和啤酒。他说,你知道我为什么想留下吗?
我说,因为上海晚上十点还有活人。
他笑了,说,那也是。但还有别的原因。
我说,什么?
他说,wnmax还没研究完。135端口搞明白了,1433也差不多了,但我听说还有个445端口,SMB服务,好像也有问题。
我说,那就继续。
他说,对,继续。
那天晚上,雪又下起来了。从酒吧出来,外面已经白了。我们站在门口,看着雪一片一片落下来。他说,在上海看雪,和在别的地方看雪,不一样。
我说,哪儿不一样?
他说,别的地方下雪,你觉得自己在一个下雪的地方。上海下雪,你觉得自己在上海,正好碰上下雪。
我想了想,说,你这话说了等于没说。
他笑了,说,对,说了等于没说。这就是我喜欢的状态。
那年之后,Alan还在上海。
我们继续每周见面,继续研究那些别人不关心的端口,继续去那家爵士吧,继续在人民广场拍照。他中文越来越好,有时候能听懂老板讲的笑话。老板说,这个老外,快成上海人了。Alan说,快了,快了。
有一次我们在他的住处调试代码,他忽然问我,你后悔过吗?
我说,后悔什么?
他说,来上海。
我想了想,说,没有。
他说,为什么?
我说,不来上海,就不会认识你。不研究这些端口,就不会知道这么多东西。不听这些爵士,就不会知道音乐可以这样。一个人如果不知道这些,活着和没活,有什么区别。
他看着我,没说话。
过了一会儿,他说,你的中文真好。
我说,我是中国人。
他说,对,但你说的那些话,不是每个中国人都会说。
我说,也许是因为在部队待过。
他说,也许。
那天晚上我们调试到很晚。代码终于跑通的时候,窗外天已经快亮了。他站起来,走到窗前,看着外面慢慢亮起来的天。说,新的一天。
我说,嗯,新的一天。
他说,还有很多端口要看。
我说,还有很多。
The Windows 2000 Server command line, the RPC exploits, the MS03-026 bulletin… this chapter is a time capsule for anyone who lived through that era of computing.
“两个人知道的秘密,叫阴谋。比组织还厉害。”——这句我要记下来,以后忽悠朋友一起干傻事的时候用。
从黄河路的父亲,到钦州南路的自己,到人民广场的Alan。这一路走来,每一个出现又离开的人,都在记忆里开着门。
Alan后来回新西兰了,偶尔有邮件。上个月他说“我发现了一个新的端口,要不要一起看?”你回“还盯着那些没关的门呢?”他回“总得有人盯着。”——wnmax联盟,从来没散。
那张爵士吧的照片,台上钢琴手一半亮一半暗,角落里没有你,但你知道那是你们的位置。最好的照片,拍的是看不见的人。