【问题标题】:How to parse Ip and port from http tracker response如何从 http 跟踪器响应中解析 Ip 和端口
【发布时间】:2018-04-30 05:53:42
【问题描述】:

我正在向跟踪器发送请求并得到响应

d8:completei2e10:downloadedi1e10:incompletei1e8:intervali1971e12:min intervali985e5:peers18:\235'\027\253\000\000\331e57\374-\033"\022,\270\302e

如何从此响应中获取 Peers 列表或对等 IP 和端口

【问题讨论】:

标签: p2p bittorrent tracker


【解决方案1】:

跟踪器的响应是编码
为了清楚起见,添加一些空格:

d
 8:complete
  i2e
 10:downloaded
  i1e
 10:incomplete
  i1e
 8:interval
  i1971e
 12:min interval
  i985e
 5:peers
  18:\235'\027\253\000\000\331e57\374-\033"\022,\270\302
e

keypeers 有一个 18 字节的二进制字符串作为 value,在 'compact=1'-在[BEP23 - Tracker Returns Compact Peer Lists][the wiki] 中指定的形式

每个对等点用 6 个字节表示,4 个字节的 IPv4 + 2 个字节的 PORT 在 bigendian 中,所以 18 个字节的字符串用于 3 个对等点。

\235 ' \027 \253 \000 \000=>157 39 23 171 0 0(0*256+0=0)          =>157.39.23.171:0
\331 e 5    7    \374 -   =>227 101 53 55 252 45(252*256+45=64557)=>227.101.53.55:64557 
\033 " \022 ,    \270 \302=>27 34 18 44 184 192(184*256+192=47298)=>27.34.18.44:47298  

(\235 是八进制的 157,' 的 ASCII 值是 39 等等)

【讨论】:

  • 你能解释一下你如何将 \235'\027\253\000\000\331e57\374-\033"\022,\270\302 解码成IP 地址和端口
  • \235 是八进制的 157,' 的 ASCII 值是 39 等等。
  • 感谢完美解决方案的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 2012-06-15
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多