在Debian上修改并编译Transmission屏蔽迅雷吸血|如何屏蔽迅雷离线服务器

本人义务参与一切抵制迅雷吸血的行动,对于编译Transmission和屏蔽离线服务器有任何问题,请直接通过邮箱或Telegram联系我!免费且详细解答。

更新记录

UPDATE: 2020-08-22 更新为3.00 64位版本,在Debian_10.5_amd64编译成功 UPDATE: 2019-10-05 更新为2.94 64位版本,在Debian_10_amd64编译成功

前言

曾经流行的开启强制加密已经不能屏蔽迅雷客户端,大概是从16年中旬开始,迅雷客户端就可以使用加密了。所以,现在想要屏蔽迅雷,只能通过修改源代码。如果今后迅雷开始伪装peer_id,那修改源码的方式也就失效了。

看疗效:
2019-10-06_00-44-14

屏蔽迅雷离线服务器

请直接在transmission中添加blocklist,https://blog.zscself.com/download/ipfilter.txt
本屏蔽列表由推特网友@chengr28提供,更新于2017年2月5日:

Modify tr3.0 source

修改方案由msg7086@V2EX提供。已将修改后的代码上传至GitHub。GitHub commit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
peer-mgr.h
139,149d138
< static bool client_banned (const uint8_t * peer_id)
< {
< bool banned = false;
< if (peer_id == NULL) return banned;
< banned |= !memcmp(peer_id+1, "SD", 2);
< banned |= !memcmp(peer_id+1, "XL", 2);
< // if (banned)
< // tr_logAddNamedError ("Client banned.", "(Client filter)");
< return banned;
< }
<

peer-mgr.c
2083c2083
< if (((atom->flags2 & MYFLAG_BANNED)|client_banned(peer_id)) != 0)
---
> if ((atom->flags2 & MYFLAG_BANNED) != 0)

handshake.c
274d273
< if(client_banned(peer_id)) return HANDSHAKE_ENCRYPTION_WRONG;

Build tr3.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 编译环境:Debian bullseye-20200803 (Debian 11)
# 必要软件
~ apt-get update
~ apt-get install git wget xz-utils dpkg-dev

# 安装依赖
~ apt-get install autotools-dev debhelper dh-autoreconf intltool libayatana-appindicator3-dev libcurl4-openssl-dev libevent-dev libglib2.0-dev libgtk-3-dev libminiupnpc-dev libnatpmp-dev libnotify-dev libssl-dev libsystemd-dev qt5-qmake qt5-qmake:native qtbase5-dev qttools5-dev-tools zlib1g-dev

# 拉取源代码
~ wget http://deb.debian.org/debian/pool/main/t/transmission/transmission_3.00.orig.tar.xz

# 下载Debian编译脚本
~ wget http://deb.debian.org/debian/pool/main/t/transmission/transmission_3.00-1.debian.tar.xz

# 解压
~ tar xf transmission_3.00.orig.tar.xz
~ tar xf transmission_3.00-1.debian.tar.xz -C transmission-3.00

# 覆盖原版
~ wget https://raw.githubusercontent.com/firedent/transmission/5ef633880fd1320097174c053765b22f5f95ed9a/libtransmission/peer-mgr.c -O ./transmission-3.00/libtransmission/peer-mgr.c

~ wget https://raw.githubusercontent.com/firedent/transmission/5ef633880fd1320097174c053765b22f5f95ed9a/libtransmission/handshake.c -O ./transmission-3.00/libtransmission/handshake.c

~ wget https://raw.githubusercontent.com/firedent/transmission/5ef633880fd1320097174c053765b22f5f95ed9a/libtransmission/peer-mgr.h -O ./transmission-3.00/libtransmission/peer-mgr.h


# 编译,软件包生成在上一级目录
~ cd transmission-3.00
~/transmission-3.00 dpkg-buildpackage -us -uc -b -j4

Install tr3.0

如需在Debian 10上安装,请自行搜索办法安装 libevent-2.1-7

1
2
3
4
~ apt-get install libcurl4 libevent-2.1-7 libminiupnpc17 libnatpmp1
~ dpkg -i transmission-common_3.00-1_all.deb
~ dpkg -i transmission-cli_3.00-1_amd64.deb
~ dpkg -i transmission-daemon_3.00-1_amd64.deb

锁定tr3.0版本

现在我们已经将安装完成了自己修改过的tr3.0,但是一旦运行apt-get upgrade,APT又会将我们的修改版替换成最新版,所以我们需要将tr3.0排除出自动更新。
运行下面的命令,关闭刚才安装的三个软件包的更新

1
~ apt-mark hold transmission-cli transmission-daemon transmission-common

使用以下命令查看已设置为保持的所有软件包。设置为“保持”的软件包被标记为“hold”

1
~ dpkg --get-selections

配置tr3.0

请参考本站另一篇文章

下载链接

下载我已经编译好的安装包。
new, 只在Debian Buster (10.5) 和 bullseye (11 testing) amd64测试过:
transmission_3.00-1_all.deb
transmission-cli_3.00-1_amd64.deb
transmission-common_3.00-1_all.deb
transmission-daemon_3.00-1_amd64.deb
transmission-gtk_3.00-1_amd64.deb
transmission-qt_3.00-1_amd64.deb

old, 只在Debian Buster (10) amd64测试过:
transmission_2.94-2_all.deb
transmission-cli_2.94-2_amd64.deb
transmission-common_2.94-2_all.deb
transmission-daemon_2.94-2_amd64.deb
transmission-gtk_2.94-2_amd64.deb
transmission-qt_2.94-2_amd64.deb

长期提供U2邀请码

请给我发邮件

在Debian上修改并编译Transmission屏蔽迅雷吸血|如何屏蔽迅雷离线服务器

https://blog.zscself.com/posts/66b00f02/

作者

F!redent

发布于

2017-02-18

更新于

2024-01-30

许可协议

CC BY-NC-SA 4.0

评论