ターニングポイントさん!?

10bace LOG

ブラウザゲーからデータを引っこ抜く論

ブラウザで遊ぶことができるゲームがある。Webで遊べているということは、データがブラウザに落ちてきているということだ。

だから、うまくやればデータを抜き取って保存することもできよう。

◆データ抜けないやつ

映像だけがブラウザに連携されているやつ。「クラウド版」とか書かれていたらあやしげ。

つまり、サーバーで描画された映像をこっちのモニタに移しているだけなので、その画面を録画することしかできない。ゲームのリソースをぶっこぬくことはできない。

◆超面倒くさいやつ

データが暗号化、エンコードされている場合。暗号化されていると、そのままじゃ読めなくなる。暗号化されたデータは復号という操作をすれば内容を確認できるようになる。

その復号するためのカギとなる情報もブラウザには落ちてきているわけだが、それを探すのは結構に骨の折れる作業だな。無理ではないけど。

◆抜き取る方法の考え方

▼Flash

昔よくあったやつ。これはゲームごと抜き取ることができる。
商用のFlashゲーは、リソースを持っているサーバーと通信する場合はありけれけども、普通のエロフラなら素材ごとまるまる抜ける。

swfを抽出してやればいい。そのswfの内容を読み取るソフトウェアもある。今後なくなるから深くは説明しない。

Flash Video Downloader

Web上から消えていた場合、Wayback Machineを掘れ。URLがわからないなら無理だけど。

メモ:https://stackoverflow.com/questions/18190229/flash-audio-recorder-with-realtime-mp3-encoding

メモ:ファイルシグネチャ検索https://filesignatures.net/index.php

▼HTML

まず、ChromeだのFireFoxだののブラウザを使用されていることと思うが、「開発者ツール」というものの存在を知らねばならん。

「F12」を押すと開発者ツールが出てくる。はず。ググれ。

開発者ツールにはタブがある。重要なのは「Elements」「Sources」「Network」だな。

・Element

Elementsでは、ブラウザに諸々を描画するための要素、エレメントを確認することができる。開発者ツールを開かずとも、画面を右クリックして「検証」的なメニューをクリックすれば開けたりもする。

一番簡単なパターンでは単に画像を右クリして保存できるのだが、直でアクセスできることも少ない。だから開発者ツールが必要になる。

Elementタブでは、階層構造になっているそれぞれの要素を確認することができる。「▶」をみつけてクリックすると、開いたりする。要素にマウスカーソルを乗せると、ブラウザ上で対応する要素が青く網掛けされる。それを参考にしながら辿れ。

ちょっと難しい話になるが、探すコツとしては「img」とか「image」とか「picture」という要素(タグ)を探すか、「background」とか「background-image」というCSSプロパティを持つ要素を探せ。

見つからないこともあるからその時は諦めろ。

・Network

通信の内容を確認できる。画像を通信したらその内容が確認できるわけだ。

「XHR」「JS」「CSS」「Img」「Media」だの、通信の種類が選べると思う。画像が欲しかったら「Img」だな。音声が欲しかったら「Media」。

んで、Imgで画像が落ちてこないことがある。これはスクリプトとかElementに直接画像データが埋め込まれているパターンだ。探せるけど、ほどほどで諦めたりしろ。

「Clear」のボタンがあるはずだから、通信内容をいったん消したくなったらうまく使え。

また、Networkで落ちてきたデータの行をダブルクリックすると別タブで開いたりDownloadフォルダに落とすことができる。

・Souces

ソース。フォルダ階層が表示されるから、死ぬ気で辿れ。

▼補足:HTML

Chromeには「プラグイン(extension)」という外部ツールを導入する仕組みがある。ElementとかNetworkを掘るのがだるい人は、その辺のキーワードで「chrome plugin xxx」みたいな感じでプラグインの検索をかけてみろ。いい感じのツールもあるかもしれない。

抽出は英語で「Extract」です。あとは単純に「download」「downloader」とか「Export」とかかなぁ。

▼Unity

AssetBundleというものを手に入れればいい。これはF12でNetworkを監視してれば落ちてくるのがわかるはずだ。あるいは、Chromeのキャッシュを掘ればいい。ググれ。

・AssetBundleの見つけ方

NetworkでXHRをながめて、「assetbundle」的な文言を含んでいるやつを探せ。あるいは妙にデータサイズの大きいデータ。Chromeの開発者ツールだと検索窓があるから「asset」とか入力してみてもいいだろう。

たとえば「.dmm」という拡張子であっても、ファイル内容のプレビューに「UnityFS」という記述があったらそれはAssetBundleです。

・AssetBundleの開き方

AssetStudioというソフトウェアを使う。ダウンロードは以下から。

Releases

※とりあえず一番新しいやつ使えばいいと思うけど「Pre-release」とかのバッヂが付いているものはちょっと動作が不安定かもね。

・AssetStudio

  • 「AssetStudioGUI.exe」を起動して
  • 「File」→「Load File」で落としてきたAssetBundleを読み込んで
  • 「Asset List」タブでお目当てのエロ画像を探す。

・Asset List

  • テーブル上部の「Type」をクリックすると、リソースの種類で並べることができる。
  • クリックでAssetを選択できるんだが、Shift + Clickでまとめて選択できる。Ctrl + Clickでもいいよ。
  • 選択したAssetは、右クリックで「Export selected assets」する。

▼動画

動画がそのまま落ちてくることもある。「.webm」とか。Networkに怪しいファイルがあったら、その行をとにかくダブルクリックしろ。バイナリのデータであってもヘッダーを見れば何のファイルか判ったりもするだろう。さっきの「UnityFS」とかな。

▼Live2D

試してねぇけど行けると思う。

「moc3」拡張子がついているファイルを引っこ抜くとかAssetBundleから抜き出すとかすれば「Cubism Viewer」というので見られそう。フリーで使える。

moc3ファイルだけじゃなくて、その周辺に転がっているmthだのjsonだのpngだのも一緒に扱わないとダメだろう。

ただ、「moc」っていう昔のLive2Dで使われてたファイルタイプもあるっぽくて、以前のバージョンのCubismが必要かもな。探せ。

◆例えば持っていないキャラクターの画像が欲しい

無理と思ったほうがいい。URLが予測不能にされていたり、URLが予測可能であってもURLパラメータとかリクエストヘッダーとかCookieに正しいトークン(あらかじめ決めた文字列みたいなもの)を詰めないとアクセスできないようになっているんじゃねぇかな大抵は。

◆補足:バイナリよみ

バイナリの読み方について最低限のことを書いておく。コメ欄で質問来ていた話をベースに。

▼バイナリとは?

ググれ…!と言いたいけどそういう話じゃないと思うので説明する。

「バイナリ」って言ってんのは、バイナリファイルのこと。この世にはテキストファイルバイナリファイルの2種類がある。バイナリファイルは「Networkタブで見たときにすっごい文字化けしとるやつ」です。語弊しかないけど。お前の欲しい画像、音声、動画はすべてバイナリファイルだろうな。jpgとかpngとかmp3とか。

▼マジックナンバー

なんか知らんがめっちゃ文字化けしてる故、バイナリファイルは可読でない。人間が読むようにできてないから読めないんだけど、実際のところ読めなくもない。

バイナリファイルには色んな種類がある。そして大抵の場合、そのファイルが何であるのかという自己紹介をしている箇所がある。それがマジックバイト。マジックバイトにはマジックナンバーが記されていて、そのバイナリが何であるのかということを読み取ることが出来たりもする。

たとえば「mp3が欲しいけどNetworkに落ちてきていない」時は、他のバイナリデータに埋まっている可能性がある。「mp3 wiki」とかでググってマジックナンバーを知る必要がある。

音声ファイルはmp3と限らんし、コメ欄の質問の例では「ogg」だったからそれは「OggS」というマジックナンバーで検索できる。16進で言えば「4f 67 67 53」ですね。それで少なくともデータの存在確認はできる。データが暗号化されていないってことがわかる。

▼文字も入ってるかも

バイナリとはいえ、読める文字が埋まっていることも多い。半角英数記号(ASCII)とかは読めがち。眺めてみてもいいかもね。

▼ダウンロードして読む

Networkタブでファイルをダブルクリックしてもダウンロードできない場合がある。そういうときはコマンドを叩けばいい。Linuxで言えばwgetを使え。Windowsでもできる。

Windowsでwgetする色々な方法

読む時はテキストエディタで読んでも良いんだけど、バイナリエディタ、あるいはバイナリビューワーというツールも存在している。定番どこだとStirlingだのBZだの。最近のツールは知らん。

Vector | バイナリファイル処理

バイナリファイルの指定位置から指定位置までを別のファイルに保存できる機能が必要だろうな。ダンプ(Dump)という文言があるか見ればわかる。

▼抽出

「binary [欲しいファイルの拡張子] exract」とか検索すれば怪しいプログラムが見つかるかもしれん。

軽くググったら「mediaextract」っていう怪しいソフトウェアを見つけたので、使い方を書いておく。

  • Releasesのページからzipを落とす。
  • 適当なフォルダに解凍。
  • 「build-xxx」みたいなフォルダが入ってるから、自分のPCにあったやつを選んで開く。Windowsの64bitなら「build-win64」
  • 抽出もとのバイナリファイルをexeにドラッグドロップする。
  • 色々出てくる。

対応しているフォーマットが多くてありがたいな。bmp、gif、jpeg、png、midi、mpeg、ogg、mp4、avi、wmvらへんだろうか。でもこれwmvほんとに出力できてんのかと思った。

▼分割されている場合

バイナリファイルが分割されていた場合は「copy」コマンドにでどうにかする。「/b」で「バイナリファイルだよ」みたいにオプションを指定して差し上げろ。

Windowsのコマンドでファイルを結合する

◆データを引っこ抜かせたくない時

Webに置くな。そもそもインターネットに公開するな。Webに乗せた時点でデータは引っこ抜かれるものだ。そこで抗っても無駄。金の無駄だし時間の無駄。意味ない。割り切れ。逆に考えるんだ。「データ抜かせちゃってもいいさ」と考えるんだ。元から抜けちゃう設計にすれば全てがすんなり通るんじゃないか?前提を疑え。

お前「リソースをダウンロードさせたくないんですが」

俺「じゃあインターネットに置くのは変です」

これ。最終的にはイタチごっこなんだよ。インターネットという道具の使い方に即していないわけだから。

◆以上

わかんなかったらコメントして。あと、Unreal Engineはわからん。多分なんとかできると思うんだけど。それとか、Wasmってので作られたゲームが今後登場すると思うんだけど、その辺もやり方違ってくるだろうから要勉強ですよね。

◆結論

Fanzaはサ終おおすぎ。

課金しろって?んん…断る…!

前へ

弁護

次へ

1を聞いて1を知るが1の意味を落とし込めてない

  1. 匿名

    ここにある方法でFanza行けました?

    • メガネ

      いけるゲームはある。
      ゲームによって実装の方法が違ってるんで、タイトルによるとしか言えない。

  2. 匿名

    にじよめの全軍突撃ガールズがもうすぐサ終するらしいので声だけ取ろうと思ったんですが
    networkタブから出てきたURLアクセスして聞くと開始0.5秒くらい音切れてるんですけど何故でしょうか
    win10,64bitでchrome/火狐/IEで試したんですが似たような感じでした

    • メガネ

      みてみる。

    • メガネ

      データが暗号化されているパターンだと思う。画像も音声も。
      音声が微妙に再生できる理由はよくわからない。

      ※以下、頓珍漢なことを言っている可能性ある。
      音声や画像みたいなバイナリファイルには、ファイルの先頭に決め打ちのマジックバイトというものが指定されている。
      https://en.wikipedia.org/wiki/List_of_file_signatures

      落とした音声/画像ファイルをバイナリエディタというツールにかけたんだが、pngとかmp3って拡張子が付与されているくせにマジックバイトが一致しない。おかしい。

      しかし、pngならpng、mp3ならmp3同士で先頭の文字が一致している。つまり、同じ暗号にかけているんじゃなかろうかと思う。
      (同じマジックバイトを同じ暗号に通せば、同じ文字列が出力される。複雑な暗号だとそうとも言えないけど。)
      (あるいは、暗号化されていないけどFlash特有の何かがあるとか。)
      例えば先頭の文字が一致していなかった場合は暗号にソルトというものを付与していたりファイルを分割していたりで復号がかなりの無理ゲーになったりするんだけど、これくらいならパズル好きとか玄人に依頼すれば復号してくれるかもしれん。
      mp3とかpngとか、ファイル形式がヒントにもなる。(嘘の拡張子をつけて惑わせている可能性もゼロではないけど、それやるやつはかなり性格悪いと思う。)

      というのと、ゲーム本体であるswfは「https://cdn2.rebelliongirl.com/client/106/Game.swf?106」で取得できるからFlash(swf)のデコンパイラというものを通せばゲームの挙動を全部確認できるし何とかなる。気合さえあれば。

      • 匿名

        復号しないといけなかったんですね
        とりあえずデータとsfwを取って見てみます
        ありがとうございました!

  3. 匿名

    黒猫大和の宅急便すごろくの8bit風BGMを探しています。
    音声は見つかるのですがBGMの所在が分からず悩んでいます。
    お知恵をお借りできると幸いです。

    • メガネ

      ◆録音するのが早い。音声だもの。
      適当なブラウザでF12押してからモバイルモードにすれば「https://sugoroku.kuronekoyamato.co.jp/」でゲーム画面に入れるはず。
      https://developers.google.com/web/tools/chrome-devtools/device-mode?hl=ja#viewport
      入れたんならAudio Captureとか、あるいはデスクトップ録音ツールで録音してしまえばいい。
      https://chrome.google.com/webstore/detail/chrome-audio-capture/kfokdmfpdnokpmpbjhjbcabgligoelgp/related
      このBGMはループしているから、音声編集ソフトでいい感じの長さにできるだろう。

      ◆いや、アタイは意地でもぶっこ抜く
      そう…
      今回の例でいえばファイル数なんて20もいかないわけですから、バイナリであってもとりあえず読んでみるのがいい。目grepする。
      「game.dmanifest0」というバイナリファイルの中に「5/assets/sfx/DiSCOVER THE FUTURE For Loop_-9db_01.oggc�暴����0」という文言を見ることができる。わかりやすい。
      oggかよっつって、Wikipediaのoggのページを見ればファイルのマジックナンバーは「OggS」だってことが分かる。
      https://ja.wikipedia.org/wiki/Ogg
      「game.arcd0」とかもnetwork見れば落ちてきているから、それをチマチマと「OggS」で検索すれば、ちゃんと含んでいるのが見て取れる。
      OggSを含んでいるのは「game.arcd1」「game.arcd2」っぽいな。ただ、バイナリファイルが複数個固められているようなのでOggだけを抽出せねばならん。
      (bgmって文字列を含んでいるからarcd2のほうが怪しい気がしている。また、arcd3までデータがはみ出している可能性もあるので全部落としておくのが無難)
      ファイルをローカルにダウンロードするにはwgetとか、好きなものを適当に使う。Windowsであったら以下のページを見てみる。
      https://qiita.com/nightyknite/items/b4db8766c0b94764cd3c
      暗号化されていないわけだから、ファイルを落とせたんであれば後はもう無理なことなんてない。気合。パワー。Oggファイルの仕様を調べてどうにかするべし。
      https://bb.watch.impress.co.jp/cda/bbword/16685.html
      バイナリファイルを扱うためのツールがいろいろあって、範囲出力とかもできる。Stirlingとか。
      https://ftp.vector.co.jp/10/71/2144/stir131.lzh
      また、「game.dmanifest0」をよく観察すれば「/assets/sfx/DiSCOVER THE FUTURE For Loop_-9db_01.ogg」の開始位置が読み取れるのかもしれない。他のファイルと比較して推理することは可能だろう。

      気合いだ。

  4. 匿名

    大変分かりやすいご助言ありがとうございます。
    一番簡単な録音をと思いましたが15秒経つと他の効果音が入ってきます。
    気合を入れましたがgame.arcd1のダウンロードでつまずいてしまいました。
    色々試したもののコマンドプロントは初心者では難しいということが分かりました。
    もう少し勉強してから気合で頑張ります。
    本当に嬉しかったです。ありがとうございました。

    • メガネ

      ・ダイスが15秒で勝手に振られるのは確認していたが、つまり「START」ボタンを押さなければよいのでは?勝手にスタートされちゃう?

      ・PowerShellを立ち上げて以下のコマンドを叩けば、「マイドキュメント」に落ちてくると思う。
      wget https://sugoroku.kuronekoyamato.co.jp/static/archive/game.arcd1 -O "$([environment]::getfolderpath('mydocuments'))/game.arcd1"
      けど、落ちてきたデータを読むのはかなりの気合が必要だと思う。

    • メガネ

      ◆まだ見てるか知らんけど、なんとかしたので報告
      「◆補足:バイナリよみ」の段落を追記したので、参照のこと。

      ・「game.arcd1」と「game.arcd2」をローカルに落とす。
      ・以下のコマンドで2つのファイルを結合し「hoge.arcd」とか適当な名前で保存。
      copy /b game.arcd1 game.arcd2 hoge.arcd
      ・「mediaextract」という怪しいプログラムをダウンロード
      https://github.com/panzi/mediaextract/releases/download/v1.1/mediaextract-v1.1.zip
      ・mediaextract-v1.1.zipを解凍し、exeファイルに「hoge.arcd」をドラッグドロップ。
      ・「hoge.arcd_000d0aa4.ogg」がお目当てのBGMであるはず。
      ・勝利。
      ・一緒にキャラクターの画像とかも出ているっぽい。何もかも欲しいんなら「arcd」は全部結合してExtractにかけるべき。

コメントを残す

Powered by WordPress & Theme by Anders Norén

:)