Files
2026-02-17 13:06:23 +08:00

301 lines
6.9 KiB
Go

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("<LoginByID>"),
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("<LoginByID>"),
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("<LoginByID>"),
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
}