さて、Twitter界隈ではブルプロの正式サービスはまだかという熱い声がたくさんある中、とある事件(?)が発生してTwitterでは話題になっています。プライベートサーバーができてCBTのクライアントで海外勢が遊んでいるとかなんとか。今回はそんなプライベートサーバーの仕組みや、どんな懸念事項があるのかを簡単に紹介します。ちなみに私はパケット解析をしているわけではないので、オンラインゲームでの一般論で話を進めていきます。
比較的ネットワークへの専門知識がなくても読めるようにしているので気になった方は是非読み進めてみてください。今回は詳細は伏せますが、仮に見つけたとしても絶対にプレイしないでください。犯罪に加担することになるのと、IPとかでBANくらって永久にブルプロができなくなったりするかもしれません。
ちなみに実際に私がプレイしたわけではないので真偽は不明ですが、私見でいうならほぼ間違いなく「真」だと思っています。
目次
プライベートサーバー騒動とは
便宜上勝手に名前を付けました、すいません。
ことの発端はとある人が、とある古い投稿を見つけたことから始まっています。5月4日なので相当前に告発として外国のDiscordユーザーらしき人がCBTのクライアントでプライベートサーバーを立てて遊んでいる人がいるという内容でした。昔のを掘り返した感じになりますが、正式サービス開始の足音も聞こえてきそうな時期だけに敏感な時期だからでしょう。
これは日本国内では違法行為になります。サービス終了したゲームなどでは一部日本でもいわゆる「エミュ鯖」なんて呼ばれるもので存在していたりします。これも法律的にはアウトだった気がしますが、ここら辺法律専門家ではないのでわかりません。ただ良いことではないのは間違いないです。
このプライベートサーバーっていまいピンとこないという方が多いので簡単な解説記事を作ろうというのが今回の記事の掲載の理由になっています。
そもそもプライベートサーバー何をしているのか
私はネットワークをかじっている人間なのである程度突っ込んだ話もわかるのですが、今回は表面的な誰でもわかる感じで話を進めていきます。なので実際とは少々異なる部分がありますが、学問としてやるのでなければ問題ないので気にしないでください。
さてこれを理解するためにはどんな構造でオンラインゲームが動いているかなんとなくわかっている必要があります。始めにこちらをご覧ください。
自分のPCではゲームを動かしていると思っていください。CBTならCBTのクライアントを動かしているものになります。余談ですが、ゲームのデータの大半はクライアント(自分のPC)に保存されていることが多く、サーバーには必要なデータを少しだけおくるという場合が多いです。
この「自分のPC」や「友人のPC」から「パケット」というものを介して「ブルプロ運営のサーバー」とやり取りしてゲームを動かしています。携帯電話の「パケット」と同じものですよ。
ちなみにこの前のサーバー負荷テストでテストしたのは「マッチングサーバー」と「チャットサーバー」のようですが、サーバーも構成によっては細かく内部で分かれているのでこの前テストしたのはサーバーの一部機能だと思って問題ないでしょう。
少し話が逸れましたがこれが正しい動きの、つまりはCBT中の正しい動きになっているわけです。
そしてCBTが終わるとこんな状態になるわけです。
サーバーにつながらないので、「パケット」をやり取りする相手がいなくなるので、正しくゲームが動作しなくなります。
でも逆に言えば正しく動くサーバーがありさえすれば動くんです。これを実現するのがプライベートサーバです。プライベートサーバはこんな感じで配置されます。
これが「プライベートサーバ」や「エミュ鯖」なんて呼ばれるものの正体になっています。
さてここで疑問に思う方もいると思うのですが、どうやって正しく動くものを作るのか、正しく通信できるのかなんて話です。
パケットについて
正しく動作するには先ほど説明で出た「パケット」というものが正しくやり取りできる必要があります。
パケットとは具体的にこんなものになっています。あくまで1例なので厳密には現在用いられているものとは違いますよ。
パケット内部はこんな風にいくつかの情報で構成されています。実際には他にももっとたくさんの情報で構成されていますが一例ということでご勘弁を。
さて、この中で大切なのが「送りたい内容」の部分になっていて、ゲームにおいて一番重要な役割をしているわけです。
次に、一般的に「送りたい情報」に入っているものはこんな感じになっていることが多いです。
この情報をパケット解析ツールを用いて解析して、どんな動作のときどんな情報が送られているかがわかると、「プライベートサーバ」を構築することが可能となります。
システムの仕組みによりますが、このパケットには「送信先の情報」が含まれているので基本的には正しいサーバーにしかデータを送れないのですが、それを書き換えたりしてして、あとはパケットの中身がわかれば「プライベートサーバ」を構築できるというわけです。
プライベートサーバーができると何がまずいのか
色々考えられることがありますが、代表的なものを挙げておきます。
先ほど開設した「パケット」は基本的には「暗号化」という処理を施していて一言で言えば「簡単には外からじゃわからない」ようにしています。これを破られていることになるので、ゲーム内の情報を改竄することも可能になるかもしれません。
例えば先ほどの「パケット」の「送りたい情報」の中にステータスの情報というものがあったとすると、HP無限チートみたいなものが出てくるのは想像に難くありません。また、仮の話ですが「取得したアイテム」なんて情報があったらどうでしょうか。アイテムの取得まで偽装できてしまうかもしれません。もちろん対策はするでしょうが、やりようによってはできてしまうかもしれないわけです。
あとは、このパケットの中身や構造がある程度判明してしまっていることになるので、暗号化をしてチート対策をしたとしても、ある程度、復号後の形が予測できるためチート対策とのいたちごっこになったりしやすいのです。
他にも色々考えられることはありますが、割と最初の段階から痛いところを突かれているというのが正直なところです。
最後に
絶対にこんなマネはしてほしくないですし、解析している人たちにこんな情報を渡さないで欲しいなと思いました。
あえて要所を外して書いていていたのですが、察しのいい方や全文に目を通してくださった方は気づかれたと思いますが、全ての行動で協力者がいないと成り立たないんですね。だれかが情報を渡したり、解析に協力するからこうなってしまったんですよ。
人によって思うことも様々でしょうが、私はこの件に対しては否定的です。
思うところや感想、ご意見がある方はコメントへどうぞ。
他のブルプロに関する記事は以下から見ることができます(メインではないのでそんなに数はありません)。
https://www.thun-techblog.com/index.php/blog/category/game/bp/
以上です。