added RSA block debugging

This commit is contained in:
Ryan 2022-01-23 11:14:16 +00:00
parent 482cf71a94
commit f038acfe33

View file

@ -23,6 +23,7 @@ import rs09.game.world.repository.Repository
import java.lang.Runnable import java.lang.Runnable
import java.math.BigInteger import java.math.BigInteger
import java.nio.ByteBuffer import java.nio.ByteBuffer
import java.util.*
/** /**
* Handles login reading events. * Handles login reading events.
@ -36,6 +37,7 @@ class LoginReadEvent
*/ */
(session: IoSession?, buffer: ByteBuffer?) : IoReadEvent(session, buffer) { (session: IoSession?, buffer: ByteBuffer?) : IoReadEvent(session, buffer) {
override fun read(session: IoSession, buffer: ByteBuffer) { override fun read(session: IoSession, buffer: ByteBuffer) {
SystemLogger.logInfo("login read")
val opcode: Int = buffer.get().toInt() val opcode: Int = buffer.get().toInt()
if (buffer.short.toInt() != buffer.remaining()) { if (buffer.short.toInt() != buffer.remaining()) {
session.write(Response.BAD_SESSION_ID) session.write(Response.BAD_SESSION_ID)
@ -64,6 +66,7 @@ class LoginReadEvent
* @param buffer The buffer to read from. * @param buffer The buffer to read from.
*/ */
private fun decodeWorld(opcode: Int, session: IoSession, buffer: ByteBuffer) { private fun decodeWorld(opcode: Int, session: IoSession, buffer: ByteBuffer) {
SystemLogger.logInfo("decodeWorld")
var buffer = buffer var buffer = buffer
val d = buffer.get() // Memory? val d = buffer.get() // Memory?
val e = buffer.get() // no advertisement = 1 val e = buffer.get() // no advertisement = 1
@ -103,6 +106,7 @@ class LoginReadEvent
session.isaacPair = ISAACPair(inCipher, outCipher) session.isaacPair = ISAACPair(inCipher, outCipher)
session.clientInfo = ClientInfo(displayMode, windowMode, screenWidth, screenHeight) session.clientInfo = ClientInfo(displayMode, windowMode, screenWidth, screenHeight)
val b = buffer val b = buffer
SystemLogger.logInfo("spawning thread to handle login")
TaskExecutor.executeSQL { TaskExecutor.executeSQL {
Thread.currentThread().name = "Login Password Response" Thread.currentThread().name = "Login Password Response"
try { try {
@ -118,6 +122,7 @@ class LoginReadEvent
e.printStackTrace() e.printStackTrace()
session.write(Response.COULD_NOT_LOGIN) session.write(Response.COULD_NOT_LOGIN)
} }
SystemLogger.logInfo("end login thread")
} }
} }
@ -131,6 +136,7 @@ class LoginReadEvent
*/ */
@JvmStatic @JvmStatic
private fun login(details: PlayerDetails, session: IoSession, buffer: ByteBuffer, opcode: Int) { private fun login(details: PlayerDetails, session: IoSession, buffer: ByteBuffer, opcode: Int) {
SystemLogger.logInfo("login")
if(!Repository.LOGGED_IN_PLAYERS.contains(details.username)) if(!Repository.LOGGED_IN_PLAYERS.contains(details.username))
Repository.LOGGED_IN_PLAYERS.add(details.username) Repository.LOGGED_IN_PLAYERS.add(details.username)
val parser = LoginParser(details, LoginType.fromType(opcode)) val parser = LoginParser(details, LoginType.fromType(opcode))
@ -150,6 +156,7 @@ class LoginReadEvent
*/ */
@JvmStatic @JvmStatic
fun getISAACSeed(buffer: ByteBuffer): IntArray { fun getISAACSeed(buffer: ByteBuffer): IntArray {
SystemLogger.logInfo("getISAACSeed")
val seed = IntArray(4) val seed = IntArray(4)
for (i in 0..3) { for (i in 0..3) {
seed[i] = buffer.int seed[i] = buffer.int
@ -164,6 +171,9 @@ class LoginReadEvent
*/ */
@JvmStatic @JvmStatic
fun getRSABlock(buffer: ByteBuffer): ByteBuffer { fun getRSABlock(buffer: ByteBuffer): ByteBuffer {
SystemLogger.logInfo("getRSABlock")
fun ByteArray.toHex(): String = joinToString(separator = "") { eachByte -> "%02x".format(eachByte) }
SystemLogger.logInfo(buffer.array().sliceArray(0..1500).toHex())
val numBytes = 256 + buffer.get() val numBytes = 256 + buffer.get()
val encryptedByteArray = ByteArray(numBytes) val encryptedByteArray = ByteArray(numBytes)
buffer.get(encryptedByteArray) buffer.get(encryptedByteArray)