diff --git a/client/builders.go b/client/builders.go index e321b789..77cfd3c2 100644 --- a/client/builders.go +++ b/client/builders.go @@ -36,9 +36,9 @@ func (c *QQClient) buildLoginPacket() (uint16, []byte) { req := packets.BuildOicqRequestPacket(c.Uin, 0x0810, crypto.ECDH, c.RandomKey, func(w *binary.Writer) { w.WriteUInt16(9) if c.AllowSlider { - w.WriteUInt16(0x17) + w.WriteUInt16(0x18) } else { - w.WriteUInt16(0x16) + w.WriteUInt16(0x17) } w.Write(tlv.T18(16, uint32(c.Uin))) @@ -47,6 +47,7 @@ func (c *QQClient) buildLoginPacket() (uint16, []byte) { w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap)) w.Write(tlv.T100(c.version.SSOVersion, c.version.AppId, c.version.MainSigMap)) w.Write(tlv.T107(0)) + w.Write(tlv.T108(SystemDeviceInfo.IMEI)) w.Write(tlv.T142(c.version.ApkId)) w.Write(tlv.T144( []byte(SystemDeviceInfo.IMEI), @@ -74,10 +75,11 @@ func (c *QQClient) buildLoginPacket() (uint16, []byte) { w.Write(tlv.T8(2052)) w.Write(tlv.T511([]string{ "tenpay.com", "openmobile.qq.com", "docs.qq.com", "connect.qq.com", - "qzone.qq.com", "vip.qq.com", "qun.qq.com", "game.qq.com", "qqweb.qq.com", - "office.qq.com", "ti.qq.com", "mail.qq.com", "qzone.com", "mma.qq.com", + "qzone.qq.com", "vip.qq.com", "gamecenter.qq.com", "qun.qq.com", "game.qq.com", + "qqweb.qq.com", "office.qq.com", "ti.qq.com", "mail.qq.com", "mma.qq.com", })) + //todo: tlv 400 w.Write(tlv.T187(SystemDeviceInfo.MacAddress)) w.Write(tlv.T188(SystemDeviceInfo.AndroidId)) if len(SystemDeviceInfo.IMSIMd5) != 0 { diff --git a/client/global.go b/client/global.go index a52ac046..8f3c8b91 100644 --- a/client/global.go +++ b/client/global.go @@ -151,7 +151,7 @@ func genVersionInfo(p ClientProtocol) *versionInfo { case AndroidPhone: // Dumped by mirai from qq android v8.2.7 return &versionInfo{ ApkId: "com.tencent.mobileqq", - AppId: 537066439, + AppId: 537066419, SortVersionName: "8.4.18", BuildTime: 1604580615, ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D}, diff --git a/protocol/crypto/crypto.go b/protocol/crypto/crypto.go index 06e8dc13..e2964ebd 100644 --- a/protocol/crypto/crypto.go +++ b/protocol/crypto/crypto.go @@ -40,7 +40,7 @@ func init() { panic("Can't Create ECDH key pair") } x, _ := p256.ScalarMult(tenKeyX, tenKeyY, key) - hash := md5.Sum(x.Bytes()[:16]) + hash := md5.Sum(x.Bytes()[:16]) ECDH.InitialShareKey = hash[:] ECDH.PublicKey = make([]byte, 65)[:0] ECDH.PublicKey = append(ECDH.PublicKey, 0x04) diff --git a/protocol/tlv/t106.go b/protocol/tlv/t106.go index 2255d669..699f166b 100644 --- a/protocol/tlv/t106.go +++ b/protocol/tlv/t106.go @@ -5,6 +5,7 @@ import ( binary2 "encoding/binary" "github.com/Mrs4s/MiraiGo/binary" "math/rand" + "strconv" "time" ) @@ -38,9 +39,7 @@ func T106(uin, salt, appId, ssoVer uint32, passwordMd5 [16]byte, guidAvailable b } w.WriteUInt32(appId) w.WriteUInt32(1) // password login - b := make([]byte, 8) - binary2.BigEndian.PutUint64(b, uint64(uin)) - w.WriteTlv(b) + w.WriteTlv([]byte(strconv.FormatInt(int64(uin), 10))) w.WriteUInt16(0) }) w.WriteTlv(binary.NewWriterF(func(w *binary.Writer) { diff --git a/protocol/tlv/t108.go b/protocol/tlv/t108.go index dbf1679f..8fb83f83 100644 --- a/protocol/tlv/t108.go +++ b/protocol/tlv/t108.go @@ -2,9 +2,9 @@ package tlv import "github.com/Mrs4s/MiraiGo/binary" -func T108(arr []byte) []byte { +func T108(imei string) []byte { return binary.NewWriterF(func(w *binary.Writer) { w.WriteUInt16(0x108) - w.WriteTlv(arr) + w.WriteTlv([]byte(imei)) }) }