mirror of
https://github.com/PretendoNetwork/super-mario-maker.git
synced 2026-08-02 08:32:15 -05:00
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
nex "github.com/PretendoNetwork/nex-go"
|
|
)
|
|
|
|
func connect(packet *nex.PacketV1) {
|
|
payload := packet.Payload()
|
|
|
|
stream := nex.NewStreamIn(payload, nexServer)
|
|
|
|
_, _ = stream.ReadBuffer()
|
|
checkData, _ := stream.ReadBuffer()
|
|
|
|
sessionKey := make([]byte, nexServer.KerberosKeySize())
|
|
|
|
kerberos := nex.NewKerberosEncryption(sessionKey)
|
|
|
|
checkDataDecrypted := kerberos.Decrypt(checkData)
|
|
checkDataStream := nex.NewStreamIn(checkDataDecrypted, nexServer)
|
|
|
|
userPID := checkDataStream.ReadUInt32LE() // User PID
|
|
packet.Sender().SetPID(userPID)
|
|
_ = checkDataStream.ReadUInt32LE() //CID of secure server station url
|
|
responseCheck := checkDataStream.ReadUInt32LE()
|
|
|
|
responseValueStream := nex.NewStreamOut(nexServer)
|
|
responseValueStream.WriteUInt32LE(responseCheck + 1)
|
|
|
|
responseValueBufferStream := nex.NewStreamOut(nexServer)
|
|
responseValueBufferStream.WriteBuffer(responseValueStream.Bytes())
|
|
|
|
nexServer.AcknowledgePacket(packet, responseValueBufferStream.Bytes())
|
|
|
|
packet.Sender().UpdateRC4Key(sessionKey)
|
|
packet.Sender().SetSessionKey(sessionKey)
|
|
}
|