设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 3038|回复: 1

修改pt程序nexusphp代码支持compact=1参数返回二进制文件的 ipv6 peers列表用于支持客户端互相连接下载的方法,抓包tracker来修复代码

[复制链接]
 成长值: 345

签到天数: 4740 天

[LV.Master]伴坛终老

发表于 2019/7/3 21:22 | 显示全部楼层 |阅读模式 |Google Chrome 74.0.3729.131|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
修改pt程序nexusphp代码支持compact=1参数返回二进制文件的 ipv6 peers列表用于支持客户端互相连接下载的方法,抓包tracker来修复代码

nexusphp默认是不支持ipv6的,会导致页面做种数量和客户端返回结果不一致。

问题所在
  1. d8:intervali3600e12:min intervali30e8:completei67e10:incompletei0e5:peers354:q"…uZ…G…=5.J.(<.,T#’{x…e.jT.w.p.z%F7.y.zk…r.6.1W:.0T…qM.-…*.P.=…7…8…S…_.J…z.K

  2. .S…vp… <…!..4…1D:…s…Su…=…ps.]A.y…qo\e…A…M.1.}MY…q…]…3…xi.r.H…1.n.v…]…e…Fo…]…3…0k…=3/…=.gVn.z…#'w!..-…9.WM.:7B…H .~U…

  3. …uQ.=#&qQ.4…x.+.r.f…}u…p…eA.s…A…j…e
复制代码


“peers”后面的354字节二进制数据都是ipv4 peer,每个ipv4 peer含4字节ip和2字节port共6字节,所以peer个数是354/6=59。ipv6 peers二进制数据按照协议是在“peers6”节点返回,从抓包看没有。

现在的pt程序,客户端收不到ipv6地址的,只能连接ipv4
这是修改过的,可以直接让客户端拿到ipv6
如果两边都是内网ipv4,那么,就会可能导致无法连接
如果连接成功,客户端才会互相汇报本地ipv6到对方客户端进行连接
直接服务器下发列表,客户端拿到了可以直接请求,不需要先ipv4建立


announce.php文件
114行搜索
  1. $peer_list = "";
复制代码

下方增加
  1. $peer6_list = "";
复制代码


130行搜索
  1. $peer_list .= pack("Nn", sprintf("%d",$longip), $row['port']);
复制代码


下方增加
  1.                 else
  2.                 {
  3.                         $ipv6_packed = inet_pton($row['ip']);
  4.                         if ($ipv6_packed)
  5.                                 $peer6_list .= $ipv6_packed . pack("n", $row['port']);
  6.                 }
复制代码


147行搜索
  1. $resp .= "l".$peer_list."e";
复制代码

下方增加
  1. if ($compact == 1 && strlen($peer6_list) > 0)
  2. {
  3.         $resp .= benc_str("peers6").benc_str($peer6_list);
  4. }
复制代码

出处:
https://github.com/wxhere/NexusPHP/commit/8827584baed639c6a1e7458af6bb778d4602d277

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

 成长值: 345

签到天数: 4740 天

[LV.Master]伴坛终老

发表于 2019/7/3 22:49 | 显示全部楼层 |Google Chrome 74.0.3729.131|Windows 10
公网bt tracker请求ipv6服务器,比如说
http://[2a04:ac00:1:3dd8::1:2710]:2710/announce
返回
[code]d8:completei2e10:downloadedi1e10:incompletei0e8:intervali1792e12:min intervali896e6:peers636:&#244;

可以得知
ipv4模式时,单用户6字节
ipv4与ipv6模式时,单用户18字节

[发帖际遇]: 小樱 在网吧通宵,花了 7 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/26 15:19 , Processed in 0.145198 second(s), 21 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表