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

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に正しいトークン(あらかじめ決めた文字列みたいなもの)を詰めないとアクセスできないようになっているんじゃねぇかな大抵は。

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

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を取って見てみます
        ありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。

Powered by WordPress & Theme by Anders Norén

%d人のブロガーが「いいね」をつけました。