リサの分析は二日かかった。金持ちを破産させる計画に二日。安い投資だ。ガシマの行動パターン、購入履歴、使用アイテム、法人カードの決済タイミング——それらを洗い出したうえで、リサはエンタープライズにいた頃の知識をもとにオムニバース社の決済システムの仕様を復元した。
「法人カードの決済は、オムニバース社の内部決済システムを経由する。通常のクレジットカードとは違う。社内の経費精算システムに直結していて、購入と同時に経費申請が自動で通る」
「つまり上司の承認がいらない」
「エリアマネージャー以上は自動承認。部下のモデレーターは上限ありだけど、ガシマ本人は」
「無制限」
「無制限ではない。一ヶ月の経費上限がある。ただし、その上限は」
「いくらだ」
「推定で五千万円」
五千万。月額。
「化け物だな」
「エリアマネージャーの経費枠は、管轄エリアの規模に比例する。蒲田エリアの管轄は裏東京の南部全域。住民数は推定四千人。一人当たり一万二千五百円の処理コスト。計算上は合う」
「五千万の枠を使い切らせるのか。不可能だ。俺たちが持ってるのは」
「お金じゃない。仕組みを使う」
リサがデバイスの画面を見せた。オムニバース社の決済システムのフローチャート。
「ここ。決済の認証フロー。購入ボタンを押すと、まずクライアント側で決済リクエストが生成される。リクエストにはアイテムID、価格、支払い方法が含まれる。支払い方法はデフォルトで」
「一括払い」
「一括払い。でも決済リクエストの支払い方法フィールドはクライアント側で書き換え可能」
俺の手が止まった。
「書き換え可能って」
「一括払いをリボ払いに変えられる。クライアント側のリクエストを物理的に書き換えれば。サーバー側は支払い方法のバリデーションが甘い。一括でもリボでも、金額が正しければ通る」
「リボ払いにしたら何が変わる」
「リボ払いの手数料。年率15%。ガシマが一回の購入で三万三千円のアイテムを買ったとする。一括なら三万三千円で終わり。リボなら月々の支払いに手数料が上乗せされて、最終的な支払い総額が膨らむ。経費精算システムは『支払い総額』で上限を計算する」
「つまりリボ払いにすると、同じアイテムを買っても経費の消費量が増える」
「そう。一括なら三万三千円の消費。リボなら三万三千円+手数料で」
「五千万の枠を早く食い潰せる」
巻き戻せ。理論は分かった。問題は実行方法だ。
「ガシマの決済リクエストを書き換えるには、ガシマのデバイスに物理的にアクセスする必要がある。でも三秒ルールはガシマには使えない。近づく前に課金武装で吹き飛ばされる」
「物理アクセスは必要ない。決済リクエストはクライアントからサーバーに送信される。その通信経路上で書き換える」
「中間者攻撃」
「そう。ガシマがこの区画にいる限り、通信はこのエリアのアクセスポイントを経由する。俺のデバイスでアクセスポイントに割り込んで、決済リクエストの支払い方法フィールドだけを書き換える」
リサが手順書を書いた。紙に。ペンで。デジタルには残さない。
リボ払い強制変換手順 1. ガシマの通信経路を特定(ARPスプーフィング) 2. 決済リクエストのパケットをキャプチャ 3. 支払い方法フィールドを "lump_sum" → "revolving" に書き換え 4. 改竄したパケットをサーバーに転送 5. ガシマのクライアント側には一括払いの表示を維持(気づかれない)
「五番目が鍵だ。ガシマに気づかれないまま、裏でリボに切り替える」
「気づかれない。ガシマは決済の明細なんか見ない。経費だから。自分の金じゃないから」
自分の金じゃないから、明細を見ない。会社の金を使っている人間の盲点。
翌日。ガシマが再び商店街に現れた。昨日と同じスーツ。同じ法人カード。同じSSR武装。
俺はジャンク屋の二階で、デバイスを構えていた。
ARPスプーフィングを実行。ガシマの通信がデバイスを経由するように偽装した。パケットが流れ始める。
ガシマが歩く。トラップが発動する。ガシマが自動でアイテムを購入する。
決済リクエスト——キャプチャ。
支払い方法フィールド。"lump_sum"。
書き換え。"revolving"。
転送。
ガシマのAR上には「購入完了」の表示。一括払い。金額は四万九千八百円。
だがサーバー側ではリボ払い。年率15%。手数料が上乗せされている。
「一発目、成功」
「経費精算システム上の消費額は」
「四万九千八百円+手数料。初月で約五万六千円の消費」
「差額は六千二百円。小さいわね」
「小さい。でも積み重なる。ガシマは一日に何十回も購入する。一回ごとに手数料が上乗せされる。一週間で」
「数百万の差が出る」
ガシマは気づいていない。トラップを消しながら、のんびり歩いている。
一日目。ガシマの購入回数——四十七回。リボ払い手数料の累計、約二十八万円。
二日目。五十三回。累計、約六十万円。
三日目。四十一回。累計、約九十万円。
四日目。デバイスの画面。
「経費精算システムの推定消費額——三千二百万。残り枠は推定一千八百万」
「まだ一千八百万もある」
「ある。でも減ってる。確実に」
ガシマはまだ気づいていない。自分の経費枠が加速度的に減っていることに。経費の明細を見ない人間。自分の金じゃないから。
「クロヤ。リボ払いだけじゃ足りないわ。五千万の枠を月内に使い切らせるには、もっと大きな出費を誘発する必要がある」
「大きな出費」
「ガシマが一番お金を使うのはSSR武装のガチャ。一回三万三千円の十連ガチャを何回も回してる。ここの回転数を上げれば」
「消耗を加速できる。でもどうやって回転数を上げる。ガシマが自分で回すかどうかは、ガシマ次第だ」
「ガシマにガチャを回させる理由を作ればいい」
「理由?」
「SSR武装を使い捨てにさせる。一回使ったら壊れるような状況を作る。壊れたら新しいのを買う。買えば買うほど経費が減る」
使い捨て。SSR武装を使い捨てにする方法。
「リサ。SSR武装の耐久値って」
「ある。使用回数に上限がある。ただし上限は公表されていない。エンタープライズの仕様書には」
「書いてあったのか」
「書いてあった。SSR武装の平均耐久回数は十二回」
十二回。
「十二回使ったら壊れる。壊れたら新しく引くしかない」
「十二回のうち、三回くらいはトラップの無効化で消費してる。残り九回。九回使わせれば壊れる」
「九回使わせる。つまり九回、ガシマに攻撃させる」
「攻撃の的が要るわね」
的。俺たちが的になる。ガシマのSSR武装の攻撃を九回受けて、壊させる。
「当たったら死ぬぞ」
「当たらなければいい。広告無敵時間、覚えてる?」
リサの目が光った。
五秒間の無敵。攻撃を受けても当たらない。そしてガシマは——当たらない攻撃にも、武装の耐久値を消費する。
「リサ。お前、天才かもしれない」
「知ってる」
作戦が固まった。
リボ払いで経費枠を削り、SSR武装の耐久値を広告無敵で空振りさせて消耗させる。
二つの消耗を同時に走らせる。金と武器。両方を同時に枯らす。
問題は——時間だ。月末までに五千万を使い切らせなければ、来月に枠がリセットされる。
残り十二日。残り経費枠、推定一千八百万。
「間に合うか」
「やるしかない」
窓の外。ガシマが商店街のベンチに座って、缶コーヒーを飲んでいた。経費で買ったのだろう。缶コーヒー百三十円も経費だ。
全部経費。全部会社の金。
だから全部使い切らせる。