gpt4 book ai didi

MySql 客户端的凭据数据包

转载 作者:行者123 更新时间:2023-11-30 20:32:28 27 4
gpt4 key购买 nike

与 MySql 服务器通信时,客户端的凭据数据包应该是什么样子?

我正在研究使用微 Controller 与 AWS 上的 MySql 服务器进行通信。

一旦我打开到服务器的 TCP 套接字,我就会收到服务器的问候数据包。但是,我在处理客户端的凭据数据包时遇到了问题。

当我发送在下面的代码中创建的数据包时,我没有收到服务器的响应。

顺便说一句,当我将数据包序列号设置为 0 而不是 1 时,我确实收到了错误“数据包乱序”。有什么想法吗?

服务器问候语:

4e0000000a352e362e33372d6c6f67006a3300005871507a363d6e3400ffff0802007fc01500000000000000000000542d2364524c65392d752659006d7973716c5f6e61746976655f70617373776f726400

服务器的错误消息:

21000001ff8404233038533031476f74207061636b657473206f7574206f66206f72646572

char buf[76];
memset(buf, 0, sizeof(buf));
buf[0] = 0x4C;
buf[1] = 0x00;
buf[2] = 0x00;
buf[3] = 0x01;
buf[4] = 0x08 | 0x04;
buf[5] = 0x80 | 0x02 | 0x01;
buf[6] = 0x00;
buf[7] = 0x00;
buf[8] = 0xB8;
buf[9] = 0x0B;
buf[10] = 0x00;
buf[11] = 0x00;
buf[12] = 0x35;
char username[] = "username";
size_t usernameLength = sizeof(username);
strncpy(&buf[36],username,usernameLength-1);
buf[48] = 0x00;
char password[] = "password";
size_t passwordLength = sizeof(password);
unsigned char hash[SHA_DIGEST_LENGTH];
SHA1(password, passwordLength-1, hash);
buf[49] = 0x14;
memcpy(&buf[50],&hash[0],20);
strncpy(&buf[70],"dbname",sizeof("dbname")-1);
buf[75] = 0x00;

最佳答案

我知道这不适合提出我的问题。然而,发布后,我确实在 Github 上找到了一个非常有用的存储库:https://github.com/ChuckBell/MySQL_Connector_Arduino该存储库包含编写连接到 MySQL 数据库的客户端所需的所有源代码。最重要的是,它显示了散列密码的正确方法。

我希望这对其他人有帮助,因为 Oracle 提供的 MySQL 文档非常少,除非您获得软件许可,常规客户端不提供源代码,并且观察数据包流量对握手过程如何工作的了解有限。

关于MySql 客户端的凭据数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47400411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com