mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-09 18:00:33 +08:00
Fixed bugs
This commit is contained in:
parent
97c86eba64
commit
23c060fb44
@ -2,12 +2,12 @@ package net.mamoe.mirai.event.events.network;
|
|||||||
|
|
||||||
import net.mamoe.mirai.Bot;
|
import net.mamoe.mirai.Bot;
|
||||||
import net.mamoe.mirai.event.Cancellable;
|
import net.mamoe.mirai.event.Cancellable;
|
||||||
|
import net.mamoe.mirai.network.packet.ServerCatchaPacket;
|
||||||
import net.mamoe.mirai.network.packet.ServerPacket;
|
import net.mamoe.mirai.network.packet.ServerPacket;
|
||||||
import net.mamoe.mirai.network.packet.ServerVerificationCodePacket;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务器接到某数据包时触发这个事件.
|
* 服务器接到某数据包时触发这个事件.
|
||||||
* 注意, 当接收到数据包的加密包(如 {@link ServerVerificationCodePacket.Encrypted})也会触发这个事件, 随后才会
|
* 注意, 当接收到数据包的加密包(如 {@link ServerCatchaPacket.Encrypted})也会触发这个事件, 随后才会
|
||||||
*
|
*
|
||||||
* @author Him188moe
|
* @author Him188moe
|
||||||
*/
|
*/
|
||||||
|
@ -290,7 +290,7 @@ internal class BotNetworkHandlerImpl(private val bot: Bot) : BotNetworkHandler {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
is ServerVerificationCodeCorrectPacket -> {
|
is ServerCaptchaCorrectPacket -> {
|
||||||
this.randomTgtgtKey = getRandomByteArray(16)
|
this.randomTgtgtKey = getRandomByteArray(16)
|
||||||
this.token00BA = packet.token00BA
|
this.token00BA = packet.token00BA
|
||||||
socket.sendPacket(ClientLoginResendPacket3105(bot.account.qqNumber, bot.account.password, this.loginTime, this.loginIP, this.randomTgtgtKey, this.token0825, this.token00BA))
|
socket.sendPacket(ClientLoginResendPacket3105(bot.account.qqNumber, bot.account.password, this.loginTime, this.loginIP, this.randomTgtgtKey, this.token0825, this.token00BA))
|
||||||
@ -307,8 +307,8 @@ internal class BotNetworkHandlerImpl(private val bot: Bot) : BotNetworkHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is ServerVerificationCodeTransmissionPacket -> {
|
is ServerCaptchaTransmissionPacket -> {
|
||||||
if (packet is ServerVerificationCodeWrongPacket) {
|
if (packet is ServerCaptchaWrongPacket) {
|
||||||
bot.error("验证码错误, 请重新输入")
|
bot.error("验证码错误, 请重新输入")
|
||||||
captchaSectionId = 1
|
captchaSectionId = 1
|
||||||
this.captchaCache = byteArrayOf()
|
this.captchaCache = byteArrayOf()
|
||||||
@ -390,7 +390,7 @@ internal class BotNetworkHandlerImpl(private val bot: Bot) : BotNetworkHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
is ServerVerificationCodePacket.Encrypted -> socket.distributePacket(packet.decrypt())
|
is ServerCatchaPacket.Encrypted -> socket.distributePacket(packet.decrypt())
|
||||||
is ServerLoginResponseVerificationCodeInitPacket.Encrypted -> socket.distributePacket(packet.decrypt())
|
is ServerLoginResponseVerificationCodeInitPacket.Encrypted -> socket.distributePacket(packet.decrypt())
|
||||||
is ServerLoginResponseKeyExchangePacket.Encrypted -> socket.distributePacket(packet.decrypt(this.randomTgtgtKey))
|
is ServerLoginResponseKeyExchangePacket.Encrypted -> socket.distributePacket(packet.decrypt(this.randomTgtgtKey))
|
||||||
is ServerLoginResponseSuccessPacket.Encrypted -> socket.distributePacket(packet.decrypt(this.randomTgtgtKey))
|
is ServerLoginResponseSuccessPacket.Encrypted -> socket.distributePacket(packet.decrypt(this.randomTgtgtKey))
|
||||||
|
@ -111,7 +111,7 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
|
|||||||
|
|
||||||
"00 58" -> ServerHeartbeatResponsePacket(stream)
|
"00 58" -> ServerHeartbeatResponsePacket(stream)
|
||||||
|
|
||||||
"00 BA" -> ServerVerificationCodePacket.Encrypted(stream, idHex)
|
"00 BA" -> ServerCatchaPacket.Encrypted(stream, idHex)
|
||||||
|
|
||||||
|
|
||||||
"00 CE", "00 17" -> ServerEventPacket.Raw.Encrypted(stream, idHex.hexToBytes())
|
"00 CE", "00 17" -> ServerEventPacket.Raw.Encrypted(stream, idHex.hexToBytes())
|
||||||
|
@ -126,7 +126,7 @@ class ClientVerificationCodeRefreshPacket(
|
|||||||
* 验证码输入错误, 同时也会给一部分验证码
|
* 验证码输入错误, 同时也会给一部分验证码
|
||||||
*/
|
*/
|
||||||
@PacketId("00 BA 32")
|
@PacketId("00 BA 32")
|
||||||
class ServerVerificationCodeWrongPacket(input: DataInputStream, dataSize: Int, packetId: ByteArray) : ServerVerificationCodeTransmissionPacket(input, dataSize, packetId)
|
class ServerCaptchaWrongPacket(input: DataInputStream, dataSize: Int, packetId: ByteArray) : ServerCaptchaTransmissionPacket(input, dataSize, packetId)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务器发送验证码图片文件一部分过来
|
* 服务器发送验证码图片文件一部分过来
|
||||||
@ -134,7 +134,7 @@ class ServerVerificationCodeWrongPacket(input: DataInputStream, dataSize: Int, p
|
|||||||
* @author Him188moe
|
* @author Him188moe
|
||||||
*/
|
*/
|
||||||
@PacketId("00 BA 31")
|
@PacketId("00 BA 31")
|
||||||
open class ServerVerificationCodeTransmissionPacket(input: DataInputStream, private val dataSize: Int, private val packetId: ByteArray) : ServerVerificationCodePacket(input) {
|
open class ServerCaptchaTransmissionPacket(input: DataInputStream, private val dataSize: Int, private val packetId: ByteArray) : ServerCatchaPacket(input) {
|
||||||
|
|
||||||
lateinit var captchaSectionN: ByteArray
|
lateinit var captchaSectionN: ByteArray
|
||||||
lateinit var verificationToken: ByteArray//56bytes
|
lateinit var verificationToken: ByteArray//56bytes
|
||||||
@ -177,7 +177,7 @@ fun main() {
|
|||||||
* @author Him188moe
|
* @author Him188moe
|
||||||
*/
|
*/
|
||||||
@PacketId("00 BA 32")
|
@PacketId("00 BA 32")
|
||||||
class ServerVerificationCodeCorrectPacket(input: DataInputStream) : ServerVerificationCodePacket(input) {
|
class ServerCaptchaCorrectPacket(input: DataInputStream) : ServerCatchaPacket(input) {
|
||||||
|
|
||||||
lateinit var token00BA: ByteArray//56 bytes
|
lateinit var token00BA: ByteArray//56 bytes
|
||||||
|
|
||||||
@ -187,24 +187,24 @@ class ServerVerificationCodeCorrectPacket(input: DataInputStream) : ServerVerifi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class ServerVerificationCodePacket(input: DataInputStream) : ServerPacket(input) {
|
abstract class ServerCatchaPacket(input: DataInputStream) : ServerPacket(input) {
|
||||||
|
|
||||||
@PacketId("00 BA")
|
@PacketId("00 BA")
|
||||||
class Encrypted(input: DataInputStream, private val id: String) : ServerPacket(input) {
|
class Encrypted(input: DataInputStream, private val id: String) : ServerPacket(input) {
|
||||||
|
|
||||||
fun decrypt(): ServerVerificationCodePacket {
|
fun decrypt(): ServerCatchaPacket {
|
||||||
this.input goto 14
|
this.input goto 14
|
||||||
val data = TEA.decrypt(this.input.readAllBytes().cutTail(1), Protocol.key00BA.hexToBytes())
|
val data = TEA.decrypt(this.input.readAllBytes().cutTail(1), Protocol.key00BA.hexToBytes())
|
||||||
if (id.startsWith("00 BA 32")) {
|
if (id.startsWith("00 BA 32")) {
|
||||||
return when (data.size) {
|
return when (data.size) {
|
||||||
66,
|
66,
|
||||||
95 -> ServerVerificationCodeCorrectPacket(data.dataInputStream())
|
95 -> ServerCaptchaCorrectPacket(data.dataInputStream())
|
||||||
//66 -> ServerVerificationCodeUnknownPacket(data.dataInputStream())
|
//66 -> ServerVerificationCodeUnknownPacket(data.dataInputStream())
|
||||||
else -> return ServerVerificationCodeWrongPacket(data.dataInputStream(), data.size, this.input.readNBytesAt(3, 4))
|
else -> return ServerCaptchaWrongPacket(data.dataInputStream(), data.size, this.input.readNBytesAt(3, 4))
|
||||||
}.setId(this.idHex)
|
}.setId(this.idHex)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ServerVerificationCodeTransmissionPacket(data.dataInputStream(), data.size, this.input.readNBytesAt(3, 4)).setId(this.idHex)
|
return ServerCaptchaTransmissionPacket(data.dataInputStream(), data.size, this.input.readNBytesAt(3, 4)).setId(this.idHex)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getFixedId(): String = this.getFixedId(id)
|
override fun getFixedId(): String = this.getFixedId(id)
|
||||||
|
Loading…
Reference in New Issue
Block a user