Case 009: while(true)
目の前の女は、穏やかに微笑んでいた。
栗色の髪、優しげな瞳、そして包容力のある豊満な体つき。
シスター服が、彼女の柔らかな曲線を強調している。
「私は、シスターのイテレータと申します」
女が名乗った。
反復子。
繰り返し処理に使うやつか。
毎日が反復でつまらなそうな人生を送ってそうなこの女への皮肉か。
……由仁は、俺みたいなエンジニアが突っ込まざるを得ないネーミングで縛る苦行でもしてんのか?
「助けに来てくださったのですね」
彼女の声は、穏やかで落ち着いていた。
「ありがとうございます」
「……説明してくれ」
俺は短く言った。
「何があった」
「はい」
イテレータは頷いた。
「私は元々、この協会でシスターとして孤児院を開いておりました」
イテレータが語り始める。
「ですが……ある日、突然本部から男が来たのです」
「エンシュアか」
「はい。 彼は『本部の指示で、この施設を預かる』と言い、私から全ての権限を奪いました」
イテレータの声に、僅かに怒りが滲む。
「そして、ある日の食事に……睡眠薬を混ぜられたのです」
「……」
「気がつけば、この牢の中でした」
彼女は自分の手を見つめた。
「他の者たちも、同じです。 街から攫われてきた人々、旅人、冒険者……」
「人身売買か」
「恐らくは。 ですが、私にも詳しいことは分かりません」
イテレータは首を振った。
「ただ……この協会には、他国の聖女協会が絡んでいるようです」
「他国?」
「ええ。 エンシュアが時折口にしていたのを聞きました。 『聖女協会』と」
聖女協会か。
また厄介な組織が出てきたな。
だが、今はそんなことより――
「他の連中は、どうなってる」
俺は周囲の牢屋を見回した。
中には、痩せ細った男女が蹲っている。
皆、体は汚れ、衰弱しきっていた。
「恐らく、皆さんも睡眠薬や何らかの薬を盛られているかと……」
イテレータが言う。
「長く捕まっていた方は、体力も失われています」
「……面倒だな」
俺は舌打ちした。
一人一人のステータスを開いて、状態異常を消して、HPを回復させて――
そんなことを、この人数分やるのか?
さっきラムダ一人を治すだけでも、結構な手間だった。
これを何十人分も繰り返すのは、正直めんどくさすぎる。
「……待てよ」
俺はある考えが浮かんだ。
一人一人手作業でやるのではなく、一括でやればいい。
つまり――バッチ処理だ。
バッチファイルを作って、まとめて実行する。
「よし」
俺はコマンド入力画面を開いた。
『> echo null >> test.bat』
まずはtest.batというファイルを作っておく。
そして、本題はこっちだ。
『> notepad test.bat』
エンター。
瞬間――
目の前に、見慣れた白い画面がポップアップした。
「……おお!」
メモ帳だ。
久しぶりに見た。
まさか、この異世界でメモ帳が開けるとは。
「よし、なら話は早い」
俺はメモ帳に直接コードを書き始めた。
まず、historyコマンドで魔法の履歴を確認する。
回復系の魔法といやあ、healやcure辺りだろ。
『> history | grep "heal|cure"』
画面に、大量の履歴が流れる。
『spell_cure_poison.exe (target=self, mp=20) - user: npc_1234』
『spell_cure_paralysis.exe (target=self, mp=15) - user: npc_5678』
『spell_heal.exe (target=self, mp=30) - user: npc_9012』
『spell_clean.exe (target=self, mp=5) - user: npc_3456』
ビンゴ。
ふむ……毒の治療、麻痺の治療、体力回復、そして清潔にする魔法まであるのか、便利だな。
俺はそれらをコピーして、メモ帳に貼り付けた。
そしてそのまま、「ループ処理」を書く。
『for /L %%i in (1,1,50) do (』
『 spell_cure_poison.exe(target=%%i, mp=15)
『 spell_cure_paralysis.exe (target=%%i, mp=15)』
『 spell_cure_disease.exe (target=%%i, mp=25)』
『 spell_heal.exe (target=%%i, mp=50)』
『 spell_clean.exe (target=%%i, mp=5)』
『)』
周囲に居る囚人を1番から50番まで、順番に毒を消し、麻痺を消し、病気を消し、体力を回復し、汚れを落としていくバッチプログラムの完成だ。
やってることはこの世に存在しない「合成魔法」を勝手に作っているようなもんだ。
そして記述した test.bat を保存する。
「これで……」
コマンド画面に戻る。
『> test.bat』
エンター。
瞬間――
◆◆◆◆◆
周囲が、光に包まれた。
いや、光というより――魔法陣だ。
牢屋の中の全員に、次々と魔法陣が現れる。
緑色の、優しい光。
「な、何だ……!?」
囚人たちが驚いて顔を上げる。
そして――
「あ、あれ……? 体が、軽い……!」
「毒が……消えた!?」
「傷が、治ってる……!?」
次々と、囚人たちが立ち上がっていく。
痩せ細っていた体に、血色が戻っていく。
汚れていた服が、みるみる綺麗になっていく。
怪我も、状態異常も、全て消えていった。
「神の……奇跡だ……!」
「助かった……助かったぞ……!」
囚人たちが、歓声を上げる。
イテレータは俺を見つめていた。
「あなた様は……もしかして……」
彼女の声は、畏敬に満ちていた。
「神の使いなのでは……?」
「アホ言え、そんなわけないだろ」
俺は短く答えた。
そんなことより、やることがある。
俺は牢屋から出て、囚人たちの前に立った。
「お前達」
全員が、俺を見る。
「下克上、したいか?」
沈黙が落ちた。
だが、次の瞬間――
「お、おおおおっ!!!」
囚人たちが、一斉に立ち上がった。
「やってやる!!」
「あの司祭、絶対に許さねぇ!!」
「この恨み、晴らさせてもらう!!」
彼らの目には、怒りと復讐心が宿っていた。
「生憎、俺も理不尽に捕まえられて気が立っていてな……」
俺は鉄格子の一本に手を触れた。
ステータスを開く。
『鉄格子の棒』
『耐久度: 500/500』
耐久度を0にする。
『耐久度: 0/500』
ガキンと音を立てて、棒が折れた。
俺はその棒を手に取る。
そして、一本一本の強化値を書き換える。
『強化値: +0』→『強化値: +50』
そして、その強化された鉄の棒を、複製する。
管理者ツールで、アイテムを増やす。
一本、二本、三本……十本、二十本、三十本……
大量の鉄の棒が、地面に積み上がっていく。
「これを持て」
俺は囚人たちに鉄の棒を配った。
「な、何だこれ……!」
「重さは変わらないのに、なんて威力だ……!」
囚人たちが、驚愕の声を上げる。
強化値+50の鉄の棒。
これなら、並の武器など一撃で叩き折れる。
これで、最強の攻撃力軍団の完成だ。
俺は満足げに頷いた。
「行くぞ」
◆◆◆◆◆
イテレータに案内され、地上への階段を上がる。
囚人たちも、それぞれ鉄の棒を握りしめて後に続いた。
地上に出ると――
「ラムダ!」
俺は思わず声を上げた。
協会の広場で、ラムダが司祭たちに取り囲まれていた。
両手は後ろ手に縛られ、エンシュアの前に跪かされている。
「おや、まさか脱出されるとは」
エンシュアが、こちらを見て笑った。
「流石は高名な魔導士様。 魔封じの枷も、無駄だったようですね」
彼の周りには、十数人のゴロツキが控えている。
「ですが、残念ながら――」
エンシュアが手を振った。
「その女を殺されたくなければ、大人しくしていただきたい」
「……」
俺は黙って、囚人たちを見た。
彼らは、怒りに震えながら鉄の棒を握りしめている。
「やれ」
俺の一言で、囚人たちが動いた。
「うおおおおっ!!」
「俺たちの恨み、思い知れ!!」
囚人たちが、ゴロツキたちに突撃する。
「な、何だ!?」
「ただの棒じゃないか! 恐れるな!」
ゴロツキたちが剣を構える。
だが――
ガキィィィンッ!
鉄の棒と剣がぶつかった瞬間、剣の方が真っ二つに折れた。
「な、何だとっ!?」
「ば、馬鹿な! 相手はただの棒だぞ!?」
強化値+50の威力だ。
並の剣など、紙同然。
次々と、ゴロツキたちが倒されていく。
「くっ……ならば!」
エンシュアが詠唱を始めた。
「炎よ、|我が手に――」
物理が効かなかったら、魔法に頼る。
まるで馬鹿の一つ覚えだな。
『> tasklist | grep spell』
『> kill 30012』
俺がコマンドを打ち込むと、エンシュアの魔法陣が消える。
「な、何!?」
エンシュアが狼狽える。
「雷よ、|天より――」
『> kill 30013』
また消える。
「くそっ……くそっ……!」
エンシュアは焦りに顔を歪めた。
そして――彼は懐から、小さな袋を取り出した。
「ならば……これで!」
袋の中身を、空中に撒き散らす。
白い粉が、周囲に広がっていく。
「ククククク……これは睡眠薬の粉末! この一帯全てを眠らせる!」
粉が、囚人たちの顔にかかる。
「う、うわ……!」
「眠い……」
次々と、囚人たちが倒れていく。
「ククククク、私の勝ちです!」
エンシュアが勝ち誇った笑みを浮かべる。
「高名な魔導士様とて、睡眠薬には勝てますまい――」
だが、俺は倒れなかった。
「……何故だ」
エンシュアの笑みが、凍りついた。
「何故、何故効かないのです!?」
「覚えておけ。 俺に同じ手は、二度通用しない」
俺は冷たく言い放った。
「まあ、二度目なんてないだろうがな」
セキュリティエンジニアが、一度侵入を許してしまったバグの対策をしないわけがないだろ。
◆◆◆◆◆
実は俺は戦闘に入る前のこと。
さっきのtest.batを応用した、俺――チェックサムの状態異常を回復する「cure_self.bat」を作成していた。
そしてコマンド入力から、スケジューラーを開こうとすると――
『> schtasks /create /tr "cure_self.bat" /sc second /mo 1』
『エラー: この操作を実行するには管理者権限が必要です』
「……おっ、珍しいな」
俺は既にadminでログインしているはずだが、これはこのゲームの管理者であって、このゲームを動かしているであろう由仁のPC自体の管理者権限を持っているわけではない。
きちんとセキュリティをかけ管理者権限が必要であることに、俺は思わず感嘆してしまった。
いや、PCで動かしているゲームであれば、それくらいはするのが普通なんだが。
まさかデフォルトで設定されていただけなんじゃ……。
あいつの会社にはそういうセキュリティチームがいなかったのか?
俺が言えた皮肉じゃないが、由仁のチームこそ作るときにAIにセキュリティの相談すべきだっただろ。
しかしそうか、「管理者として実行」が必要なのか。
つまり、UACの壁だ。
現状一般ユーザー権限でコマンド実行をしているため、スケジューラーを起動するには管理者権限への『権限昇格』が必要になる。
「……じゃあ、こいつはどうかな?」
だがそうなるとセキュリティエンジニアの性がここで騒いでくる。
そう、脆弱性チェックだ。
俺はコマンド画面を操作した。
『> whoami /priv』
現在の権限を確認する。
案の定、いくつかの特権が「Disabled」になっている。
『SeDebugPrivilege: Disabled』
デバッグ特権か。
これがあれば、他のプロセスに介入できる。
俺は管理者ツールから、自分のアカウント情報を開いた。
そして、権限フラグを直接書き換える。
『SeDebugPrivilege: Disabled』→『SeDebugPrivilege: Enabled』
さらに、UACのフラグも無効化する。
『UAC_Enabled: true』→『UAC_Enabled: false』
おいおい……。
『垂直的特権昇格』。
一般ユーザーがOSの権限を昇格させ、本来管理者しかできないことができてしまうという脆弱性を突いた攻撃。
「……脆弱すぎる」
権限フラグを直接書き換えられるなんて、セキュリティとして終わっている。
これは主に一般ユーザーに権限設定の変更をできるようにしていると起きてしまうセキュリティの穴だ。
だからサーバーを立てるときにその辺りの権限も一通りチェックしておくべきなんだがな……。
まさに頭隠して尻隠さず。
これじゃあ鍵をかけてドアを閉めているのに、その鍵をドアの前に置いているようなもんだ。
「盗んでください」と言ってるのと変わらねぇじゃねぇか。
改めて、スケジューラーを開く。
『> schtasks /create /tr "cure_self.bat" /sc second /mo 1』
今度は成功した。
1秒に1回、自分に対して回復魔法を実行する。
状態異常を1秒に1回治す。
つまり――どんな状態異常も、1秒以内に消えるようになった。
◆◆◆◆◆
睡眠薬?
1秒立てば治る。
毒?
1秒立てば治る。
麻痺?
1秒立てば治る。
それを、無限ループしてやれば――
while(true) { cure(); }
「イテレータ」
俺は彼女を見た。
「お前にも、同じ設定をしてやる」
コマンドを打ち込む。
『> spell_cure_disease.exe (target=iterator, mp=25) 』
イテレータの体が、淡く光る。
「これで、お前も睡眠薬無効だ」
「はっ……!あ、ありがとうございます……!」
「決めてしまえ」
俺の言葉に、イテレータが頷いた。
彼女は鉄の棒を握りしめ、エンシュアに向かって走る。
「私はあなたをどう料理してやろうかと、あなたを呪ってやろうかと。 あなたから囚われていたこの数日間……考えに考え続けてきました」
イテレータの声が、変わった。
優しげな声が、まるで別人のように冷たく、狂気を孕んでいく。
「ふふふ、ふふふふふ……今やっとあなたにっ! あの時の成果が披露できますっ!!」
まるでヤンデレのような、迫真に迫る叫び声。
鉄の棒が、エンシュアの脳天に叩き込まれた。
ゴンッ!
ゴンッ!
ゴゴゴゴゴンッ!!
そう、何度も。
何度も。
「ぐっ……! あっ……!」
エンシュアが、地面に倒れ伏した。
今、連続で何回も殴らなかったか?
「……怖えぇよ、この女」
俺は思わず呟いた。
あの穏やかな笑顔から、まさかあんな声が出るとは。
人の恨みは恐ろしいんだぞ、かつての上司よ。
いや、俺はここまで恐ろしくはなれないだろうが。
◆◆◆◆◆
エンシュアを縛り上げ、協会を制圧した。
ゴロツキたちも全員捕らえ、囚人たちは自由になった。
「チェックサム様……!」
ラムダの拘束を解くと、彼女が俺を見上げた。
「また、助けられてしまいましたね……」
彼女の頬が、ほんのりと赤く染まる。
目は見えないはずなのに、その恥じらう仕草だけでなんとなくわかる。
その仕草に、俺は少しだけドキリとした。
だが――
「チェックサム様と、仰有るのですね!!」
イテレータが、俺に抱きついてきた。
柔らかい。
とても、柔らかい。
ラムダよりも、明らかに大きな胸が、俺の腕に押し付けられる。
「本当に、本当にありがとうございました!!」
イテレータの声は、先ほどの狂気は消え、また穏やかで優しい声に戻っていた。
「あなた様のおかげで、私たちは救われました!!」
「……あの」
ラムダの声が、何故か低くなった。
「あなた。 少し、離れていただけませんか?」
「あら? ですが私はただ、感謝の気持ちを伝えていただけですのよ?」
イテレータが、さらに胸を押し付けてくる。
「貴方様も、同じではありませんか?」
「私は……私はその、先に……!」
ラムダが、何故か焦っている。
そして、彼女も俺の反対側の腕に抱きついてきた。
「チェックサム様は、私が先に出会ったのです!」
「まぁ! ですが、助けていただいたのは私も同じですわ」
二人が、俺を挟んで張り合っている。
左右から、柔らかい感触。
「やめろ……」
これは、ヤバい。
女達は姦しくなっていき、やがて収拾がつかなくなってくる。
「勘弁してくれ……」
俺は管理者ツールを開いた。
座標を入力する。
『X: 宿屋の自室』
『Y: 宿屋の自室』
『Z: 宿屋の自室』
エンター。
瞬間――俺の体が、光に包まれた。
「え? チェックサム様!?」
「あ、待ってくださ――」
二人の声が、遠ざかっていく。
次の瞬間、俺は宿屋の自室のベッドの上にいた。
「……はぁ」
俺はベッドに倒れ込んだ。
「勘弁してくれ、本当に……」
今日は、疲れた。
肉体的にも、精神的にも。
「……面倒なことになった」
またしばらく、部屋から出ないでいよう。
俺はそう決めて、目を閉じた。




