|
|
|
@ -1,10 +1,18 @@
|
|
|
|
|
package auth
|
|
|
|
|
|
|
|
|
|
//go:generate stringer -type=Protocol -linecomment
|
|
|
|
|
type Protocol int
|
|
|
|
|
import (
|
|
|
|
|
"encoding/hex"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//go:generate stringer -type=ProtocolType -linecomment
|
|
|
|
|
type ProtocolType int
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
Unset Protocol = iota
|
|
|
|
|
Unset ProtocolType = iota
|
|
|
|
|
AndroidPhone // Android Phone
|
|
|
|
|
AndroidWatch // Android Watch
|
|
|
|
|
MacOS // MacOS
|
|
|
|
@ -13,6 +21,99 @@ const (
|
|
|
|
|
AndroidPad // Android Pad
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
AppVersions = map[ProtocolType]*AppVersion{
|
|
|
|
|
AndroidPhone: {
|
|
|
|
|
ApkId: "com.tencent.mobileqq",
|
|
|
|
|
AppId: 537151682,
|
|
|
|
|
SubAppId: 537151682,
|
|
|
|
|
SortVersionName: "8.9.33.10335",
|
|
|
|
|
BuildTime: 1673599898,
|
|
|
|
|
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
|
|
|
|
SdkVersion: "6.0.0.2534",
|
|
|
|
|
SSOVersion: 19,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 0x10400,
|
|
|
|
|
MainSigMap: WLOGIN_A5 | WLOGIN_RESERVED | WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST |
|
|
|
|
|
WLOGIN_LSKEY | WLOGIN_SKEY | WLOGIN_SIG64 | 1<<16 | WLOGIN_VKEY | WLOGIN_D2 |
|
|
|
|
|
WLOGIN_SID | WLOGIN_PSKEY | WLOGIN_AQSIG | WLOGIN_LHSIG | WLOGIN_PAYTOKEN, // 16724722
|
|
|
|
|
Protocol: AndroidPhone,
|
|
|
|
|
},
|
|
|
|
|
AndroidPad: {
|
|
|
|
|
ApkId: "com.tencent.mobileqq",
|
|
|
|
|
AppId: 537151218,
|
|
|
|
|
SubAppId: 537151218,
|
|
|
|
|
SortVersionName: "8.9.33.10335",
|
|
|
|
|
BuildTime: 1673599898,
|
|
|
|
|
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
|
|
|
|
SdkVersion: "6.0.0.2534",
|
|
|
|
|
SSOVersion: 19,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 0x10400,
|
|
|
|
|
MainSigMap: WLOGIN_A5 | WLOGIN_RESERVED | WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST |
|
|
|
|
|
WLOGIN_LSKEY | WLOGIN_SKEY | WLOGIN_SIG64 | 1<<16 | WLOGIN_VKEY | WLOGIN_D2 |
|
|
|
|
|
WLOGIN_SID | WLOGIN_PSKEY | WLOGIN_AQSIG | WLOGIN_LHSIG | WLOGIN_PAYTOKEN, // 16724722
|
|
|
|
|
Protocol: AndroidPad,
|
|
|
|
|
},
|
|
|
|
|
AndroidWatch: {
|
|
|
|
|
ApkId: "com.tencent.qqlite",
|
|
|
|
|
AppId: 537064446,
|
|
|
|
|
SubAppId: 537064446,
|
|
|
|
|
SortVersionName: "2.0.5",
|
|
|
|
|
BuildTime: 1559564731,
|
|
|
|
|
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
|
|
|
|
SdkVersion: "6.0.0.236",
|
|
|
|
|
SSOVersion: 5,
|
|
|
|
|
MiscBitmap: 16252796,
|
|
|
|
|
SubSigmap: 0x10400,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_D2 | WLOGIN_PSKEY | WLOGIN_DA2, // 34869472
|
|
|
|
|
Protocol: AndroidWatch,
|
|
|
|
|
},
|
|
|
|
|
IPad: {
|
|
|
|
|
ApkId: "com.tencent.minihd.qq",
|
|
|
|
|
AppId: 537118796,
|
|
|
|
|
SubAppId: 537118796,
|
|
|
|
|
SortVersionName: "5.9.3",
|
|
|
|
|
BuildTime: 1595836208,
|
|
|
|
|
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
|
|
|
|
|
SdkVersion: "6.0.0.2433",
|
|
|
|
|
SSOVersion: 12,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 66560,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_VKEY | WLOGIN_D2 | WLOGIN_SID | WLOGIN_PSKEY, // 1970400
|
|
|
|
|
Protocol: IPad,
|
|
|
|
|
},
|
|
|
|
|
MacOS: {
|
|
|
|
|
ApkId: "com.tencent.minihd.qq",
|
|
|
|
|
AppId: 537128930,
|
|
|
|
|
SubAppId: 537128930,
|
|
|
|
|
SortVersionName: "5.8.9",
|
|
|
|
|
BuildTime: 1595836208,
|
|
|
|
|
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
|
|
|
|
|
SdkVersion: "6.0.0.2433",
|
|
|
|
|
SSOVersion: 12,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 66560,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_VKEY | WLOGIN_D2 | WLOGIN_SID | WLOGIN_PSKEY, // 1970400
|
|
|
|
|
Protocol: MacOS,
|
|
|
|
|
},
|
|
|
|
|
QiDian: {
|
|
|
|
|
ApkId: "com.tencent.qidian",
|
|
|
|
|
AppId: 537096038,
|
|
|
|
|
SubAppId: 537036590,
|
|
|
|
|
SortVersionName: "5.0.0",
|
|
|
|
|
BuildTime: 1630062176,
|
|
|
|
|
ApkSign: []byte{160, 30, 236, 171, 133, 233, 227, 186, 43, 15, 106, 21, 140, 133, 92, 41},
|
|
|
|
|
SdkVersion: "6.0.0.2484",
|
|
|
|
|
SSOVersion: 18,
|
|
|
|
|
MiscBitmap: 184024956,
|
|
|
|
|
SubSigmap: 66560,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_D2 | WLOGIN_PSKEY | WLOGIN_DA2, // 34869472
|
|
|
|
|
Protocol: QiDian,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// see oicq/wlogin_sdk/request/WtloginHelper.java class SigType
|
|
|
|
|
const (
|
|
|
|
|
_ = 1 << iota
|
|
|
|
@ -57,123 +158,37 @@ type AppVersion struct {
|
|
|
|
|
MiscBitmap uint32
|
|
|
|
|
SubSigmap uint32
|
|
|
|
|
MainSigMap uint32
|
|
|
|
|
Protocol Protocol
|
|
|
|
|
Protocol ProtocolType
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
aPhone = &AppVersion{
|
|
|
|
|
ApkId: "com.tencent.mobileqq",
|
|
|
|
|
AppId: 537151682,
|
|
|
|
|
SubAppId: 537151682,
|
|
|
|
|
SortVersionName: "8.9.33.10335",
|
|
|
|
|
BuildTime: 1673599898,
|
|
|
|
|
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
|
|
|
|
SdkVersion: "6.0.0.2534",
|
|
|
|
|
SSOVersion: 19,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 0x10400,
|
|
|
|
|
MainSigMap: WLOGIN_A5 | WLOGIN_RESERVED | WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST |
|
|
|
|
|
WLOGIN_LSKEY | WLOGIN_SKEY | WLOGIN_SIG64 | 1<<16 | WLOGIN_VKEY | WLOGIN_D2 |
|
|
|
|
|
WLOGIN_SID | WLOGIN_PSKEY | WLOGIN_AQSIG | WLOGIN_LHSIG | WLOGIN_PAYTOKEN, // 16724722
|
|
|
|
|
Protocol: AndroidPhone,
|
|
|
|
|
func (v *AppVersion) String() string {
|
|
|
|
|
return fmt.Sprintf("%s %s - %v", v.Protocol, v.SortVersionName, v.BuildTime)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
aPad = &AppVersion{
|
|
|
|
|
ApkId: "com.tencent.mobileqq",
|
|
|
|
|
AppId: 537151218,
|
|
|
|
|
SubAppId: 537151218,
|
|
|
|
|
SortVersionName: "8.9.33.10335",
|
|
|
|
|
BuildTime: 1673599898,
|
|
|
|
|
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
|
|
|
|
SdkVersion: "6.0.0.2534",
|
|
|
|
|
SSOVersion: 19,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 0x10400,
|
|
|
|
|
MainSigMap: WLOGIN_A5 | WLOGIN_RESERVED | WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST |
|
|
|
|
|
WLOGIN_LSKEY | WLOGIN_SKEY | WLOGIN_SIG64 | 1<<16 | WLOGIN_VKEY | WLOGIN_D2 |
|
|
|
|
|
WLOGIN_SID | WLOGIN_PSKEY | WLOGIN_AQSIG | WLOGIN_LHSIG | WLOGIN_PAYTOKEN, // 16724722
|
|
|
|
|
Protocol: AndroidPad,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
aWatch = &AppVersion{
|
|
|
|
|
ApkId: "com.tencent.qqlite",
|
|
|
|
|
AppId: 537064446,
|
|
|
|
|
SubAppId: 537064446,
|
|
|
|
|
SortVersionName: "2.0.5",
|
|
|
|
|
BuildTime: 1559564731,
|
|
|
|
|
ApkSign: []byte{0xA6, 0xB7, 0x45, 0xBF, 0x24, 0xA2, 0xC2, 0x77, 0x52, 0x77, 0x16, 0xF6, 0xF3, 0x6E, 0xB6, 0x8D},
|
|
|
|
|
SdkVersion: "6.0.0.236",
|
|
|
|
|
SSOVersion: 5,
|
|
|
|
|
MiscBitmap: 16252796,
|
|
|
|
|
SubSigmap: 0x10400,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_D2 | WLOGIN_PSKEY | WLOGIN_DA2, // 34869472
|
|
|
|
|
Protocol: AndroidWatch,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ipad = &AppVersion{
|
|
|
|
|
ApkId: "com.tencent.minihd.qq",
|
|
|
|
|
AppId: 537118796,
|
|
|
|
|
SubAppId: 537118796,
|
|
|
|
|
SortVersionName: "5.9.3",
|
|
|
|
|
BuildTime: 1595836208,
|
|
|
|
|
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
|
|
|
|
|
SdkVersion: "6.0.0.2433",
|
|
|
|
|
SSOVersion: 12,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 66560,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_VKEY | WLOGIN_D2 | WLOGIN_SID | WLOGIN_PSKEY, // 1970400
|
|
|
|
|
Protocol: IPad,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
macOS = &AppVersion{
|
|
|
|
|
ApkId: "com.tencent.minihd.qq",
|
|
|
|
|
AppId: 537128930,
|
|
|
|
|
SubAppId: 537128930,
|
|
|
|
|
SortVersionName: "5.8.9",
|
|
|
|
|
BuildTime: 1595836208,
|
|
|
|
|
ApkSign: []byte{170, 57, 120, 244, 31, 217, 111, 249, 145, 74, 102, 158, 24, 100, 116, 199},
|
|
|
|
|
SdkVersion: "6.0.0.2433",
|
|
|
|
|
SSOVersion: 12,
|
|
|
|
|
MiscBitmap: 150470524,
|
|
|
|
|
SubSigmap: 66560,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_VKEY | WLOGIN_D2 | WLOGIN_SID | WLOGIN_PSKEY, // 1970400
|
|
|
|
|
Protocol: MacOS,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
qidian = &AppVersion{
|
|
|
|
|
ApkId: "com.tencent.qidian",
|
|
|
|
|
AppId: 537096038,
|
|
|
|
|
SubAppId: 537036590,
|
|
|
|
|
SortVersionName: "5.0.0",
|
|
|
|
|
BuildTime: 1630062176,
|
|
|
|
|
ApkSign: []byte{160, 30, 236, 171, 133, 233, 227, 186, 43, 15, 106, 21, 140, 133, 92, 41},
|
|
|
|
|
SdkVersion: "6.0.0.2484",
|
|
|
|
|
SSOVersion: 18,
|
|
|
|
|
MiscBitmap: 184024956,
|
|
|
|
|
SubSigmap: 66560,
|
|
|
|
|
MainSigMap: WLOGIN_STWEB | WLOGIN_A2 | WLOGIN_ST | WLOGIN_SKEY | WLOGIN_D2 | WLOGIN_PSKEY | WLOGIN_DA2, // 34869472
|
|
|
|
|
Protocol: QiDian,
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (i Protocol) Version() *AppVersion {
|
|
|
|
|
switch i {
|
|
|
|
|
case AndroidPhone:
|
|
|
|
|
return aPhone
|
|
|
|
|
case AndroidPad:
|
|
|
|
|
return aPad
|
|
|
|
|
case AndroidWatch:
|
|
|
|
|
return aWatch
|
|
|
|
|
case IPad:
|
|
|
|
|
return ipad
|
|
|
|
|
case MacOS:
|
|
|
|
|
return macOS
|
|
|
|
|
case QiDian:
|
|
|
|
|
return qidian
|
|
|
|
|
func (v *AppVersion) ReadJson(d []byte) error {
|
|
|
|
|
var f appVersionFile
|
|
|
|
|
if err := json.Unmarshal(d, &f); err != nil {
|
|
|
|
|
return errors.Wrap(err, "failed to unmarshal json message")
|
|
|
|
|
}
|
|
|
|
|
v.ApkId = f.ApkId
|
|
|
|
|
v.AppId = f.AppId
|
|
|
|
|
v.SubAppId = f.SubAppId
|
|
|
|
|
v.SortVersionName = f.SortVersionName
|
|
|
|
|
v.BuildTime = f.BuildTime
|
|
|
|
|
v.ApkSign, _ = hex.DecodeString(f.ApkSign)
|
|
|
|
|
v.SdkVersion = f.SdkVersion
|
|
|
|
|
v.SSOVersion = f.SSOVersion
|
|
|
|
|
v.MiscBitmap = f.MiscBitmap
|
|
|
|
|
v.SubSigmap = f.SubSigmap
|
|
|
|
|
v.MainSigMap = f.MainSigMap
|
|
|
|
|
v.Protocol = f.ProtocolType
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (i ProtocolType) Version() *AppVersion {
|
|
|
|
|
return AppVersions[i]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type SigInfo struct {
|
|
|
|
|
LoginBitmap uint64
|
|
|
|
|
TGT []byte
|
|
|
|
@ -216,3 +231,18 @@ type SigInfo struct {
|
|
|
|
|
Ksid []byte
|
|
|
|
|
// msgCtrlBuf []byte
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type appVersionFile struct {
|
|
|
|
|
ApkId string `json:"apk_id"`
|
|
|
|
|
AppId uint32 `json:"app_id"`
|
|
|
|
|
SubAppId uint32 `json:"sub_app_id"`
|
|
|
|
|
SortVersionName string `json:"sort_version_name"`
|
|
|
|
|
BuildTime uint32 `json:"build_time"`
|
|
|
|
|
ApkSign string `json:"apk_sign"` // hex encoded
|
|
|
|
|
SdkVersion string `json:"sdk_version"`
|
|
|
|
|
SSOVersion uint32 `json:"sso_version"`
|
|
|
|
|
MiscBitmap uint32 `json:"misc_bitmap"`
|
|
|
|
|
MainSigMap uint32 `json:"main_sig_map"`
|
|
|
|
|
SubSigmap uint32 `json:"sub_sig_map"`
|
|
|
|
|
ProtocolType ProtocolType `json:"protocol_type"`
|
|
|
|
|
}
|
|
|
|
|