Commit e6aa0da8 authored by 王明明's avatar 王明明

使用app端

parent eed0ac4a
package app
import "test/sensor"
type DeviceInfo struct {
brand string
model string
androidVersion string
manufacturer string
cputype string
SDKINT string
screenSize string
}
func randomScreenSize() string {
return ANDROID_SCREEN_SIZE[sensor.RandRandom(int64(len(ANDROID_SCREEN_SIZE)))]
}
func NewDeviceInfo() *DeviceInfo {
cpu := RandomCPU()
androidVersion := RandomANDROIDVERSION()
return &DeviceInfo{
brand: RandomANDROIDBRAND(),
model: RandomANDROIDMODEL(),
androidVersion: androidVersion,
manufacturer: RandomMANUFACTURER(),
cputype: cpu,
SDKINT: ANDROID_VERSION[androidVersion],
screenSize: randomScreenSize(),
}
}
var (
ANDROID_BRAND = []string{"Acer", "ARCHOS", "ASUS", "Casio", "Dell", "Garmin-ASUS", "HTC", "Huawei", "Kyocera", "Lenovo", "LG", "Motorola", "Panasonic", "Philips", "Samsung", "Sony", "Sony Ericsson", "Toshiba", "ZTE"}
ANDROID_MODEL = []string{"SCH-I535", "DROIDRAZR", "SAMSUNG-SGH-I747", "SGH-T999", "SPH-L710", "PC36100", "DROIDBIONIC", "ADR6400L", "SGH-T989", "SPH-D710", "ADR6300", "GT-I9300", "DROIDX", "ADR6350", "HTCOneX", "DROIDRAZRHD", "XT910", "Nexus4", "DROID4", "NexusS", "HTCVLE_U", "EVO", "SAMSUNG-SGH-I727", "SCH-I510", "Nexus7", "XT907", "PG86100", "HTCSensation4G", "NexusS4G", "SPH-D720", "HTCGlacier", "SCH-I500", "GT-I9100", "LG-P999", "ADR6425LVW", "SPH-D700", "SAMSUNG-SGH-I317", "SAMSUNG-SGH-I777", "SGH-T959V", "SCH-I405", "SCH-I415", "DROID2GLOBAL", "T-MobileG2", "DROIDPro", "SAMSUNG-SGH-I717", "SGH-I747M", "DROID3", "MB860", "ADR6410LVW", "NexusOne", "SGH-T769", "DROIDX2", "SAMSUNG-SGH-I997", "GT-I9100", "GT-I9001", "GT-I9000", "GT-I8150", "D700", "GT-S5660", "GT-5830L", "S5360", "GT-S5570", "I200", "XT894", "LG-P500", "GT-N7100", "Zio", "DesireHD", "HTCEVODesign4G", "5860E", "A100", "A200", "A500", "ADR6330VW", "ADR8995", "ADR910L", "HTCOneS", "GT-I9100P", "LG-E971", "GT-I9300T", "GT-N7000", "HTCDesireS", "HTCAmaze4G", "GT-I8190", "GT-I8190N", "GT-I9305", "SGH-I747", "HTCVision", "HTCDesire", "HTC6435LVW", "EK-GC100", "HTCIncredibleS", "HTCOneV", "GT-S5830", "SGH-T989D", "SGH-I717D", "GT-N7105", "GT-I9100M", "SGH-I317M", "XT615", "HTCChaChaA810e", "LG-E973", "ST26i", "LT26i", "GT-S5839i", "MT15i", "LG-E400", "GT-P1000", "HTCWildfireSA510e", "GT-I9100T", "LG-C555", "SAMSUNG-SGH-I896", "XT905", "HTCDesireHDA9191", "HTCDesireX", "GT-I9210T", "HTCLegend", "HTCSensationZ710e", "U9202L-1", "GT-P3100", "GT-P5100", "GT-P5110", "LT25i", "SGH-T959D", "DROIDPRO", "GT-I9305T", "HTCDesireC", "LG-P880", "LT30at", "XT603", "C5303", "GT-I9210", "GT-N7105T", "GT-N8000", "GT-P3110", "GT-P7500", "GT-S7560M", "Garmin-AsusA50", "LT29i", "MB525", "SCH-I605", "SGH-I717R", "SGH-T589W", "SGH-T999V", "T-MobileVivacity", "WIKO-CINKSLIM", "SHW-M250S1", "SHV-E250S1", "SHV-E210S", "SHV-E250K", "SHV-E210K", "SHV-E160K", "SHV-E160S", "SCH-I545", "SAMSUNG-SGH-I337", "HTCOne", "SGH-M919", "SPH-L720", "SCH-I605", "GT-I9505", "SGH-T889", "HTCONE", "HTC6435LVW", "SPH-L900", "SAMSUNG-SGH-I537", "GT-N7100", "HTC6500LVW", "LG-P769", "XT1080", "GT-I9305", "GT-I9505G", "GT-I9500", "SGH-I337M", "XT1058", "VS8404G", "GT-N7105", "C6603", "LG-MS770", "GT-N7000", "HTCOneX+", "DesireHD", "LG-LS970", "MB855", "XT1060", "MB886", "HTC_PN071", "SGH-T999L", "HTCEVOV4G", "MB865", "SCH-R530U", "SGH-T679", "SGH-T679", "HTCPH39100", "HTC_Amaze_4G", "myTouch_4G_Slide", "SPH-L300", "SCH-I200", "SPH-D710VMUB", "HTCOne801e", "SPH-D710BST", "LG-E970", "SHV-E250S", "SGH-T699", "SCH-R530M", "C6606", "XT897", "LG-E980", "LG-VM696", "PH44100", "VS9204G", "SM-N900V"}
CPU_MANUFACTURER = []string{"amd", "allwinner", "amlogic", "apple", "broadcom", "cyrix", "freescale", "fujitsu", "hisilicon", "hitachi", "hygon", "ibm", "intel", "mcst", "marvell", "mediatek", "motorola", "nexgen", "nvidia", "oracle", "qualcomm", "rise technology", "rockchip", "samsung", "sifive", "sigmatel", "texas instruments", "tilera", "transmeta", "via", "wave computing", "winchip", "zhaoxin"}
CPU_TYPE = []string{"qcom", "mtk", "intel", "amd", "exynos", "unisoc"}
ANDROID_SCREEN_SIZE = []string{"128,72", "256,144", "384,216", "512,288", "640,360", "768,432", "896,504", "1024,576", "1152,648", "1280,720", "1408,792", "1536,864", "1664,936", "1792,1008", "1920,1080", "2048,1152", "2176,1224", "2304,1296", "2432,1368", "2560,1440", "2688,1512", "2816,1584", "2944,1656", "3072,1728", "3200,1800", "3328,1872", "3456,1944", "3584,2016", "3712,2088", "3840,2160", "3968,2232", "4096,2304", "4224,2376", "4352,2448", "4480,2520", "4608,2592", "4736,2664", "4864,2736", "4992,2808", "5120,2880", "5248,2952", "5376,3024", "5504,3096", "5632,3168", "5760,3240", "5888,3312", "6016,3384", "6144,3456", "6272,3528", "6400,3600", "6528,3672", "6656,3744", "6784,3816", "6912,3888", "7040,3960", "7168,4032", "7296,4104", "7424,4176", "7552,4248", "7680,4320"}
ANDROID_VERSION = map[string]string{
"5.1": "22",
"6.0": "23",
"7.0": "24",
"7.1": "25",
"8.0.0": "26",
"8.1.0": "27",
"9.0": "28",
"10.0": "29",
"11.0": "30",
}
)
func RandomANDROIDBRAND() string {
return ANDROID_BRAND[sensor.RandRandom(int64(len(ANDROID_BRAND)))]
}
func RandomANDROIDMODEL() string {
return ANDROID_MODEL[sensor.RandRandom(int64(len(ANDROID_MODEL)))]
}
func RandomANDROIDVERSION() string {
var list []string
for key, _ := range ANDROID_VERSION {
list = append(list, key)
}
selectKey := list[sensor.RandRandom(int64(len(list)))]
//version := ANDROID_VERSION[selectKey]
return selectKey
}
func RandomMANUFACTURER() string {
return CPU_MANUFACTURER[sensor.RandRandom(int64(len(CPU_MANUFACTURER)))]
}
func RandomCPU() string {
return CPU_TYPE[sensor.RandRandom(int64(len(CPU_TYPE)))]
}
package app
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/base64"
"fmt"
"io"
)
func RsaEncrypt(keys string, text []byte) []byte {
publicKeyBytes, err := base64.StdEncoding.DecodeString(keys)
if err != nil {
panic(err)
}
//publicKeyBytes := []byte
publicKey, err := x509.ParsePKIXPublicKey(publicKeyBytes)
if err != nil {
panic(err)
}
msg := []byte(text)
ciphertext, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey.(*rsa.PublicKey), msg)
if err != nil {
panic(err)
}
//fmt.Println(base64.StdEncoding.EncodeToString(ciphertext))
return ciphertext
}
func RsaDecrypt() {
}
func main() {
publicKeyBase64 := "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7zgZ0bUDZ9fjG4+Mg7z0fHwYKj6y+1Sg7nJm" +
"9zjK4a4+TkG4LhMwF7sMnq3f8v1Nqj1uE9VZjWQ/8TtTQ1yJY0d6aWj8aRvRi35Z6O9XbXq3j8i" +
"f5M5c5pWUg8vU0jZ2dH9X6XeU6xjv6hJY1yBDMN0o8WjRvGvBk/9oX9Xj8WqBp1v5i5F5p5c6rC" +
"v6DQIDAQAB"
publicKeyBytes, err := base64.StdEncoding.DecodeString(publicKeyBase64)
if err != nil {
panic(err)
}
publicKey, err := x509.ParsePKCS1PublicKey(publicKeyBytes)
if err != nil {
panic(err)
}
msg := []byte("hello, world!")
ciphertext, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, msg)
if err != nil {
panic(err)
}
fmt.Println(base64.StdEncoding.EncodeToString(ciphertext))
}
func AesEncrypt(key []byte, plaintext []byte) ([]byte, []byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
return nil, nil, err
}
iv := make([]byte, aes.BlockSize)
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
return nil, nil, err
}
blockSize := block.BlockSize()
padding := blockSize - len(plaintext)%blockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
plaintext = append(plaintext, padtext...)
mode := cipher.NewCBCEncrypter(block, iv)
ciphertext := make([]byte, aes.BlockSize+len(plaintext))
mode.CryptBlocks(ciphertext, plaintext)
return ciphertext, iv, nil
}
func getKeyBytes(key string) []byte {
keyBytes := []byte(key)
switch l := len(keyBytes); {
case l < 16:
keyBytes = append(keyBytes, make([]byte, 16-l)...)
case l > 16:
keyBytes = keyBytes[:16]
}
return keyBytes
}
func encrypt(key, iv []byte, origData []byte) ([]byte, error) {
keyBytes := key
block, err := aes.NewCipher(keyBytes)
if err != nil {
return nil, err
}
blockSize := block.BlockSize()
origData = PKCS5Padding(origData, blockSize)
blockMode := cipher.NewCBCEncrypter(block, iv[:blockSize])
crypted := make([]byte, len(origData))
blockMode.CryptBlocks(crypted, origData)
return crypted, nil
}
func decrpt(key []byte, crypted []byte) ([]byte, error) {
keyBytes := key
block, err := aes.NewCipher(keyBytes)
if err != nil {
return nil, err
}
blockSize := block.BlockSize()
blockMode := cipher.NewCBCDecrypter(block, keyBytes[:blockSize])
origData := make([]byte, len(crypted))
blockMode.CryptBlocks(origData, crypted)
origData = PKCS5UnPadding(origData)
return origData, nil
}
func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
padding := blockSize - len(ciphertext)%blockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
func PKCS5UnPadding(origData []byte) []byte {
length := len(origData)
unpadding := int(origData[length-1])
return origData[:(length - unpadding)]
}
func Encrypt(key, iv []byte, val string) ([]byte, error) {
origData := []byte(val)
crypted, err := encrypt(key, iv, origData)
if err != nil {
return nil, err
}
return crypted, nil
}
package app
import (
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"fmt"
"github.com/google/uuid"
"math"
"strconv"
"strings"
"test/sensor"
"time"
)
type SensorData struct {
update int64
startTime int64
mDeviceInfo *DeviceInfo
aesKeyEncrypted string
hmacKeyEncrypted string
aesKey []byte
hmacKey []byte
}
func NewSensorData() *SensorData {
return &SensorData{
update: int64(getRandomNumber(0, 12) * 36),
startTime: time.Now().UnixMilli(),
mDeviceInfo: NewDeviceInfo(),
}
}
type StringBuilder struct {
stringBuilder strings.Builder
}
func NewStringBuilder() *StringBuilder {
return &StringBuilder{}
}
func (w *StringBuilder) append(str interface{}) *StringBuilder {
//fmt.Println(str, reflect.TypeOf(str))
switch str.(type) {
case int:
w.stringBuilder.WriteString(strconv.Itoa(str.(int)))
case int64:
w.stringBuilder.WriteString(strconv.Itoa(int(str.(int64))))
case string:
w.stringBuilder.WriteString(str.(string))
}
return w
}
func (w *StringBuilder) toString() string {
return w.stringBuilder.String()
}
func (s *SensorData) GetSensorData() string {
model := s.mDeviceInfo.model
androidVersion := s.mDeviceInfo.androidVersion
brand := s.mDeviceInfo.brand
SDKINT := s.mDeviceInfo.SDKINT
manufacturer := s.mDeviceInfo.manufacturer
cputype := s.mDeviceInfo.cputype
stringBuilder6 := &StringBuilder{}
u, _ := uuid.NewUUID()
uuidStr := u.String()
stringBuilder6 = stringBuilder6.append("3.2.2-1,2,-94,-100,").append("-1,uaend,-1,").append(s.mDeviceInfo.screenSize)
stringBuilder6 = stringBuilder6.append(",1,100,1,en,").append(androidVersion).append(",0,").append(model).append(",")
stringBuilder6 = stringBuilder6.append(manufacturer).append(",").append(cputype).append(",-1,").append("com.mo2o.vueling")
stringBuilder6 = stringBuilder6.append(",-1,-1,").append(uuidStr).append(",-1,1,0,REL,")
stringBuilder6 = stringBuilder6.append(getRandomNumber(0, 999999999)).append(",").append(SDKINT).append(",").append(brand).append(",")
stringBuilder6 = stringBuilder6.append(model).append(",release-keys,user,").append(brand).append(",").append(brand).append("-user/")
stringBuilder6 = stringBuilder6.append(androidVersion).append("/").append(getRandomNumber(0, 999999999)).append("/release-keys,")
stringBuilder6 = stringBuilder6.append("universal").append(getRandomNumber(0, 99999)).append(",").append(brand).append(",")
stringBuilder6 = stringBuilder6.append(model).append(",").append(brand).append("/").append(brand).append("/").append(model).append(":")
stringBuilder6 = stringBuilder6.append(androidVersion).append("/").append(getRandomNumber(0, 999999999)).append(":")
stringBuilder6 = stringBuilder6.append("user/release-keys,").append(getRandomNumber(0, 999999999)).append(",").append(model)
length := chrplus(stringBuilder6.toString())
stringBuilder6 = stringBuilder6.append(",").append(length - 907).append(",").append(getRandomNumber(1, 9999)).append(",")
stringBuilder6 = stringBuilder6.append(time.Now().UnixMilli() / 2).append("-1,2,-94,-101,").append("do_unr,dm_en,t_en")
stringBuilder6 = stringBuilder6.append("-1,2,-94,-102,").append("-1,2,-94,-108,").append(s.randomEvent()).append("-1,2,-94,-117,")
stringBuilder6 = stringBuilder6.append(s.touchEvent()).append("-1,2,-94,-144,").append(s.orientation())
stringBuilder6.append("-1,2,-94,-142,").append("1;-11.05;13.58;2128.50;3651640459;hoi[iJg[v[ulfA7[p2[g4[Il2[l[K2[OlON4[i2[h[N3[J3[B2[h2[k2[P[A4[O2[2jh[i3[k6[vg[}r6[A[H[k4[D[tg3[g2PO[P[:1;-0.26;0.16;-314.86;959188093;}AxRVfJMUNm]n]fkIfWala2fYkf_2fb3f^p`3fbfaf]t[lf2k`7fa3fkan3fb5f_4fl3f_5fk2fa6fk15fl2f2a4f2a:1;-0.37;0.07;-25.81;3805648940;XKSLI_ALVY]Zb.[sh2lsogsj5snhn2snslsio2sxsnsm12sn4sm3sml2smsn7snsln4sy7s2nsly}6s{zsxswsy9s")
stringBuilder6.append("-1,2,-94,-145,")
stringBuilder6 = stringBuilder6.append("-1,2,-94,-143,").append("-1,2,-94,-115,").append(s.randomPair()).append("-1,2,-94,-70,")
stringBuilder6 = stringBuilder6.append("-1,2,-94,-80,").append("-1,2,-94,-120,").append("-1,2,-94,-112,").append(s.randomActivity2())
stringBuilder6 = stringBuilder6.append("-1,2,-94,-103,").append(s.activities())
//fmt.Println(stringBuilder6.toString())
return s.encryptSensor(stringBuilder6.toString())
}
func (s *SensorData) randomEvent() string {
w := NewStringBuilder()
maxScreenSize := s.getMaxScreenSize()
cycleNum := getRandomNumber(10, 50)
for i := 0; i < cycleNum; i++ {
w.append("2").append(",").append(getRandomNumber(0, maxScreenSize)).append(",").append(getRandomNumber(0, maxScreenSize))
w.append(";")
}
return w.toString()
}
func (s *SensorData) getMaxScreenSize() int {
screenInts := strings.Split(s.mDeviceInfo.screenSize, ",")
b1, _ := strconv.Atoi(screenInts[0])
b2, _ := strconv.Atoi(screenInts[0])
return int(math.Max(float64(b1), float64(b2)))
}
func chrplus(str string) int {
var c uint8
for b := 0; b < len(str); b++ {
c2 := str[b]
if c2 < 128 {
c += c2
}
}
return int(c)
}
func (s *SensorData) getUptime() int64 {
return s.update + time.Now().UnixMilli() - s.startTime
}
func (s *SensorData) touchEvent() string {
sb := NewStringBuilder()
maxScreenSize := s.getMaxScreenSize()
cycleNum := getRandomNumber(10, 50)
for i := 0; i < cycleNum; i++ {
sb.append(getRandomNumber(2, 3))
sb.append(",")
sb.append(getRandomNumber(0, maxScreenSize))
sb.append(",0,0,1,1,1,-1;")
}
return sb.toString()
}
func (s *SensorData) randomPair() string {
w := NewStringBuilder()
w.append(s.randomEvent()).append(",").append(s.touchEvent()).append(",").append(getRandomNumber(0, 10000)).append(",")
w.append(getRandomLong(4294967295, 999999999999999999)).append(",").append(time.Now().UnixMilli()).append("0,0")
w.append(getRandomNumber(0, 10000)).append(",").append(getRandomLong(4294967295, 999999999999999999)).append(",")
w.append(getRandomNumber(0, 1000000)).append(",").append(s.getUptime()).append(",").append(getRandomNumber(0, 10000)).append(",")
w.append(getRandomLong(4294967295, 999999999999999999)).append(",").append(time.Now().UnixMilli()).append(",")
w.append(getRandomNumber(0, 10000)).append(",0")
return w.toString()
//return randomEvent() + "," + touchEvent() + "," + getRandomNumber(0, 10000) + "," + getRandomNumber(0, 10000) + "," +
//getRandomLong(4294967295L, 999999999999999999L) + "," + System.currentTimeMillis() + ",0,0,"
//+ getRandomNumber(0, 10000) + "," + getRandomLong(4294967295L, 999999999999999999L) + ","
//+ getRandomNumber(0, 1000000) + "," + getUptime() + "," + getRandomNumber(0, 10000) + ","
//+ getRandomLong(4294967295L, 999999999999999999L) + "," + System.currentTimeMillis() + ","
//+ getRandomNumber(0, 10000) + ",0"
}
func (s *SensorData) randomActivity2() string {
w := NewStringBuilder()
w.append(getRandomNumber(0, 200000)).append(",").append(getRandomNumber(0, 200000)).append(",").append(getRandomNumber(0, 200000)).append(",")
w.append(getRandomNumber(0, 200000)).append(",").append(getRandomNumber(0, 200000)).append(",").append(getRandomNumber(0, 200000)).append(",")
w.append(getRandomNumber(0, 200000)).append(",").append(getRandomNumber(0, 200000)).append(",").append(getRandomNumber(0, 200000))
//+ "," + getRandomNumber(0, 200000) + "," + getRandomNumber(0, 200000) + ","
//+ getRandomNumber(0, 200000) + "," + getRandomNumber(0, 200000) + "," + getRandomNumber(0, 200000) + ","
//+ getRandomNumber(0, 200000) + "," + getRandomNumber(0, 200000) + "," + getRandomNumber(0, 200000);
return w.toString()
}
func (s *SensorData) activities() string {
sb := NewStringBuilder()
cycleNum := getRandomNumber(10, 50)
for i := 0; i < cycleNum; i++ {
sb.append("2")
sb.append(",")
sb.append(int(time.Now().UnixMilli()) + getRandomNumber(0, 50000))
sb.append(";")
sb.append("3")
sb.append(",")
sb.append(int(time.Now().UnixMilli()) + getRandomNumber(50000, 1000000))
sb.append(";")
}
return sb.toString()
}
func (s *SensorData) encryptSensor(str string) string {
//str = "3.2.2-1,2,-94,-100,-1,uaend,-1,3456,1944,1,100,1,en,8.0.0,0,SCH-I415,via,qcom,-1,com.mo2o.vueling,-1,-1,00d6281c-ca19-11ed-b1cd-00155dc53c25,-1,1,0,REL,151999999,26,Panasonic,SCH-I415,release-keys,user,Panasonic,Panasonic-user/8.0.0/71999999/release-keys,universal88399,Panasonic,SCH-I415,Panasonic/Panasonic/SCH-I415:8.0.0/291999999:user/release-keys,44999999,SCH-I415,-764,340,839822212771-1,2,-94,-101,do_unr,dm_en,t_en-1,2,-94,-102,-1,2,-94,-108,2,1354,2280;2,1126,421;2,781,749;2,3044,926;2,1662,3217;2,89,2899;2,1099,96;2,1517,1824;2,974,1745;2,2712,919;2,2823,1123;2,473,1261;2,2011,2795;2,1558,17;2,2533,2173;2,2419,2636;2,953,1268;2,328,1074;2,2847,1492;2,2077,290;2,1838,1292;2,2733,1171;2,1296,2737;2,684,362;2,93,2692;2,2121,1949;2,1700,41;2,1365,51;2,2930,2405;-1,2,-94,-117,2,1679,0,0,1,1,1,-1;2,722,0,0,1,1,1,-1;2,2771,0,0,1,1,1,-1;2,1503,0,0,1,1,1,-1;2,2329,0,0,1,1,1,-1;2,1116,0,0,1,1,1,-1;2,2180,0,0,1,1,1,-1;2,293,0,0,1,1,1,-1;2,1213,0,0,1,1,1,-1;2,3307,0,0,1,1,1,-1;2,1741,0,0,1,1,1,-1;2,2401,0,0,1,1,1,-1;2,1759,0,0,1,1,1,-1;2,2039,0,0,1,1,1,-1;2,825,0,0,1,1,1,-1;2,974,0,0,1,1,1,-1;2,438,0,0,1,1,1,-1;2,2668,0,0,1,1,1,-1;2,898,0,0,1,1,1,-1;2,1783,0,0,1,1,1,-1;2,165,0,0,1,1,1,-1;2,1230,0,0,1,1,1,-1;2,1171,0,0,1,1,1,-1;2,2647,0,0,1,1,1,-1;2,1990,0,0,1,1,1,-1;2,1800,0,0,1,1,1,-1;2,3341,0,0,1,1,1,-1;-1,2,-94,-144,-1,2,-94,-142,-1,2,-94,-145,-1,2,-94,-143,-1,2,-94,-115,2,3034,1403;2,2194,2332;2,2388,3379;2,3203,1772;2,1938,1396;2,3297,2979;2,3006,1233;2,2540,635;2,2515,2626;2,1990,2778;2,1223,245;,2,3314,0,0,1,1,1,-1;2,2536,0,0,1,1,1,-1;2,2868,0,0,1,1,1,-1;2,2768,0,0,1,1,1,-1;2,3383,0,0,1,1,1,-1;2,2875,0,0,1,1,1,-1;2,2913,0,0,1,1,1,-1;2,2553,0,0,1,1,1,-1;2,1175,0,0,1,1,1,-1;2,1506,0,0,1,1,1,-1;2,1762,0,0,1,1,1,-1;2,521,0,0,1,1,1,-1;2,252,0,0,1,1,1,-1;2,694,0,0,1,1,1,-1;2,1907,0,0,1,1,1,-1;2,145,0,0,1,1,1,-1;,8420,811000000811748863,16796444255430,05840,506000002121713855,507000,5,4760,228000003315714751,1679644425543,640,0-1,2,-94,-70,-1,2,-94,-80,-1,2,-94,-120,-1,2,-94,-112,95200,108400,114399,82000,130200,53600,99400,56399,114599-1,2,-94,-103,2,1679644458493;3,1679645342893;2,1679644458593;3,1679644629443;2,1679644454893;3,1679644595243;2,1679644425593;3,1679645325793;2,1679644459293;3,1679644675043;2,1679644436893;3,1679644605693;2,1679644445143;3,1679644485043;2,1679644472643;3,1679644587643;2,1679644462243;3,1679644572443;2,1679644426343;3,1679645388493;2,1679644447443;3,1679644737743;2,1679644460243;3,1679645322943;2,1679644464843;3,1679644805193;2,1679644435193;3,1679644917293;2,1679644444943;3,1679644808993;2,1679644456693;3,1679645266893;2,1679644467243;3,1679644742493;2,1679644468693;3,1679645081643;2,1679644432193;3,1679645307743;2,1679644447943;3,1679645369493;2,1679644471643;3,1679645116793;2,1679644442543;3,1679645262143;2,1679644461593;3,1679645273543;2,1679644466" + "543;3,1679644802343;2,1679644462043;3,1679644884043;2,1679644444043;3,1679645110143;2,1679644451843;3,1679645058843;2,1679644459593;3,1679645182343;2,1679644465043;3,1679644902093;2,1679644462593;3,1679" + "645282093;2,1679644451643;3,1679644967643;2,1679644471093;3,1679644836543;2,1679644429293;3,1679645311543;2,1679644425643;3,1679644843193;2,1679644456443;3,1679645035093;2,1679644435043;3,1679644969543;2,1679644435743;3,1679644656043;2,1679644454692;3,1679644581943;"
//str = "3.2.2-1,2,-94,-100,-1,uaend,-1,2094,1080,1,99,1,zh,9,1,SM-N9500,N9500ZCU5DSH2,qcom,-1,com.mo2o.vueling,-1,-1,7c0a125bb127ce9a,-1,0,1,REL,N9500ZCU6DTF2,28,samsung,greatqltezc,release-keys,user,dpi,N9500ZCU6DTF2.AURORAROM.V24.0,msm8998,samsung,greatqltechn,samsung/greatqltezc/greatqltechn:9/PPR1.180610.011/N9500ZCU6DTF2:user/release-keys,SWDI3116,PPR1.180610.011,26215,475117593,839824631760-1,2,-94,-101,do_en,dm_en,t_en-1,2,-94,-102,-1,2,-94,-108,-1,2,-94,-117,2,55920,0,0,1,1,1,-1;1,10,0,0,1,1,1,-1;1,16,0,0,1,1,1,-1;1,6,0,0,1,1,1,-1;3,9,0,0,1,1,1,-1;-1,2,-94,-144,2;194.00;220.00;321336680;}QSXANLUNJ2NLQ4NQJQ9NQNLQ3NLNQL3NQLQNQ2LQ7NL2NQNLN2QNJQNQLNLQ3NQ2N2LQ5NQL5NQ2LUJQLXQC6NSJSQG3NQL3NS-1,2,-94,-142,1;-2.85;4.16;27053.85;3339546321;2YAYF2YK5YcYIrYKYki4YEb2Yg2YPdYOg}YMKYPYhYiYN4Ye2YuYAYe2YGhb2YfYO2Yfd3YHjG2Yt2YH5YJIK10YOYf5Yg2Ye2YlcKJ2YN:1;-0.18;0.07;-257.44;3919234001;HRA][VtUyvK|2kVwU_yk_Ta[2kr2k._2ksd4kakbka7kx11ktrk}11kdk_5kv2kzs4kcdkrsuwt4ktkr4kd3kbku2kz3k:1;-0.32;0.10;-13.73;2719676538;eNAWneZenf`uenabdagnzw3n]jcunr4ni11nh5nins2nsc8nwn2r2nsnh10nus2nf3nt5ni3nux2nhehn2tsnsxn}3nh2n-1,2,-94,-145,2;186.00;203.00;1406981227;Argkyd2n2k2nknknrg2n2knk2nkrngn2krk2n3kr2krkgnrk2ng2nknudknrgnrkgkrn2k2nkn2krgr2knknkr2ng}`grknrnd2ngr2kugrdr2ky`nugngnk2nrgknk-1,2,-94,-143,1;-0.26;0.04;-0.27;2635715807;4ABCDEF2HJ2LPO2R2TVW[X].3_a_a`b2feh2gjh2gij4ulij2ul64u}6u:1;-0.07;0.03;-0.07;1694743532;3A3BDCHCI2JMKRJSTNPVTV.[]_`V^]2^[a`k.11k]13kz5kx3k_3k}14kw4k_2k`2kvkwkY9kv2k_5k:1;-0.02;0.03;0.00;2487911325;12UkiUowhqUklUmpsqksmsmzxltsrtqymrj}Up2UoUl|jsn7Uxr6UxUo4UA2Uhqxphx14Upj10Uh12Uo:1;-0.06;0.06;-2.38;1801573466;j]LS6]R6]S5]Ng]f3]O2R8]SQ3]k4]K5]g3]R]R2]3S3]O2]LQ4]f5]TOKQ2]rj2]OJ]S2]qgl3]EQ]GP2]Qo]k}ItrGgA:1;-0.04;0.05;45.11;3100408457;KR7^Ts^g3^To^S^g^ik2^h^Q9^wj2^iji3^PO7^n2k2^k|2^s^it^l^L3^}^o6^NQ^h2^r^T^RKSPN2^p^q^A5^Tj2^o2^JQ3^m:1;-0.03;0.10;-1284.10;3154695065;uxv}|pkh`e.f`^.k]M.M.MX^]_2Y.Y.YbZM.XZYZ[3M]4MYMY_M[8M_7M]6MA3M._YM]14M.24M[:2;-0.07;0.05;4154942800;Z2N`2TA2NGNGNGTNGZPdp]d2jp3d3j3]2jdjdvj]dpj]dpj]2jdjVd2jpdpdj2p]v]Vdjdpdjpj2dpvpjp3d2j]Vpd2j4p3jp]p]2j5pv}]2jvVj2p2j2p:2;-0.06;0.02;677048861;3^T2^T^T4^A^J2^i_3si_2iUisi_2s}si2s_3si_3si2si8sis_3si2s4i}_3si6sisi3si3sisis}3s2is_4si3sis2i}7si:1;-0.42;0.24;0.35;3434372224;2foU.2f]Y]YG2fq^3fZX3fY5fW5fWfXr]6fp^3ftwfH^f].pY2fuw2f^2fQA}4fvf^r3fT10fV]^p2f|frwzwf.4fo7fR2fSf-1,2,-94,-115,0,55969,9981135226,23141287360,33122478555,55994,0,5,128,128,2000,0,1,2946829124968794780,1679649263521,0-1,2,-94,-70,-1,2,-94,-80,-1,2,-94,-120,-1,2,-94,-112,15,225,59,181,41400,422,62500,624,13746-1,2,-94,-121,-1,2,-94,-103,"
fmt.Println(str)
s.initEncryptKey()
uptimeMillis := s.getUptime()
//fmt.Println("aesKeyEncrypted", s.aesKeyEncrypted)
//fmt.Println("hmacKeyEncrypted", s.hmacKeyEncrypted)
iv, _ := hex.DecodeString("3378F1D4F8B5253D751D8BCF4F9291E2")
doFinal, _ := Encrypt(s.aesKey, iv, str)
//doFinal = doFinal[:len(doFinal)-16]
aesUptime := (s.getUptime() - uptimeMillis + getRandomLong(1, 20)) * 1000
var obj []byte
obj = append(obj, iv...)
obj = append(obj, doFinal...)
uptimeMillis2 := s.getUptime()
hmac := hmac.New(sha256.New, s.hmacKey)
hmac.Write(obj)
iv2 := hmac.Sum(nil)
hmackUptime := (s.getUptime() - uptimeMillis2 + getRandomLong(1, 20)) * 1000
var doFinal2 []byte
doFinal2 = append(doFinal2, obj...)
doFinal2 = append(doFinal2, iv2...)
uptimeMillis3 := s.getUptime()
encryptedData := base64.StdEncoding.EncodeToString(doFinal2)
b64uptime := 1000 * (s.getUptime() - uptimeMillis3 + getRandomLong(1, 20))
sb := NewStringBuilder()
sb.append("2,a,")
sb.append(s.aesKeyEncrypted)
sb.append(",")
sb.append(s.hmacKeyEncrypted)
sb.append("$")
sb.append(encryptedData)
sb.append("$")
sb.append(aesUptime).append(",").append(hmackUptime).append(",").append(b64uptime)
sb.append("$$")
return sb.toString()
}
func (s *SensorData) initEncryptKey() {
aesKey, _ := base64.StdEncoding.DecodeString("/m6k5i+HRyyYMzem/HwUTw==")
//if _, err := rand.Read(aesKey); err != nil {
// panic(err)
//}
hmacKey, _ := base64.StdEncoding.DecodeString("ZGtrI/RMFpAdMSxFumFQNoeLtf8B0e7R0bvOLAIWzek=")
//if _, err := rand.Read(hmacKey); err != nil {
// panic(err)
//}
publicKey := "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4sA7vA7N/t1SRBS8tugM2X4bByl0jaCZLqxPOql+qZ3sP4UFayqJTvXjd7eTjMwg1T70PnmPWyh1hfQr4s12oSVphTKAjPiWmEBvcpnPPMjr5fGgv0w6+KM9DLTxcktThPZAGoVcoyM/cTO/YsAMIxlmTzpXBaxddHRwi8S2NvwIDAQAB"
publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4sA7vA7N/t1SRBS8tugM2X4bByl0jaCZLqxPOql+qZ3sP4UFayqJTvXjd7eTjMwg1T70PnmPWyh1hfQr4s12oSVphTKAjPiWmEBvcpnPPMjr5fGgv0w6+KM9DLTxcktThPZAGoVcoyM/cTO/YsAMIxlmTzpXBaxddHRwi8S2NvwIDAQAB"
s.aesKeyEncrypted = base64.StdEncoding.EncodeToString(RsaEncrypt(publicKey, aesKey))
s.aesKeyEncrypted = "fA9xNjKrlzQvD+r7WKzP1TY9paQOgNQYmT2NY43wEHBbw0Lo/kyR0GKKzrlrtnTwLLdEObWQ2F4JzMbe/v8mQfXaBQJ+V4IRENibxTtycC5TE+WAZRrKvmnjIewqTSbOH7TJxkcpblD/TN2DLnV5l3DtItw3JSTNTq0bj4kjE0w="
s.hmacKeyEncrypted = base64.StdEncoding.EncodeToString(RsaEncrypt(publicKey, hmacKey))
s.hmacKeyEncrypted = "g7hQpRN2kft3JKiRsKnQ68CCxCyM813EpxTzmXRHaqwa2NlEAS+qtbjTJGm3MJ+l3mRWqc1lKg2JpopGRb9SFUfSttgUdJJObvugKK4muxWBcYh/4dnCHIN/KdOm/n6/mltip6dOyXmEF15tDqZgpWzKFf3blb7vI3uXS14StVE="
s.aesKey = aesKey
s.hmacKey = hmacKey
}
func (s *SensorData) orientation() string {
// todo
return "2;194.00;210.00;599833503;}WSL2SbL[S[S2WS[S3W[W[SqAWSW[S[2WS5W[S[S[WS[S[W[O3W^2WOW[WS^WS2WS[2WS[16W[2S2[S4W[WS[4WS[7WS4W^S[SW"
}
func getRandomNumber(min, max int) int {
return int(int(sensor.Float64()*float64(max-min)) + min)
}
func getRandomLong(min, max int64) int64 {
return int64(int64(sensor.Float64()*float64(max-min)) + min)
}
......@@ -20,6 +20,7 @@ require (
github.com/antchfx/xpath v1.2.3 // indirect
github.com/bogdanfinn/utls v1.5.14 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/klauspost/compress v1.15.12 // indirect
github.com/tam7t/hpkp v0.0.0-20160821193359-2b70b4024ed5 // indirect
golang.org/x/crypto v0.1.0 // indirect
......
......@@ -21,6 +21,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/imroc/biu v0.0.0-20170329141542-0376ce6761c0 h1:pkyNAS9IQiZgseFrdhZC4cloBo2k2O2Son/k+3NquwY=
......
......@@ -11,6 +11,7 @@ import (
func Float64() float64 {
return float64(RandRandom(1000)) / float64(1000)
//return 0.22201
}
func GetRandomTime() int64 {
f := Float64()*100 + 30
......
......@@ -12,6 +12,7 @@ import (
"net/url"
"strings"
"sync"
"test/app"
"test/model"
"time"
)
......@@ -130,20 +131,20 @@ func actU2() {
}
func actVY() {
t1 := time.Now()
//resp, err := http.Post("http://lcc.unififi.com/akamai/gen",
resp, err := http.Post(akmUrl,
"application/json", strings.NewReader("{\"type\": \"VY\", \"proxy\": \""+px+"\"}"))
//"application/json", strings.NewReader("{\"type\": \"VY\", \"proxy\": \"http://127.0.0.1:8890\"}"))
//resp, err := http.Post("http://127.0.0.1:59001/akamai/gen", "application/json", strings.NewReader("{\"type\": \"u2\", \"proxy\": \"http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600\"}"))
if err != nil {
//panic(err)
fmt.Println(err)
return
}
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println("abck cost", time.Since(t1).String())
testVY(px, body)
//t1 := time.Now()
////resp, err := http.Post("http://lcc.unififi.com/akamai/gen",
//resp, err := http.Post(akmUrl,
// "application/json", strings.NewReader("{\"type\": \"VY\", \"proxy\": \""+px+"\"}"))
////"application/json", strings.NewReader("{\"type\": \"VY\", \"proxy\": \"http://127.0.0.1:8890\"}"))
////resp, err := http.Post("http://127.0.0.1:59001/akamai/gen", "application/json", strings.NewReader("{\"type\": \"u2\", \"proxy\": \"http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600\"}"))
//if err != nil {
// //panic(err)
// fmt.Println(err)
// return
//}
//body, _ := ioutil.ReadAll(resp.Body)
//fmt.Println("abck cost", time.Since(t1).String())
testVY(px, []byte("sss"))
}
func actnk() {
t1 := time.Now()
......@@ -167,12 +168,12 @@ var px = "http://user-unifflcc-region-de:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600"
var akmUrl = "http://lcc.unififi.com/akamai/gen"
func main() {
Debug = flag.Bool("debug", false, "本地调试")
Debug = flag.Bool("debug", true, "本地调试")
flag.Parse()
r := rand.Intn(1149) + 10000
px = fmt.Sprintf("http://user-unifflcc-region-de-sessid-%d-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600", r)
if *Debug {
//px = "http://127.0.0.1:8890"
px = "http://127.0.0.1:8890"
akmUrl = "http://127.0.0.1:59001/akamai/gen"
}
fmt.Println(px)
......@@ -203,7 +204,8 @@ func main() {
}
func testVY(px string, data []byte) {
datas := "{\n\t\"DeviceType\": \"WEB\",\n\t\"UserAgent\": \"Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1\",\n\t\"Udid\": 'c4bf-275d-76b1-ff7f-83c3-cfcd',\n\t\"IP\": \"235.231.34.152\",\n\t\"AppVersion\": \"17.2.0\",\n\t\"Domain\": \"https://m.vueling.com\",\n\t\"DiscountType\": 0,\n\t\"Paxs\": [{\n\t\t\"PaxType\": \"ADT\",\n\t\t\"Quantity\": \"1\"\n\t}, {\n\t\t\"PaxType\": \"CHD\",\n\t\t\"Quantity\": \"0\"\n\t}, {\n\t\t\"PaxType\": \"INF\",\n\t\t\"Quantity\": \"0\"\n\t}],\n\t\"CurrencyCode\": \"EUR\",\n\t\"AirportDateTimeList\": [{\n\t\t\"ArrivalStation\": \"BCN\",\n\t\t\"DepartureStation\": \"LCG\",\n\t\t\"MarketDateDeparture\": \"2023-03-20\"\n\t}],\n\t\"Language\": \"en-GB\"\n}"
datas := "{\n \"AirportDateTimeList\": [\n {\n \"ArrivalStation\": \"BCN\",\n \"DepartureStation\": \"LCG\",\n \"MarketDateDeparture\": \"2023-04-07\"\n }\n ],\n \"CurrencyCode\": \"EUR\",\n \"DiscountType\": 0,\n \"Paxs\": [\n {\n \"PaxType\": \"ADT\",\n \"Quantity\": 1\n },\n {\n \"PaxType\": \"CHD\",\n \"Quantity\": 0\n },\n {\n \"PaxType\": \"INF\",\n \"Quantity\": 0\n }\n ],\n \"PromoType\": 0,\n \"AppVersion\": \"12.6.0\",\n \"Coordinates\": \"\",\n \"DeviceType\": \"AND\",\n \"IP\": \"192.168.31.141\",\n \"InstallationID\": \"7c0a125bb127ce1a\",\n \"IsFenceAction\": False,\n \"IsPushAction\": False,\n \"Language\": \"EN\",\n \"OsVersion\": \"android : 9 : P : sdk=28\",\n \"TimeZone\": \"8\",\n \"TokenID\": \"\",\n}"
v := model.Akm{}
json.Unmarshal(data, &v)
......@@ -231,22 +233,26 @@ func testVY(px string, data []byte) {
if err != nil {
panic(err)
}
req.Header.Set("X-acf-sensor-data", app.NewSensorData().GetSensorData())
req.Header.Set("User-Agent", "Vueling/12.6.0 (Android 28; Release/9)")
req.Header.Set("appVersion", "12.6.0")
req.Header.Set("Content-Type", "application/json; charset=UTF-8")
req.Header.Set("Host", "apimobile.vueling.com")
req.Header.Set("Upgrade-Insecure-Requests", "1")
req.Header.Set("user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1")
req.Header.Set("accept", "application/json, text/plain, */*")
req.Header.Set("sec-fetch-site", "same-site")
req.Header.Set("sec-fetch-mode", "cors")
req.Header.Set("Sec-Fetch-User", "?1")
req.Header.Set("sec-fetch-dest", "empty")
req.Header.Set("accept-language", "en-US,en;q=0.9")
req.Header.Set("pragma", "no-cache")
req.Header.Set("cache-control", "no-cache")
req.Header.Set("content-type", "application/json")
req.Header.Set("origin", "https://m.vueling.com")
req.Header.Set("referer", "https://m.vueling.com/")
req.Header.Set("Content-Type", "application/json")
//req.Header.Set("Host", "apimobile.vueling.com")
//req.Header.Set("Upgrade-Insecure-Requests", "1")
//req.Header.Set("user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1")
//req.Header.Set("accept", "application/json, text/plain, */*")
//req.Header.Set("sec-fetch-site", "same-site")
//req.Header.Set("sec-fetch-mode", "cors")
//req.Header.Set("Sec-Fetch-User", "?1")
//req.Header.Set("sec-fetch-dest", "empty")
//req.Header.Set("accept-language", "en-US,en;q=0.9")
//req.Header.Set("pragma", "no-cache")
//req.Header.Set("cache-control", "no-cache")
//req.Header.Set("content-type", "application/json")
//req.Header.Set("origin", "https://m.vueling.com")
//req.Header.Set("referer", "https://m.vueling.com/")
//req.Header.Set("Content-Type", "application/json")
resp, err := Client.Do(req)
if err != nil {
panic(err)
......
package main
import (
"fmt"
"test/app"
)
func main() {
a := app.NewSensorData()
s := a.GetSensorData()
fmt.Println(s)
fmt.Println(len(s))
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment