The new TS3 server version broke TS3j, it is now 218092286 decimal.
This commit is contained in:
@@ -212,8 +212,8 @@ public class PacketBody8Init1 extends PacketBody {
|
||||
|
||||
@Override
|
||||
public void read(ByteBuffer byteBuffer) {
|
||||
byteBuffer.get(serverStuff);
|
||||
byteBuffer.get(a0reversed);
|
||||
byteBuffer.get(serverStuff, 0, Math.min(byteBuffer.remaining(), serverStuff.length));
|
||||
byteBuffer.get(a0reversed, 0, Math.min(byteBuffer.remaining(), a0reversed.length));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -236,7 +236,6 @@ public class PacketBody8Init1 extends PacketBody {
|
||||
super((byte) 2, ProtocolRole.CLIENT);
|
||||
}
|
||||
|
||||
|
||||
public byte[] getA0reversed() {
|
||||
return a0reversed;
|
||||
}
|
||||
@@ -263,6 +262,7 @@ public class PacketBody8Init1 extends PacketBody {
|
||||
|
||||
@Override
|
||||
public void write(ByteBuffer byteBuffer) {
|
||||
|
||||
byteBuffer.put(serverStuff);
|
||||
byteBuffer.put(a0reversed);
|
||||
}
|
||||
|
||||
+29
-21
@@ -24,7 +24,7 @@ import java.util.Random;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
public class LocalClientHandlerConnecting extends LocalClientHandler {
|
||||
private static final byte[] INIT1_VERSION = new byte[]{0x09, (byte) 0x83, (byte) 0x8C, (byte) 0xCF};
|
||||
private static final byte[] INIT1_VERSION = new byte[]{0x0C, (byte)0xFF, (byte)0xD2, (byte)0xFE};
|
||||
|
||||
private byte[] randomBytes;
|
||||
private byte[] alphaBytes;
|
||||
@@ -48,6 +48,8 @@ public class LocalClientHandlerConnecting extends LocalClientHandler {
|
||||
packet.setStep(step);
|
||||
|
||||
sendInit1(packet);
|
||||
|
||||
getClient().writePacket(new PacketBody2Command(ProtocolRole.CLIENT, createInitIv()));
|
||||
}
|
||||
|
||||
private void sendInit1(PacketBody8Init1 packet) throws IOException, TimeoutException {
|
||||
@@ -118,29 +120,15 @@ public class LocalClientHandlerConnecting extends LocalClientHandler {
|
||||
step4.setY(y);
|
||||
step4.setServerStuff(serverReplyStep3.getServerStuff());
|
||||
|
||||
alphaBytes = new byte[10];
|
||||
new Random().nextBytes(alphaBytes);
|
||||
|
||||
SingleCommand initiv = new SingleCommand("clientinitiv", ProtocolRole.CLIENT);
|
||||
|
||||
initiv.add(new CommandSingleParameter("alpha", Base64.getEncoder().encodeToString(alphaBytes)));
|
||||
|
||||
initiv.add(new CommandSingleParameter("omega", getClient().getIdentity().getPublicKeyString()));
|
||||
|
||||
initiv.add(new CommandSingleParameter("ot", "1")); // constant, set to 1
|
||||
|
||||
initiv.add(
|
||||
new CommandSingleParameter(
|
||||
"ip",
|
||||
getClient().getOption("client.hostname", String.class)
|
||||
)
|
||||
);
|
||||
|
||||
step4.setClientIVcommand(initiv.build().getBytes(Charset.forName("UTF8")));
|
||||
|
||||
step4.setClientIVcommand(createInitIv().build().getBytes(Charset.forName("UTF8")));
|
||||
step = step4;
|
||||
break;
|
||||
case 127:
|
||||
try {
|
||||
Thread.sleep(1000L);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
onAssigned();
|
||||
return;
|
||||
default:
|
||||
@@ -223,6 +211,26 @@ public class LocalClientHandlerConnecting extends LocalClientHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private SingleCommand createInitIv() {
|
||||
alphaBytes = new byte[10];
|
||||
new Random().nextBytes(alphaBytes);
|
||||
|
||||
SingleCommand initiv = new SingleCommand("clientinitiv", ProtocolRole.CLIENT);
|
||||
initiv.add(new CommandSingleParameter("alpha", Base64.getEncoder().encodeToString(alphaBytes)));
|
||||
initiv.add(new CommandSingleParameter("omega", getClient().getIdentity().getPublicKeyString()));
|
||||
initiv.add(new CommandSingleParameter("ot", "1")); // constant, set to 1
|
||||
|
||||
Random r = new Random();
|
||||
initiv.add(
|
||||
new CommandSingleParameter(
|
||||
"ip",
|
||||
r.nextInt(255) + "." + r.nextInt(255) + "." + r.nextInt(255) + "." +r.nextInt(255)
|
||||
)
|
||||
);
|
||||
|
||||
return initiv;
|
||||
}
|
||||
|
||||
private void sendClientInit() throws IOException, TimeoutException {
|
||||
Command clientinit = new SingleCommand(
|
||||
"clientinit",
|
||||
|
||||
+2
-6
@@ -31,8 +31,7 @@ import java.io.EOFException;
|
||||
import java.io.IOException;
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.SocketTimeoutException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.nio.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.function.Consumer;
|
||||
@@ -568,13 +567,10 @@ public abstract class AbstractTeamspeakClientSocket
|
||||
}
|
||||
|
||||
// Fragment handling
|
||||
if (networkPacket.getHeader().getType().isSplittable()) {
|
||||
Ts3Debugging.debug("[PROTOCOL] READ " + networkPacket.getHeader().getType().name());
|
||||
|
||||
if (networkPacket.getHeader().getType().isSplittable()) {
|
||||
packet.setBody(new PacketBodyFragment(networkPacket.getHeader().getType(), getRole().getIn()));
|
||||
} else {
|
||||
Ts3Debugging.debug("[PROTOCOL] READ " + networkPacket.getHeader().getType().name());
|
||||
|
||||
if (packet.getHeader().getPacketFlag(HeaderFlag.COMPRESSED) &&
|
||||
packet.getHeader().getType().isCompressible())
|
||||
packet.setBody(new PacketBodyCompressed(networkPacket.getHeader().getType(), getRole().getIn()));
|
||||
|
||||
Reference in New Issue
Block a user