1

私の質問は、情報ハッシュに「00」、%00 のスクレイプ要求が含まれている場合のスクレイプ http 応答に関するものであるため、http 応答には「\0」が含まれます。infohash にゼロバイトの torrent がいくつか見つかりました。トラッカーはその torrent のスクレイプ リクエストにどのように応答すればよいのでしょうか。つまり、'\0' は正常に機能しますか? この torrent を torrentspy でテストしたところ、常に次のように表示されました。

「トレントがトラッカーに見つかりません。腐っている可能性があります」

それをテストするために基本的なトラッカーを作成し、完全なスクレイプ応答がソケットに書き込まれたことを確認しましたが、torrentspy はまだ同じ出力を持っています。そのスクレイプ応答を Web ブラウザで見ると、「\0」で終わります。

暗闇に光をもたらすことができる人はいますか?

4

1 に答える 1

2

あなたの質問が何であるかは完全には明らかではありませんが、いくつか記入してみます。

'\0' は、他の印刷できない文字と同じです。URL セーフでない文字はすべて、HTTP トラッカーへの GET リクエストで常に %xx としてエスケープする必要があります。一部のトラッカーには、たとえば、エスケープする必要のない文字がエスケープされていないと想定するバグがあります (つまり、エスケープされたバージョンの情報ハッシュを内部表現として保存する場合があります)。一部の Web サーバーは、` (一重引用符) が常にエスケープされる (SQL インジェクション攻撃を許可する) と想定することさえあります。&すべての特殊文字、特にand %(明らかに)はエスケープする必要があります。

応答ははるかに簡単です。トラッカーからの応答はコード化されているため、すべての情報ハッシュはバイナリ形式で送信されます。つまり、エンコーディングはまったく行われません。デコードするときは、情報ハッシュを 16 進数でエンコードすることをお勧めします。これは、よりユーザーフレンドリーな表現であり、従来の印刷方法でもあるためです (Web サイト、マグネット リンク、アプリケーションで)。

それで、あなたの質問に。「情報ハッシュにゼロバイトがあるトレント」と言うとき、情報ハッシュにもう1バイト、つまり0があることを意味していると思います。これは完全に正常であり、珍しいことではありません。正常に動作するでしょうか?はい、%01 の場合と同じように、%00 としてエスケープする必要があります。

トレントが死んでいる可能性があります。つまり、トラッカーが追跡を停止しました。それがそのエラーメッセージの意味です。おそらく、情報ハッシュにゼロバイトがあることとは何の関係もありません。

于 2011-03-31T02:34:19.910 に答える