301 lines
6.9 KiB
Go
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
|
|
}
|