3

次のトラッカー リクエストがあります。

"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"

info_hashJavaScript でandpeer_idフィールドをデコードしたいと思います。unescape()decodeURI()および関数を試しましたdecodeURIComponent()が、期待した結果が返されませんでした。

4

2 に答える 2

6

トラッカーへの HTTP GET リクエストに含まれる情報ハッシュは、次のようにデコードできます。

「%」文字がある場合、次の 2 文字は元の 40 文字の SHA-1 ハッシュの一部です。

したがって、エンコードされた info_hash を次のように分割できます。

%92 %c3 4 5 %c0 %28 %15 %e4 rr %b1 y %17 %b7 %cbs %0a %ef %9a %fc

「%」記号で始まる 2 つの文字グループはすべて、元のハッシュに属します。

さて、残りのキャラ。それらの対応する 16 進値を見つける必要があります。ascitable を参照に使用できます。

たとえば、基数 10 の 4 は、16 進数では 34 です。

このようにすべてを組み合わせると、次のようになります。

92c33435c02815e47272b17917b7cb730aef9afc -> torrent ファイルの SHA-1 ハッシュ。

peer_id は、クライアント名とバージョンに関する情報を提供します。この場合:

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

これは Azureus 形式です。

UT は µTorrent に対応し、2210 はバージョンを示します。

デコードのプロセスは、Perl スクリプトを使用して簡単に自動化できます。

于 2011-11-09T11:37:03.077 に答える
0

「デコード」に使用する方法は、「エンコード」方法によって異なります。

エンコード方法を選択する場合:

escape() はエンコードしません:@*/+

encodeURI() はエンコードしません:~!@#$&*()=:/,;?+'

encodeURIComponent() はエンコードしません:~!*()'

何らかの形式の二重エンコーディングを見ている可能性があります。

于 2011-04-12T15:15:34.833 に答える