电影AntiTrust背后的代码

有人说《AntiTrust》真是一部宣传Linux系统的好电影,因为里面使用的电脑安装的基本上都是Linux操作系统,从男主角入侵Synapse的系统时可以看到。但我无意中发现电影里却还出现了Windows。

首先请看下图

图是从电影里截下来的,下面是上图的代码。

  available = (long) free.avail_clusters
			* (long) free.bytes_per_sector
			* (long) free.sectors_per_cluster;

	GetDlgItemText(hDlg, IDC_LINUXSIZE , buf, 5);
	size = atoi(buf);
	GetDlgItemText(hDlg, IDC_SWAPSIZE , buf, 5);
	swapsize = atoi(buf);

	if((size + swapsize) > (available/1000000)) {
	MessageBox(hDlg, "You've not enough space on disk", "Invalid size", MB_APPLMODAL|MB_ICONEXCLAMATION|MB_OK);
	return 0;
	}

	sprintf(path, "%c:\\lnx4win\\size.txt", hd[getdisk()]);
	if((f = fopen(path, "w")) == NULL) {
	MessageBox(hDlg, "Can't save configuration file.", "File error!", MB_APPLMODAL|MB_ICONEXCLAMATION|MB_OK);
	return 0;
	}
fprintf(f, "%d ", size);
fclose(f);

这段代码来自MandrivaLinux里的lnx4win。但这不能说明电脑使用的是Windows系统。继续看下图:

看出来了吧,这是Windows上的IDE,代码里的变量是微软VC里经典的命名方式。例如类属性m_***,哈哈。要想知道上图的代码出自哪里,自己找找。

当然,电影里主要还是使用Linux系统的。如图:

另外,我对电影里Synapse的源代码进行了分析,发现竟然是一个跟我的HomeServer类似的WebServer,只不过它是由Java编写的。看下图:

看到了吗? 上面代码是分析HTTP协议头,判断HTTP命令是GET、HEAD还是什么,如果都不是,就输出unsupported method type。居然使用的是古老的HTTP/1.0,估计这个代码已经很古老了。它是java里的一个简单多线程WebServer,真的简。发下代码:

            /* are we doing a GET or just a HEAD */
            boolean doingGet;
            /* beginning of file name */
            int index;
            if (buf[0] == (byte)'G' [AND][AND]
                buf[1] == (byte)'E' [AND][AND]
                buf[2] == (byte)'T' [AND][AND]
                buf[3] == (byte)' ') {
                doingGet = true;
                index = 4;
            } else if (buf[0] == (byte)'H' [AND][AND]
                       buf[1] == (byte)'E' [AND][AND]
                       buf[2] == (byte)'A' [AND][AND]
                       buf[3] == (byte)'D' [AND][AND]
                       buf[4] == (byte)' ') {
                doingGet = false;
                index = 5;
            } else {
                /* we don't support this method */
                ps.print("HTTP/1.0 " + HTTP_BAD_METHOD +
                           " unsupported method type: ");
                ps.write(buf, 0, 5);
                ps.write(EOL);
                ps.flush();
                s.close();
                return;
            }

最最最神奇的一点,是,我今天下午才给HomeServer写完目录浏览的代码,晚上看电影就看到了用Java写的目录浏览代码,太巧合了吧~~~(揉脸)

仔细看下图:

上面的代码真简短。当然,没有HomeServer那么完美~~它的代码只是把文件列表输出,一行一个文件名,最简单的了,但你可以看看HomeServer的,做得蛮美观大方的,哈哈。打开目录看看

我一开始以为里面有不少Linux的代码呢,却无奈发现只是Java和VC写的,而且堂堂一个Synapse卫星系统被你导演成HTTP服务器了,哈哈~~

想看那个Simple Java WebServer的朋友点击这里

分析到这里,强烈推荐大家看这部电影,虽然已经是8年前的片子了,片有点老,代码也有点老,但不乏激情,哈哈!

欢迎评论,留下你的足迹。Want to be part of history?

电影AntiTrust背后的代码》上有5条评论

  1. CihpleD.ivoH

    你看了一晚上电影就看了这些,那些电影导演都不是专业人才,代码都是拷来的,找个程序员做高参而已,出现点错漏很奇怪吗?原谅导演Peter Howitt ,膜拜小虾,关注软件产业,支持Windows7达到Ubuntu9.10。

    2个不理解的地方:  

      1、加里为什么在技术没完全成功前就定下系统发布日期啊,找死?

      2、加里居然对着男主角重复了一次钱泰迪的话,这种做法也太直白了,难道故意要引起别人的怀疑?

    回复
  2. Xiaoxia

    3楼的是不是有点鸡蛋里面挑骨头。。。
    编剧和导演可能不是专攻技术的程序员,也难怪。

    回复

发表评论

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

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>