【问题标题】:Translating info_hash in the announce request of a torrent in PHP在 PHP 中的 torrent 的宣布请求中翻译 info_hash
【发布时间】:2015-12-30 23:47:55
【问题描述】:

我很难理解如何将 info_hash 值“翻译”为真正的哈希值。 这是我从 uTorrent 向我的跟踪器发布消息时获得的示例:

{
passkey: "77ec6a27adcc441648d66d0b873550e4",
info_hash: "YNvÿ@p",
peer_id: "-UT3430-89 ",
port: "54790",
uploaded: "0",
downloaded: "491520",
left: "24928863",
corrupt: "0",
key: "A2DD5E96",
numwant: "200",
compact: "1",
no_peer_id: "1"
}

我想了解的是如何获取这个奇怪的值:“YNvÿ@p”并将信息哈希作为 sha1(如:594E98760099B1CFC3BFAA4070C0CC02F6C1AA90)? 我在我的服务器上使用 PHP。

现在我已经阅读了以下声明:

info_hash

元信息文件中信息值的编码形式的 20 字节 sha1 哈希。请注意,这是元信息文件的子字符串。 info-hash 必须是在 .torrent 文件中找到的编码形式的哈希,无论它是否无效。这个值几乎肯定会被转义。

但这对我理解发生的事情并没有多大帮助。

【问题讨论】:

    标签: php tracker utorrent info-hash


    【解决方案1】:

    好的,我找到了解决方案。 出于某种原因,PHP 中的 $_GET(我们使用 CodeIgniter)不会获得完整的二进制数据,看起来它出于某种原因正在剥离它。剩下的就只有'YNvÿ@p'了,但事实上在路上被抛出的未知二进制符号很少。

    所以...我所做的是获取完整的 URL 参数是:

    $parts = parse_url($_SERVER['REQUEST_URI']);
    

    然后,我在“info_hash”键中得到了这个值:

    D%3b%16%01%b2%af%d7%cbT%e1%a1%d0A%20%20%f7%ce%c2%d3%bf
    

    后来我只是做了这个动作:

    $info_hash = bin2hex(urldecode($parts["info_hash"]));
    

    得到了一个完整的哈希值!

    @Sammitch,感谢您在这件事上为我指出正确的方向!

    【讨论】:

      【解决方案2】:
      # php -r 'echo(hex2bin("594E98760099B1CFC3BFAA4070C0CC02F6C1AA90"));' | hexdump -C
      00000000  59 4e 98 76 00 99 b1 cf  c3 bf aa 40 70 c0 cc 02  |YN.v.......@p...|
      00000010  f6 c1 aa 90                                       |....|
      

      注意到一个模式?

      【讨论】:

      • 好的,很好,你是对的。那是你在做 hex2bin.... 所以如果我理解正确,为了返回 hex 模式,我需要使用 'bin2hex' 函数,对吗?因为我现在尝试了,它返回给我的是:594e76c3bf4070。我可以看到与完整哈希几乎没有相似之处:“594E98760099B1CFC3BFAA4070C0CC02F6C1AA90”,但我需要找到一种方法来获取上面的完整哈希。
      • 哦,顺便说一句,对不起,我发布的 JSON 数组不正确。 'info_hash' 值是:“YNvÿ@p”,而不是上面显示的完整哈希。我在问题中编辑了 JSON 输出。
      • @NeoTrix 不,它不是“YNvÿ@p”,它充满了无法打印的字符。不要复制和粘贴损坏的输出,在 PHP 中对未篡改的数据进行操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多