2009-06-12 10 views
0

Je suis novice en programmation (je viens de commencer!) Et j'ai récemment touché un mur. Je fais un fansite pour World of Warcraft, et je veux créer un lien vers un site populaire (wowhead.com). La page suivante montre ce que j'essaie de comprendre: http://www.wowhead.com/?talent#ozxZ0xfcRMhuVurhstVhc0cComment puis-je générer ce hachage?

D'après ce que je comprends, la partie "ozxZ0xfcRMhuVurhstVhc0c" du lien est un hachage. Il contient toutes les informations sur cette spécification de talent particulière sur la page, et change chaque fois que j'ajoute ou supprime des points dans un talent. Je veux être capable de recréer cette partie, afin que je puisse ensuite lier mes utilisateurs directement à wowhead pour voir leurs arbres de talent, mais je n'ai pas la moindre idée de comment faire cela. Quelqu'un peut-il fournir des conseils?

+0

Il ne s'agit probablement pas d'un hachage, mais simplement de la compression des données de spécification (classe suivie de la liste des rangs de talent). Les conseils d'Alexander et vérifier avec les gens de wowhead.com. – Blixt

Répondre

5

Je pense que ce n'est pas une valeur de hachage, parce que les valeurs de hachage sont normalement! Cela signifie que vous ne pouvez pas (facilement) restaurer les informations d'origine à partir desquelles le code de hachage a été généré

La meilleure chose serait de contacter quelqu'un de wowhead.com et de lui demander comment interpréter cette information. sûr qu'ils vont vous aider avec des informations sur ce type d'enco ding qu'ils utilisent pour les paramètres. Mais sans l'aide des développeurs de wowhead.com, il est presque impossible de comprendre quelle information est encodée dans ce paramètre.

Je ne suis même pas sûr que le paramètre que vous avez mentionné contient les talents de votre personnage. Peut-être que c'est juste un identifiant de session ou quelque chose comme ça. Jetez un oeil dans les données de poste que votre navigateur envoie au serveur, il peut contenir un champ caché avec la valeur que vous recherchez (vous pouvez utiliser Tamper Data Firefox Addon).

+0

Merci pour le conseil, je vais les avoir en main, et j'espère économiser du temps. –

0

Vous avez besoin de la fonction d'origine qui génère le hachage. Je ne pense pas que ce soit du public si :(

Check this out: hash wikipedia

Bonne apprentissage chance comment programmer

1

Je ne pense pas que ozxZ0xfcRMhuVurhstVhc0c est une valeur de hachage. Je pense que c'est une clé (probablement cryptée/codée d'une certaine manière). Le serveur utilise cette clé pour extraire des informations de la base de données. Puisque vous n'avez pas accès à la base de données, vous ne savez pas quelle clé est nécessaire, et encore moins comment l'encoder.

+0

Je doute que ce soit vrai. Il est plus probable que ce soit simplement une version compressée d'une longue liste de talents (200111050013 ...) pour gagner de la place. – Blixt

0

Ces hachages sont difficiles à «reverse engineering», sauf si vous savez comment il a été généré.

Par exemple, il pourrait être:

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

il est donc difficile d'obtenir les données d'origine de retour du hachage (qui est le point de l'ensemble de toute façon).

votre meilleur pari serait lien vers le profil qui aurait le dernier résultat ..etc

6

Si vous allez à http://www.wowhead.com/?talent et commencer à utiliser l'arbre de talent, vous pouvez voir le code mystérieux construit dans la barre d'adresse lorsque vous cliquez sur les différentes cases. Donc, ce n'est certainement pas un hachage, mais une sorte de données de structure codées.

Comme le code est construit lorsque vous cliquez sur la logique de construction du code sera dans le JavaScript sur cette page.

Donc, mon conseil est de faire une source de vue sur la page, de télécharger les fichiers JavaScript et de les regarder.

+0

N'a pas pensé à ça. Aussi vaut la peine d'essayer si vous connaissez JavaScript. – Alexander

+1

Pendant que j'attends qu'ils répondent, je vais essayer de comprendre. Le JavaScript est effrayant - tous les noms de variables sont des choses comme 't, aX, m, C, w, aA, ag, aZ' et autres. J'espère que je vais aller quelque part. Merci! –

8

Le premier caractère indique la classe:

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

Les caractères restants indiquent où dans chacun des points d'arbres ont été attribués. Chaque arbre est séparé, délimité par "Z". Donc, si par exemple tous les points sont dans le troisième arbre, alors les 2ème et 3ème caractères seront "ZZ" indiquant "fin du premier arbre" et "fin du second arbre".

Pour générer le code d'un arbre donné, divisez les talents en paires, en allant de gauche à droite et de haut en bas. Chaque paire de talents est représentée par un seul caractère. Par exemple, dans le segment Blood Tree du DK, le premier personnage indiquera le nombre de points alloués à Butchery et Subversion, et le second personnage représentera Blade Barrier et Bladed Armour.

Quel caractère représente chaque allocation parmi la paire? Je suis sûr qu'il y a un algorithme, probablement basé sur le jeu de caractères ASCII, mais tout ce que j'ai fait jusqu'ici est cette table de recherche. Trouver le nombre de points dans le premier talent le long du haut, et le nombre de points dans le deuxième talent le long du côté gauche. Le caractère codé est à l'intersection.

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 

Donc, si notre Chevalier de la mort a un point et deux points Butchery dans Subversion, le premier caractère est « R ». Si à la place nous ne mettons aucun point dans ces deux et cinq dans Blade Barrier, les deux premiers caractères seront "0x". Les '0' (toutes les autres paires de l'arbre sans points alloués) peuvent être omis, tout comme les délimiteurs 'Z' à la traîne (quand il n'y a pas de points dans les arbres suivants). Pour un dernier exemple, le code entier pour un NSP avec un seul point dans Toughness serait "jZ0o": "Chevalier de la mort", "Fin du premier arbre", "Aucun point dans la première paire de talents", "un point dans le premier talent de la deuxième paire ".

Quelqu'un peut-il trouver quelle fonction génère la table de correspondance ci-dessus? Il y a probablement un indice dans les codes pour les classes: par ordre alphabétique (sauf pour le DK qui a été ajouté au jeu après les autres), ils correspondent à une série dans la table de correspondance de (0,0), (0,3), (1,0), (1,3), (2,0), etc.