绕过 Teamspeak 5 账号徽章验证

Teamspeak 5 已经内测了近两年了,没有公开地进行测试,而且 Teamspeak 3 的几次版本更新似乎破坏了不同客户端的响度控制。在同一个服务器中,不同版本与 OS 组合会产生明显的音量过大或过小的问题,极其影响使用,而 TS5 中内置了响度平衡功能,官方却用 Badge Code 将普通用户拒之门外。由于 TS5 使用了 CEF 技术来构建客户端,这给了绕过验证的可乘之机。

首先需要一个老版本的 TS5 安装包,比如这里的 https://ciphers.pw/threads/teamspeak-5-fully-working.8348,因为更高版本的客户端将部分逻辑放在了服务端,如果登录的账号没有内测资格,那么会无法使用网络功能。

然后根据 zip 档内的 readme,同意 EULA,替换 db 文件,这时候打开 TS5 会由于某种时间或网络验证要求重新登录账号。但是根据测试,此时客户端功能已经 work,而登录账号的 UI 只是一个顶层 div,因此只需让其不再显示这个 div 即可。在 html\client_ui\main_xxxx.js 中搜索函数 pushFullscreenQueueItem,这出现在一个短路判断后:

1
this.pushFullscreenQueueItem({identifier:"new-password-needed",component:q})

由于短路的前部分不具有 side effects,因此删除该函数的调用即可。

PS. 在同一个服务器内,如果有多名用户使用了相同的 db 文件来连接,会遇到 Unique ID 冲突的错误,在 TS5 的 Identities 设置中新建一个 Identity 即可。

PS2. 为了防止 TS5 客户端的自动升级,需要将 127.0.0.1 update.teamspeak.com 添加到 hosts。