电影《龙纹身女孩》中的那句 SQL
我很喜欢David Fincher的龙纹身女孩。区别于肤浅的为了钱的很多好莱坞电影,这个电影是个有紧张气氛的,又十分大气的,只是稍微有点惊悚的电影。我最喜欢的部分是当利斯贝斯萨兰德开始用SQL解决一个谋杀案的时候。
我们可以从下面的图中的绿色的代码看到,他在他的笔记本上查询瑞典警方的数据库,关键词有未解决的,断头等,但是他没有查询整个库。
这里我使用photoshop把几张图片拼接在一起,就得到了如下:
观众会立即发现,这并不是Oracle SQL,很明显AS在在这样的表别名下是不合法的。
请注意,我们能辨别出她使用了一个ANSI“FT”左连接到Keyword表
最后我们得到Västra Götaland的一个结果列表。
下面是我们通过Oracle WTF重建的SQL。
SELECT DISTINCT v.fname, v.lname, i.year, i.location, i.report_file FROM 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 | lname | 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 | +--------+---------+------+-----------+----------------------------------+
好奇的观众会继续问,为什么一个天才级的黑客仅仅使用文字文本过滤的方式去外链被害人和关键词表,岂不知MySQL是有LIKE运算符的,为什么受害者中没有缩写为“R L”的。