From f75561a2c0b1745e230c76b6330a7ddc119a7389 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Sun, 21 Mar 2021 10:53:41 +0800 Subject: [PATCH] remove qrcode login limit. --- client/builders.go | 10 ++++++---- client/client.go | 3 --- client/decoders.go | 3 --- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/client/builders.go b/client/builders.go index c6aefa3b..a6bf3a81 100644 --- a/client/builders.go +++ b/client/builders.go @@ -112,6 +112,7 @@ func (c *QQClient) buildDeviceLockLoginPacket() (uint16, []byte) { } func (c *QQClient) buildQRCodeFetchRequestPacket() (uint16, []byte) { + watch := genVersionInfo(AndroidWatch) seq := c.nextSeq() req := packets.BuildOicqRequestPacket(0, 0x812, crypto.ECDH, c.RandomKey, func(w *binary.Writer) { w.WriteHex(`0001110000001000000072000000`) // trans header @@ -124,20 +125,21 @@ func (c *QQClient) buildQRCodeFetchRequestPacket() (uint16, []byte) { w.WriteBytesShort(EmptyBytes) w.WriteUInt16(6) - w.Write(tlv.T16(c.version.SSOVersion, 16, c.version.AppId, SystemDeviceInfo.Guid, []byte(c.version.ApkId), []byte(c.version.SortVersionName), c.version.ApkSign)) + w.Write(tlv.T16(watch.SSOVersion, 16, watch.AppId, SystemDeviceInfo.Guid, []byte(watch.ApkId), []byte(watch.SortVersionName), watch.ApkSign)) w.Write(tlv.T1B(0, 0, 3, 4, 72, 2, 2)) - w.Write(tlv.T1D(c.version.MiscBitmap)) + w.Write(tlv.T1D(watch.MiscBitmap)) w.Write(tlv.T1F(false, SystemDeviceInfo.OSType, []byte("7.1.2"), []byte("China Mobile GSM"), SystemDeviceInfo.APN, 2)) w.Write(tlv.T33(SystemDeviceInfo.Guid)) w.Write(tlv.T35(8)) })) }) - sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid) + sso := packets.BuildSsoPacket(seq, watch.AppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid) packet := packets.BuildLoginPacket(0, 2, make([]byte, 16), sso, []byte{}) return seq, packet } func (c *QQClient) buildQRCodeResultQueryRequestPacket(sig []byte) (uint16, []byte) { + watch := genVersionInfo(AndroidWatch) seq := c.nextSeq() req := packets.BuildOicqRequestPacket(0, 0x812, crypto.ECDH, c.RandomKey, func(w *binary.Writer) { w.WriteHex(`0000620000001000000072000000`) // trans header @@ -154,7 +156,7 @@ func (c *QQClient) buildQRCodeResultQueryRequestPacket(sig []byte) (uint16, []by w.WriteUInt16(0) // const })) }) - sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid) + sso := packets.BuildSsoPacket(seq, watch.AppId, "wtlogin.trans_emp", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid) packet := packets.BuildLoginPacket(0, 2, make([]byte, 16), sso, []byte{}) return seq, packet } diff --git a/client/client.go b/client/client.go index 9c0eb18e..233756e9 100644 --- a/client/client.go +++ b/client/client.go @@ -264,9 +264,6 @@ func (c *QQClient) Login() (*LoginResponse, error) { } func (c *QQClient) FetchQRCode() (*QRCodeLoginResponse, error) { - if SystemDeviceInfo.Protocol != AndroidWatch { - return nil, errors.New("only android watch protocol can login by QRCode") - } if c.Online { return nil, ErrAlreadyOnline } diff --git a/client/decoders.go b/client/decoders.go index c4ec61ca..b13c43c6 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -215,9 +215,6 @@ func decodeExchangeEmpResponse(c *QQClient, _ *incomingPacketInfo, payload []byt // wtlogin.trans_emp func decodeTransEmpResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (interface{}, error) { - if SystemDeviceInfo.Protocol != AndroidWatch { // safe - return nil, nil - } if len(payload) < 48 { return nil, errors.New("missing payload length") }