1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

supported random device info.

This commit is contained in:
Mrs4s 2020-07-18 00:55:08 +08:00
parent 9f136485c4
commit 64c1f32cdc
4 changed files with 69 additions and 10 deletions

View File

@ -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:]),
)) ))
} }

View File

@ -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[:]

View File

@ -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,

View File

@ -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))