2009-06-12 11 views
0

私はプログラミングを始めたばかりです(ちょうど始めました!)、最近壁に衝突しました。私はWorld of Warcraftのファンサイトを作っています。人気のあるサイト(wowhead.com)にリンクしたいと思います。私が理解しようとしていることを次のページに示します:このハッシュはどのように生成できますか?

私が理解するところでは、リンクの「ozxZ0xfcRMhuVurhstVhc0c」部分はハッシュです。それはページ上のその特定の才能仕様に関するすべての情報を含み、ポイントを才能に追加または削除するたびに変更されます。私はこの部分を再現できるようにしたいので、ユーザを自分の才能の木を見るために直接的にリンクさせることができますが、それをどうやって行うのかは決して見当たりません。誰かが何かガイダンスを提供できますか?

+0

これはおそらくハッシュではなく、単純に才能仕様データを圧縮したものです(クラスの後に才能ランクのリストが続きます)。アレクサンダーのアドバイスとwowhead.comの人々とチェック。 – Blixt

答えて

5

ハッシュ値が正常であるため、私は、それはハッシュ値ではないと思います!これは、ハッシュコードが生成された元の情報を(簡単に)復元できないことを意味します。

wowhead.comの誰かに連絡して、この情報の解釈方法を尋ねるのがベストでしょう。彼らがあなたにどんな種類のenco彼らはパラメータのために使用します。しかし、wowhead.comの開発者の助けを借りることなく、どのような情報がこのパラメータにエンコードされているか把握することはほとんど不可能です。

あなたが言及したパラメータにあなたのキャラクターの才能が含まれていることさえ確かではありません。たぶんそれは単なるセッションIDなのかもしれません。ブラウザがサーバーに送信する投稿データを見てください。検索する値が隠されたフィールドが含まれている可能性があります(Tamper Data Firefox Addonを使用できます)。

+0

アドバイスをいただきありがとうございます、私はそれらを保持し、うまくいくらか時間を節約します。 –

0

ハッシュを生成する元の関数が必要です。 は、私はそれはしかし:(

チェックこれを公共のだとは思わない:hash wikipedia

幸運プログラムする方法を学習

1

ozxZ0xfcRMhuVurhstVhc0cはハッシュ値ではないと思います。私はそれがキー(多分暗号化/何らかの方法でコード化されている)だと思う。サーバーはこのキーを使用してデータベースから情報を検索します。データベースへのアクセス権がないので、エンコードする方法だけでなく、必要なキーがわからないことがあります。

+0

私はそれが本当であるとは思わない。スペースを節約するために、長いランクの才能ランクの圧縮されたバージョン(200111050013 ...)である可能性が高くなります。 – Blixt

0

これらのハッシュは、生成された方法がわからない限り、「リバースエンジニアリング」するのは難しいです。例えば

、それは次のようになります。

s1 = "random_string-" + score; 
    hash = encrypt(s1) 
    ...etc 

ので、(それがとにかく全体のポイントである)バックハッシュから元のデータを取得することは困難です。

あなたの最善の策は、あなたがhttp://www.wowhead.com/?talentに行くと才能の木を使用して起動する場合は、アドレスバーに構築されている神秘的なコードを見ることができます

6

..etc最新のスコアを持っているでしょうプロファイルへのリンクになりますあなたがさまざまなボックスをクリックすると、つまり、ハッシュではなく、コード化された構造データのようなものです。

コードをビルドするロジックをクリックするとコードがビルドされるので、コードをビルドするにはそのページのJavaScriptを使用します。

私の助言は、ページ上のビューソースを行い、JavaScriptファイルをダウンロードして見てください。

0 Druid 
c Hunter 
o Mage 
s Paladin 
b Priest 
f Rogue 
h Shaman 
I Warlock 
L Warrior 
j Death Knight 

残りの文字が示す各ツリーポイントに割り当てられている:

+0

それを考えなかった。また、JavaScriptに精通している場合は試してみる価値があります。 – Alexander

+1

私は彼らが応答するのを待っている間、私はそれを把握しようとします。 JavaScriptは怖いです - すべての変数名は 't、aX、m、C、w、aA、ag、aZ'などです。うまくいけば私はどこかに行くだろう。ありがとう! –

8

最初の文字は、クラスを示します。それぞれの木は別々で、 'Z'で区切られています。したがって、たとえばすべてのポイントが3番目のツリーにある場合、2番目と3番目の文字は「最初のツリーの終わり」と「2番目のツリーの終わり」を示す「ZZ」になります。

特定のツリーのコードを生成するには、タレントを左から右、上から下に向かってペアに分割します。才能の各ペアは、単一の文字で表されます。たとえば、DKのBloodツリーセグメントでは、最初の文字はButcheryとSubversionに割り当てられたポイントの数を示し、2番目のキャラクターはBlade BarrierとBladed Armorになります。

ペア間の各割り当てを表す文字は何ですか?おそらくASCII文字セットに基づいたアルゴリズムがあると確信していますが、これまでに取り上げたのはこのルックアップテーブルだけです。最初の才能の点数を上に、2番目の才能の点数を左側に求めます。符号化された文字は交差点にあります。私たちのデスナイトはSubversionので屠殺の1点と、2つの点を持っている場合

0 1 2 3 4 5 
0 0 o b h L x 
1 z k d u p t 
2 M R r G T g 
3 c s f I j e 
4 m a w N n v 
5 V q i A y E 

だから、最初の文字が「R」です。代わりに、Blade Barrierで2と5にポイントを入れないと、最初の2文字は "0x"になります。後続の 'Z'デリミタ(後続のツリーにポイントがない場合)と同様に、末尾の '0'(ポイントが割り当てられていないツリー内の他のすべてのペア)は省略できます。最後の1つの例では、強靭性の単なるポイントを持つDKのコード全体は、 "Death Knight"、 "最初の木の終わり"、 "最初の対の才能にはポイントがありません"、 "第二のペアの第一の才能を指し示す」。

上記のルックアップテーブルを生成する関数はどれですか?アルファベット順(他のゲームの後にゲームに追加されたDKを除く)のアルファベット順では、ルックアップテーブルの(0,0)、(0,3 )、(1,0)、(1,3)、(2,0)など

関連する問題