2010-07-17 2 views

Répondre

3

Il s'agit d'une représentation hexadécimale brute. Utilisez pack() avec H pour le convertir. Ensuite, l'URL l'encodera.

1

Got cet extrait de python d'un collègue,

r = '' 
s = 'fda164e7af470f83ea699a529845a9353cc26576' 
for n in range(0, len(s), 2): 
    r += '%%%s' % s[n:n+2].upper() 
print r 

sortie:% FD% A1% 64% E7% AF% 47% 0F% 83% EA% 69% 9A% 52% 98% 45% A9% 35% 3C% C2% 65% 76

Fonctionne comme un charme.

Edit: Fonctionne comme un charme pour obtenir le tracker pour redonner le statut 200 (ok) mais ne fonctionne toujours pas pour récupérer les détails torrent ...

1

au cas où quelqu'un a du mal et vient à travers cette thread dans le futur: l'astuce à tout ce problème est d'utiliser l'argument bool $raw_output de la fonction PHP: sha1, en le mettant à "vrai". Les classes BDecode/DEncode sont HERE. Ce projet, appelé Trackon, comprend également de nombreuses autres classes utiles pour interagir avec les trackers et les fichiers torrent.

Ainsi, en PHP, quelque chose comme cela fonctionnera pour obtenir le hachage correct info pour gratter le tracker pour plus de détails:

include('./path/to/BDecode.php'); 
include('./path/to/BEncode.php'); 

function getHash($torFile){ 
    $tfile = BDecode(file_get_contents($torFile)); 
    $infohash = sha1(BEncode($tfile["info"]), TRUE); 

    return urlencode($infohash); 
} 

Ensuite, appelez simplement comme ceci:

$hash = getHash('./path/to/.torrent'); 

J'espère que cela aidera quelqu'un là-bas. Je me grattais encore la tête après avoir lu de nombreux messages sur la façon d'obtenir le hachage d'informations correctes. Je comprends pourquoi cela n'a été mentionné nulle part maintenant, cet argument a été ajouté en PHP 5. Si vous n'utilisez pas PHP 5, vous devrez convertir le hachage sha1 en binaire brut après l'avoir calculé.

Questions connexes