⚗️ 测试mys设备登录

This commit is contained in:
‘KimigaiiWuyi’ 2023-11-09 20:42:52 +08:00
parent f277cecf0a
commit f93a162ffc
3 changed files with 60 additions and 11 deletions

View File

@ -1,6 +1,9 @@
from gsuid_core.sv import SV from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event from gsuid_core.models import Event
from gsuid_core.utils.api.mys_api import mys_api
from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind, GsUser
from gsuid_core.utils.cookie_manager.qrlogin import qrcode_login from gsuid_core.utils.cookie_manager.qrlogin import qrcode_login
from gsuid_core.utils.cookie_manager.add_ck import ( from gsuid_core.utils.cookie_manager.add_ck import (
deal_ck, deal_ck,
@ -42,3 +45,30 @@ async def send_qrcode_login(bot: Bot, ev: Event):
async def send_add_ck_msg(bot: Bot, ev: Event): async def send_add_ck_msg(bot: Bot, ev: Event):
im = await deal_ck(ev.bot_id, ev.text, ev.user_id) im = await deal_ck(ev.bot_id, ev.text, ev.user_id)
await bot.send(im) await bot.send(im)
@sv_core_user_addck.on_prefix(('mys设备登录'))
async def send_add_device_msg(bot: Bot, ev: Event):
# ev.text = device - model_name - oaid - device_info
# ev.text = diting - 220812C - 1f1971472fd - OnePlus/PHK110/OP5913L1:13/
data = ev.text.split('-')
uid = await get_uid(bot, ev, GsBind)
if len(data) != 4 or uid is None:
return await bot.send(
'登陆格式错误...\n请按照device - model_name - oaid - device_info的方式输入'
)
device_id = mys_api.get_device_id()
seed_id, seed_time = mys_api.get_seed()
device, model_name, oaid, device_info = (
data[0].strip(),
data[1].strip(),
data[2].strip(),
data[3].strip(),
)
fp = await mys_api.generate_fp(
device_id, model_name, device, oaid, device_info, seed_id, seed_time
)
await GsUser.update_data_by_uid_without_bot_id(
uid, fp=fp, device_id=device_id
)
await bot.send('设备绑定成功!')

View File

@ -137,7 +137,7 @@ class BaseMysApi:
device_id = str(uuid.uuid4()).lower() device_id = str(uuid.uuid4()).lower()
return device_id return device_id
def generate_fp(self, length: int = 13) -> str: def generate_random_fp(self, length: int = 13) -> str:
char = digits + "abcdef" char = digits + "abcdef"
return ''.join(random.choices(char, k=length)) return ''.join(random.choices(char, k=length))
@ -157,11 +157,32 @@ class BaseMysApi:
def get_seed(self): def get_seed(self):
return self.get_device_id(), str(int(time.time() * 1000)) return self.get_device_id(), str(int(time.time() * 1000))
async def generate_fp_by_uid( async def generate_fake_fp(
self, uid: str, seed_id: str, seed_time: str, model_name: str self, device_id: str, seed_id: str, seed_time: str
):
return await self.generate_fp(
device_id,
'PHK110',
'PHK110',
'1f1971b188c472f0',
'OnePlus/PHK110/OP5913L1:13/'
'SKQ1.221119.001/T.1328291_b9_41:user/release-keys',
seed_id,
seed_time,
)
async def generate_fp(
self,
device_id: str,
model_name: str,
device: str,
oaid: str,
device_info: str,
seed_id: str,
seed_time: str,
) -> str: ) -> str:
device_id = await self.get_user_device_id(uid) ext_fields = f'''{{"cpuType":"arm64-v8a","romCapacity":"512","productName":"{device}","romRemain":"422","manufacturer":"XiaoMi","appMemory":"512","hostname":"dg02-pool03-kvm87","screenSize":"1240x2662","osVersion":"13","aaid":"{self.generate_ID()}","vendor":"中国联通","accelerometer":"1.4883357x7.1712894x6.2847486","buildTags":"release-keys","model":"{model_name}","brand":"XiaoMi","oaid":"{oaid}","hardware":"qcom","deviceType":"{model_name}","devId":"REL","serialNumber":"unknown","buildTime":"1687848011000","buildUser":"root","ramCapacity":"469679","magnetometer":"20.081251x-27.487501x2.1937501","display":"{model_name}_13.1.0.181(CN01)","ramRemain":"215344","deviceInfo":"{device_info}","gyroscope":"0.030226856x0.014647375x0.010652636","vaid":"{self.generate_ID()}","buildType":"user","sdkVersion":"33","board":"{device}"}}''' # noqa
ext_fields = f'''{{\"cpuType\":\"arm64-v8a\",\"romCapacity\":\"512\",\"productName\":\"{model_name}\",\"romRemain\":\"422\",\"manufacturer\":\"XiaoMi\",\"appMemory\":\"512\",\"hostname\":\"dg02-pool03-kvm87\",\"screenSize\":\"1240x2662\",\"osVersion\":\"13\",\"aaid\":\"{self.generate_ID()}\",\"vendor\":\"中国联通\",\"accelerometer\":\"1.4883357x7.1712894x6.2847486\",\"buildTags\":\"release-keys\",\"model\":\"{model_name}\",\"brand\":\"XiaoMi\",\"oaid\":\"DD8D6ADFC74F4725BBD548BF23D708E46f70bfc8a663a364da14b74c490eb0c5\",\"hardware\":\"qcom\",\"deviceType\":\"OP5913L1\",\"devId\":\"REL\",\"serialNumber\":\"unknown\",\"buildTime\":\"1687848011000\",\"buildUser\":\"root\",\"ramCapacity\":\"469679\",\"magnetometer\":\"20.081251x-27.487501x2.1937501\",\"display\":\"{model_name}_13.1.0.181(CN01)\",\"ramRemain\":\"215344\",\"deviceInfo\":\"XiaoMi\\\/{model_name}\\\/OP5913L1:13\\\/SKQ1.221119.001\\\/T.118e6c7-5aa23-73911:user\\\/release-keys\",\"gyroscope\":\"0.030226856x0.014647375x0.010652636\",\"vaid\":\"{self.generate_ID()}\",\"buildType\":\"user\",\"sdkVersion\":\"33\",\"board\":\"taro\"}}''' # noqa
body = { body = {
'device_id': self.generate_seed(16), 'device_id': self.generate_seed(16),
'seed_id': seed_id, # uuid4 'seed_id': seed_id, # uuid4
@ -170,7 +191,7 @@ class BaseMysApi:
'ext_fields': ext_fields, 'ext_fields': ext_fields,
'app_name': 'bbs_cn', 'app_name': 'bbs_cn',
'bbs_device_id': device_id, 'bbs_device_id': device_id,
'device_fp': self.generate_fp(), 'device_fp': self.generate_random_fp(),
} }
HEADER = copy.deepcopy(self._HEADER) HEADER = copy.deepcopy(self._HEADER)
@ -319,7 +340,7 @@ class BaseMysApi:
device_id = self.get_device_id() device_id = self.get_device_id()
seed_id, seed_time = self.get_seed() seed_id, seed_time = self.get_seed()
model_name = self.generate_model_name() model_name = self.generate_model_name()
fp = await self.generate_fp_by_uid(uid, seed_id, seed_time, model_name) fp = await self.generate_fake_fp(device_id, seed_id, seed_time)
if app_cookie is None: if app_cookie is None:
app_cookie = await self.get_stoken(uid) app_cookie = await self.get_stoken(uid)
if app_cookie is None: if app_cookie is None:

View File

@ -26,10 +26,8 @@ class _MysApi(MysApi):
data = await GsUser.get_user_attr_by_uid(uid, 'fp') data = await GsUser.get_user_attr_by_uid(uid, 'fp')
if data is None: if data is None:
seed_id, seed_time = self.get_seed() seed_id, seed_time = self.get_seed()
model_name = self.generate_model_name() device_id = self.get_device_id()
data = await self.generate_fp_by_uid( data = await self.generate_fake_fp(device_id, seed_id, seed_time)
uid, seed_id, seed_time, model_name
)
await GsUser.update_data_by_uid_without_bot_id(uid, fp=data) await GsUser.update_data_by_uid_without_bot_id(uid, fp=data)
return data return data