mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
supported random device info.
This commit is contained in:
parent
9f136485c4
commit
64c1f32cdc
@ -20,9 +20,15 @@ func ZlibUncompress(src []byte) []byte {
|
|||||||
|
|
||||||
func CalculateImageResourceId(md5 []byte) string {
|
func CalculateImageResourceId(md5 []byte) string {
|
||||||
return strings.ToUpper(fmt.Sprintf(
|
return strings.ToUpper(fmt.Sprintf(
|
||||||
"{%s-%s-%s-%s-%s}.png",
|
"{%s}.png", GenUUID(md5),
|
||||||
hex.EncodeToString(md5[0:4]), hex.EncodeToString(md5[4:6]), hex.EncodeToString(md5[6:8]),
|
))
|
||||||
hex.EncodeToString(md5[8:10]), hex.EncodeToString(md5[10:]),
|
}
|
||||||
|
|
||||||
|
func GenUUID(h []byte) string {
|
||||||
|
return strings.ToUpper(fmt.Sprintf(
|
||||||
|
"%s-%s-%s-%s-%s",
|
||||||
|
hex.EncodeToString(h[0:4]), hex.EncodeToString(h[4:6]), hex.EncodeToString(h[6:8]),
|
||||||
|
hex.EncodeToString(h[8:10]), hex.EncodeToString(h[10:]),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,10 +2,12 @@ package client
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
|
"encoding/json"
|
||||||
"github.com/Mrs4s/MiraiGo/binary"
|
"github.com/Mrs4s/MiraiGo/binary"
|
||||||
devinfo "github.com/Mrs4s/MiraiGo/client/pb"
|
devinfo "github.com/Mrs4s/MiraiGo/client/pb"
|
||||||
"github.com/Mrs4s/MiraiGo/client/pb/msg"
|
"github.com/Mrs4s/MiraiGo/client/pb/msg"
|
||||||
"github.com/Mrs4s/MiraiGo/message"
|
"github.com/Mrs4s/MiraiGo/message"
|
||||||
|
"github.com/Mrs4s/MiraiGo/utils"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"sort"
|
"sort"
|
||||||
@ -45,12 +47,21 @@ type Version struct {
|
|||||||
Sdk uint32
|
Sdk uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DeviceInfoFile struct {
|
||||||
|
Display string `json:"display"`
|
||||||
|
FingerPrint string `json:"finger_print"`
|
||||||
|
BootId string `json:"boot_id"`
|
||||||
|
ProcVersion string `json:"proc_version"`
|
||||||
|
IMEI string `json:"imei"`
|
||||||
|
}
|
||||||
|
|
||||||
type groupMessageBuilder struct {
|
type groupMessageBuilder struct {
|
||||||
MessageSeq int32
|
MessageSeq int32
|
||||||
MessageCount int32
|
MessageCount int32
|
||||||
MessageSlices []*msg.Message
|
MessageSlices []*msg.Message
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// default
|
||||||
var SystemDeviceInfo = &DeviceInfo{
|
var SystemDeviceInfo = &DeviceInfo{
|
||||||
Display: []byte("MIRAI.123456.001"),
|
Display: []byte("MIRAI.123456.001"),
|
||||||
Product: []byte("mirai"),
|
Product: []byte("mirai"),
|
||||||
@ -81,6 +92,7 @@ var SystemDeviceInfo = &DeviceInfo{
|
|||||||
}
|
}
|
||||||
|
|
||||||
var EmptyBytes = []byte{}
|
var EmptyBytes = []byte{}
|
||||||
|
var NumberRange = "0123456789"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
r := make([]byte, 16)
|
r := make([]byte, 16)
|
||||||
@ -91,6 +103,50 @@ func init() {
|
|||||||
SystemDeviceInfo.GenNewTgtgtKey()
|
SystemDeviceInfo.GenNewTgtgtKey()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GenRandomDevice() {
|
||||||
|
r := make([]byte, 16)
|
||||||
|
rand.Read(r)
|
||||||
|
SystemDeviceInfo.Display = []byte("MIRAI." + utils.RandomStringRange(6, NumberRange) + ".001")
|
||||||
|
SystemDeviceInfo.FingerPrint = []byte("mamoe/mirai/mirai:10/MIRAI.200122.001/" + utils.RandomStringRange(7, NumberRange) + ":user/release-keys")
|
||||||
|
SystemDeviceInfo.BootId = []byte(binary.GenUUID(r))
|
||||||
|
SystemDeviceInfo.ProcVersion = []byte("Linux version 3.0.31-" + utils.RandomString(8) + " (android-build@xxx.xxx.xxx.xxx.com)")
|
||||||
|
rand.Read(r)
|
||||||
|
t := md5.Sum(r)
|
||||||
|
SystemDeviceInfo.IMSIMd5 = t[:]
|
||||||
|
SystemDeviceInfo.IMEI = utils.RandomStringRange(15, NumberRange)
|
||||||
|
SystemDeviceInfo.AndroidId = SystemDeviceInfo.Display
|
||||||
|
SystemDeviceInfo.GenNewGuid()
|
||||||
|
SystemDeviceInfo.GenNewTgtgtKey()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (info *DeviceInfo) ToJson() []byte {
|
||||||
|
f := &DeviceInfoFile{
|
||||||
|
Display: string(info.Display),
|
||||||
|
FingerPrint: string(info.FingerPrint),
|
||||||
|
BootId: string(info.BootId),
|
||||||
|
ProcVersion: string(info.ProcVersion),
|
||||||
|
IMEI: info.IMEI,
|
||||||
|
}
|
||||||
|
d, _ := json.Marshal(f)
|
||||||
|
return d
|
||||||
|
}
|
||||||
|
|
||||||
|
func (info *DeviceInfo) ReadJson(d []byte) error {
|
||||||
|
var f DeviceInfoFile
|
||||||
|
if err := json.Unmarshal(d, &f); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
info.Display = []byte(f.Display)
|
||||||
|
info.FingerPrint = []byte(f.FingerPrint)
|
||||||
|
info.BootId = []byte(f.BootId)
|
||||||
|
info.ProcVersion = []byte(f.ProcVersion)
|
||||||
|
info.IMEI = f.IMEI
|
||||||
|
info.AndroidId = SystemDeviceInfo.Display
|
||||||
|
SystemDeviceInfo.GenNewGuid()
|
||||||
|
SystemDeviceInfo.GenNewTgtgtKey()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (info *DeviceInfo) GenNewGuid() {
|
func (info *DeviceInfo) GenNewGuid() {
|
||||||
t := md5.Sum(append(info.AndroidId, info.MacAddress...))
|
t := md5.Sum(append(info.AndroidId, info.MacAddress...))
|
||||||
info.Guid = t[:]
|
info.Guid = t[:]
|
||||||
|
@ -41,12 +41,6 @@ func NewText(s string) *TextElement {
|
|||||||
return &TextElement{Content: s}
|
return &TextElement{Content: s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewImage(data []byte) *ImageElement {
|
|
||||||
return &ImageElement{
|
|
||||||
Data: data,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGroupImage(id string, md5 []byte) *GroupImageElement {
|
func NewGroupImage(id string, md5 []byte) *GroupImageElement {
|
||||||
return &GroupImageElement{
|
return &GroupImageElement{
|
||||||
ImageId: id,
|
ImageId: id,
|
||||||
|
@ -7,8 +7,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func RandomString(len int) string {
|
func RandomString(len int) string {
|
||||||
|
return RandomStringRange(len, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")
|
||||||
|
}
|
||||||
|
|
||||||
|
func RandomStringRange(len int, str string) string {
|
||||||
var res string
|
var res string
|
||||||
var str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
|
|
||||||
b := bytes.NewBufferString(str)
|
b := bytes.NewBufferString(str)
|
||||||
length := b.Len()
|
length := b.Len()
|
||||||
bigInt := big.NewInt(int64(length))
|
bigInt := big.NewInt(int64(length))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user