From: dxy15521469561 <1731678236@qq.com> Date: Thu, 16 Nov 2023 01:41:16 +0000 (+0800) Subject: K01: X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=8e217481d8c7e99ee2cf7624c8204a6f35fc816f;p=mirrors%2FASR1603_G5.git K01: 鉴权系统 --- diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py index 1be60a79..56a1b2df 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py @@ -2981,13 +2981,19 @@ class getBootOffManager(Abstract):#开关机时间 return [self.off_msg,flag] - class testSmsSetIPManager(Abstract):# def __init__(self): self.timer = osTimer() - self.newip = "api.xcloudtech.com"#默认防走丢协议 - self.newcom = 9000 - self.newmd5 = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + self.newip = "8.134.110.49" + # "8.134.110.49"#默认大锤服务器 在大锤服务器更改要连接新的服务器地址 + self.newcom = 30346 + # 31379 + + self.new_key = "3JyCjsw4ryXKzjzudayY" + self.new_pid = "qAELPTKmFanR4RHe" + self.server_sate = 0 + # d_server_addr = "tcp.tx.kidxin.com" + # d_server_port = 20500 tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr") if tmp_data != None: self.newip = tmp_data @@ -2998,12 +3004,52 @@ class testSmsSetIPManager(Abstract):# if tmp_data != None: self.newmd5 = tmp_data + tmp_data = EventMesh.publish("get_storage_config","set_new_key") + if tmp_data != None: + self.new_key = tmp_data + + tmp_data = EventMesh.publish("get_storage_config","set_new_pid") + if tmp_data != None: + self.new_pid = tmp_data + + tmp_data = EventMesh.publish("get_storage_config","get_server_sate") + if tmp_data != None: + self.server_sate = tmp_data + + + def post_processor_after_instantiation(self): EventMesh.subscribe("set_new_ip", self.set_new_ip)#设置关机时间 EventMesh.subscribe("get_new_ip", self.get_new_ip) + EventMesh.subscribe("get_new_key_cb", self.get_new_key_cb)#获取key + EventMesh.subscribe("set_new_key_cb", self.set_new_key_cb)#获取key + + EventMesh.subscribe("set_new_pid_cb", self.set_new_pid_cb)#获取pid + EventMesh.subscribe("get_new_pid_cb", self.get_new_pid_cb)#获取pid + + EventMesh.subscribe("set_server_state", self.set_server_state)# + EventMesh.subscribe("get_server_state", self.get_server_state)# + + EventMesh.subscribe("get_new_key_pid", self.get_new_key_pid)#获取pid和key + + + def set_new_key_cb(self, event, msg): + self.new_key = msg + EventMesh.publish("set_storage_config",["set_new_key",self.new_key]) + + def get_new_key_cb(self, event, msg): + return self.new_key + + def set_new_pid_cb(self, event, msg): + self.new_pid = msg + EventMesh.publish("set_storage_config",["set_new_pid",self.new_pid]) + + def get_new_pid_cb(self, event, msg): + return self.new_pid + def set_new_ip(self, event, msg): self.newip = str(msg[0]) self.newcom = int(msg[1]) @@ -3016,6 +3062,7 @@ class testSmsSetIPManager(Abstract):# EventMesh.publish("set_storage_config",["set_new_ip_addr",self.newip]) EventMesh.publish("set_storage_config",["set_new_com",self.newcom]) + number = str(msg[2]) sms.sendPduMsg(number, 'set ok', 'UCS2') self.timer.start(10*1000,0,self.fun) @@ -3024,8 +3071,24 @@ class testSmsSetIPManager(Abstract):# Power.powerRestart() def get_new_ip(self, event, msg): - tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr") - # return [self.newip,self.newcom,self.newmd5] + tmp_addr = EventMesh.publish("get_storage_config","set_new_ip_addr") + tmp_com = EventMesh.publish("get_storage_config","set_new_com") + if tmp_addr != None: + self.newip = tmp_addr + if tmp_com != None: + self.newcom = tmp_com + return [self.newip,self.newcom] + + def get_new_key_pid(self, event, msg): + return [self.new_key,self.new_pid] + + def set_server_state(self, event, msg): + EventMesh.publish("set_storage_config",["get_server_sate",msg]) + self.server_sate = msg + + def get_server_state(self, event, msg): + return self.server_sate + class setkeyboardManager(Abstract):#设置键盘开关状态 def __init__(self): self.key_state = 0 diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py index c4043158..4ee7dc2b 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py @@ -17,15 +17,15 @@ import usocket import osTimer import machine - +import urandom import _thread - +import request import usys def server_init(server_type = None): #服务器选择1,防走丢,2大锤,3三基同创,4童信 5云米 if server_type == None: - server_type = 5 + server_type = 2 #print("server_init:server_type:{}".format(server_type)) d_server_addr = "api.xcloudtech.com" d_server_port = 9000 @@ -49,8 +49,8 @@ def server_init(server_type = None): d_md5_key = "" d_PID = "3G" elif server_type == 4: - d_server_addr = "tcp.tx.kidxin.com" - d_server_port = 20500 + d_server_addr = "tcp.tx.kidxin.com" + d_server_port = 20500 elif server_type == 5: d_server_addr = "device.miwitracker.com" d_server_port = 8505 @@ -165,6 +165,7 @@ class SockManager(Abstract): self.sock.close() self.sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) #self.sock.setblocking(False) &self.sock.settimeout(0)不阻塞 + self.sock.connect((self.server_addr, self.server_port)) #utime.sleep_ms(500) @@ -180,6 +181,95 @@ class SockManager(Abstract): self.reconnect_flag = 0 def publish_timer_cb(self, *args): EventMesh.publish(constants.PROTOCOL.LK_SEND) + self.authen_set() + def authen_set(self): + sever_state = EventMesh.publish("get_server_state")#获取修改服务器状态 + if sever_state != None: + if sever_state == 0: + new_ip_data = EventMesh.publish("get_new_ip") + + new_key_data = EventMesh.publish("get_new_key_pid")#获取pid和key + + imei = EventMesh.publish(constants.EVENT.GET_IMEI) + server_data = server_init() + key_data = server_data[2] + pid_data = server_data[3] + sonce_data = str(urandom.getrandbits(32))#随机生成32位的随机数 + md5_data = "{}*{}*{}*{}".format(imei,pid_data,sonce_data,key_data)#md5签名 + sign_data = "" + hash_obj = uhashlib.md5(md5_data) + res = hash_obj.digest() + + # 转成十六进制表示 + sign_data = ubinascii.hexlify(res) + sign_data = sign_data.decode('ascii') + print("sign_data:{} sonce_data:{}".format(md5_data,sign_data)) + # sign_data = MD5_head + # http://8.134.110.49:31379/dev/device/check?imei=&bid=sonce=sign= + url = "http://8.134.110.49:31379/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(imei,pid_data,sonce_data,sign_data) + + response = request.get(url) + data_tmp ={} + # d_server_addr = "device.miwitracker.com" + # d_server_port = 8505 + # d_md5_key = "" + # d_PID = "3G" + # response.content = {'protocolType': '', 'host': 'device.miwitracker.com', 'secretKey': '', 'port': 8505, 'bid': '3G', 'extJsonStr': ''} + # response.status_code=200 + # print("test-{}".format(response.status_code)) + if response.status_code == 200: + content = response.content + c = next(content) + # "api.xcloudtech.com" + # d_server_port = 9000 + jsload_data = ujson.loads(c) + # print("jsload_data-{}".format(jsload_data)) + # jsload_data = {'data':'111','protocolType':'', 'host':'device.miwitracker.com', 'secretKey': 'bZld0ALsZTt15tKEZhOlLPgbsO75BLTP', 'port':8505, 'bid': '3G', 'extJsonStr': ''} + # ujson.loads(c) + + if "success" in jsload_data: + success = jsload_data["success"] + if success == True:#合法设备 + if "data" in jsload_data: + data_tmp = jsload_data["data"]#返回的数据 + print("data_tmp:{}".format(data_tmp)) + code = jsload_data["code"] + if code == 20000:#合法的设备 + protocloType = data_tmp["protocolType"]#协议类型 + host = data_tmp["host"]#服务骑地址 + secretKey = data_tmp["secretKey"]# + pid = data_tmp["bid"]#产品型号 + port = data_tmp["port"]#端口号 + if new_ip_data != None: + # host = "tcptest.tx.kidxin.com"#童信 + # port = 20500 + # d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + if host != '': + self.server_addr = host + + EventMesh.publish("set_storage_config",["set_new_ip_addr",self.server_addr]) + + if port != '' and port != -1: + self.server_port = port + EventMesh.publish("set_storage_config",["set_new_com",self.server_port]) + # EventMesh.publish("set_new_ip",[new_ip_data[0],self.server_port]) + # pid = "SZKW" + # secretKey = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + if new_key_data != None: + if secretKey != '': + EventMesh.publish("set_new_key_cb", secretKey)#获取pid和key + + if pid != '': + EventMesh.publish("set_new_pid_cb",pid)#获取pid和key + + EventMesh.publish("set_server_state",1)#获取修改服务器状态 + self.reconnect_timer_cb()#重连设备 + # print("self.server_addr",self.server_addr,self.server_port) + # key_data = EventMesh.publish("get_new_key_pid")#获取pid和key + # print("self.server_addr-{}-self.server_port:{}-key_data:{}-{}".format(self.server_addr,self.server_port,key_data[0],key_data[1])) + # print("response.status_code-{}-{}-{}-{}".format(response.status_code,url,response.content,response.text)) + + def check(self, *args): if (not self.run_flag) or (self.connect_tmp == 0) : #7分钟无数据读取,则认为是掉线了 @@ -350,22 +440,33 @@ class ProtoCol(Abstract): self.imsi = EventMesh.publish(constants.EVENT.GET_IMSI) self.key = EventMesh.publish(constants.EVENT.GET_KEY) self.HEADER = self.HEADER.format(self.TYPE) - server_data = server_init() - self.md5_key = server_data[2] - self.PID = server_data[3] - - - # ip_infor = {} - # ip_infor = EventMesh.publish("get_new_ip") - # if ip_infor != None: - # self.md5_key = ip_infor[2] - # print("md5_key",self.md5_key) + # server_data = server_init() + self.md5_key = '' + self.PID = '' + server_data = EventMesh.publish("get_new_key_pid")#获取pid和key + if server_data == None: + server_data = server_init()#如果获取的数据是None,就用默认的大锤key和pid + self.md5_key = server_data[2] + self.PID = server_data[3] + else: + self.md5_key = server_data[0] + self.PID = server_data[1] def initialization(self, *args, **kwargs): EventMesh.subscribe(self.TYPE + "_SEND", self.handler) EventMesh.subscribe(self.TYPE + "_RECV", self.handler) def handler(self, event, msg): + server_data = EventMesh.publish("get_new_key_pid")#获取pid和key + # print("handler",server_data) + if server_data != None: + if self.md5_key != server_data[0]: + print("change md5key",self.md5_key,server_data[0]) + self.md5_key = server_data[0] + if self.PID != server_data[1]: + print("change md5PID",self.PID,server_data[1]) + self.PID = server_data[1] + self.password = EventMesh.publish(constants.EVENT.GET_PASSWORD) self.imei = EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166" #EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI) #"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI) #"867387060319166"#"867387060319188"#"867387060319177"#"867387060319166"#"860132060004322"#"867387060319166"#"860132060004322"#EventMesh.publish(constants.EVENT.GET_IMEI) self.cid = EventMesh.publish(constants.EVENT.GET_CID) @@ -447,7 +548,7 @@ class LK_ProtoCol(ProtoCol): EventMesh.publish(constants.PROTOCOL.TIME_SEND) EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位 EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.WT_SEND) #开始WT定位 - EventMesh.publish(constants.PROTOCOL.MFCODE_FRIEND_REQ_SEND) + EventMesh.publish(constants.PROTOCOL.MFCODE_FRIEND_REQ_SEND)#开机获取一次好友列表 class PING_ProtoCol(ProtoCol): """获取绑定状态"""