mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-10 20:20:08 +08:00
Fix sync cookie
This commit is contained in:
parent
18cf5621d0
commit
dc0df986ba
@ -108,7 +108,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
|||||||
*/
|
*/
|
||||||
val data = FriendList.GetTroopList(
|
val data = FriendList.GetTroopList(
|
||||||
bot.client
|
bot.client
|
||||||
).sendAndExpect<FriendList.GetFriendGroupList.Response>()
|
).sendAndExpect<FriendList.GetTroopList.Response>()
|
||||||
println(data.contentToString())
|
println(data.contentToString())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ internal open class QQAndroidClient(
|
|||||||
val protocolVersion: Short = 8001
|
val protocolVersion: Short = 8001
|
||||||
|
|
||||||
class C2cMessageSyncData {
|
class C2cMessageSyncData {
|
||||||
var syncCookie = EMPTY_BYTE_ARRAY
|
var syncCookie: ByteArray? = null
|
||||||
var pubAccountCookie = EMPTY_BYTE_ARRAY
|
var pubAccountCookie = EMPTY_BYTE_ARRAY
|
||||||
var syncFlag: Int = 0
|
var syncFlag: Int = 0
|
||||||
var msgCtrlBuf: ByteArray = EMPTY_BYTE_ARRAY
|
var msgCtrlBuf: ByteArray = EMPTY_BYTE_ARRAY
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
|
||||||
|
|
||||||
|
import kotlinx.serialization.SerialId
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import net.mamoe.mirai.qqandroid.io.ProtoBuf
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
class SyncCookie(
|
||||||
|
@SerialId(2) val time: Long,
|
||||||
|
@SerialId(3) val unknown1: Long = 2994099792,
|
||||||
|
@SerialId(4) val unknown2: Long = 3497826378,
|
||||||
|
@SerialId(5) val const1: Long = 1680172298,
|
||||||
|
@SerialId(6) val const2: Long = 2424173273,
|
||||||
|
@SerialId(7) val unknown3: Long = 83,
|
||||||
|
@SerialId(8) val unknown4: Long = 0
|
||||||
|
) : ProtoBuf
|
@ -10,6 +10,7 @@ import net.mamoe.mirai.qqandroid.QQAndroidBot
|
|||||||
import net.mamoe.mirai.qqandroid.event.ForceOfflineEvent
|
import net.mamoe.mirai.qqandroid.event.ForceOfflineEvent
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.readRemainingAsProtoBuf
|
import net.mamoe.mirai.qqandroid.io.serialization.readRemainingAsProtoBuf
|
||||||
|
import net.mamoe.mirai.qqandroid.io.serialization.toByteArray
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.writeProtoBuf
|
import net.mamoe.mirai.qqandroid.io.serialization.writeProtoBuf
|
||||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushForceOffline
|
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushForceOffline
|
||||||
@ -17,6 +18,7 @@ import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushNotify
|
|||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc
|
||||||
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.SyncCookie
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
|
import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
|
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
||||||
@ -41,7 +43,7 @@ internal class MessageSvc {
|
|||||||
|
|
||||||
override suspend fun QQAndroidBot.handle(packet: RequestPushNotify) {
|
override suspend fun QQAndroidBot.handle(packet: RequestPushNotify) {
|
||||||
network.run {
|
network.run {
|
||||||
PbGetMsg(client, packet).sendAndExpect<MultiPacket<FriendMessage>>()
|
PbGetMsg(client, packet.stMsgInfo?.uMsgTime ?: 0).sendAndExpect<MultiPacket<FriendMessage>>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -56,7 +58,7 @@ internal class MessageSvc {
|
|||||||
|
|
||||||
operator fun invoke(
|
operator fun invoke(
|
||||||
client: QQAndroidClient,
|
client: QQAndroidClient,
|
||||||
from: RequestPushNotify
|
msgTime: Long //PbPushMsg.msg.msgHead.msgTime
|
||||||
): OutgoingPacket = buildOutgoingUniPacket(
|
): OutgoingPacket = buildOutgoingUniPacket(
|
||||||
client,
|
client,
|
||||||
extraData = EXTRA_DATA.toReadPacket()
|
extraData = EXTRA_DATA.toReadPacket()
|
||||||
@ -64,14 +66,16 @@ internal class MessageSvc {
|
|||||||
writeProtoBuf(
|
writeProtoBuf(
|
||||||
MsgSvc.PbGetMsgReq.serializer(),
|
MsgSvc.PbGetMsgReq.serializer(),
|
||||||
MsgSvc.PbGetMsgReq(
|
MsgSvc.PbGetMsgReq(
|
||||||
msgReqType = from.ctype.toInt(),
|
msgReqType = 1, // from.ctype.toInt()
|
||||||
contextFlag = 1,
|
contextFlag = 1,
|
||||||
rambleFlag = 0,
|
rambleFlag = 0,
|
||||||
latestRambleNumber = 20,
|
latestRambleNumber = 20,
|
||||||
otherRambleNumber = 3,
|
otherRambleNumber = 3,
|
||||||
onlineSyncFlag = 1,
|
onlineSyncFlag = 1,
|
||||||
|
whisperSessionId = 0,
|
||||||
// serverBuf = from.serverBuf ?: EMPTY_BYTE_ARRAY,
|
// serverBuf = from.serverBuf ?: EMPTY_BYTE_ARRAY,
|
||||||
syncCookie = client.c2cMessageSync.syncCookie,
|
syncCookie = client.c2cMessageSync.syncCookie
|
||||||
|
?: SyncCookie(msgTime).toByteArray(SyncCookie.serializer()).also { client.c2cMessageSync.syncCookie = it },
|
||||||
syncFlag = 1
|
syncFlag = 1
|
||||||
// syncFlag = client.c2cMessageSync.syncFlag,
|
// syncFlag = client.c2cMessageSync.syncFlag,
|
||||||
//msgCtrlBuf = client.c2cMessageSync.msgCtrlBuf,
|
//msgCtrlBuf = client.c2cMessageSync.msgCtrlBuf,
|
||||||
|
@ -3,7 +3,10 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.list
|
|||||||
import kotlinx.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.*
|
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
||||||
|
import net.mamoe.mirai.qqandroid.io.serialization.jceRequestSBuffer
|
||||||
|
import net.mamoe.mirai.qqandroid.io.serialization.toByteArray
|
||||||
|
import net.mamoe.mirai.qqandroid.io.serialization.writeJceStruct
|
||||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListReq
|
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListReq
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListResp
|
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListResp
|
||||||
@ -15,7 +18,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
|
|||||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
|
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
||||||
import net.mamoe.mirai.utils.cryptor.contentToString
|
import net.mamoe.mirai.utils.cryptor.contentToString
|
||||||
import net.mamoe.mirai.utils.io.debugPrint
|
|
||||||
import net.mamoe.mirai.utils.io.discardExact
|
import net.mamoe.mirai.utils.io.discardExact
|
||||||
import net.mamoe.mirai.utils.io.readRemainingBytes
|
import net.mamoe.mirai.utils.io.readRemainingBytes
|
||||||
import net.mamoe.mirai.utils.io.toUHexString
|
import net.mamoe.mirai.utils.io.toUHexString
|
||||||
@ -24,7 +26,7 @@ import net.mamoe.mirai.utils.io.toUHexString
|
|||||||
internal class FriendList {
|
internal class FriendList {
|
||||||
|
|
||||||
internal object GetTroopList : PacketFactory<GetTroopList.Response>("friendlist.GetTroopListReqV2") {
|
internal object GetTroopList : PacketFactory<GetTroopList.Response>("friendlist.GetTroopListReqV2") {
|
||||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): GetTroopList.Response {
|
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||||
println("获取到了GetTroopList的回信")
|
println("获取到了GetTroopList的回信")
|
||||||
println(this.readRemainingBytes().toUHexString())
|
println(this.readRemainingBytes().toUHexString())
|
||||||
return Response()
|
return Response()
|
||||||
|
Loading…
Reference in New Issue
Block a user