GPU-accelerated tool for Linux that raises the security level of a
TeamSpeak 3 identity file. Point it at your .ini, pick a GPU, set a target
level (or let it run forever), and the tool updates the file in place each
time it finds a higher level. No copy-paste, no manual export/import.
Two binaries from one workspace:
ts3level— headless CLI for servers, scripts, tmux sessions.ts3level-gui— small GTK4 + libadwaita desktop app, translated into English, German, Spanish, and French.
NVIDIA only for now (CUDA). OpenCL/AMD support is on the roadmap.
This tool is intended only for identity files you own and exported
yourself. An exported TeamSpeak 3 identity .ini contains private key
material — treat it like an SSH private key:
- do not upload it anywhere
- do not paste it into issues, chat, or screenshots
- do not run this tool on files you do not own
The tool works offline. It does not contact TeamSpeak servers, does not modify the TeamSpeak client, and does not bypass server permissions or access controls.
This project is not affiliated with, endorsed by, or sponsored by TeamSpeak Systems GmbH. "TeamSpeak" is a trademark of TeamSpeak Systems GmbH and is used here for descriptive purposes only.
The tool operates exclusively on a local identity file that the user owns. It performs no network communication with TeamSpeak servers, does not modify the TeamSpeak client, and does not circumvent any access control. The "security level" is proof-of-work — leading zero bits of a SHA-1 hash — and this tool just computes the same hashes the official client computes, faster, on a GPU.
- In the TeamSpeak 3 client: Tools → Identities, right-click the
identity you want to raise, pick Export, save the
.ini. - Run this tool (
ts3level-guiorts3level --target N path/to.ini). The file is updated in place each time a higher level is found; a one-shot.bakof the original is kept next to it. - Back in TS3: Tools → Identities → Import, pick the same
.ini. The client now shows the higher Security Level.
Full walk-through with screenshots and tips: docs/usage.md.
The security level of a TeamSpeak 3 identity is defined as:
level = leading_zero_bits( SHA1( public_key_base64 || decimal_counter ) )
To raise the level, you increment the counter and rehash until you find one with more leading zero bits. The official client does this on one CPU thread; past level ~50 that is impractically slow. A modern NVIDIA GPU can do tens of billions of SHA-1 hashes per second.
Updating the identity file means only the digits before the V in the
identity="..." line change. The base64-encoded keypair stays
byte-identical. The tool writes the new file atomically (temp file + rename)
and keeps a one-time .bak of the original.
Required packages per distro, plus how to set the /dev/nvidia* group
permissions your user needs, and what the tool checks for at every
start, are in docs/installation.md. Quick
version for Ubuntu/Mint/Debian:
sudo apt install nvidia-driver-550 libgtk-4-1 libadwaita-1-0 gettext-base
sudo usermod -aG render $USER # log out + back in afterwardsA precompiled tarball for x86_64-linux (glibc ≥ 2.39) is attached to
each release:
curl -LO https://github.com/Kernel-Error/ts-identities-security-level/releases/download/v0.1.0/ts3level-v0.1.0-x86_64-linux.tar.gz
tar -xzf ts3level-v0.1.0-x86_64-linux.tar.gz
cd ts3level-v0.1.0-x86_64-linux
sudo install -m755 bin/ts3level /usr/local/bin/
sudo install -m755 bin/ts3level-gui /usr/local/bin/
sudo cp -r share/locale/* /usr/share/locale/Verify with ts3level --list-devices.
If your distro is too old for the prebuilt tarball, or you want Pascal support, build it locally — see docs/building.md. You need a Rust toolchain, the CUDA Toolkit (for the kernel compile step), and GTK4 + libadwaita dev headers if you want the GUI. End users only need the NVIDIA driver — everything else is statically or dynamically resolved at runtime.
Which GPUs, drivers, and distributions are supported by the prebuilt
binary, and what to do when one of them doesn't match, is documented in
docs/compatibility.md. Short version: any
NVIDIA Volta-or-newer card with driver ≥ 525 on a recent Linux
distribution works out of the box; Pascal and older need a one-line
patch to build.rs and a rebuild from source.
The identity format and the level formula are documented by long-standing
open-source projects derived from black-box analysis of the .ini file
(no decompilation of the client). See docs/algorithm.md
for references and full pseudocode.
Versioned releases ship on
GitHub
with prebuilt x86_64-linux tarballs (binaries + locale files).
Per-version notes live in CHANGELOG.md.
Open work items are in
GitHub Issues;
the good first issue label is a friendly entry point. The full
contributor guide lives in CONTRIBUTING.md. Every
push and pull request runs through CI (cargo fmt, cargo clippy -D warnings, full test suite) before merge.
MIT — see LICENSE.
