1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

feature submit ticket.

This commit is contained in:
Mrs4s 2020-12-25 02:05:02 +08:00
parent 74aea80ada
commit e884637ecc
3 changed files with 42 additions and 0 deletions

View File

@ -170,6 +170,22 @@ func (c *QQClient) buildSMSCodeSubmitPacket(code string) (uint16, []byte) {
return seq, packet
}
func (c *QQClient) buildTicketSubmitPacket(ticket string) (uint16, []byte) {
seq := c.nextSeq()
req := packets.BuildOicqRequestPacket(c.Uin, 0x810, crypto.ECDH, c.RandomKey, func(w *binary.Writer) {
w.WriteUInt16(2)
w.WriteUInt16(4)
w.Write(tlv.T193(ticket))
w.Write(tlv.T8(2052))
w.Write(tlv.T104(c.t104))
w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap))
})
sso := packets.BuildSsoPacket(seq, c.version.AppId, "wtlogin.login", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, req, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 2, make([]byte, 16), sso, []byte{})
return seq, packet
}
func (c *QQClient) buildRequestTgtgtNopicsigPacket() (uint16, []byte) {
seq := c.nextSeq()
req := packets.BuildOicqRequestPacket(c.Uin, 0x0810, crypto.NewEncryptSession(c.sigInfo.t133), c.sigInfo.wtSessionTicketKey, func(w *binary.Writer) {

View File

@ -260,6 +260,20 @@ func (c *QQClient) SubmitCaptcha(result string, sign []byte) (*LoginResponse, er
return &l, nil
}
func (c *QQClient) SubmitTicket(ticket string) (*LoginResponse, error) {
seq, packet := c.buildTicketSubmitPacket(ticket)
rsp, err := c.sendAndWait(seq, packet)
if err != nil {
c.Disconnect()
return nil, err
}
l := rsp.(LoginResponse)
if l.Success {
c.init()
}
return &l, nil
}
func (c *QQClient) SubmitSMS(code string) (*LoginResponse, error) {
rsp, err := c.sendAndWait(c.buildSMSCodeSubmitPacket(code))
if err != nil {

12
protocol/tlv/t193.go Normal file
View File

@ -0,0 +1,12 @@
package tlv
import "github.com/Mrs4s/MiraiGo/binary"
func T193(ticket string) []byte {
return binary.NewWriterF(func(w *binary.Writer) {
w.WriteUInt16(0x193)
w.WriteTlv(binary.NewWriterF(func(w *binary.Writer) {
w.Write([]byte(ticket))
}))
})
}