package android import ( "math/rand" "time" "xiawan/wx/clientsdk/android/mmproto" "github.com/golang/protobuf/proto" ) // iphone生成wcstf, 使用07加密 func IphoneWcstf(Username string) *mmproto.ZTData { curtime := uint64(time.Now().UnixNano() / 1e6) contentlen := len(Username) var ct []uint64 ut := curtime for i := 0; i < contentlen; i++ { ut += uint64(rand.Intn(10000)) ct = append(ct, ut) } ccd := &mmproto.Ccd1{ StartTime: &curtime, CheckTime: &curtime, Count: proto.Uint32(uint32(contentlen)), EndTime: ct, } pb, _ := proto.Marshal(ccd) // Zero: 03加密改06加密 //var b bytes.Buffer //w := zlib.NewWriter(&b) //w.Write(pb) //w.Close() // //zt := new(ZT) //zt.Init() //encData := zt.Encrypt(b.Bytes()) compressData := DoZlibCompress(pb) encData := SaeEncrypt07(compressData) Ztdata := &mmproto.ZTData{ Version: proto.String("00000007\x00"), Encrypted: proto.Uint32(1), Data: encData, TimeStamp: proto.Uint32(uint32(time.Now().Unix())), Optype: proto.Uint32(5), Uin: proto.Uint32(0), } // MS, _ := proto.Marshal(Ztdata) return Ztdata } // iphone生成wcste, 使用07加密 func IphoneWcste(A, B uint64) *mmproto.ZTData { curtime := uint32(time.Now().Unix()) curNanoTime := uint64(time.Now().UnixNano()) ccd := &mmproto.Ccd2{ Checkid: proto.String(""), StartTime: &curtime, CheckTime: &curtime, Count1: proto.Uint32(0), Count2: proto.Uint32(1), Count3: proto.Uint32(0), Const1: proto.Uint64(A), Const2: &curNanoTime, Const3: &curNanoTime, Const4: &curNanoTime, Const5: &curNanoTime, Const6: proto.Uint64(B), } pb, _ := proto.Marshal(ccd) // Zero: 03加密改06加密 //var b bytes.Buffer //w := zlib.NewWriter(&b) //w.Write(pb) //w.Close() // //zt := new(ZT) //zt.Init() //encData := zt.Encrypt(b.Bytes()) compressData := DoZlibCompress(pb) encData := SaeEncrypt07(compressData) Ztdata := &mmproto.ZTData{ Version: proto.String("00000007\x00"), Encrypted: proto.Uint32(1), Data: encData, TimeStamp: proto.Uint32(uint32(time.Now().Unix())), Optype: proto.Uint32(5), Uin: proto.Uint32(0), } // MS, _ := proto.Marshal(Ztdata) return Ztdata } // ipad生成wcstf, 使用03加密 func IpadWcstf(Username string) []byte { curtime := uint64(time.Now().UnixNano() / 1e6) contentlen := len(Username) var ct []uint64 ut := curtime for i := 0; i < contentlen; i++ { ut += uint64(rand.Intn(10000)) ct = append(ct, ut) } ccd := &mmproto.Ccd1{ StartTime: &curtime, CheckTime: &curtime, Count: proto.Uint32(uint32(contentlen)), EndTime: ct, } pb, _ := proto.Marshal(ccd) // 压缩然后03加密 compressData := DoZlibCompress(pb) zt := new(ZT) zt.Init() encData := zt.Encrypt(compressData) Ztdata := &mmproto.ZTData{ Version: proto.String("00000003\x00"), Encrypted: proto.Uint32(1), Data: encData, TimeStamp: proto.Uint32(uint32(time.Now().Unix())), Optype: proto.Uint32(5), Uin: proto.Uint32(0), } MS, _ := proto.Marshal(Ztdata) return MS } // ipad生成wcste, 使用03加密 func IpadWcste(A, B uint64) []byte { curtime := uint32(time.Now().Unix()) curNanoTime := uint64(time.Now().UnixNano()) ccd := &mmproto.Ccd2{ Checkid: proto.String(""), StartTime: &curtime, CheckTime: &curtime, Count1: proto.Uint32(0), Count2: proto.Uint32(1), Count3: proto.Uint32(0), Const1: proto.Uint64(A), Const2: &curNanoTime, Const3: &curNanoTime, Const4: &curNanoTime, Const5: &curNanoTime, Const6: proto.Uint64(B), } pb, _ := proto.Marshal(ccd) // 压缩然后03加密 compressData := DoZlibCompress(pb) zt := new(ZT) zt.Init() encData := zt.Encrypt(compressData) Ztdata := &mmproto.ZTData{ Version: proto.String("00000003\x00"), Encrypted: proto.Uint32(1), Data: encData, TimeStamp: proto.Uint32(uint32(time.Now().Unix())), Optype: proto.Uint32(5), Uin: proto.Uint32(0), } MS, _ := proto.Marshal(Ztdata) return MS } // android生成wcstf, 使用01加密 func AndroidWcstf(Username string) *mmproto.ZTData { curtime := uint64(time.Now().UnixNano() / 1e6) contentlen := len(Username) var ct []uint64 ut := curtime for i := 0; i < contentlen; i++ { ut += uint64(rand.Intn(10000)) ct = append(ct, ut) } ccd := &mmproto.Ccd1{ StartTime: &curtime, CheckTime: &curtime, Count: proto.Uint32(uint32(contentlen)), EndTime: ct, } pb, _ := proto.Marshal(ccd) // Zero: 03加密改06加密 //var b bytes.Buffer //w := zlib.NewWriter(&b) //w.Write(pb) //w.Close() // //zt := new(ZT) //zt.Init() //encData := zt.Encrypt(b.Bytes()) // compressData := DoZlibCompress(pb) // encData := SaeEncrypt01(compressData) compressData := DoZlibCompress(pb) encData := SaeEncrypt07(compressData) Ztdata := &mmproto.ZTData{ Version: proto.String("00000007\x00"), Encrypted: proto.Uint32(1), Data: encData, TimeStamp: proto.Uint32(uint32(time.Now().Unix())), Optype: proto.Uint32(5), Uin: proto.Uint32(0), } // MS, _ := proto.Marshal(Ztdata) // return MS return Ztdata } // android生成wcste, 使用01加密 func AndroidWcste(A, B uint64) *mmproto.ZTData { curtime := uint32(time.Now().Unix()) curNanoTime := uint64(time.Now().UnixNano()) ccd := &mmproto.Ccd2{ Checkid: proto.String(""), StartTime: &curtime, CheckTime: &curtime, Count1: proto.Uint32(0), Count2: proto.Uint32(1), Count3: proto.Uint32(0), Const1: proto.Uint64(A), Const2: &curNanoTime, Const3: &curNanoTime, Const4: &curNanoTime, Const5: &curNanoTime, Const6: proto.Uint64(B), } pb, _ := proto.Marshal(ccd) // compressData := DoZlibCompress(pb) // encData := SaeEncrypt01(compressData) compressData := DoZlibCompress(pb) encData := SaeEncrypt07(compressData) Ztdata := &mmproto.ZTData{ Version: proto.String("00000007\x00"), Encrypted: proto.Uint32(1), Data: encData, TimeStamp: proto.Uint32(uint32(time.Now().Unix())), Optype: proto.Uint32(5), Uin: proto.Uint32(0), } // MS, _ := proto.Marshal(Ztdata) // return MS return Ztdata } type AndroidDeviceInfo struct { Imei string AndriodId string PhoneSerial string WidevineDeviceID string WidevineProvisionID string AndriodFsId string AndriodBssId string AndriodSsId string WLanAddress string PackageSign string Androidversion string RadioVersion string Manufacturer string BuildID string BuildFP string BuildBoard string PhoneModel string Hardware string Features string WifiName string WifiFullName string KernelReleaseNumber string Arch string SfMD5 string SfArmMD5 string SfArm64MD5 string SbMD5 string }