0

私は 15 年前のインターネット ゲームを持っています。開いているときに、ユーザー名とパスワードを入力してゲームのサーバーに接続できます。ゲームのウェブサイトでは、どのユーザーが接続しているかをいつでも確認できます。

ユーザーが最初にゲームを開始せずにサーバーに接続できるように、アプリまたは Web サイトにボタンを配置したいと考えています。

Wireshark の助けを借りて、私は HTTP 要求を知っています。

POST http://registry.mygame.com/userverification_web.php HTTP/1.0
Accept: \*/*
Accept-Language: sv
Content-type: application/x-www-form-urlencoded
Accept-encoding: gzip, deflate
User-Agent: mygame
Host: registry.mygame.com
Proxy-Connection: close
Pragma: No-Cache

data=0AQ7aA0iQQQQQQZSKOds1ZX280kW2lCznNUD9wjIInF2pX114v8E0bdRZtVMzkkdCiQeSTysCJYUjVGMYTzdMlOe0x2uhE30<MmnhP5ZZYQQ

次のリンクは、私が望むことを正確に実行します

http://registry.mygame.com/userverification_web.php?data=0AQ7aA0iQQQQQQZSKOds1ZX280kW2lCznNUD9wjIInF2pX114v8E0bdRZtVMzkkdCiQeSTysCJYUjVGMYTzdMlOe0x2uhE30

しかし、ユーザー名とパスワードだけで動的にリンクまたはリクエストを作成する方法を知る必要があります。

ユーザー名とパスワードが常に同じ場合でも、データパラメーターは常に変更されることがわかりました。

un= userと pw= passの 10 の例を次に示します。

0AQ7aA0iQQQQQQZSKOds1ZX280kW2lCznNUD9wjIInF2pX114v8E0bdRZtVMzkkdCiQeSTysCJYUjVGMYTzdMlOe0x2uhE30<MmnhP5ZZYQQ

eA0QQAiAQQQQQQZSdt3B>u7K9HLkiqtNF5yfaJdi2wO>BeyE4kh>lGJY58wWDspycSu>HXckytHjk2CmNuiWgd0vH2>yJkkf3kApwCtikQQQ

eaV<eVilQQQQQQZSdV7m148ZQPHlPqol4H>CMbMAx>wi7LPv0z29zQh2QPpSuot0ivEPYtJmvkjJG9iMc3mNo3xz24<rx9v01PptOa<ILYQQ

SSo00l<iQQQQQQZSzwpUPC7moyJnbnBwhBwvFWSmdbIYDcTmD9aA2Nt46Ahz>SAdUpR2fsp5EuXyTZXSxKQUZ3DKHAJ1xU>Az9kEtBi7fjQQ

oCoCa<e>QQQQQQZSb7rDbY6m2WqZiq0>VdIUPQ37XlnPL1Hx27EKalQL2eh9qHEXjKZm4UCNdCMrXtcw>LVnw0jquYSXI53fMwsXnWJOgQQQ

V77l0Qa1QQQQQQZSM0GEa2KWpXmIlxnkmdThdy7XpTsbKiqKsRNGqzzUVS<Xkk1yk9xvIUHXogcZTalOtCS6N0MrIsrtDlPdy5fkD355xYQQ

VQQle7ZVQQQQQQZSW09bHYjoICZ>ma1G1AYQk34P5aozsb6Q7WAcu5wr2pwa6gWACx0x8hC6rmysq6S2AkYehy<w4JOsW<cJP8gruWROxYQQ

Zi7oeZeQQQQQQQZSan<g9HK74Ap4pAatxM6GPxIv3MYc4byvtBo6D5W7X7iCtVh377NabGBOPlAPrdUh5<dgKaxFKxBbr3Du4NwicGvvXTQQ

eQAiS7o>QQQQQQZSwqZCtiR1>G>FE0hdkye>ywjpe2D6Q>6dxZWrj5Szx0F4KikHdA3hGS8BZuakyD4Ya8OX7poOe1fDaqMmKqcoZiAZsjQQ

QlCZeZSSQQQQQQZSXOKdnNFTDy2Y9Ip5qHBiKJKuZjOReSn3xrC8AX1td41dWnDMM1RJSi6eK9NpHqWFq6PfTU7dgNM6Cj9iOWNg>BE<<TQQ

un= usernameと pw= passwordの 5 つの例を次に示します。

a>ViQe>lQQQQQQZ1LgSTcziSVG4vzpOrs7aK90X8NVtDYvCjzZiDd<KsldGgCVRGABKEHf5YMYKb4jL6CMmbGZdxbZS<FTdmrhewdQkGP0ng9xFXBnt>

eiSlSi0SQQQQQQZ1AAoSDC2d8DERRoAaDmEup>ApqrSmBfVGNoZ8IZLBkkFk5VBt0dI5S<985fgvu<sY0uD1VcFno5bYIBWm<1wPOe2je>f9yq2AWH2E

ZoCSS<1CQQQQQQZ1xGPeYGqe7Vmz1puFNGMQdHmU7IRI9sNjOcSha0uW>XKrGfp5c2PcfquV>7x>WTWpRBVBa4A4eiB7GXchw53>UV9Ss6p2QE5paL4a

QiZVoi>AQQQQQQZ1BGDGltDMqisnMzMYnUjysh5iXoNo<5<7AU5rkoVgUPrCVqigjkAK6wbLpo4hVNsO<ORk96LYYZhswqz1vRwSFfsC7DP3JTdyjqBw

aQa1eli1QQQQQQZ15EclRMTZooyBgFp1VHiX8NsoKZjdH6jEVWZ63mCbC2Rd8o2fcscp1WiFhtK9HZvjJHYdpX2xu2adYMgQseHa83a3ycnOo7WiikaB

un= username12345678および pw= password12345678の 10 の例を次に示します(両方の最大長)。

Ql>ZaClQQQQQQQe12js2OuA7Xxt04qIIF<tVTqxYmfkBYv7Yl3UAykQiGeMB4Yl9XQUnisQ<DmDlIKK9JDbsjet2K>LbqJrH3jvb3lmt24fxLs5S6oZQRqh13P28xwAGXUvENIBLlQQQ

0aAZo07iQQQQQQe1C>asdqcRlEBTsMfp9<1ntl90myrvvHTlVRZt9HpbHUDp5mBHBjYUjcKORGL38N0GmEtaxH7CxglgH78m72Qd7b3NuwMMJwIlm3zV>FiAIOvT4vHDLRP4W<<MQYQQ

eZAAaQloQQQQQQe19HAT284ZfwNL6piwZ1Vjn>6QL0Rx81Xw1X>barJLavfjmU3PMO1Z<VwheSTmiCbyZ2IQjSt0n6hxKoawYsC2BUCiJUVDPBbD40yN0hknqBiDV2DmcBuIHAU1RQQQ

S>A>ei>>QQQQQQe1WQT2gv511HIyf79uihupoGcDC0rWgV332Q9lTc>Icu5fXrIT5MKBAKgIEJjLRaT1i7JsSUsF<H>tf<pL7d5pX1WLxLV0R7D<aXps1IxCQ<NSE40idMN>IwqaMjQQ

o1V<07<0QQQQQQe18Ie6goKPVT9AUWInpsmCeEnErAOwLxSJOe3FKhkbXwzR3zMTVTMk7sXGBPZsyb7YfgSq19XgwmMFW8HN>8PSsOSPFYA5YqUiPNYGygt5rtg09JWEkb<VGyI>XYQQ

aSAl0<Q0QQQQQQe1I>DpHYNFIkn58DiGpd9C7SQDk<I3u>q24PTG05XUZm3JM>GKbX2qBw9dEjFU17HSiM3WGkqqn6MnF3ondonZ85eubUPp5qof3DKX35RvIABudO6oFM5uA4pYUQQQ

eSola>a0QQQQQQe1kVT<jAANyYlT0G8i6nNg>bRAyERU0BMjZqn9MlPQUcNfN0GKQzHrsikxPSZUWJfMD7okYAu85UVK0CjEc9FU4Fo2bxt07hYu<jqX6Gpf4R5jpRO6ukU6ziDIOQQQ

ZZ<<QCV7QQQQQQe1lYukgPlKXDS9Se1KvoNd3JK9RRZ05pVPobowZupMwXEdGeSH6rEYLORfAbJujIHnjsItw4geLH5Hm7bgpyFmx0MTbqKKF87Rr5IdezDRkcXRYpAF9ZEIBG4cpTQQ

oiQlZZZaQQQQQQe12EmQbyfnlYxJ8<36>cNo4>C1Lp2qJB2gSiCieytdXBZaBId0MA3WbANmh<VLZqIqy0AOhf1QZnEuk7cYAh0Rrs45unuB12BBz4inJgpZ4grtTsV<1CS91eKi3YQQ

QCo<a<eQQQQQQQe11hkx90MGMJtvzUx2JiyOQUyHwPnN03QxZ7FULKnOkPAvb>38psB1RWc8uadYSWkbNraTw5XUxcD0RpT3f7vbu4nfPfoIt7no>XyHpaRwjUvdv<LmvhdT2xbFpTQQ

ここで何が起こっているか知っている人はいますか?「gzip」と「deflate」を気にする必要がありますか、それとも「コード」を解決することに興味がないのでしょうか? 私が知っていると思うのは、明らかにユーザー名とパスワードがエンコードされており、サーバーはそれをデコードする方法を知っている必要があるということです. 同じ資格情報の「コード」は決して同じではないように思われるため、「コード」にもキーが必要だと思います。

開発者がアルゴリズムに何を使用したか考えていますか? たぶん、鍵は「QQQQQQ」の前にあることです。

エディターで game.exe ファイルを開きました。ゲームは Visual Studio 6.0 でコンパイルされているようで、c++ で書かれています。ほとんどのものは判読できませんが、HTTP リクエストの定義は判読できます。しかし、これは Wireshark で見たものと同じです。そして、パラメーターが何の結果なのかわかりません。読み取れるのは「data=%s」だけです。

4

1 に答える 1

0

ここで何が起こっているか知っている人はいますか?

ログインデータはハッシュ化/暗号化されている可能性があります。それを解読する唯一の方法は、Web サイトの元のソース コードを調べるか、ゲームのコンパイル済みマシン コードからアルゴリズムをリバース エンジニアリングすることです。

「gzip」と「deflate」を気にする必要がありますか、それとも「コード」を解決することに興味がないのでしょうか?

いいえ、気にする必要はありません。行っていることは、gzip または deflate アルゴリズムを使用して HTTP 応答を圧縮できることをサーバーに伝えることだけです。それは当面の問題とは関係ありません。

私が知っていると思うのは、明らかにユーザー名とパスワードがエンコードされており、サーバーはそれをデコードする方法を知っている必要があるということです. 同じ資格情報の「コード」は決して同じではないように思われるため、「コード」にもキーが必要だと思います。

ほとんどの場合、はい。一方、「キー」は、ゲームとサーバーだけが知っている秘密の秘密でハッシュ/暗号化することもできます。

開発者がアルゴリズムに何を使用したか考えていますか?

エンコードされたデータを見ただけではわかりません。

たぶん、鍵は「QQQQQQ」の前にあることです。

おそらく。これは、キーとペイロードを区切るための区切り文字である可能性があります。しかし、それでもキーが実際に何であるか、またはそれをどのように使用するかはわかりません。

エディターで game.exe ファイルを開きました。ゲームは Visual Studio 6.0 でコンパイルされているようで、c++ で書かれています。読めないものがほとんど

IDA などの逆アセンブラを使用する必要があります。

しかし、HTTP リクエストの定義はそうです。しかし、これは Wireshark で見たものと同じです。そして、パラメーターが何の結果なのかわかりません。読み取れるのは「data=%s」だけです。

IDA、または他のデバッガー/逆アセンブラー ツール チェーンを使用すると、パラメーターに渡されているメモリ ポインター%sを確認し、逆方向に作業して、そのメモリがどのように割り当てられ、フォーマットされているかを確認できます。しかし今、あなたは低レベルのハッキングを始めています。

于 2014-06-12T02:01:14.830 に答える