ターミネーター2のATMハッキングシーンを実際にプログラムで再現するとこんな感じ
映画「ターミネーター2」には、主人公のジョン・コナーが盗んだデビットカードのPINをハックし、ATMから現金を引き出すシーンがあります。人類の敵となるAI・スカイネットに対抗することになるコナーの天才的な才能を示唆するシーンを、SlackのエンジニアであるBertrand Fan氏が再現し、ソースコードを公開しています。
Simulating the PIN cracking scene in Terminator 2 | bertrand fan
https://bert.org/2021/01/04/t2-pin-cracking/
コナーがPINをハックし、現金を引き出すシーンは以下のムービーで見ることができます。
デビットカードにアルミホイルを巻き付けケーブルを伸ばし、ATMに挿入して……
ケーブルをコンピューターに接続して、カタカタとキーボードを操作。
「PIN IDENTIFICATION PROGRAM」
プログラムを実行すると、無数の数字が絶え間なく表示され始めました。
表示される数字の桁数が徐々に減っていって……
最終的にカードのPIN「9003」を特定。
特定したPINを入力し、現金を引き出したコナーが笑みを浮かべる、というのが一連のシーンです。
Fan氏はこのシーンに印象を受け、作品内で使われていたコンピューターが何なのかを調べてみたところ、Atari Portfolioであることがわかったとのこと。1989年に発売されたAtari Portfolioは、240x64ピクセルの液晶画面を持ち、単三乾電池3本で動作する世界初のパームトップコンピューターです。
「デビットカードにアルミを巻き付け、そこからカードPINを特定する」という作品内のハックをそのまま再現するのは難しいですが、表示そのものをシミュレーションすることはできそうだと考えたFan氏は、画面表示のみの再現に挑戦しています。「PIN IDENTIFICATION PROGRAM」の表示については、そのままバナーを表示すればOK。
その後表示される数字を詳しく観察してみると、最初の行は「12345678901234567890123457890123456780」と、38桁の数字が表示されています。また、Fan氏の観察によると、その後の数字の表示については、5行ほど同じ桁数の数字を表示した後、桁数が1桁もしくは2桁減っていくとのこと。
というわけで、Fan氏によるターミネーター2のハッキングシーンを再現したPythonコードが以下。処理としてはまず「PIN IDENTIFICATION PROGRAM」のバナーを表示し、1行目に「12345678901234567890123457890123456780」を表示。その後はランダムな整数を表示していき、5行ごとに数字の桁数を減らしていきます。減らす桁数は1桁と2桁の交互となっており、最終的に桁数が4桁になったら整数の表示をやめ、「9003」を10回表示するというプログラムです。
Fan氏はこのコードを実行している様子をtermtosvgでSVGアニメーション画像に変換し、ネット上で見つけたAtari Portfolio風デザインのSVG画像と重ね合わせ、ターミネーター2のハッキングシーンを再現。以下の画像をクリックすると、SVGアニメーションを見ることができます。
Fan氏はPythonでコードを書いたのはいいものの、Atari PortfolioではPythonを実行できないことが気になったとのこと。Fan氏が調べてみたところ、開発環境のTurbo Pascal上でコードを書き直せば、Atari Portfolioでも動作するプログラムを開発可能であると判明。Fan氏はDOSエミュレーターのDOSBox-XにTurbo Pascalをインストールし、プログラムを書き直しています。
Turbo Pascal上で書き直したプログラムがDOSBox-Xで動作しているムービーが以下。
Fan氏のプログラムにはハッキング処理は一切含まれていませんが、実行画面を眺めるだけでスゴ腕ハッカーの気分を味わうことができそうです。
・関連記事
Windows 3.1上で動作するSlackクライアントを開発した猛者が登場 - GIGAZINE
ブラウザで動作するマルチタスク対応DOSを自作した猛者が現れる - GIGAZINE
マインクラフトをファミコンのエミュレーターにしてしまった猛者が登場 - GIGAZINE
30年前のPC-9801系互換機からGoogleへのアクセスを成し遂げた猛者が登場 - GIGAZINE
20年以上の時を超えてセガサターンをクラックした猛者が登場 - GIGAZINE
・関連コンテンツ