做了一个屏蔽坏 Peer 的小工具 PeerBanHelper,支持 qBittorrent 和 Transmission

56 天前
 AkaGhost

前情提要

个人是 P2P 爱好者,平常分享大文件(如 MC 旧地图归档)都用 BT 分发。因此也有长期 NAS 开机做种的习惯。
自上个月早些时候开始,有一些奇妙 Peer ,顶着 dt/torrent,或者 github.com/anacrolix/torrent (devel) (anacrolix/torrent unknown) 的 UA 开始无限制的拉取文件,单个文件的分享率被拉到 500.0 +,消耗了大量带宽和流量,并似乎因此招来了联通师傅上门检查 PCDN 。

github.com/anacrolix/torrent (devel) (anacrolix/torrent unknown) 为关键字检索,在 https://github.com/anacrolix/torrent/discussions/891 上有大量类似受害者参与讨论。

小工具的目的

这似乎是首次对 BT 社区的攻击。有第一次,就一定不会是最后一次。
Github 上的脚本和工具都是针对迅雷等吸血 Peer 进行屏蔽,但从未考虑过诸如此类纯恶意的客户端。
在 PBH 诞生前,使用 BT 客户端内建的 IP 屏蔽名单是唯一的对抗手段。

因此,使用可持续的手段与攻击作斗争是必要的投入。在一个月的敲敲打打中,功能终于完善的差不多了,也终于可以发到 V2 上一起分享一下了。

你这个小工具能干什么

如何部署

可以参见 Ghost-chu/PeerBanHelper 仓库的 README ,通过 Docker 快速部署或者手动设置服务。

结尾

首次在 V2 上分享自己的小工具,如果能帮到忙那就太好了,以及希望没有发错节点。
最后,PBH 没有内建的更新检查系统,所以也许需要偶尔回来看看有没有新的更新。

1087 次点击
所在节点    分享创造
3 条回复
wu67
56 天前
之前自己写了一个类似的工具, 思路是直接把非常规 peerid 给 ban 掉的, 配合最小加密, 目前用着挺正常

https://github.com/wu67/block_BT_vampire

另外有个问题想咨询, 就是部分场景下 peerid 会被填充成%00%00%00 这样的字符串, 就全是%00, 这种是什么情况下触发的? 感觉不像是恶意攻击, 因为我自己用的 aria2 也出现过, 甚至不知道怎么的把我本机 ip 给 ban 了...
AkaGhost
56 天前
@wu67 没有遇到过,但从这个百分号来看不排除可能是某种格式化字符串的占位符。从 Aria2 的 RPC 源代码顺过来看,问题可能出在 https://github.com/aria2/aria2/blob/a8cb271b044230f38085be7fc185c30eb1f52d36/src/util.cc#L425 这个函数。

提醒:我并不会 CPP ,这只是根据已有代码的推断,如果有错误还请指正:

从函数大概来看对于数字和字母的处理方式是原样复制,其它的会用 `fmt("%%%02X", target[i]) ` 这个解码成百分号打头的某种编码。如果是空 byte ( 0x00 )我觉得时可能会出现你说的这个情况。

至于空数组怎么来的:可能是因为连接未完全完成(连接已建立但还没有交换 PeerID ),RPC 返回了一个空字节数组。
wu67
56 天前
@AkaGhost
就是%+两位十六进制的数字, 用来表示一个非数字和字母的字符.
绝大部分标准 bt 客户端的 peerid 都是-开头、长度至少 24 的, 就是%2d 开头的字符串, 其他的我也搞不懂了, 就纯纯的凑合着用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1023562

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX