
「ホームズさんはだいぶお疲れのようですね」
椅子に深々と身を沈めて目を閉じ、眠り込んでしまったように見えるホームズの姿をあごで示しながら、グレグスン警部はあきれ顔で言った。ホームズがくわえたパイプからさかんに紫煙をあげているので、私は、彼が眠ってしまっているのではなく、精力的に頭脳を働かせていることに気付いた。
「いや。彼は、精神を集中しているのです。間もなく、なんらかの結論を導き出すことでしょう」
私たちは立ったまましばらく待っていたが、ホームズはじっと動かないまま考えに耽けっているので、それぞれ手近な椅子を引き寄せて座って待つことにした。ホームズは、静かな場所で一人っきりになって精神を集中する必要があったからである。二階の広い事務室には私たち4人だけで、私と両警部は、会話を交わさないのはもちろん、咳きひとつしないでホームズを見守った。階下からは当直の警官たちのざわめきがかすかに聞こえてくるものの、それ以外は部屋の奥の大きな柱時計が時を刻む音だけであった。何もすることがなかったので、私はホームズのやり方を真似て、自分なりに事件を整理してみようとした。しかし、何回考えなおしても手掛かりを見つけることはできなかった。MS-DOSのエラーメッセージに見落としがなかったか、マニュアルをもう一度調べ直そうとして手を伸ばしたとき、ホームズが突然立ち上がって言った。
「じつに馬鹿だったよ。我々は真相のわずか一歩手前にいたんだ」ホームズは、ディスプレイをちらっと覗きながら言った。「ふん。やはり推理した通りだ。レストレイド君、ちょっと教えて欲しいのだが…。いや、グレグスン君のほうがいいな。すまないが、隣の部屋で話を聞かせてくれないかい」
「グレグスン君、すまないが隣の部屋で話を聞かせてくれないか」
ホームズは、グレグスン警部を伴って隣の部屋に入ると、5分ほどして戻ってきた。
「レストレイド君。ずいぶん待たせてしまったが、事件は解決したよ。犯罪データベースは無傷のはずだ」
ホームズは、しばらくの間、パソコンを操作していたが、立ち上がってディスプレイに片手を置くと、もう一方の手を振って、レストレイド警部にパソコンの前に座るように促した。
「レストレイド君。もう一度、FORMATコマンドを実行してみたまえ」
「ええ。いいですよ」
レストレイド警部がパソコンの前に座ってFORMATコマンドを実行すると、画面には、『FORMATコマンドは明後日から使用可能になります.』というエラーメッセージが表示された。
「ホームズさん。エラーメッセージが変わりましたよ」
私も、ディスプレイを覗き込みながら言った。
「ほんとうだ。さっきまでと内容が違っている」
「僕の結論は、このエラーメッセージの通りだよ。他に付け加えることは何もない。明後日になればFORMATコマンドは使えるようになるはずだし、さっきも言ったように、犯罪データベースに危害が及んでいないことは断言できる」
「ホームズ。君がそこまで自信をもって言い切ることができるのなら、いますぐにFORMATコマンドが使えるようにはできないのかい?」
私の問いに対して、ホームズはにっこりしながら言った。
「何事にも外交上の秘密があるということは、トレローニ・ホープ卿の事件で我々が得た教訓のはずだよ」
そう言うと、彼は再び黙り込んでしまい、なにかさかんに考えている様子であった。私は、彼の言った意味がわからないで戸惑っていると、レストレイド警部が叫んだ。
「あっ!ホームズさん。私にも事件の全貌がわかりましたよ。犯人はコンピュータウイルスだ。コンピュータウイルスには、たとえばクリスマスとか13日の金曜日になると活動を開始するタイプのものがあるでしょう。これもその一種で、ある一定期間だけFORMATコマンドが実行できないという珍種のウイルスしやないんですか? なにしろ、今日11月13日は、いわゆる“13日の金曜日”ですからね。そうだ。それで、たぶんグレグスン警部あたりが持ち込んだフロッピーディスクから感染したんだ。こう考えれば、部屋に侵入した賊がいないのに、いつのまにかFORMATコマンドが使えなくなったという事実もよく説明できるわけですし」
「レストレイド君。君は、なかなかコンピュータウイルスに群しいようだね。君がそう推理するなら、その通りかもしれないよ」
「ええ。つじつまがすべて合いますからね。私の推理に間遠いないですよ。わざわざお二人揃っておいでいただきましたが、どうやら助力を願うまでもなかったようですね。もちろん、我々の感謝の念に変わりはありませんが」
「君が納得するのなら、それで結構だ。さあ、ワトスン君。夜もずいぶんと更けてきたことだから、さっさとおいとますることにしようじやないか」
「帰りには、警視庁の馬車を使ってください」
ホームズは、レストレイド警部が握手を求めるのも知らぬ顔で踵を巡らすと一人先に階下に降りていった。私は慌てて警部と握手すると彼を追いかけた。私たちが乗り込んだ馬車は、深夜のロンドンをベーカー街に向けて走りだした。私は、帰りの馬車のなかで、ホームズに尋ねた。
「ねえ、ホームズ。君は、レストレイド警部の結論に納得していないのだろう?」
「いや、どうして。十分、納得しているよ。それどころか、レストレイド君が極めて理想的な結論を創造してくれたことについては、神に感謝を棒げたいほどだ。今日が“13日の金曜日”であったこともね」
「どうも君の口振りからすると、裏があるような気がするな。それに、君が操作した後で、エラーメッセージが変わったことも腑に落ちない…」
「レストレイド君なら、時刻の変化に伴ってメッセージを自動的に変更するタイプのコンピュータウイルスとでも理屈をつけるんじゃないかな。じつに素晴らしいよ」と言うと、彼はくすくすと笑いながら言った。
私は、下宿に帰り着くまでに、何回か事件の真相を間き出そうと試みたが、ホームズはその度に「これ以上完全な解決方法というのは、ちょっと想像がつかないね」などと上機嫌に言うだけで、それ以上は何も答えてくれなかった。
私は、引き出しから拳銃を取り出して、弾を込めておくことにした
警視庁の事件から3日後の朝であった。いつものように朝食をとりに居間に入ると、ホームズはすでに朝食をすませ、くつろぎながら新間を読んでいるところだった。
「おはよう、ワトスン君。君も急いで朝食を済ませたほうがいいよ」
「ああ。何か事件かい」
「先日、警視庁で起きた事件の真相を、君は帰りの馬車の中でずいぶん知りたがったじゃないか。もう興味がなくなったということはないだろうね?」
「もちろんだとも」
「そろそろ、その犯人が訪ねてくるんだよ」
「えっ! ほんとうかい!」
黒ピーター事件やクローカー船長の事件をはじめ、ホームズがベーカー街のこの下宿に犯人を呼び出して事件を解決したことが再三あったので、私は、急いで引き出しから拳銃を取り出して、弾を込めておくことにした。それから、一人食卓について朝食を食べ始めようとすると、階下で呼び鈴が鳴って、誰かが階段を上がってくる音が聞こえた。私は、食卓に置いておいた拳銃を緊張しながら手に取ると立ち上がって扉の脇に隠れ、背中を壁につけて誰かが入ってくるのを待った。
すぐノックの音がして、ホームズが「どうぞ」と声をかけた。
扉が開くと同時に、私は相手に銃口を向けた。ところが驚いたことに、入ってきた人物はホプキンズ警部だったのである。突然、銃口を向けられた彼はもちろん私以上に驚いた様子であった。
「ワトスン博士! いったい、どうしたんですか?」
ホームズは肘掛椅子から立ち上がると、芝居がかった仕草で言った。
『ワトスン博士犯人逮捕之図』というわけさ。ワトスン君。君に警視庁で発生したFORMAT事件の犯人を紹介しよう。スタンリー・ホプキンズ警部だ」
「えっ! 警部が犯人だって?」私は、叫んだ。
扉を開くと同時に、私は犯人に銃口を向けた。
「ははん。例の件のことですか。事件の顛末レストレイド警部に聞きましたよ。私の出張中に、あんな大騒ぎになっているとは思いもよりませんでした。どうやらレストレイド警部には真相は伏せておいていただいたようで、その点は本当に感謝していますよ」
ホームズは、来客用の椅子をホプキンズ警部に勧めると、自らも肘掛椅子に座りなおしながら言った。
「僕の推理に間違いはないと思うのだが、細かい点はわからないので、わざわざ君に来てもらったんだ。ワトスン君には事件の真相を知る権利があると思うのでね」
「ええ。先生方には、わざわざ警視庁までご足労いただいたようですから、おわびに伺わなくちゃいけないと思っていたところでした」
「じゃあ、僕の方からわかる範囲で説明してみることにしよう。間違っている点があるかもしれないが、そのあたりは後から訂正するなり補足してくれたまえ」
「ええ。ホームズ先生の推理の方法を聞かせていただけるのは願ってもない機会です。ぜひ、詳しく開かせてください」
「さて、ワトスン君。あの夜のことを思い出してくれたまえ。僕は、ずいぶん考え抜いた末に、グレグスン君といっしょに席を外したことを覚えているかい?」
「ああ。隣の部屋に行って、何か話していたようだね」
「隣の部屋に入ると、僕はグレグスン君に聞いたんだ。
『最近、レストレイド君が、他人のフロッピーディスクを誤ってフォーマットするというような事件はなかったかい』
『よくわかりますね。今朝も、ホプキンズ警部のフロッピーディスクを間違ってフォーマットしてしまい、大切なデータを台無しにしたばかりですよ。レストレイド警部は、FORMATコマンドを使えるようになったのがうれしいのか、必要もないのにフロッピーディスクをフォーマットして他人に迷惑をかけることが再三ありましてね。生兵法は怪我の元なんですから、私のようにホプキンズ警部にまかせっきりにすればいいと思うんですがね』
僕は、グレグスンに話を聞く前にこの結論に達していたのだが、この会話で、確証を得たというわけだ。つまり、レストレイド警部にやたらとFORMATコマンドを使われると困る人物がいることがはっきりしたのだよ。ホプキンズ君、君のことだ。しかも、FORMATコマンドが使えなくなる前に、最後にパソコンを使ったのも君であることがわかっている。これだけ状況証拠が揃っていれば、君が犯人だと思って間違いないんじゃないかね。もちろん、状況証拠ほど扱いにやっかいなものはなくて、しばしば間違った結論を導きだすこともある。しかし今回に限っていえば、君が犯人であるという仮定を出発点にすると、すべての鎖がきれいにつながるのだ。
そこで、君の立場になって事件をどう構成できるか考えてみることにした。犯人の立場になって推理する場合、その人物の頭脳の程度を斟酌する必要があり、これがなかなか難しいのだが、君の頭脳は第一級品だから天文学者の言う個人誤差は考慮しなくてすむ。つまり、僕ならどうするか、ということを考えればいいのだから、この点は楽だったよ」
ホームズは、葉巻に火をつけると話を続けた。
「ああ。隣の部屋でなにか話していたようだね」
「あの日、君は出張に出掛けることになっていた。パソコンには構築中の犯罪データベースがあって、MS-DOSのコマンドをいくつか覚えたばかりのレストレイド君が誤ってハードディスクをフォーマットしてしまう危険があり,なんらかの対策が必要であった。
しかし、捜査員全員のパソコン活用を積極的に推進してきた手前、出張中にパソコンの使用を禁止するわけにもいかない。また、レストレイド君の性格を考えると、FORMATコマンドの使用をむやみに禁止して、つむじを曲げられるとかえってやっかいだ。となると、君はどんな手を考えるだろう。幸い、レストレイド君のMS-DOSに関する知識は些細なものだ。もし、FORMATコマンドが使用できない状況をうまく作り出しておくことができれば、彼が間違ってフォーマットを行う心配はなくなる。問題は、具体的にどんな方法でFORMATコマンドが使えないようにするかということだ。最初に思いつくのは、FORMATコマンドをハードディスクからいったん削除してしまうことだろう。しかし、『コマンドまたはファイル名が追います.』という初心者にも馴染み深いエラーメッセージが表示されたら、レストレイド君はどんな行動をとると思う? FORMAT.EXEを誤って削除してしまったと考え、MS-DOSの実行用フロッピーディスクをセットし、そちらのFORMATコマンドを使う可能性がある。そこで、君が考えた方法は、FORMATコマンドを実行すると彼が操作を諦めるようなエラーメッセージを表示させることだ。フォーマットの好きなレストレイド君といえども、『現在、FORMATコマンドは使用できません.』というような見慣れないエラーメッセージが表示されれば、不安になって君が出張から戻ってくるまでフロッピーディスクのフォーマットを諦めると思われるからだ。
では、『FORMAT』と入力したときに、そんなエラーメッセージを表示させるにはどうしたらいいだろう? そう。『FORMAT』という名称のエラーメッセージ表示用の実行ファイルを作ればいいのだよ」
ホームズは、98Tの電源を入れると、私に座るように促して言った。
「朝食前に、先日の事件と同様にFORMATコマンドが使えないように設定しておいた。ワトスン君、試してみたまえ」
ホームズに言われた通りにFORMATコマンドを実行してみると、先日、警視庁で操作したときと同じようなエラーメッセージが表示された。
A:¥>format
現在、FORMATコマンドは実行できません.
A:¥>
「いいかい、ワトスン。MS-DOSの各ファイルが保存されているディレクトリを確認してみたまえ。先日のようにプリントアウトで確認するのではなく、画面上でよく調べるんだ。きっと何かに気づくはずだ」
私は、CDコマンドを使ってサブディレクトリ¥DOS5にカレントディレクトリを移し、DIRコマンドを実行した。
「とくに問題はないようだけど…」
「全体的な印象にとらわれるのではなく、もっと細部に集中力を向けるのだ。とくにFORMAT.EXEにね」
「どこか、おかしいのかい?」
私が答えると、ホームズは、私の頭の回転の鈍さにはうんざりするといった様子で頭を振りながら言った。
「よく観察すれば、君の見ているディレクトリにはFORMAT.EXEが存在していないことに気づくはずだ」
「え。なんだって!」
「F0RMAT」の二文字目をよく観察してみたまえ。「O(オー)」ではなく「0(ゼロ)」になっているのがわかるだろう。「0(ゼロ)」にはたすきがかかっているからね」
「ほんとうだ。なぜ、気がつかなかったのだろう」
「警視庁では、プリントアウトで確認したのが失敗だったんだよ。プリンタの種類や設定にもよるのだが、我々が使っているプリンタは、「0(ゼロ)」でもたすきがかからないで印字されるようにセットされているから、「O(オー)と判別するのが難しいんだよ」
「ほんとうだ!」私は、ディレクトリをプリンタで印字して、その結果を見ながら叫んだ。
「いや、まってくれ。ホームズ。もし、『FORMAT』が『F0RMAT』にリネームされているなら、キーボードから『FORMAT』と打ち込んでも『コマンドまたはファイル名が違います.』というエラーメッセージが表示されるはずだが…」
「だから言っただろう。他に『FORMAT』という名称の実行ファイルが存在していたんだだよ」
「それじゃあ、いったい?」
「答えは簡単さ。探せばいいんだけのことだよ」
「そんなこと言っても、ひとつひとつサブディレクトリを確認していくのはなかなかたいへんだぜ」
「もちろん、すべてのサブディレクトリを確認することはないさ『FORMAT』という名のファイルがカレントディレクトリに存在していなくても実行できたわけだから、当然そのファイルは、PATHが通っているディレクトリにあったということになる。すべてのサブディレクトリにPATHを通してあるとは思えないから、PATHコマンドを実行すれば、その範囲を絞ることができるわけだ」
私はホームズに言われたとおりに、PATHコマンドをパラメータなしで実行して、PATHが通っているディレクトリを確認した。
A:¥>path
PATH=A:¥BAT;A:¥UT;A:¥SYS;A:¥NT;A:¥DOS5;A:¥;B:¥;
A:¥>
「『FORMAT』という名称の実行ファイルということになると、『FORMAT.EXE』『FORMAT.COM』『FORMAT.BAT』のいずれかであると考えられる。このなかで最も簡単に作成できるのは『FORMAT.BAT』だから、パッチ・ファイルを保存してあるサブディレクトリ¥BATが怪しいと睨んだわけだ。この98と同じように、警視庁の98にもサブディレクトリ¥BATにPATHが通してあったからね」
「ということは、カレントディレクトリをサブディレクトリ¥BATに移してDIRコマンドを実行すればいいんだね」
A:¥BAT>dir
ドライブ A: のボリュームラベルは SCSI_DOS5
ボリュームシリアル番号は 341E-17D0
ディレクトリは A:BAT
. <DIR> 92-06-26 14:49
.. <DIR> 92-06-26 14:49
123 BAT 30 92-04-10 23:04
AC BAT 40 92-04-10 23:53
ASK BAT 25 91-12-15 12:13
BAS BAT 32 91-08-17 18:11
COM BAT 64 91-12-10 15:41
OACONV BAT 30 91-08-12 8:28
SC BAT 26 91-12-27 22:07
TEL BAT 31 92-04-06 10:18
WP5 BAT 149 92-08-23 11:17
FORMAT BAT 73 92-11-15 8:23
「ほら、この一番下の『FORMAT.BAT』が犯人さ」ホームズは画面を指さしながら言った。
「じゃあ、調べてみよう。TYPEコマンドで『FORMAT.BAT』の内容を表示させてみよう」
echo 現在、FORMATコマンドは使用できません.
A:BAT¥>
「あれ。なんだか表示がおかしいぜ」
「そう。TYPEコマンドではファイルの内容が正しく表示されない。それで、エスケープシーケンスを使っていることがわかったんだ。ワトスン君。エスケープシーケンスというものを知っているかい?」
「たしか、パソコン通信でメッセージに色をつけたり、点滅させるときに使う機能だろう」
「そのとおりだ。さらにカーソルの位置も自由に制御できるのだよ。SEDITコマンドでスクリーンエディタを起動すれば、『FORMAT.BAT』の内容が表示されるはずだよ」私は、ホームズの指示に従って、「SEDIT¥BAT¥FORMAT.BAT」と人力し、『FORMAT.EXE』の内容を表示させた。
echo off↓
echo ^[[2A^[[2M^[[1A↓
echo 現在、FORMATコマンドは使用できません.[EOF]
「エスケープシーケンスを使ったところが、ホプキンズ君ならではの工夫と言えるんだよ。というのは、単純にECHOコマンドによって『現在、FORMATコマンドは使用できません.』というメッセージを表示させた場合、『ECHO OFF』や『ECHO』という文字まで表示されてしまうからね。そこで、『ESC[2A』(画面上では^[[2A)と『ESC[2M』(画面上では^[[2M)というエスケープシーケンスを使ったのだよ。『ESC[2A』によって2行分カーソルが上に移動し、『ESC[2M』によってカーソルのある行から2行分を削除し、それ以降の行を上に詰めることになるから、『ECHO OFF』と『ECHO』の文字が消える。最後に、『ESC[1A』(画面上では^[[1A)でプロンプトの表示位置を調整すれば、見掛け上はエラーメッセージとまったく同じになるというわけだ。
「この結果、キーボードから『FORMAT』と入力すると、本来の『FORMAT.EXE』は『F0RMAT.EXE』にリネームされているため、この『FORMAT.BAT』が実行され、画面上はあたかもエラーメッセージが表示されたように見えるというわけさ」
「それじゃあ、あの日、エラーメッセージが途中で変わったのは、君が『FORMAT.BAT』の内容を書き換えたからなのかい」
「そのとおりだ。ホプキンズ君。何か付け加えることがあるかな?」
「いえ。ホームズ先生が推理されたとおりです」
「FORMAT.EXEを削除しないでリネームしておいた理由は?」「削除してしまうと、私が使いたいときにオリジナルのフロッピーディスクを用意しないといけないからです。それに、レストレイド警部になるべく気づかれないようにするためです」
「やはりね。なかなか計画的な犯罪だったよ」ホームズは笑いながら言った。
「じつはあの日、仕掛けを見抜いてレストレイド君に説明しようとしたとき、とんだ失敗をしでかしてしまったことに気づいたんだ。もし、このままFORMATコマンドが使えるようにしてしまうと、たとえ犯人が誰なのか伏せておくことができても、レストレイド君が誤ってハードディスクをフォーマットしてしまうことになるかもしれない。ホプキンズ君のせっかくの工夫をだいなしにしてしまうわけだ。どうやって切り抜けようかと考えていたところへ、レストレイド君がコンピュータウイルス説を唱えたので、これ幸いにベーカー街に逃げ帰ってきたというわけさ」
「それで君はあんなに喜んでいたのか」
「そうだよ、ワトスン君。もし、君がこの事件を発表するのなら、僕の失敗談ということになるのだろうね。さて、せっかくの朝食のいり卵が冷えてしまったかもしれないが、今回の事件の全貌を知ることができたおかげでおいしく味わえるんじゃないかな。ホプキンズ君、朝食をすませてきたのなら、コーヒーでもつきあってくれたまえ。ケント州マーシャムで起きた事件についての情報を君は持っていないのかい? ぜひ情報交換したいと思っていたのだが」(おわり)