电影中的黑客都是用的什么编程语言?

过去的这一周可能是全世界最惴惴不安的一周了。

从上周末,格林尼治时间5月12日开始,一场无特定目标的网络攻击突然爆发,英国、西班牙、美国、俄罗斯、日本、中国、德国、法国纷纷中招。蠕虫病毒以光速在网上传播扩散,攻击报告沿着地球经度坐标井喷般出现。医院、警察局、学校、机场、车站,甚至ATM机、加油机……你能想象的一切网络终端几乎无一幸免。

图0:电影中的黑客都是用的什么编程语言?

可是一波未平一波又起,迪士尼影业即将全球上映的大片《加勒比海盗5:死无对证》又遭黑客攻击并盗取成片。黑客要求迪士尼支付高昂的赎金,需要以比特币形式支付;并宣布如果迪士尼拒不交赎金,他们将释出5分钟电影片段,接着释出20分钟的电影片段,一直到他们的要求被满足为止。

图1:电影中的黑客都是用的什么编程语言?

接二连三的黑客事件,让“黑客”这个本该隐藏在阴影中的神秘群体瞬间成为人们热议的焦点。

可是,大多数人对于黑客的一知半解都是源自于影视作品;更可怕的是,大多数影视作品中的黑客桥段都是编剧瞎编的,比如打字速度超快、随随便便就黑进了某个根本不联网的系统、甚至有一台电脑就操控了美军核弹。

图2:电影中的黑客都是用的什么编程语言?

如此一来所造成的事实就是,大多数人对于黑客其实一无所知。因为所知的那一点点也都是假的。

不过好在依旧有一些比较良心的电影作品会把这些细节都做到机制,就算是银幕上一闪而过的代码,也都是有理有据,可考证的。

图3:电影中的黑客都是用的什么编程语言?

所以,本期科考派将替大家考证一下电影中出现的那些代码。它们有的是黑客脚本,有的是机密文件,有的就是纯粹耍酷看起来很厉害,甚至还有的是非人类代码。

当然本文一如既往阅读起来有门槛,请非程序员读者速速退散,毕竟你也看不明白;请程序员读者细细研究,搞不好能够功力大涨。

1.钢铁侠-C语言

钢铁侠可能是漫威宇宙中顶尖的“黑客”了,在他的实验室里鼓捣出来的一系列高科技都与计算机代码有着密切关系,比如著名的人工只能贾维斯,甚至包括奥创。在《钢铁侠1》中,托尼·史塔克在恐怖分子的洞穴中,第一次初始化启动他自己开发的人工心脏的时候,他的电脑屏幕上出现了一长串代码。

图4:电影中的黑客都是用的什么编程语言?

《钢铁侠》

稍懂编程的观众可能都能够看出来,这其实是一串C语言代码。虽然从语法上看是少了一些重要的字幕,例如分号,但的确是有效的C语言代码,并且也算是比较规范的。从谷歌伤能够搜索到这段代码的完整版,如下:

send[0] = 0x65;send[1] = 1;

send[2] = 3;

send[3] = 5;

send[4] = 7;

send[5] = 11;

if (rcx_sendrecv(fd, send, 6, recv, 1, 50, RETRIES, use_comp) != 1) {

fprintf(stderr, "%s: delete firmware failed\n", progname);

exit(1);

}

/* Start firmware download */

send[0] = 0x75;

send[1] = (start >> 0) & 0xff;

send[2] = (start >> 8) & 0xff;

send[3] = (cksum >> 0) & 0xff;

send[4] = (cksum >> 8) & 0xff;

send[5] = 0;

if (rcx_sendrecv(fd, send, 6, recv, 2, 50, RETRIES, use_comp) != 2) {

fprintf(stderr, "%s: start firmware download failed\n", progname);

exit(1);

}

/* Transfer data */

addr = 0;

index = 1;

for (addr = 0, index = 1; addr

上面这段代码来自于乐高积木的硬件下载程序,由史丹佛大学的Kekoa Proudfoot写于1998年。它使用的是Mozilla Public License许可协议,这跟火狐浏览器和其他很多开源软体使用的许可协议一样。

电影中使用这段代码,似乎是在暗示要给钢铁侠下载一套硬件描述语言;或者是把硬件描述语言上传到乐高积木控制系统里,总之,从这里可以看出来,钢铁侠的诞生是跟乐高积木多少是有关联的。

所以,看起来,钢铁侠要么是使用了开源软体,要么是由乐高积木程控做成的。

2.《龙纹身的女孩》-SQL

在电影《龙纹身的女孩》中,有一个女主角搜索40年前凶杀案信息的情节。从电影的特写中明显能够看出来,女主角使用的是真正的SQL语句——虽然从SQL的效率上她的技术并不是很高。

图5:电影中的黑客都是用的什么编程语言?

《龙纹身的女孩》

只看见女主角使用笔记本电脑,轻而易举地进入瑞典警察局数据库,当她敲入像‘unsolved(未破案)’和‘decapitation(斩首)’等关键词时,屏幕上翻滚着绿色的检索出的信息,虽然我们看不清她使用的完整的查询语句。

但是经过好事者截屏保存处理之后,我们能够看到如下的结果:

图6:电影中的黑客都是用的什么编程语言?

在加以重新构造之后,我们能够推断出电影中女主角使用的SQL如下:

SELECT DISTINCT v.fname, v.lname, i.year, i.location, i.report_fileFROM Incident AS i

LEFT JOIN V(ictim?)... -- presumably v.incident_id = i.id

LEFT JOIN Keyword AS k ON k.incident_id = i.id

WHERE i.year BETWEEN 1947 AND 1966

AND i.type = 'HOMICIDE'

AND v.sex = 'F'

AND i.status = 'UNSOLVED'

AND ...

OR v.fname IN ('Mari', 'Magda')

OR SUBSTR ...

AND (k.keyword IN ('rape', 'decapitation', 'dismemberment', 'fire', 'altar', 'priest', 'prostitute')

...

AND SUBSTR(v.fname, 1, 1) = 'R' AND SUBSTR(v.lname, 1, 1) = 'L');

+--------+---------+------+-----------+----------------------------------+

| fname | name | year | location | report_file |

+--------+---------+------+-----------+----------------------------------+

| Anna | Wedin | 1956 | Mark | FULL POLICE REPORT NOT DIGITIZED |

| Linda | Janson | 1955 | Mariestad | FULL POLICE REPORT NOT DIGITIZED |

| Simone | Grau | 1958 | Goteborg | FULL POLICE REPORT NOT DIGITIZED |

| Lea | Persson | 1962 | Uddevalla | FULL POLICE REPORT NOT DIGITIZED |

| Kajsa | Severin | 1962 | Dals-Ed | FULL POLICE REPORT NOT DIGITIZED |

+--------+---------+------+-----------+----------------------------------+

3.《超人归来》-BASIC

图7:电影中的黑客都是用的什么编程语言?

《超人归来》

有人对《超人归来》中的代码做了详细的分析,得出结论这些代码使用BASIC写的,具体如下:

LIST5 CLS

10 PRINT "PLOT BILATERAL CO-ORDINATES"

15 PRINT , PRINT

20 GOSUB 5000

25 PRINT "INPUT CO-ORDINATE X . "

31 PRINT "4",

33 PRINT "2",

35 PRINT "Y" , PRINT

40 PRINT "INPUT CO-ORDINATE Y . "

41 IF INKEY$ = "" THEN 41 . IF

42 PRINT "Z",

43 IF INKEY$ = "" THEN 43 . IF

44 PRINT "+",

45 IF INKEY$ = "" THEN 45 . IF

46 PRINT "X"

47 GOSUB 5000

50 CLS

60 PRINT "0010 N = RND(200)"

70 PRINT "0020 Z = 1 TO N"

80 PRINT "0030 X = 1 TO 31"

90 PRINT "0040 Y = 1 TO 15"

100 PRINT "0050 SET(31=X,16=Y,2=Z)TO 31=X,Y"

110 PRINT "0060 SET(31+X,Y,Z)TO(31=X,16=Y,"

120 PRINT "0070 SET(X,16+Y,Z-Y)TO(X,Y,Z)"

130 PRINT "0080 SET(X,16,Y,Z+Y)TO(16+X,Y)"

140 PRINT "0090 GOTO 500"

150 PRINT "0100 NEXT X,NEXT Y,NEXT Z"

160 PRINT "0110 CLS"

170 PRINT "0120 DATA 1,13,2,67,2"

180 PRINT "0130 DATA 13,45,90,3,23,56,2,54"

190 PRINT "0140 DATA 3,6,1,43,92,56,2,9,0"

200 PRINT "0150 DIM F(?)"

210 PRINT "0160 D$ = CHR$(191)"

220 PRINT "0170 FOR X = Y + Z PRINT X"

230 PRINT "0180 FOR Y = X - Z PRINT Y"

240 PRINT "0190 END"

250 PRINT

260 PRINT

270 PRINT

280 PRINT

290 PRINT

300 PRINT

310 PRINT

320 PRINT

330 PRINT

4.《大逃杀》-C语言

电影《大逃杀》是导演深作欣二的代表作之一,虽然是个荒野大逃杀,同学互相砍的电影,但是在细节方面做得还是非常到位的。电影中出现了一小段代码,正是NMap的源代码。

NMap,又叫做网络映射器(Network Mapper),是Linux下的网路扫描和探索工具包,一款用于网络发现和安全审计的网络安全工具。

图8:电影中的黑客都是用的什么编程语言?

5.《星际之门:真理之盒》-JavaScript

电影《星际之门:真理之盒》中也都短暂出现过一段代码,不过这段代码就明显不够严谨了。虽然可以看出来,它是基于JavaScript写的,但是有好事者考证之后,发现这是一段从一个加拿大银行网站上拷贝出来的Javascirpt代码。

图9:电影中的黑客都是用的什么编程语言?

6.《弯刀》-Java

在罗伯特·罗德里格兹的cult神作《弯刀》中也出现了一段代码。虽然电影讲述的是一个拿着弯刀砍人的杀手的故事,但是这段代码其实还蛮现代化的。它是一段Java代码,是用来执行一个简单的TCP server任务,可以用当前的日期和时间回应客户端。

图10:电影中的黑客都是用的什么编程语言?

《弯刀》

7.《侏罗纪公园》-shell

电影《侏罗纪公园》中出现的这段程式码看起来很像是为一台UNIX机器写的shell脚本。

图11:电影中的黑客都是用的什么编程语言?

8.《剑鱼行动》-C语言

电影《剑鱼行动》中的C语言代码是来自DES cracking program。

图12:电影中的黑客都是用的什么编程语言?

《剑鱼行动》

9.《社交网络》-perl

电影《社交网络》讲述的Facebook创始人扎克伯格的故事,主要围绕着他如何创造出facebook来叙事。因为几位主人公都是不折不扣的程序员宅男,电影中势必少不了大量的代码。

电影制作者为了是电影看起来更加厉害,就连这些代码都是专门为这部电影写的,而不是像上面说的那些从什么地方复制一段过来。

图13:电影中的黑客都是用的什么编程语言?

《社交网络》

10.《欧罗巴报告》-ActionScript

在电影《欧罗巴报告》中出现了这些ActionScript 3 颜色选择器代码。

电影中的黑客究竟是用什么语言写代码的?

《欧罗巴报告》

11.《维基解密》-Lua

在电影《维基解密》中主人公阿桑奇在看一段用Lua语言写的代码。这段程式码是AwesomeWM项目中的diskusage.lua。

电影中的黑客究竟是用什么语言写代码的?

《维基解密》

12.《终结者》-组合语言

在电影《终结者》中,机械人的眼里展示了一段6502组合语言程式码,看起来是从Apple II里拷贝的。

电影中的黑客究竟是用什么语言写代码的?

《终结者》

13.《好友请求》-非人类代码

电影《好友请求》是一部根据社交平台延伸出来的恐怖电影,在电影中出现了一段极为诡异的代码,用的大概是另一个世界的语言写的吧。

电影中的黑客究竟是用什么语言写代码的?

《好友请求》

最后附送一个人人都可以跟黑客一样写代码的网站——HackerTyper,地址如下:

https://www.webhek.com/post/hackertyper.html

这是一个专门为装 B 而制作的神奇好玩的网页,打开之后只要随便按键盘,你就可以屌到爆地写代码当黑客,逼格立即高达上。请欣赏我刚写的保护伞公司的”黑客代码“,毁灭世界,指日可待!

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注