吸血客户端收集与解决方法

重点是自带的peerid屏蔽不支持正则表达式,也不支持屏蔽fdm那种不符合peerid规范的peerid,客户端列表也是直接一刀切,不允许输入自定义clientid来屏蔽

没什么好研究的,下面都是默认的没动,我目前也不用这个反吸血…

我只是好奇那个 execCommand_*命令怎么用:rofl::rofl::rofl:

本来是要进行测试的
用于拦截那些伪装成比特彗星的客户端
但之后确认那些IP段上的是正常的比特彗星 只是被滥用 用于刷流
而且防火墙规则我也没研究好 就这样搁置下来了

有一些边下边播的软件好像会用这个,标识是MO3000(比特彗星显示为n/a),一般会做种…可以选择性屏蔽。

有做种阶段的话其实还好

Taipei Torrent

其本身应该是正常客户端 但遭到滥用

通过命令操作Windows防火墙实现全自动/半自动的批量IP屏蔽

在较早的教程中我们通过调整比特彗星的反吸血设置
来屏蔽吸血客户端

比特彗星常见问题-屏蔽吸血客户端和设置自动反吸血 - 哔哩哔哩

但是这种方法并不能很有效的屏蔽被滥用的正常客户端
更好的方法是使用Windows防火墙进行屏蔽

而在之前的教程中我们又介绍了手动编辑防火墙规则
来屏蔽IP的方法 不过这个方法无法实现自动化

吸血客户端收集与解决方法 - #3 ie12

更好的方法是使用命令来控制Windows防火墙

远程动态关键字地址

在win10和更高版本中引入了一种名为 远程动态关键字地址 的新变量(RemoteDynamicKeywordAddresses)
下文中简称为动态关键字

微软文档:
RemoteDynamicKeywordAddresses
New-NetFirewallRule (NetSecurity) | Microsoft Learn

创建动态关键字
New-NetFirewallDynamicKeywordAddress (NetSecurity) | Microsoft Learn

我们可以将想要屏蔽的IP地址(段)写入创建动态关键字
再将其绑定到一条或多条防火墙规则上
当我们需要修改屏蔽IP(段时只需要修改这个动态关键字即可

比直接修改防火墙规则更加方便而且几乎没有IP数量限制

感谢泥浆提供的脚本支持

使用动态关键字的配置方法

打开powershell
生成 GUID

New-Guid

复制ID
创建防火墙规则并绑定动态关键字

入站规则

New-NetFirewallRule -DisplayName “规则名称” -Direction Inbound -Action Block -Program "BT客户端路径" -RemoteDynamicKeywordAddresses "{GUID}"

出站规则

New-NetFirewallRule -DisplayName “规则名称” -Direction Outbound -Action Block -Program "BT客户端路径" -RemoteDynamicKeywordAddresses "{GUID}"

示例

New-NetFirewallRule -DisplayName “BT_BC_BAN_IN” -Direction Inbound -Action Block -Program "C:\BitComet_2.07\BitComet_x64.exe" -RemoteDynamicKeywordAddresses "{3817fa89-3f21-49ca-a4a4-80541ddf7465}"

New-NetFirewallRule -DisplayName “BT_BC_BAN_OUT” -Direction Outbound -Action Block -Program "C:\BitComet_2.07\BitComet_x64.exe" -RemoteDynamicKeywordAddresses "{3817fa89-3f21-49ca-a4a4-80541ddf7465}"


接下来创建动态关键字
将想要屏蔽的IP地址(段)写入一个文本文件
每行一个地址段 支持 单IP CIDR 子网掩码以及IP范围

示例

1.1.1.1
223.78.79.0-223.78.79.255
223.78.80.0/24
2409:873c:f03:6000::/56
8.8.8.0/255.255.255.0

运行命令

New-NetFirewallDynamicKeywordAddress -Id "{GUDI}" -Keyword "名字" -Addresses (Get-Content IP列表文件路径 -Raw ).Replace("`r`n",",")

示例

New-NetFirewallDynamicKeywordAddress -Id "{3817fa89-3f21-49ca-a4a4-80541ddf7465}" -Keyword "BANIP" -Addresses (Get-Content C:\ip.txt -Raw ).Replace("`r`n",",")

运行成功后会显示出规则内容

这样我们就完成了防火墙规则和动态关键字的创建
若IP列表有更新则只需要更新动态关键字即可

更新动态关键字

先移除旧的关键字

Remove-NetFirewallDynamicKeywordAddress -Id "{GUID}"

示例

Remove-NetFirewallDynamicKeywordAddress -Id "{3817fa89-3f21-49ca-a4a4-80541ddf7465}"

再生成新的关键字
命令和之前创建的一样
其GUID要和之前绑定在防火墙规则中的相同

New-NetFirewallDynamicKeywordAddress -Id "{GUDI}" -Keyword "便于识别的名称" -Addresses (Get-Content IP列表文件路径 -Raw ).Replace("`r`n",",")

示例

New-NetFirewallDynamicKeywordAddress -Id "{3817fa89-3f21-49ca-a4a4-80541ddf7465}" -Keyword "BANIP" -Addresses (Get-Content C:\ip.txt -Raw ).Replace("`r`n",",")

查看已经创建的关键字

Get-NetFirewallDynamicKeywordAddress

懒人脚本

保存为批处理文件后就可以直接使用
仅需要修改 客户端和IP列表的路径即可

@echo off
set BTEXE="C:\Program Files\BitComet\BitComet.exe"
set IPFILE="C:\ip.txt"
set DYKWID="{3817fa89-3f21-49ca-a4a4-80541ddf7465}"

netsh advfirewall firewall delete rule name="BT_BAN_IPLIST" >nul
powershell.exe "New-NetFirewallRule -DisplayName "BT_BAN_IPLIST" -Direction Inbound -Action Block -Program '%BTEXE%' -RemoteDynamicKeywordAddresses '%DYKWID%'"
powershell.exe "New-NetFirewallRule -DisplayName "BT_BAN_IPLIST" -Direction Outbound -Action Block -Program '%BTEXE%' -RemoteDynamicKeywordAddresses '%DYKWID%'"
powershell.exe "Remove-NetFirewallDynamicKeywordAddress -Id '%DYKWID%'" >nul
powershell.exe "New-NetFirewallDynamicKeywordAddress -Id '%DYKWID%' -Keyword "BT_BAN_IPLIST" -Addresses (Get-Content '%IPFILE%' -Raw).Replace(\"`r`n\",\",\")"

pause

这样我们就实现了自动/半自动的更新规则
可以配合外置的一些反吸血软件或其他可输出想要屏蔽IP列表的软件使用

在防火墙管理工具中查看规则

使用命令行毕竟不是很直观
删除规则的时候可以直接使用高级Windows防火墙的管理工具
有时候可能会报错 显示无法删除 但是实际其实是可以删掉的

除此之外图形界面的管理工具并不能显示出动态关键字
所以使用动态关键字的规则看起来像是屏蔽了所有的IP

在win7上使用

win7其实是不支持动态关键字的 我们只能直接操作防火墙规则
使用较旧的 netsh advfirewall 命令

每条防火墙规则只能容纳 1000个IP(段)
参考:security - Is there a limit to the number of IP addresses for a Windows Firewall rule's Scope? - Super User

不过用于吸血IP的屏蔽还是足够的
这里也给出自动化脚本其使用方法和之前的是一样的

@echo off
setlocal enabledelayedexpansion

set BTEXE="C:\Program Files\BitComet\BitComet.exe"
set IPFILE="C:\ip.txt"

FOR /F %%i in ('type %IPFILE%') do set IPLIST=!IPLIST!%%i,

netsh advfirewall firewall delete rule name="BT_BAN_IPLIST" >nul
netsh advfirewall firewall add rule name="BT_BAN_IPLIST" dir=in action=block program=%BTEXE%
netsh advfirewall firewall add rule name="BT_BAN_IPLIST" dir=out action=block program=%BTEXE%
netsh advfirewall firewall set rule name="BT_BAN_IPLIST" new remoteip=%IPLIST%

pause

屏蔽指定地区的所有IP

由于动态关键字几乎支持无限数量的IP地址(段)
仅用于反一般的反吸血有些大材小用

我们还可以使用其屏蔽/允许指定地区的IP
这不仅适用于BT客户端 也可以用于 web站点 或者 远程桌面/登录

在IP2location上可以下载到指定地区的IP列表

可以将这些地址以上文中方法添加到动态关键字中
即可实现屏蔽或允许的效果 格式建议选择CIRD格式
注意要转换一下换行符 其符默认为UNIX换行符

不过这样一来IP(段)非常的多使用批处理效率可能不是很高
更好的方法是直接运行powershell脚本

不过win的默认安全策略并不运行直接运行PS脚本
虽然可以修改安全策略但更简的方法
是过批处理附加参数的方式间接运行

示例

powershell -ExecutionPolicy Bypass "C:\BT_BAN_IPLIST.ps1"

powershell 脚本

$BTEXE="C:\Program Files\BitComet\BitComet.exe"
$IPFILE="C:\ip.txt"
$DYKWID="{3817fa89-3f21-49ca-a4a4-80541ddf7465}"

$RULES=(Get-NetFirewallRule -DisplayName "BT_BAN_IPLIST" -ErrorAction Ignore)

$SET_RULES = {
	Remove-NetFirewallRule -DisplayName "BT_BAN_IPLIST" -ErrorAction Ignore
	New-NetFirewallRule -DisplayName "BT_BAN_IPLIST" -Direction Inbound -Action Block -Program $BTEXE -RemoteDynamicKeywordAddresses $DYKWID | Out-Null
	New-NetFirewallRule -DisplayName "BT_BAN_IPLIST" -Direction Outbound -Action Block -Program $BTEXE -RemoteDynamicKeywordAddresses $DYKWID | Out-Null
}

if (($RULES | Out-String -Stream | Select-String -SimpleMatch $DYKWID).Count -ne 2) {
	&$SET_RULES
}
elseif (($RULES | Get-NetFirewallApplicationFilter | Out-String -Stream | Select-String -SimpleMatch $BTEXE).Count -ne 2) {
	&$SET_RULES
}
elseif (($RULES | Out-String -Stream | Select-String -SimpleMatch Inbound).Count -ne 1) {
	&$SET_RULES
}

if (Get-NetFirewallDynamicKeywordAddress -Id $DYKWID -ErrorAction Ignore) {
	Update-NetFirewallDynamicKeywordAddress -Id $DYKWID -Addresses (Get-Content -Raw $IPFILE).Replace("`r`n",",") | Out-Null
}
else {
	New-NetFirewallDynamicKeywordAddress -Id $DYKWID -Keyword "BT_BAN_IPLIST" -Addresses (Get-Content -Raw $IPFILE).Replace("`r`n",",") | Out-Null
}
1個讚

使用恶意程序或滥用客户端从吸取 Bittorrent 网络流量问题汇总

trafficConsume

关于该事件的详细内容:链接


其他已知的恶意程序(客户端)名

 dt/torrent/v1.0 hp/torrent/v2.0 hp/torrent/v2.01

相关讨论链接 链接

在之前普遍将这些流量消耗器归为吸血客户端的范畴
现在看来是不准确的 其几乎不包括任何bittorrent客户端应该有的功能
应被定义为恶意程序


事实上除了专门编写的恶意程序外
已发现 修改或利用正常bittorrent 客户端进行刷流的情况


可用的解决方法

针对恶意程序(客户端)

可以通过其 客户端名 或者 peerID加以屏蔽

peeid屏蔽方法:链接
客户端名称屏蔽方法(即将更新该功能):直接输入客户端列显示的名称即可 只扫需要6个字符

针对被滥用的正常客户端

由于被滥用或被恶意修改的客户本身就是正常客户
所以无法通过 客户端名称或者peerID加以屏蔽
我们只能使用IP对其进行屏蔽

  • 使用Windows防火墙进行手动屏蔽:链接
  • 使用 火绒安全 杀毒软件进行屏蔽:链接
  • 通过命令操作Windows防火墙实现全自动/半自动的批量IP屏蔽:链接




我如果有服务器真的会把这伙B給ddos了:rage::rage::rage:一个nyaa的老种还有人吸真的是无语了
种子:[CUMiSYUM] A Whisker Away (BD Remux 1080p FLAC EAC3) [Dual-Audio] | Nakitai Watashi wa Neko wo Kaburu (2020) :: Nyaa

妈的没多久就被偷袭还没有用。。。

客户端名称屏蔽可以参考一下这个

xfplay,dt/torrent,hp/torrent,anacrolix,taipei-torrent,

行,我试试


不知道什么黑科技,不行

只能手动删。。。

什么意思? 看一下他的peerid?

奇怪客户端名称屏蔽不起作用吗?
peerid也屏蔽上试试?

早就加了。。。