如何生成此哈希?

时间:2009-06-12 07:00:52

标签: hash hyperlink reverse-engineering

我是编程新手(刚刚开始!)并且最近遇到了问题。我正在为魔兽世界制作粉丝,我想链接到一个热门网站(wowhead.com)。以下页面显示了我想要弄清楚的内容:http://www.wowhead.com/?talent#ozxZ0xfcRMhuVurhstVhc0c

根据我的理解,链接的“ozxZ0xfcRMhuVurhstVhc0c”部分是一个哈希。它包含有关页面上特定人才规范的所有信息,以及每当我向人才添加或删除积分时的更改。我希望能够重新创建这个部分,以便我可以直接将我的用户链接到wowhead以查看他们的天赋树,但我不知道如何做到这一点最模糊的想法。任何人都可以提供一些指导吗?

6 个答案:

答案 0 :(得分:8)

第一个字符表示班级:

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

其余字符表示每个树点的分配位置。每棵树都是独立的,由'Z'分隔。如果是,例如所有的点都在第三棵树上,然后第二和第三个字符将是“ZZ”,表示“第一棵树的结尾”和“第二棵树的结尾”。

要生成给定树的代码,请将人才分成两对,从左到右,从上到下。每一对天赋都由一个角色代表。因此,例如,在DK的Blood树段中,第一个字符将指示分配给Butchery和Subversion的点数,第二个字符将代表Blade Barrier和Bladed Armor。

这对中的每个分配代表什么字符?我确定有一个算法,可能基于ASCII字符集,但到目前为止我所做的就是这个查找表。找到顶部第一个天赋中的点数,以及左侧第二个天赋中的点数。编码字符位于交叉点。

  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

因此,如果我们的死亡骑士在屠杀中有一个点而在Subversion中有两个点,那么第一个角色就是'R'。相反,如果我们在Blade Barrier中的那两个和五个中没有任何点,则前两个字符将为“0x”。尾随'0'(树中没有分配点的所有其他对)可以省略,因为尾随'Z'分隔符(当后续树中没有点时)。最后一个例子,DK在Toughness中只有一个点的整个代码将是“jZ0o”:“死亡骑士”,“第一棵树的结尾”,“第一对天才中没有点”,“一个指出第二对的第一个天才“。

任何人都可以找出上面的查找表生成什么函数吗?这些类的代码可能有一个线索:按字母顺序排列(除了在其他人之后添加到游戏中的DK),它们对应于(0,0),(0,3)的查找表中的一系列),(1,0),(1,3),(2,0)等。

答案 1 :(得分:6)

如果您转到http://www.wowhead.com/?talent并开始使用天赋树,则可以在单击各个框时看到地址栏中正在构建的神秘代码。所以它绝对不是哈希,而是某种编码结构数据。

随着代码的构建,您单击构建代码的逻辑将在该页面上的JavaScript中。

所以我的建议是在页面上做一个视图源,下载JavaScript文件并查看它们。

答案 2 :(得分:5)

我认为它不是哈希值,因为哈希值通常是单向值。这意味着您无法(轻松)恢复生成哈希码的原始信息。

最好的办法是联系wowhead.com的某个人,并询问他们如何解释这些信息。我相信他们会帮助你提供一些关于他们用于参数的编码类型的信息。但是,如果没有来自wowhead.com的开发人员的帮助,几乎不可能找出编码到这个参数中的信息。

我甚至不确定你提到的参数是否包含你角色的天赋。也许它只是一个会话ID或类似的东西。查看您的浏览器发送到服务器的帖子数据,它可能包含一个隐藏字段,其中包含您要搜索的值(您可以使用Tamper Data Firefox Addon)。

答案 3 :(得分:1)

我认为ozxZ0xfcRMhuVurhstVhc0c不是哈希值。我认为这是一个关键(可能以某种方式加密/编码)。服务器使用此密钥从其数据库中检索信息。由于您无权访问数据库,因此您不知道需要哪个密钥,更不用说如何对其进行编码。

答案 4 :(得分:0)

您需要生成哈希的原始函数。 我不认为这是公开的:(

检查出来:hash wikipedia

祝你好运学习如何编程!

答案 5 :(得分:0)

除非您知道它是如何生成的,否则这些哈希很难“逆向工程”。

例如,它可能是:

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

因此很难从哈希中获取原始数据(无论如何都是这一点)。

您最好的选择是链接到具有最新分数的个人资料..etc