Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you decode info_hash information from tracker announce request?

I have the following tracker request:

"info_hash=%92%c345%c0%28%15%e4rr%b1y%17%b7%cbs%0a%ef%9a%fc&peer_id=-UT2210-%2abP%b2%c23~NaN7-%7c%0f%1f&port=56541&uploaded=0&downloaded=0&left=461680&corrupt=0&key=6AD19369&event=started&numwant=200&compact=1&no_peer_id=1"

and I would like to decode the info_hash and peer_id fields in JavaScript. I've tried the unescape(), decodeURI() and decodeURIComponent() functions but they didn't return the expected results.

like image 858
George Avatar asked Sep 03 '25 13:09

George


1 Answers

The info hash present in the HTTP GET Request to the Tracker can be decoded as follows:

If there's a '%' character, then the next 2 characters are a part of the original 40 char SHA-1 hash.

so, you can break the encoded info_hash as follows:

%92 %c3 4 5 %c0 %28 %15 %e4 r r %b1 y %17 %b7 %cb s %0a %ef %9a %fc

All the 2 char groups prefixed with the '%' symbol belong to the original hash.

Now, for the remaining characters. We need to find the corresponding Hex value of them. You can use asciitable for reference.

For instance, 4 in base 10 is 34 in hex.

Combining all together this way we get:

92c33435c02815e47272b17917b7cb730aef9afc -> SHA-1 hash of the torrent file.

The peer_id will give us information about the client name and version. In this case:

-UT2210-%2abP%b2%c23~NaN7-%7c%0f%1f

This is in Azureus format.

UT corresponds to µTorrent and 2210 gives us the version.

The process of decoding can be automated using a Perl Script easily.

like image 195
Neon Flash Avatar answered Sep 05 '25 04:09

Neon Flash



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!