香港服务器做违规网站有必要买优化大师会员吗
doip诊断第二版优化
就是要使用全局的socket,要实现 前端选中5个uds诊断命令,发送给后端,后端要保证这5个uds命令在一个socket中执行,
session 就和我们编程里面的 session 含义基本一样,就像是一个通道一样。比如 安全验证 在 10 03 会话中通过了,下面切换到 10 02会话那么还要重新验证 安全验证,因为 已经不在同一个会话里的,虽然还在 同一个socket中,socket 是5分钟会关闭。
有一个测试 uds命令 在每一个socket中 发第一次 返回TRUE,但是 如果在一个socket中连续发两次 第二次就会编程 false 这是正确的。
但是 如果你每次从前端 过来的命令都是 开启一个新的 socket 那么 这个uds命令 就会一直返回TRUE 就不正确了。
先删除原来的
pip3 uninstall PyQt5
pip3 uninstall PyQt5-sip
pip3 uninstall sip
pip3 install PyQt5
pip3 install PyQt5-sip
pip3 install sip
pip3 install pycryptodome
pip3 install crypto
pip3 install pycrypto
pip3 install scapy
pip3 install cffi==1.15
在这里插入代码片
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from scapy.all import *
# 后续按需更换文件路径
from PLayer.logMain import logger# 全局socket
server_socket = Nonedef send_tcp_message(device, gateway, host, port, tcp_route, sessioned, address, ecu_sn, ecu_interview, ecu_secret, uds_payload_list):global server_socketreturn_message = "诊断异常"try:if server_socket is None: server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #server_socket.setsockopt(socket.SOL_SOCKET,25,gateway_byte_data) 这里暂时有问题 后续处理 先默认为 '以太网 3')# 连接到服务器server_socket.connect((host, port))# 发送路由激活报文return_message = send_tcp_route(server_socket) # 创建对应session 不选使用默认sessionsend_session(server_socket, address, sessioned) # 27安全验证if ecu_sn and ecu_interview and ecu_secret:return_message = send_secret(server_socket, ecu_sn, ecu_interview, ecu_secret, address)# 服务请求if uds_payload_list == "null":passelse:return_message = send_uds_payload(server_socket, sessioned, address, uds_payload_list, ecu_sn,ecu_interview, ecu_secret)except Exception as e:logger.error("诊断异常,错误信息 -> %s" % str(e))return_message= "诊断异常"# 关闭套接字的读取和写入功能server_socket.shutdown(socket.SHUT_RDWR)# 关闭套接字server_socket.close()return return_messagedef send_tcp_route(server_socket): # 1、发送路由激活报文binary_data = b"\x02\xFD\x00\x05\x00\x00\x00\x07\x00\x01\x00\x00\x00\x00\x00"server_socket.sendall(binary_data)response = server_socket.recv(1024) # 接收最多1024字节的return response
前端
在这里插入代码片
前端
self.uds_payload_list.clear()self.uds_payload_list.append(self.uds_payload_str)self.uds_payload_list.append(self.uds_payload_str1)self.uds_payload_list.append(self.uds_payload_str2)self.uds_payload_list.append(self.uds_payload_str3)return_message_str = doip_nic_tool2.send_tcp_message(self.device, self.gateway, host, port,self.tcp_route, self.session, self.address,self.ecu_sn, self.ecu_interview, self.ecu_secret,self.uds_payload_list)self.return_message.setText(return_message_str)def main():app = QApplication(sys.argv)ex = window()ex.show()ex.inputButton()sys.exit(app.exec_())
if __name__ == '__main__':
main()