Code Monkey home page Code Monkey logo

teamspeakhasher's Introduction

TeamSpeakHasher

TeamSpeakHasher is an OpenCL-based tool that can be used to increase the security level of TeamSpeak identities with unprecedented performance and efficiency.

Download

GitHub Actions automatically builds each commit.

To download the latest build, go to the Actions tab, choose the desired OS in the left sidebar and click the top result. The download link can be found at the bottom of this page under the name TeamSpeakHasher-[OS]-Bin in the Artifacts section.

Build Instructions

Linux

  1. Make sure you have the OpenCL headers and libraries set up properly on your system.
  2. Use the provided Makefile to build: make all
  3. Enjoy.

Windows

  1. Make sure to have the environment variables OPENCL_LIB_WIN32 and OPENCL_LIB_WIN64 set to the directories of the 32-bit and 64-bit OpenCL.lib library, respectively.
  2. Open the project file TeamSpeakHasher.vcxproj with Visual Studio.
  3. Build.
  4. Enjoy.

Usage

The general usage format is as follows.

./TeamSpeakHasher COMMAND [OPTIONS]

There are two commands:

  • add -publickey PUBLICKEY [-startcounter STARTCOUNTER] [-nickname NICKNAME]

    Adds an identity to the database (stored in the file tshasher.ini).

    • -publickey PUBLICKEY is required. To find the public key of your identity (or to generate a good identity), you can use the TSIdentityTool.
    • -startcounter STARTCOUNTER is optional. The passed STARTCOUNTER is the counter at which the computation begins. If you have already increased the security level of your identity, then you might want to use your current counter as STARTCOUNTER.
    • -nickname NICKNAME is optional. The passed NICKNAME will be used to represent the identity in the selection that is displayed in the compute command.
  • compute [-throttle throttlefactor] [-retune]

    Starts the actual computation.

    • -throttle throttlefactor is optional. If it is provided, the global work size is divided by throttlefactor. This can be used to reduce the load on your GPU.
    • -retune is optional. If it is provided, the tuning algorithm is rerun and previously stored tuning parameters are overwritten.

FAQ

  • How do I find the public key of my identity?

    Use the TSIdentityTool.

  • How can I export an identity with its best counter back to the TeamSpeak ini format?

    Exporting to the TeamSpeak ini format is not supported by TeamSpeakHasher. This is because such an ini file would include the private key of your identity. Since TeamSpeakHasher's computation only depends on the public key, we do not even allow the tool to touch the private key. Consequently, you need to insert the best counter from TeamSpeakHasher to your TeamSpeak identity ini file. In order to do this, export your identity with TeamSpeak and open the generated ini file, which will contain an identity of the following format:

    identity := COUNTER || 'V' || obfuscatedKeyPair

    Now you can simply put the desired counter before the first V of your identity and reimport the ini file to TeamSpeak.

  • How can I remove or modify an identity from the database?

    Removing or modifying database entries is currently not supported. In order to do this, please edit tshasher.ini manually.

  • What is the input string to the hash function?

    The input string is PUBLICKEY || COUNTER, where PUBLICKEY is the public key passed to the TeamSpeakHasher's add command, and COUNTER is a decimal ASCII encoding of the current counter (64-bit unsigned integer).

    For more details to how the computation is done and how the public key relates to what is stored in the ini file, we refer to the FAQ of TSIdentityTool.

  • What is the slow phase?

    The slow phase is reached when the input to the hash function has a length such that two blocks (instead of one block) need to be compressed every time the counter is increased. Hence, the computation in the slow phase is only half as fast. If you reach the slow phase, it is strongly recommended to switch to another identity. You can use the TSIdentityTool to generate identities that do (virtually) not suffer from this problem (so-called good identities).

  • Can I use my CPU to increase the security level?

    Currently, only GPUs are supported. This is mainly due to the current code not being vectorized properly. However, OpenCL also supports CPUs. You can try to change DEV_TYPE in TSHasherContext.h to CL_DEVICE_TYPE_CPU.

License

TeamSpeakHasher is licensed under the MIT license. See LICENSE for more information.

Credits

An unoptimized SHA1 implementation (see Kernel.h) has been reused from the hashcat project.

teamspeakhasher's People

Contributors

landave avatar mrbesen avatar sapuseven avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

teamspeakhasher's Issues

Manually tweak usage?

I know of compute throttle <int>

Can you explain the ini values a bit and how one tweaks the resource consumption with them? especially localworksize and globalworksize

[tunedparameter]
devicename=Caicos
deviceidentifier=Caicos_Advanced_Micro_Devices__Inc__4098_OpenCL_1_2_AMD_APP__1800_11__1800_11__VM__0
localworksize=16
globalworksize=512

Stuck at Level 46

My TeamSpeak identity is at level 46 and the estimated time for level 47 just stay at about 16h 45min +/-10min

Precompiled binaries / Download

I have uploaded a few windows binaries on my fork's releases page, for anyone who just want's to test the tool or can't compile it for some reason: https://github.com/Bluscream/TeamSpeakHasher/releases

@landave You're free to mirror the release to your repo that would make it easier for others to find it :)

Mirror

TeamSpeakHasher.zip

Exporting back to TS3

Is there an easy way to export the Identity Back to a Teamspeak compatible identity.ini file?

Get more power?

When running TeamspeakHasher i usually get around 20-40% CPU load with an average of 1.098184 MHash/s. This leaves my PC usable but feels like wasted time when i want to leave my PC hashing overnight while i'm sleeping. Even when using TeamspeakHasher.exe compute -throttle 0 doesn't increase the load.

On the other hand while using Hashdog my PC indeed starts lagging out completely with 100% CPU load. It feels faster but as it's only using the CPU i'm not sure if it's faster after all

GPU load drops from 100% to 1%, hash rate increases from 8.5GH/s to 42GH/s

My GPU Usage start out at 100%, hashing rate roundabout 8,5GH/s.
After some time I noticed that the usage has, according to HWMonitor, dropped to 0% to 1%.
The temperature decreased from 75°C to 55°C with the fans turned off.
THe hashing rate increased to 42GH/s.
I'm now running 42GH/s twice (in parallel).

How?

Pre Built version

Hi, can you provide a pre-built version for Windows? I'm having trouble building myself.

Hardware usage?

I have a question about what hardware is being used. As far as i read and heard openCL uses either CPU or GPU depending on what has more power but it doesn't utilize both at the same time, is that correct so far?

Also when running it on my machine the "reported device" by TeamspeakHasher is

[tunedparameter]
devicename=Caicos
deviceidentifier=Caicos_Advanced_Micro_Devices__Inc__4098_OpenCL_1_2_AMD_APP__1800_11__1800_11__VM__0
localworksize=16
globalworksize=512

Is that my CPU (AMD FX 4300) or GPU (AMD Radeon R5 200) now? 😕

Level 32 to 33: after reimport only level 1

Start counter: 2149004738

^CStopped at counter: 29528679424
Added identity="29528679424V

Reimported

Level Counter

Also tried with a new id. Exported with level 8, instantly jumped to level 36.
Reimported: Level 0

Not the same as #6, I have not escaped /

Identity without a nickname is not correctly reloaded.

Steps to recreate:

  • Add a Identity with a Publickey and no nickname.
  • Run TeamSpeakHasher compute with this identity
  • After it started computation so cancel it by Pressing CTL + C
  • try to continue Computation by re-run TeamSpeakHasher compute

Expected behavior:

  • List all Identitys to chose From

Actual behavior:

  • Error is displayed: Error: Please add a public key first.

workaround: open the config file (tshasher.ini) and enter a Valid nickname.

Re-imported ID shows lvl 0

I tried to re-import multiple ID's with their "new" offsets after getting higher sec levels with TeamspeakHasher but they always show up as either lvl 0 or 1 :/

I just changed the part between =" and the first V with the counter of the last sec lvl

OpenCL.lib

I am currently trying to find suitable OpenCL.lib files for my AMD Vega64 GPU. Are there any reliable sources?

UID

I'd have the suggestion to also calculate the UID (or fingerprint if you prefer so) and show it in the compute list and while hashing so you don't have to completely depend on the nickname and can use an actual nickname there. Tho i'm not sure if the private key is required to calculate the UID :o

Creating a plugin from this

@alex720 and i want to create a Teamspeak plugin based on TeamspeakHasher's functions, if that's okay i'd like to keep some of the thoughts here so you can give your opinion if you want ❤️

Roadmap:

  • Read and parse Identities from %appdata%\TS3Client\settings.db's ProtobufItems table with a QSqliteManager.
  • Build Qt UI with a listwidget to switch between Identities and a section for info's/actions
  • Build backend for UI (kms)
  • Multi-instance support (increasing multiple IDs at once)
  • Exporting back to *.ini file for teamspeak import

Getting errors while make all

fuckedup@ubuntu:~/TeamSpeakHasher# make all g++ -std=c++11 -Wall -Iinclude -c -o TunedParameters.o TunedParameters.cpp TunedParameters.cpp: In static member function ‘static TunedParameters TunedParameters::parse(const string&)’: TunedParameters.cpp:102:15: error: ‘invalid_argument’ is not a member of ‘std’ throw std::invalid_argument("Tuned parameter section is invalid."); ^ TunedParameters.cpp:112:11: error: ‘invalid_argument’ is not a member of ‘std’ throw std::invalid_argument("Tuned parameter section is invalid."); ^ make: *** [TunedParameters.o] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.