117 lines
4.6 KiB
Go
117 lines
4.6 KiB
Go
package extinfo
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/zlib"
|
|
"github.com/golang/protobuf/proto"
|
|
"hash/crc32"
|
|
"math/rand"
|
|
"time"
|
|
"xiawan/wx/clientsdk/android"
|
|
"xiawan/wx/clientsdk/android/mmproto"
|
|
"xiawan/wx/clientsdk/baseinfo"
|
|
"xiawan/wx/protobuf/wechat"
|
|
)
|
|
|
|
// 安卓23算法
|
|
func AndroidCcData(DeviceId string, info *baseinfo.AndroidDeviceInfo, DeviceToken *wechat.TrustResp, T int64) *wechat.ZTData {
|
|
microseconds3 := time.Now().UnixNano()%1000 + time.Now().Unix()%1000*1000
|
|
tvSec := time.Now().Unix() / 1000
|
|
tvUsec := time.Now().UnixNano()%1000 + time.Now().Unix()%1000*1000
|
|
//microseconds4:=time.Now().UnixNano()%1000+time.Now().Unix()%1000*1000
|
|
defaultUid := 10200 + rand.Int63n(2000)
|
|
|
|
ccd3body := &wechat.SpamAndroidBody{
|
|
Loc: proto.Uint32(0),
|
|
Root: proto.Uint32(0),
|
|
Debug: proto.Uint32(0),
|
|
PackageSign: proto.String(info.AndriodPackageSign(DeviceId)),
|
|
RadioVersion: proto.String(info.AndroidRadioVersion(DeviceId)),
|
|
BuildVersion: proto.String(info.AndroidVersion()),
|
|
DeviceId: proto.String(info.AndriodImei(DeviceId)),
|
|
AndroidId: proto.String(info.AndriodID(DeviceId)),
|
|
SerialId: proto.String(info.AndriodPhoneSerial(DeviceId)),
|
|
Model: proto.String(info.AndroidPhoneModel(DeviceId)),
|
|
CpuCount: proto.Uint32(6),
|
|
CpuBrand: proto.String(info.AndroidHardware(DeviceId)),
|
|
CpuExt: proto.String(info.AndroidFeatures()),
|
|
WlanAddress: proto.String(info.AndriodWLanAddress(DeviceId)),
|
|
Ssid: proto.String(info.AndriodSsid(DeviceId)),
|
|
Bssid: proto.String(info.AndriodBssid(DeviceId)),
|
|
SimOperator: proto.String(""),
|
|
WifiName: proto.String(info.AndroidWifiName(DeviceId)),
|
|
BuildFP: proto.String(info.AndroidBuildFP(DeviceId)),
|
|
BuildBoard: proto.String("bullhead"),
|
|
BuildBootLoader: proto.String(info.AndroidBuildBoard(DeviceId)),
|
|
BuildBrand: proto.String("google"),
|
|
BuildDevice: proto.String("bullhead"),
|
|
DataDir: proto.String("/data/user/0/com.tencent.mm/"),
|
|
NetType: proto.String("wifi"),
|
|
PackageName: proto.String("com.tencent.mm"),
|
|
Task: proto.Uint64(0),
|
|
GsmSimOperatorNumber: proto.String(""),
|
|
SoterId: proto.String(""),
|
|
KernelReleaseNumber: proto.String(info.AndroidKernelReleaseNumber(DeviceId)),
|
|
UsbState: proto.Uint64(0),
|
|
Sign: proto.String(info.AndriodPackageSign(DeviceId)),
|
|
PackageFlag: proto.Uint64(14),
|
|
AccessFlag: proto.Uint64(uint64(info.AndriodAccessFlag(DeviceId))),
|
|
Unkonwn: proto.Uint64(3),
|
|
TbVersionCrc: proto.Uint64(uint64(info.AndriodTbVersionCrc(DeviceId))),
|
|
SfMD5: proto.String(info.AndriodSfMD5(DeviceId)),
|
|
SfArmMD5: proto.String(info.AndriodSfArmMD5(DeviceId)),
|
|
SfArm64MD5: proto.String(info.AndriodSfArm64MD5(DeviceId)),
|
|
SbMD5: proto.String(info.AndriodSbMD5(DeviceId)),
|
|
SoterId2: proto.String(""),
|
|
WidevineDeviceID: proto.String(info.AndriodWidevineDeviceID(DeviceId)),
|
|
FSID: proto.String(info.AndriodFSID(DeviceId)),
|
|
Oaid: proto.String(""),
|
|
TimeCheck: proto.Uint64(0),
|
|
NanoTime: proto.Uint64(uint64(info.AndriodNanoTime(DeviceId))),
|
|
Refreshtime: proto.Uint64(DeviceToken.GetTrustResponseData().GetTimestamp()),
|
|
SoftConfig: proto.String(DeviceToken.GetTrustResponseData().GetSoftData().GetSoftConfig()),
|
|
SoftData: DeviceToken.GetTrustResponseData().GetSoftData().GetSoftData(),
|
|
DebugFlags: proto.Uint64(uint64(microseconds3)),
|
|
RouteIFace: proto.String("eth0"), //this.disableWifi ? "eth0" : "wlan0"
|
|
TvSec: proto.Uint64(uint64(tvSec)),
|
|
TvUsec: proto.Uint64(uint64(tvUsec)),
|
|
//TvCheck: proto.Uint64(0), //???
|
|
//PkgHash3Encrypted: proto.EncodeVarint(0),
|
|
Uid: proto.Uint64(uint64(defaultUid)),
|
|
}
|
|
//
|
|
|
|
pb, _ := proto.Marshal(ccd3body)
|
|
|
|
crc := crc32.ChecksumIEEE(pb)
|
|
|
|
curtime := uint32(T)
|
|
|
|
ccd3 := &mmproto.Ccd3{
|
|
Crc: &crc,
|
|
TimeStamp: &curtime,
|
|
Body: ccd3body,
|
|
}
|
|
|
|
pb, _ = proto.Marshal(ccd3)
|
|
|
|
var b bytes.Buffer
|
|
w := zlib.NewWriter(&b)
|
|
_, _ = w.Write(pb)
|
|
_ = w.Close()
|
|
|
|
zt := new(android.ZT)
|
|
zt.Init()
|
|
encData := zt.Encrypt(b.Bytes())
|
|
|
|
Ztdata := &wechat.ZTData{
|
|
Version: []byte("00000003"),
|
|
Encrypted: proto.Uint64(1),
|
|
Data: encData,
|
|
TimeStamp: &T,
|
|
OpType: proto.Uint64(5),
|
|
Uin: proto.Uint64(0),
|
|
}
|
|
return Ztdata
|
|
}
|