Backyard MonstersのGodModeまたは「アプリケーションとデータを交換する方法」

友人の言葉からの出版。



Google+でBackyard Monstersゲームをプレイするよう招待されたことがあります 。 ゲームは悪くない、彼らはインターネット上でこれがソーシャルネットワーク上でほぼ1番のゲームだと書いている。 私は自分でプレイしましたが、一度(プログラマーのように)プレイするのは退屈になりました。 タスクの完了への長い期待、アクションの高コスト(アップグレード、新しい基地の獲得)がゲームを一種の農場に変えました-入って、「収穫された」(農場の初心者、がらくた)、何時間も家を寝かしました(1週間以上アップグレードされるものもあります) ) ボットを書くことについて考えがありました。 ここで、ホールからの驚きは安全に始まりました。



始めるために、(Wiresharkを使用して)トラフィックをスニッフィングし、クライアントとサーバーが交換しているリクエストを調べました。 サプライズ:交換はプレーンテキストです(JSONを使用することが判明しました)。 パラメータの置換を試してみると、無効なハッシュエラーのみが発生しました。 さて、フラッシュドライブ自体を選んでいきましょう。

インターネットはこの目的のためにAS3の魔術師に助言しました。 フラッシュドライブを入手することは大したことではありませんでした。 準備に進みます。



短い選択の後、「メッセージ」をサーバーに送信する手順が見つかりました。 そしてそのすぐ隣に同じハッシュを生成するアルゴリズムがあります-それは送信されたデータ、一種の「署名」メッセージに基づいて生成されます。 推測が正しいことを確認するために、自分でリクエストを生成しようとする時が来ました。 pythonを使用します 。データを送受信するために、インターネットは要求をプロンプトします 。 データベースに関する情報を取得しようとしています。 そして...利益! 連絡先があります。 やったー!

インターネットのアドバイスによると、 ast.literal_eval(text.replace('null','None'))



は、文字列(JSON形式)からデータへの応答の変換で機能します。 これは解析するのに十分です(さらに、動物のリプレイがいくつかあります)。 Python jsonモジュールは後で登場し、すべてが簡単に機能するわけではありません。 答えから面白いから:



{'fbid': '116797799793671216717', 'basevalue': 172461612,

'buildingdata': {'4787': {'l': 6, 't': 25, 'Y': -115, 'X': 235, 'id': 4787, 'fort': 4}, ...},

'resources': {'r4': 47358582, 'r1': 36449238, 'r1max': 75050000, 'r3': 72963216, 'r3max': 75050000, 'r2': 24155238, 'r2max': 75050000, 'r4max': 75050000},

'champion': {'ft': 1340003358, 'hp': 29751, 'l': 6, 'fb': 0, 'fd': 1, 't': 3},

'academy': {'C3': {'powerup': 3, 'level': 6}, ...}, 'quests': {'C51': 2, ...},

'credits': 4045, 'baseid': 1000071112, 'lockerdata': {'C10': {'t': 2}, ...}, 'userid': 79671, 'createtime': 1334196000, ...








fbidはG +識別子であることが判明しました。これはユーザープロファイルを確認するために必要なものです。



ダウンロードは成功しました。何かを保存する必要があります。 スクランブルされたトラフィック、フラッシュドライブのテキスト、エラーのある試行、壊れた(ゲームに参加しない)、データベースの正常な復元の研究-結果として、有効なデータをサーバーに送信するための作業モジュールがあります。 いくつかのグッズがすぐに見つかりました(後に実現しました):あらゆる量のリソースをインストールし、建物を掘り、チャンピオンをポンプで送り、レベルと能力でモンスターをポンプで送り、あらゆる構成の軍隊を即座に作成し、コインを集めてベニテングタケを集めます(30分で240コイン)。 これ以上何が欲しいですか?



周りの世界、つまり地図を見てみましょう。 スニファ、インフルエンザ、スキップ、私たちは結果を得る-世界の地図。 ここで面白いのは何ですか?

{'53': {'77': {'c': 4, 'b': 3, 'uid': 79671, 'f': 4, 'i': 163, 'bid': 1000012527, 'fbid': 9223372036854775807L, ...}, ...







ゲームユーザーID uid入札ベース識別子。 fbidは誰にとっても同じです。 奇妙な...さらなる分析は、隣人の訪問を見るためにあなたがすでに知っている入札だけを必要とすることを示しました。 ソフトウェアを調べてみると...答えから、私の目は私の額に登りました。 建物、チャンピオン、モンスター、アップグレード、ショップの不要なコンテンツ、プレイヤーのリソースの量に関する完全なデータ。 彼らは私が家に帰ったかのように皆に話します。 まあ...あなたは誰が農業にもっと利益があるかを見ることができます。 ええと...これは何ですか...? 敵のfbid !!!



サーバーとの「会話」に必要なパラメーターを見て、最も必要なものを見つけて、いくつかを順番に破棄します... 2つの驚きがあります。fbid (G + ID)といくつかの定数だけが必要です 。 だからこれは...どんな隣人のfbidも問題なく得られます...私たちはチェックします-目はさらに大きくなっています。 これは何? あなたは自分で何かをすることができるだけでなく、隣人のためにお祝いをすることもできますか? やってみましょう。 輝くことのないように、匿名のThorを入れて先へ進みます。 その過程で、驚きは少なく、新しい知識の一部とファンがいます。



その結果、 これこれが出てきました。



すべてのプレイヤー(モンスターとチャンピオン)のメインベースが掘り出され、数百(または数千?誰が数えますか)コインを全員(より多く、より少なく)に寄付し、世界の1つ(最も長くプレイしていない人を見つけました)ジンギスカン)領土全体(野生の部族、二次プレイヤーの基地)と数日後に元の状態に戻りました。 メインプレイヤーベース計画がレイアウトれました(フォーラムの対応するトピックは削除されました)。



Congregateにはまったく同じ穴があり、ゲームの新しいバージョンのみです。 しかし、Facebookの場合、状況はより良いです(開発者向け)。 好きなように自分のデータだけを装うことができます。 ここでは、承認のためのパラメーターとしてのディフェンダーsigned_requestの役割。



ここでは、Google +の不正行為者のソースコードを取得できます。



All Articles