diff --git a/.gitignore b/.gitignore index 1714241..9924c6e 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ build/test/* build/stringer.jar !buildnumber +build.sh Launcher.jar LaunchServer.jar diff --git a/LaunchServer/source/auth/handler/FileAuthHandler.java b/LaunchServer/source/auth/handler/FileAuthHandler.java index 09a8971..d4fca35 100644 --- a/LaunchServer/source/auth/handler/FileAuthHandler.java +++ b/LaunchServer/source/auth/handler/FileAuthHandler.java @@ -251,7 +251,8 @@ username = VerifyHelper.verifyUsername(input.readString(64)); if (input.readBoolean()) { - accessToken = SecurityHelper.verifyToken(input.readASCII(-SecurityHelper.TOKEN_STRING_LENGTH)); + int length = input.readInt(); + accessToken = SecurityHelper.verifyToken(input.readASCII(-length)); if (input.readBoolean()) { serverID = JoinServerRequest.verifyServerID(input.readASCII(41)); @@ -266,7 +267,8 @@ output.writeBoolean(accessToken != null); if (accessToken != null) { - output.writeASCII(accessToken, -SecurityHelper.TOKEN_STRING_LENGTH); + output.writeInt(accessToken.length()); + output.writeASCII(accessToken, -accessToken.length()); output.writeBoolean(serverID != null); if (serverID != null) { diff --git a/LaunchServer/source/response/auth/AuthResponse.java b/LaunchServer/source/response/auth/AuthResponse.java index f084348..ab2e70f 100644 --- a/LaunchServer/source/response/auth/AuthResponse.java +++ b/LaunchServer/source/response/auth/AuthResponse.java @@ -130,6 +130,7 @@ // Write profile and UUID ProfileByUUIDResponse.getProfile(server, uuid, result.username).write(output); - output.writeASCII(result.accessToken, -SecurityHelper.TOKEN_STRING_LENGTH); + output.writeInt(result.accessToken.length()); + output.writeASCII(result.accessToken, -result.accessToken.length()); } } diff --git a/LaunchServer/source/response/auth/JoinServerResponse.java b/LaunchServer/source/response/auth/JoinServerResponse.java index 4910167..ac42097 100644 --- a/LaunchServer/source/response/auth/JoinServerResponse.java +++ b/LaunchServer/source/response/auth/JoinServerResponse.java @@ -23,7 +23,8 @@ public void reply() throws IOException { String username = VerifyHelper.verifyUsername(input.readString(64)); - String accessToken = SecurityHelper.verifyToken(input.readASCII(-SecurityHelper.TOKEN_STRING_LENGTH)); + int length = input.readInt(); + String accessToken = SecurityHelper.verifyToken(input.readASCII(-length)); String serverID = JoinServerRequest.verifyServerID(input.readASCII(41)); // With minus sign // Try join server with auth handler diff --git a/Launcher/source/client/ClientLauncher.java b/Launcher/source/client/ClientLauncher.java index 9f28f5a..c4f6929 100644 --- a/Launcher/source/client/ClientLauncher.java +++ b/Launcher/source/client/ClientLauncher.java @@ -434,7 +434,8 @@ // Client params pp = new PlayerProfile(input); - accessToken = SecurityHelper.verifyToken(input.readASCII(-SecurityHelper.TOKEN_STRING_LENGTH)); + int length = input.readInt(); + accessToken = SecurityHelper.verifyToken(input.readASCII(-length)); autoEnter = input.readBoolean(); fullScreen = input.readBoolean(); ram = input.readVarInt(); @@ -453,7 +454,8 @@ // Client params pp.write(output); - output.writeASCII(accessToken, -SecurityHelper.TOKEN_STRING_LENGTH); + output.writeInt(accessToken.length()); + output.writeASCII(accessToken, -accessToken.length()); output.writeBoolean(autoEnter); output.writeBoolean(fullScreen); output.writeVarInt(ram); diff --git a/Launcher/source/helper/SecurityHelper.java b/Launcher/source/helper/SecurityHelper.java index c724e6d..3095b59 100644 --- a/Launcher/source/helper/SecurityHelper.java +++ b/Launcher/source/helper/SecurityHelper.java @@ -35,8 +35,8 @@ // Algorithm size constants @LauncherAPI public static final int TOKEN_LENGTH = 16; - @LauncherAPI - public static final int TOKEN_STRING_LENGTH = TOKEN_LENGTH << 1; + /* @LauncherAPI + public static final int TOKEN_STRING_LENGTH = TOKEN_LENGTH << 1;*/ @LauncherAPI public static final int RSA_KEY_LENGTH_BITS = 2048; @LauncherAPI @@ -199,7 +199,13 @@ @LauncherAPI public static boolean isValidToken(CharSequence token) { - return token.length() == TOKEN_STRING_LENGTH && token.chars().allMatch(ch -> HEX.indexOf(ch) >= 0); + // return token.length() == TOKEN_STRING_LENGTH && token.chars().allMatch(ch -> HEX.indexOf(ch) >= 0); + return token.chars().allMatch(ch ->{ + if(HEX.indexOf(ch) >= 0) + return true; + System.err.printf("Char '%s' isInvalid!\n",ch); + return false; + }); } @LauncherAPI diff --git a/Launcher/source/request/auth/AuthRequest.java b/Launcher/source/request/auth/AuthRequest.java index eaacd73..aa560ed 100644 --- a/Launcher/source/request/auth/AuthRequest.java +++ b/Launcher/source/request/auth/AuthRequest.java @@ -47,7 +47,8 @@ // Read UUID and access token readError(input); PlayerProfile pp = new PlayerProfile(input); - String accessToken = input.readASCII(-SecurityHelper.TOKEN_STRING_LENGTH); + int jwt_length = input.readInt(); + String accessToken = input.readASCII(jwt_length); return new Result(pp, accessToken); } diff --git a/Launcher/source/request/auth/JoinServerRequest.java b/Launcher/source/request/auth/JoinServerRequest.java index 9b9d130..f157cd1 100644 --- a/Launcher/source/request/auth/JoinServerRequest.java +++ b/Launcher/source/request/auth/JoinServerRequest.java @@ -58,7 +58,8 @@ protected Boolean requestDo(HInput input, HOutput output) throws IOException { output.writeString(username, 64); - output.writeASCII(accessToken, -SecurityHelper.TOKEN_STRING_LENGTH); + output.writeInt(accessToken.length()); + output.writeASCII(accessToken, -accessToken.length()); output.writeASCII(serverID, 41); // 1 char for minus sign output.flush(); diff --git a/build.sh b/build.sh index 7ee6717..e429673 100644 --- a/build.sh +++ b/build.sh @@ -1,15 +1,15 @@ #!/bin/sh # История одного buildnumber -echo -n $(($(cat buildnumber | cut -d ',' -f 1)+1)), $(date +'%d.%m.%Y') > buildnumber.txt -mv buildnumber.txt buildnumber +#echo -n $(($(cat buildnumber | cut -d ',' -f 1)+1)), $(date +'%d.%m.%Y') > buildnumber.txt +#mv buildnumber.txt buildnumber # Build Launcher.jar echo Building Launcher.jar... -jar -uf Launcher.jar buildnumber -java -jar build/proguard.jar @Launcher.pro -rm Launcher.jar -mv Launcher-obf.jar Launcher.jar +#jar -uf Launcher.jar buildnumber +#java -jar build/proguard.jar @Launcher.pro +#rm Launcher.jar +#mv Launcher-obf.jar Launcher.jar # java -jar build/stringer.jar -configFile Launcher.stringer Launcher.jar Launcher.jar pack200 -E9 -Htrue -mlatest -Upass -r Launcher.jar jarsigner -keystore build/keeperjerry.jks -storepass PSP1448 -sigfile LAUNCHER Launcher.jar keeperjerry @@ -17,7 +17,7 @@ # Build LaunchServer.jar echo Building LaunchServer.jar... -jar -uf LaunchServer.jar Launcher.pack.gz buildnumber +jar -uf LaunchServer.jar Launcher.pack.gz #buildnumber pack200 -E9 -Htrue -mlatest -Upass -r LaunchServer.jar jarsigner -keystore build/keeperjerry.jks -storepass PSP1448 -sigfile LAUNCHER LaunchServer.jar keeperjerry rm Launcher.pack.gz \ No newline at end of file