Avatar
Welcome to ScreamingLAB!
To join our community, please login or register!
Internet Explorer: Internet Explorer is not supported. Please upgrade to a more modern browser.
Launcher - LyT

Screaming Launcher - Legalidad y Transparencia


1. Aclaraciones y Requisitos Previos

Screaming Launcher (o ScreamingLABncher) es el launcher oficial de la organización ScreamingLAB. Esta programado en el lenguaje Java en su versión 16 y su objetivo es proveer una herramienta segura, intuitiva y fácil de utilizar para los partícipes de nuestros eventos y para el propio staff

Para poder utilizarlo, este requiere de la Java Virtual Machine instalada y a la par de Java 16 (Java Development Kit 16), que son los básicos para funcionar. También, requiere de un sistema operativo Windows (10 o superior recomendado), Linux o MacOS. Para lograr conectarse, requiere de una cuenta de Microsoft que posea licencia para el juego Minecraft Java Edition.

Su funcionamiento se basa en tres etapas:
1. Inicio de Sesión de Microsoft y Minecraft.
2. Instalación de los Mods y Recursos del evento.
3. Lanzamiento del juego



2. Inicio de Sesión Microsoft y Minecraft

Nuestro launcher (como cualquier otro) para poder inicializar el juego, necesita autenticarse en una Cuenta de Microsoft para asi luego lograr autenticarse con Xbox Services, para asi lograr autenticar una cuenta de Minecraft.

En primer lugar, se inicializa la clase MinecraftAuthenticator, la que es encargada de toda la autenticación. Esta puede incluir un refreshToken (si ya está logueado y se guarda la cuenta) o no.

Sin Refresh Token (Primer Login – Sin cuenta guardada):
1. Genera un Code Verifier, que son 64 bytes aleatorios y convertidos a Base64
2. Genera un Code Challenge a partir de codificar en SHA256 el CodeVerifier


Texto

El contenido generado por IA puede ser incorrecto.


3. Obtiene el URL de autenticación compuesto por: Id del Cliente Azure, Redirect URI (http://localhost:52525/launcherlogin), los Scopes “XboxLive.signin” y “offline_access” y el Code Challenge. Con este, abre la URL la cual redirecciona al inicio de sesión de Microsoft.
4. Se inicia un servidor que hace escucha a http://localhost:52525/launcherlogin esperando que se devuelva la respuesta con el parámetro ‘code’, el cual incluiría el código del inicio de sesión.
5. En caso de no recibir el code, arroja un error. En caso de recibirlo, redirecciona a http://localhost:52525/done para ocultar el código de la barra de búsqueda.
6. Con el código, solicita el token a https://login.microsoftonline.com/consumers/oauth2/v2.0/token, enviándole el Code Verifier, Client ID, Xbox Scopes y el código. Recibe un Access Token, un Refresh Token y un ID Token.


Texto

El contenido generado por IA puede ser incorrecto.

7. Solicita a user.auth.xboxlive.com con el Access Token y recibe un Token, con el cuál realiza otra petición a https://xsts.auth.xboxlive.com/xsts/authorize con el Token recibido, este recibe un Segundo Token (XSTS Token).
8. Con el XSTS Token autentica con Minecraft en https://api.minecraftservices.com/authentication/login_with_xbox utilizando el Token recibido, obteniendo así el Username y Access Token a la cuenta de Minecraft.
9. Con la cuenta de Minecraft, solicita a https://api.minecraftservices.com/minecraft/profile los datos del perfil (UUID, Skins, Capas).


Texto

El contenido generado por IA puede ser incorrecto.

10. Si está marcada la opción guardar cuenta:
  I. En el Sistema Operativo Windows guarda el Refresh Token en AppData/Roaming/ScreamingLABncher/minecraft/datav2.slbn en forma de JSON cifrado por Base64 y luego utilizando Windows DPAPI para encriptarlo (asegurando así que solo ese usuario lo pueda desencriptar [solo Windows podrá, no es algo que un humano puede hacer simplemente]). En caso de no guardarlo, solo genera el archivo, pero sin un token.
II. En Sistemas Operativos Linux y MacOS guarda el Refresh Token en USER_DIR/(creamingLABncher/minecraft/datav2.slbn en forma de JSON cifrado por Base64 y luego cifrado en el algoritmo AES (https://en.wikipedia.org/wiki/Advanced_Encryption_Standard). En caso de no guardarlo, solo genera el archivo, pero sin un token.
USER_DIR es el directorio principal del usuario


Con Refresh Token:
1. Genera un Code Verifier, que son 64 bytes aleatorios y convertidos a Base64
2. Genera un Code Challenge a partir de codificar en SHA256 el CodeVerifier

3. Con el Refresh Token solicita el token a https://login.microsoftonline.com/consumers/oauth2/v2.0/token, enviándole el Code Verifier, Client ID, Xbox Scopes y el código. Recibe un Access Token, un Refresh Token y un ID Token.

4. Solicita a user.auth.xboxlive.com con el Access Token y recibe un Token, con el cuál realiza otra petición a https://xsts.auth.xboxlive.com/xsts/authorize con el Token recibido, este recibe un Segundo Token (XSTS Token).
5. Con el XSTS Token autentica con Minecraft en https://api.minecraftservices.com/authentication/login_with_xbox utilizando el Token recibido, obteniendo así el Username y Access Token a la cuenta de Minecraft.
6. Con la cuenta de Minecraft, solicita a https://api.minecraftservices.com/minecraft/profile los datos del perfil (UUID, Skins, Capas).