mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
feat: pack sec head
This commit is contained in:
parent
8cfc2c0450
commit
425f3e4d0c
@ -5,6 +5,10 @@ import (
|
||||
|
||||
"github.com/Mrs4s/MiraiGo/binary"
|
||||
"github.com/Mrs4s/MiraiGo/client/internal/auth"
|
||||
"github.com/Mrs4s/MiraiGo/client/pb"
|
||||
"github.com/Mrs4s/MiraiGo/internal/proto"
|
||||
"github.com/Mrs4s/MiraiGo/wrapper"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// Transport is a network transport.
|
||||
@ -41,6 +45,15 @@ func (t *Transport) packBody(req *Request, w *binary.Writer) {
|
||||
|
||||
w.WriteUInt16(uint16(len(t.Sig.Ksid)) + 2)
|
||||
w.Write(t.Sig.Ksid)
|
||||
|
||||
secSign := t.PackSecSign(req)
|
||||
w.WriteUInt32(uint32(len(secSign) + 4))
|
||||
w.Write(secSign)
|
||||
}
|
||||
if wrapper.AllowSignSendMsg() && req.CommandName == "MessageSvc.PbSendMsg" {
|
||||
secSign := t.PackSecSign(req)
|
||||
w.WriteUInt32(uint32(len(secSign) + 4))
|
||||
w.Write(secSign)
|
||||
}
|
||||
|
||||
w.WriteUInt32(0x04 + uint32(len(t.Device.QImei16)))
|
||||
@ -52,6 +65,34 @@ func (t *Transport) packBody(req *Request, w *binary.Writer) {
|
||||
w.Write(req.Body)
|
||||
}
|
||||
|
||||
func (t *Transport) PackSecSign(req *Request) []byte {
|
||||
if wrapper.FekitGetSign == nil {
|
||||
return []byte{}
|
||||
}
|
||||
sign, extra, token, err := wrapper.FekitGetSign(uint64(req.SequenceID), strconv.FormatInt(req.Uin, 10), req.CommandName, "V1_AND_SQ_8.9.50_3898_YYB_D", req.Body)
|
||||
m := &pb.SSOReserveField{
|
||||
Flag: 0,
|
||||
Qimei: t.Device.QImei16,
|
||||
NewconnFlag: 0,
|
||||
Uid: strconv.FormatInt(req.Uin, 10),
|
||||
Imsi: 0,
|
||||
NetworkType: 1,
|
||||
IpStackType: 1,
|
||||
MessageType: 0,
|
||||
SecInfo: &pb.SsoSecureInfo{
|
||||
SecSig: sign,
|
||||
SecDeviceToken: token,
|
||||
SecExtra: extra,
|
||||
},
|
||||
SsoIpOrigin: 0,
|
||||
}
|
||||
data, err := proto.Marshal(m)
|
||||
if err != nil {
|
||||
panic(errors.Wrap(err, "failed to unmarshal protobuf SSOReserveField"))
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
// PackPacket packs a packet.
|
||||
func (t *Transport) PackPacket(req *Request) []byte {
|
||||
// todo(wdvxdr): combine pack packet, send packet and return the response
|
||||
|
@ -1,3 +1,7 @@
|
||||
package wrapper
|
||||
|
||||
var DandelionEnergy func(uint64, string, string, []byte) ([]byte, error)
|
||||
|
||||
var FekitGetSign func(uint64, string, string, string, []byte) ([]byte, []byte, []byte, error)
|
||||
|
||||
var AllowSignSendMsg func() bool
|
||||
|
Loading…
x
Reference in New Issue
Block a user