TeamSpeak 5 Beta

Asphyxia

Server Monkey
Administrator
Joined
Apr 25, 2015
Messages
1,213
Points
252
Age
26
Location
North America
Who did you talk to?
We talked to Andreas Brillen (EX TeamSpeak Systems GmbH CEO in Krün, Germany), and James Ko (EX Teamspeak Systems Inc CEO in Chula Vista, California). They met us in the official R4P3 TeamSpeak 3 server, both CEOs were on Windows machines with unsafe but at that time current versions of their own software - vulnerable to remote code execution. We could have had remote access to both CEOs laptops or whichever workstations they were using. It is important to note we DID NOT choose to infect the CEOs despite our ability to easily do so.

Our meeting discussed their licensing system security, why we research the security of their software, and overall they seemed to be wanting to mine information out of us.

It was evident they did not care about the security of their software and the focus was more on features. The only security the CEOs seemed interested in was more involving DRM-style protection around licensing of their server software to maximize their profits and decrease cracked software. This concern highlights their emphasis on finding ways to make more money by attempting to mitigate piracy. For as much time as they spent on this, they could have been finding other markets to increase sales. People are not going to want to pay for VoIP chat forever and Discord is a clear example of this shift.

Considering both CEOs are no longer with TeamSpeak, I fail to see how any of their past CEOs have been fully invested into the company.

This is another red flag that TeamSpeak is going down. They are playing the "blame our CEO game" I am guessing. If the company is not making more money, just swap out the CEO. This is a traditional approach that eventually will be exhaustive and deplete their resources.
 
Last edited:

dumbidiot

New Member
Joined
Feb 19, 2019
Messages
1
Points
18
Age
29
We talked to Andreas Brillen (EX TeamSpeak Systems GmbH CEO in Krün, Germany), and James Ko (EX Teamspeak Systems Inc CEO in Chula Vista, California). They met us in the official R4P3 TeamSpeak 3 server, both CEOs were on Windows machines with unsafe but at that time current versions of their own software - vulnerable to remote code execution. We could have had remote access to both CEOs laptops or whichever workstations they were using. It is important to note we DID NOT choose to infect the CEOs despite our ability to easily do so.

Our meeting discussed their licensing system security, why we research the security of their software, and overall they seemed to be wanting to mine information out of us.

It was evident they did not care about the security of their software and the focus was more on features. The only security the CEOs seemed interested in was more involving DRM-style protection around licensing of their server software to maximize their profits and decrease cracked software. This concern highlights their emphasis on finding ways to make more money by attempting to mitigate piracy. For as much time as they spent on this, they could have been finding other markets to increase sales. People are not going to want to pay for VoIP chat forever and Discord is a clear example of this shift.

Considering both CEOs are no longer with TeamSpeak, I fail to see how any of their past CEOs have been fully invested into the company.

This is another red flag that TeamSpeak is going down. They are playing the "blame our CEO game" I am guessing. If the company is not making more money, just swap out the CEO. This is a traditional approach that eventually will be exhaustive and deplete their resources.

yet again you guys never fail to pick out the vulnerabilites but still no ts5 keys for you guys...shameful
 

Asphyxia

Server Monkey
Administrator
Joined
Apr 25, 2015
Messages
1,213
Points
252
Age
26
Location
North America
still no ts5 keys for you guys
From what I have heard no one has access to TeamSpeak 5 still. Kind of hard to get what does not exist.. maybe one day TeamSpeak 5 will be more than a couple pictures of puzzle pieces.
 

Asphyxia

Server Monkey
Administrator
Joined
Apr 25, 2015
Messages
1,213
Points
252
Age
26
Location
North America
Devs and Alpha tester already use ts5
2023

Okay, so maybe that changed since I last heard but I was hearing even winners of access to TeamSpeak 5 kept getting the "hold on, coming soon" like everyone else.

If the above is how TS5 is, this looks like a rethemed Mumble made to look like Discord - this is my opinion of course.

Just use Riot, anything else is either badly themed open source or proprietary and possibly privacy infringing.
 

HardRevo

Member
Joined
Sep 26, 2016
Messages
26
Points
35
Age
38
I don't think it would be a good idea to buy TeamSpeak. It would be a waste of money. Do you really want to give money to those people?

You could just use that money to start something new from scratch. If it's good enough people will come. It could be the spiritual Successor to TeamSpeak.
 
Last edited:

FromLondon

Honk Honk
VIP
Joined
May 20, 2016
Messages
205
Points
78
Age
24
Location
Russia
I don't think it would be a good idea to buy TeamSpeak. It would be a waste of money. Do you really want to give money to those people?

You could just use that money to start something new from scratch. If it's good enough people will come. It could be the spiritual Successor to TeamSpeak.
That's not so hard to create new VOIP. First working version can be created by one person who know network programming in c++/c#...
 

HardRevo

Member
Joined
Sep 26, 2016
Messages
26
Points
35
Age
38
That's not so hard to create new VOIP. First working version can be created by one person who know network programming in c++/c#...
It's never hard to get something that works. What's hard is to make a good and polished package of features.

I think the core could be C++ but building everything in C++ would take a long time and not be very flexible.
It's 2019 I think a good thing would the best of both world the main core voice communication built in C++ and the UI and other features in HTML, JS, CSS... Which would allow for much faster iterations and changes...
 

Asphyxia

Server Monkey
Administrator
Joined
Apr 25, 2015
Messages
1,213
Points
252
Age
26
Location
North America
one person who know network programming
Yeah, the difficulty here is really not "out of this world".

It is just a matter of getting a client/server built to connect multiple clients, with asynchronous socket handling.

An asynchronous client socket does not suspend the application while waiting for network operations to complete. Instead, it uses the standard .NET Framework asynchronous programming model to process the network connection on one thread while the application continues to run on the original thread.
From there, you are now capturing voice data via microphone input - here is another example.

You will want to be encoding your audio also. There are other ways to encode audio in C#. Older stuff here. Concentus was last updated in 2017, so be careful. P/Opus is a .NET library written in C# to wrap around the libopus C API/library to provide a more .NET friendly way of encoding and decoding Opus packets.

2024


From there, you are going to be streaming your encoded audio over to the other clients for the information to be decoded and played. If you really think about what a VoIP client/server build looks like, this is pretty basic shit.. just takes time.

Code:
using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;

    // State object for reading client data asynchronously
    public class StateObject {
        // Client  socket.
        public Socket workSocket = null;
        // Size of receive buffer.
        public const int BufferSize = 1024;
        // Receive buffer.
        public byte[] buffer = new byte[BufferSize];
    // Received data string.
        public StringBuilder sb = new StringBuilder(); 
    }

    public class AsynchronousSocketListener {
        // Thread signal.
        public static ManualResetEvent allDone = new ManualResetEvent(false);

        public AsynchronousSocketListener() {
        }

        public static void StartListening() {
            // Data buffer for incoming data.
            byte[] bytes = new Byte[1024];

            // Establish the local endpoint for the socket.
            // The DNS name of the computer
            // running the listener is "host.contoso.com".
            IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
            IPAddress ipAddress = ipHostInfo.AddressList[0];
            IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

            // Create a TCP/IP socket.
            Socket listener = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream, ProtocolType.Tcp );

            // Bind the socket to the local endpoint and listen for incoming connections.
            try {
                listener.Bind(localEndPoint);
                listener.Listen(100);

                while (true) {
                    // Set the event to nonsignaled state.
                    allDone.Reset();

                    // Start an asynchronous socket to listen for connections.
                    Console.WriteLine("Waiting for a connection...");
                    listener.BeginAccept(
                        new AsyncCallback(AcceptCallback),
                        listener );

                    // Wait until a connection is made before continuing.
                    allDone.WaitOne();
                }

            } catch (Exception e) {
                Console.WriteLine(e.ToString());
            }

            Console.WriteLine("\nPress ENTER to continue...");
            Console.Read();

        }

        public static void AcceptCallback(IAsyncResult ar) {
            // Signal the main thread to continue.
            allDone.Set();

            // Get the socket that handles the client request.
            Socket listener = (Socket) ar.AsyncState;
            Socket handler = listener.EndAccept(ar);

            // Create the state object.
            StateObject state = new StateObject();
            state.workSocket = handler;
            handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0,
                new AsyncCallback(ReadCallback), state);
        }

        public static void ReadCallback(IAsyncResult ar) {
            String content = String.Empty;

            // Retrieve the state object and the handler socket
            // from the asynchronous state object.
            StateObject state = (StateObject) ar.AsyncState;
            Socket handler = state.workSocket;

            // Read data from the client socket.
            int bytesRead = handler.EndReceive(ar);

            if (bytesRead > 0) {
                // There  might be more data, so store the data received so far.
                state.sb.Append(Encoding.ASCII.GetString(
                    state.buffer,0,bytesRead));

                // Check for end-of-file tag. If it is not there, read
                // more data.
                content = state.sb.ToString();
                if (content.IndexOf("<EOF>") > -1) {
                    // All the data has been read from the
                    // client. Display it on the console.
                    Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
                        content.Length, content );
                    // Echo the data back to the client.
                    Send(handler, content);
                } else {
                    // Not all data received. Get more.
                    handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                    new AsyncCallback(ReadCallback), state);
                }
            }
        }

        private static void Send(Socket handler, String data) {
            // Convert the string data to byte data using ASCII encoding.


      byte[] byteData = Encoding.ASCII.GetBytes(data);

        // Begin sending the data to the remote device.
        handler.BeginSend(byteData, 0, byteData.Length, 0,
            new AsyncCallback(SendCallback), handler);
    }

    private static void SendCallback(IAsyncResult ar) {
        try {
            // Retrieve the socket from the state object.
            Socket handler = (Socket) ar.AsyncState;

            // Complete sending the data to the remote device.
            int bytesSent = handler.EndSend(ar);
            Console.WriteLine("Sent {0} bytes to client.", bytesSent);

            handler.Shutdown(SocketShutdown.Both);
            handler.Close();

        } catch (Exception e) {
            Console.WriteLine(e.ToString());
        }
    }  

    public static int Main(String[] args) {
        StartListening();
        return 0;
    }
}

Other references:

http://csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm

https://www.codeproject.com/Articles/511814/Multi-client-per-one-server-socket-programming-in

https://social.msdn.microsoft.com/Forums/en-US/12a0d8d0-d34b-497d-9bdf-e5809f1cb36b/c-tcpip-multiple-clients?forum=csharpgeneral

https://gist.github.com/leandrosilva/656054

https://codereview.stackexchange.com/questions/100434/multithreaded-client-server-socket

https://www.geeksforgeeks.org/socket-programming-in-c-sharp/

https://www.experts-exchange.com/questions/21519992/Networking-in-C-one-Server-to-multiple-clients.html

https://www.dreamincode.net/forums/topic/180149-c#-servermulti-client/

For encryption, use something like this https://gist.github.com/jbtule/4336842 I mean you will have to figure how to wrap all the voice/text/etc in BouncyCastle for C#.

If you want to get this project started, I am willing to take the lead or help wherever I can... just reply here!?!
 

HardRevo

Member
Joined
Sep 26, 2016
Messages
26
Points
35
Age
38
Yeah, the difficulty here is really not "out of this world".

It is just a matter of getting a client/server built to connect multiple clients, with asynchronous socket handling.



From there, you are now capturing voice data via microphone input - here is another example.

You will want to be encoding your audio also. There are other ways to encode audio in C#. Older stuff here. Concentus was last updated in 2017, so be careful. P/Opus is a .NET library written in C# to wrap around the libopus C API/library to provide a more .NET friendly way of encoding and decoding Opus packets.

View attachment 2024


From there, you are going to be streaming your encoded audio over to the other clients for the information to be decoded and played. If you really think about what a VoIP client/server build looks like, this is pretty basic shit.. just takes time.

Code:
using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;

    // State object for reading client data asynchronously
    public class StateObject {
        // Client  socket.
        public Socket workSocket = null;
        // Size of receive buffer.
        public const int BufferSize = 1024;
        // Receive buffer.
        public byte[] buffer = new byte[BufferSize];
    // Received data string.
        public StringBuilder sb = new StringBuilder();
    }

    public class AsynchronousSocketListener {
        // Thread signal.
        public static ManualResetEvent allDone = new ManualResetEvent(false);

        public AsynchronousSocketListener() {
        }

        public static void StartListening() {
            // Data buffer for incoming data.
            byte[] bytes = new Byte[1024];

            // Establish the local endpoint for the socket.
            // The DNS name of the computer
            // running the listener is "host.contoso.com".
            IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
            IPAddress ipAddress = ipHostInfo.AddressList[0];
            IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

            // Create a TCP/IP socket.
            Socket listener = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream, ProtocolType.Tcp );

            // Bind the socket to the local endpoint and listen for incoming connections.
            try {
                listener.Bind(localEndPoint);
                listener.Listen(100);

                while (true) {
                    // Set the event to nonsignaled state.
                    allDone.Reset();

                    // Start an asynchronous socket to listen for connections.
                    Console.WriteLine("Waiting for a connection...");
                    listener.BeginAccept(
                        new AsyncCallback(AcceptCallback),
                        listener );

                    // Wait until a connection is made before continuing.
                    allDone.WaitOne();
                }

            } catch (Exception e) {
                Console.WriteLine(e.ToString());
            }

            Console.WriteLine("\nPress ENTER to continue...");
            Console.Read();

        }

        public static void AcceptCallback(IAsyncResult ar) {
            // Signal the main thread to continue.
            allDone.Set();

            // Get the socket that handles the client request.
            Socket listener = (Socket) ar.AsyncState;
            Socket handler = listener.EndAccept(ar);

            // Create the state object.
            StateObject state = new StateObject();
            state.workSocket = handler;
            handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0,
                new AsyncCallback(ReadCallback), state);
        }

        public static void ReadCallback(IAsyncResult ar) {
            String content = String.Empty;

            // Retrieve the state object and the handler socket
            // from the asynchronous state object.
            StateObject state = (StateObject) ar.AsyncState;
            Socket handler = state.workSocket;

            // Read data from the client socket.
            int bytesRead = handler.EndReceive(ar);

            if (bytesRead > 0) {
                // There  might be more data, so store the data received so far.
                state.sb.Append(Encoding.ASCII.GetString(
                    state.buffer,0,bytesRead));

                // Check for end-of-file tag. If it is not there, read
                // more data.
                content = state.sb.ToString();
                if (content.IndexOf("<EOF>") > -1) {
                    // All the data has been read from the
                    // client. Display it on the console.
                    Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
                        content.Length, content );
                    // Echo the data back to the client.
                    Send(handler, content);
                } else {
                    // Not all data received. Get more.
                    handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                    new AsyncCallback(ReadCallback), state);
                }
            }
        }

        private static void Send(Socket handler, String data) {
            // Convert the string data to byte data using ASCII encoding.


      byte[] byteData = Encoding.ASCII.GetBytes(data);

        // Begin sending the data to the remote device.
        handler.BeginSend(byteData, 0, byteData.Length, 0,
            new AsyncCallback(SendCallback), handler);
    }

    private static void SendCallback(IAsyncResult ar) {
        try {
            // Retrieve the socket from the state object.
            Socket handler = (Socket) ar.AsyncState;

            // Complete sending the data to the remote device.
            int bytesSent = handler.EndSend(ar);
            Console.WriteLine("Sent {0} bytes to client.", bytesSent);

            handler.Shutdown(SocketShutdown.Both);
            handler.Close();

        } catch (Exception e) {
            Console.WriteLine(e.ToString());
        }
    } 

    public static int Main(String[] args) {
        StartListening();
        return 0;
    }
}

Other references:

http://csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm

https://www.codeproject.com/Articles/511814/Multi-client-per-one-server-socket-programming-in

https://social.msdn.microsoft.com/Forums/en-US/12a0d8d0-d34b-497d-9bdf-e5809f1cb36b/c-tcpip-multiple-clients?forum=csharpgeneral

https://gist.github.com/leandrosilva/656054

https://codereview.stackexchange.com/questions/100434/multithreaded-client-server-socket

https://www.geeksforgeeks.org/socket-programming-in-c-sharp/

https://www.experts-exchange.com/questions/21519992/Networking-in-C-one-Server-to-multiple-clients.html

https://www.dreamincode.net/forums/topic/180149-c#-servermulti-client/

For encryption, use something like this https://gist.github.com/jbtule/4336842 I mean you will have to figure how to wrap all the voice/text/etc in BouncyCastle for C#.

If you want to get this project started, I am willing to take the lead or help wherever I can... just reply here!?!
Looks like you have been doing some research :p
 

Asphyxia

Server Monkey
Administrator
Joined
Apr 25, 2015
Messages
1,213
Points
252
Age
26
Location
North America
Looks like you have been doing some research
No, that was 10 minutes in Google.

I have made IM (text messaging) clients that can share files like images/archives/etc. It's the same concept, just adding voice support.
 

Asphyxia

Server Monkey
Administrator
Joined
Apr 25, 2015
Messages
1,213
Points
252
Age
26
Location
North America
the alpha versions
We still have no pictures/video of the client?

Kind of strange there are only a few users tossing around some version numbers as proof.

Either way, I don't see how TS5 is going to revive TeamSpeak. It's dying, needs an AED. They are getting desperate: bringing back the sponsorship license (due to complaints of NPL dissolving), putting their mobile apps on an 80% off sale, and various other strategies you typically see in a retail store going out of biz lol.

This happens when you listen too late, your market is saturated out from under you (think Discord), and overall your CEO cannot possibly save the ship from sinking.

Really curious to hear what other people think TS5 is going to do.. for the TeamSpeak community.
 
U

User_68819

We still have no pictures/video of the client?

Kind of strange there are only a few users tossing around some version numbers as proof.
They are obviously not allowed to post pictures / videos for any reason
The only proof we have that there is a TeamSpeak 5 client, and that it is being worked on are the versions.
 

iKaros

Restricted
Joined
Oct 4, 2017
Messages
91
Points
34
Age
29
Location
Spain
They are obviously not allowed to post pictures / videos for any reason
The only proof we have that there is a TeamSpeak 5 client, and that it is being worked on are the versions.
Not allowed to post what? They could have explained why the idiot that announced Teamspeak 5 in 2018 is still working on Teamspeak, for example.
Or stop promising things you do not have prepared.
Or stop competing on Twitter against Discord and other Apps, and focus on their fucking mobile application for example, which is disgusting.

I'm a Teamspeak fan, but when something is wrong, it has to be said as it is.
 
U

User_68819

Not allowed to post what? They could have explained why the idiot that announced Teamspeak 5 in 2018 is still working on Teamspeak, for example.
Or stop promising things you do not have prepared.
Or stop competing on Twitter against Discord and other Apps, and focus on their fucking mobile application for example, which is disgusting.

I'm a Teamspeak fan, but when something is wrong, it has to be said as it is.
I know for a fact that people have lost their jobs at TeamSpeak that i personally knew.

It's not like TeamSpeak is not doing anything, they just don't tell us and that's the problem aka no communication with their community.
They do a lot of things, maybe not the best decision like updating the Merchandise website or add new picture in the Merch store like idk man.
But they do Stuff we just don't always know what! :)
 

iKaros

Restricted
Joined
Oct 4, 2017
Messages
91
Points
34
Age
29
Location
Spain
I know for a fact that people have lost their jobs at TeamSpeak that i personally knew.

It's not like TeamSpeak is not doing anything, they just don't tell us and that's the problem aka no communication with their community.
They do a lot of things, maybe not the best decision like updating the Merchandise website or add new picture in the Merch store like idk man.
But they do Stuff we just don't always know what! :)
One monkey can work better that the marketing by Teamspeak
 

Asphyxia

Server Monkey
Administrator
Joined
Apr 25, 2015
Messages
1,213
Points
252
Age
26
Location
North America
But they do Stuff we just don't always know what!
They changed CEOs, no one knew!

I found out when I emailed one CEO a security advisory and got an automatic reply, "I am not longer with TeamSpeak, contact Simon Galbierz."

An awesome Reddit posting on this mentions:
Forgive me for being that negative but TeamSpeak has given us little reason to believe in their marketing promises.
And on Quora, a smart individual by name of Mr. Wang shares insight:
The #1 mistake is not talking to your users. The most important thing to do at a startup is set up a fast feedback cycle and get on the path of constant improvement. The #2 mistake is not hustling enough. You should not expect building a company to be easy. If you expect to be successful, your company has to be your #1 priority at basically all times, above friends, fun, sleep, significant others, etc. If something comes up, it is your responsibility to get it done.
Mr. Wang also shares some important mistakes to not make in running a company:
hiring bad people
hiring people too early
hiring people too late
lying to yourself
not being prepared for hardship
getting caught up in startup pageantry
not shipping enough
focusing on competitors
not protecting an early culture of getting shit done
being too focused on fundraising
I would say TeamSpeak certainly makes the mistake of focusing on competitors. I notified TeamSpeak along with some security issues, that their company is going to be drowned in an ocean by Discord (a competitor of theirs and at that time I hated Discord a lot, so I did not want to communicate this). Over the next couple months, their CEOs were out and then the idea of TeamSpeak 5 started surfacing. I think they are trying too hard to compete.

They do not have the staff, the talent, the plans, THEY DO NOT HAVE ANYTHING other than a dwindling away userbase. This will cause our community (this forum) to require refocus.

If they did have anything useful, why would they be hiding for so long behind alpha versions when claiming "Our TeamSpeak 5 Beta Program is nearly ready to launch," hmm?

Good luck TeamSpeak, do not claim to have a beta program ready to launch when you are being slow with your alpha.
 

Top