From 6650184a1baa900e98f33585fd6e5fe6fc921263 Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Fri, 17 Dec 2021 00:38:46 +0800 Subject: [PATCH] feat: decodeSidExpiredPacket --- client/builders.go | 4 ++-- client/client.go | 3 ++- client/decoders.go | 11 +++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/client/builders.go b/client/builders.go index 69a0d1c5..3a370a28 100644 --- a/client/builders.go +++ b/client/builders.go @@ -361,13 +361,13 @@ func (c *QQClient) buildRequestTgtgtNopicsigPacket() (uint16, []byte) { return seq, packet } -func (c *QQClient) buildRequestChangeSigPacket() (uint16, []byte) { +func (c *QQClient) buildRequestChangeSigPacket(mainSigMap uint32) (uint16, []byte) { seq := c.nextSeq() req := packets.BuildOicqRequestPacket(c.Uin, 0x0810, c.ecdh, c.RandomKey, func(w *binary.Writer) { w.WriteUInt16(11) w.WriteUInt16(17) - w.Write(tlv.T100(c.version.SSOVersion, 100, c.version.MainSigMap)) + w.Write(tlv.T100(c.version.SSOVersion, 100, mainSigMap)) w.Write(tlv.T10A(c.sigInfo.tgt)) w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap)) w.Write(tlv.T108(c.ksid)) diff --git a/client/client.go b/client/client.go index 40e92d71..9a0127ec 100644 --- a/client/client.go +++ b/client/client.go @@ -163,6 +163,7 @@ var decoders = map[string]func(*QQClient, *incomingPacketInfo, []byte) (interfac "MessageSvc.PushNotify": decodeSvcNotify, "OnlinePush.ReqPush": decodeOnlinePushReqPacket, "OnlinePush.PbPushTransMsg": decodeOnlinePushTransPacket, + "OnlinePush.SidTicketExpired": decodeSidExpiredPacket, "ConfigPushSvc.PushReq": decodePushReqPacket, "MessageSvc.PbGetMsg": decodeMessageSvcPacket, "MessageSvc.PushForceOffline": decodeForceOfflinePacket, @@ -327,7 +328,7 @@ func (c *QQClient) TokenLogin(token []byte) error { // SystemDeviceInfo.TgtgtKey = r.ReadBytesShort() c.deviceInfo.TgtgtKey = r.ReadBytesShort() } - _, err = c.sendAndWait(c.buildRequestChangeSigPacket()) + _, err = c.sendAndWait(c.buildRequestChangeSigPacket(c.version.MainSigMap)) if err != nil { return err } diff --git a/client/decoders.go b/client/decoders.go index 731fff34..590216e5 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -793,6 +793,17 @@ func decodeWordSegmentation(_ *QQClient, _ *incomingPacketInfo, payload []byte) return nil, errors.New("no word received") } +func decodeSidExpiredPacket(c *QQClient, _ *incomingPacketInfo, _ []byte) (interface{}, error) { + _, err := c.sendAndWait(c.buildRequestChangeSigPacket(3554528)) + if err != nil { + return nil, errors.Wrap(err, "resign client error") + } + if err = c.registerClient(); err != nil { + return nil, errors.Wrap(err, "register error") + } + return nil, nil +} + /* unused // LightAppSvc.mini_app_info.GetAppInfoById func decodeAppInfoResponse(_ *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) {