From f93a162ffced56a1567fab24c37893ff9361dc9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98KimigaiiWuyi=E2=80=99?= <444835641@qq.com> Date: Thu, 9 Nov 2023 20:42:52 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=97=EF=B8=8F=20=E6=B5=8B=E8=AF=95`mys?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=99=BB=E5=BD=95`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core_command/user_login/__init__.py | 30 ++++++++++++++++ gsuid_core/utils/api/mys/request.py | 35 +++++++++++++++---- gsuid_core/utils/api/mys_api.py | 6 ++-- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/gsuid_core/plugins/core_command/user_login/__init__.py b/gsuid_core/plugins/core_command/user_login/__init__.py index 3f57403..e3c8bf3 100644 --- a/gsuid_core/plugins/core_command/user_login/__init__.py +++ b/gsuid_core/plugins/core_command/user_login/__init__.py @@ -1,6 +1,9 @@ from gsuid_core.sv import SV from gsuid_core.bot import Bot 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.add_ck import ( 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): im = await deal_ck(ev.bot_id, ev.text, ev.user_id) 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('设备绑定成功!') diff --git a/gsuid_core/utils/api/mys/request.py b/gsuid_core/utils/api/mys/request.py index 14b3e9c..c6ac034 100644 --- a/gsuid_core/utils/api/mys/request.py +++ b/gsuid_core/utils/api/mys/request.py @@ -137,7 +137,7 @@ class BaseMysApi: device_id = str(uuid.uuid4()).lower() return device_id - def generate_fp(self, length: int = 13) -> str: + def generate_random_fp(self, length: int = 13) -> str: char = digits + "abcdef" return ''.join(random.choices(char, k=length)) @@ -157,11 +157,32 @@ class BaseMysApi: def get_seed(self): return self.get_device_id(), str(int(time.time() * 1000)) - async def generate_fp_by_uid( - self, uid: str, seed_id: str, seed_time: str, model_name: str + async def generate_fake_fp( + 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: - device_id = await self.get_user_device_id(uid) - 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 + 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 + body = { 'device_id': self.generate_seed(16), 'seed_id': seed_id, # uuid4 @@ -170,7 +191,7 @@ class BaseMysApi: 'ext_fields': ext_fields, 'app_name': 'bbs_cn', 'bbs_device_id': device_id, - 'device_fp': self.generate_fp(), + 'device_fp': self.generate_random_fp(), } HEADER = copy.deepcopy(self._HEADER) @@ -319,7 +340,7 @@ class BaseMysApi: device_id = self.get_device_id() seed_id, seed_time = self.get_seed() 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: app_cookie = await self.get_stoken(uid) if app_cookie is None: diff --git a/gsuid_core/utils/api/mys_api.py b/gsuid_core/utils/api/mys_api.py index 3e18604..12c2223 100644 --- a/gsuid_core/utils/api/mys_api.py +++ b/gsuid_core/utils/api/mys_api.py @@ -26,10 +26,8 @@ class _MysApi(MysApi): data = await GsUser.get_user_attr_by_uid(uid, 'fp') if data is None: seed_id, seed_time = self.get_seed() - model_name = self.generate_model_name() - data = await self.generate_fp_by_uid( - uid, seed_id, seed_time, model_name - ) + device_id = self.get_device_id() + data = await self.generate_fake_fp(device_id, seed_id, seed_time) await GsUser.update_data_by_uid_without_bot_id(uid, fp=data) return data