gpt4 book ai didi

c++ - Windows 中的蓝牙中间人保护

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:51 26 4
gpt4 key购买 nike

我正在使用 Windows API 进行蓝牙原生编程。

我已成功将我的 Windows PC 与我的 Android 设备配对,但是当我更改 AUTHENTICATION_REQUIREMENTS 函数中的 BluetoothAuthenticateDeviceEx 参数时
来自 AUTHENTICATION_REQUIREMENTS::MITMProtectionRequiredGeneralBonding
AUTHENTICATION_REQUIREMENTS::MITMProtectionRequired
我的代码“无法”与我的 Android 设备配对。

“失败”是指所有 API 都返回 ERROR_SUCCESS 代码,在 Android 手机中我的 Windows PC 显示为“已配对”,但在我的 Windows PC 中未添加 Android 设备蓝牙设备。此外,如果我尝试使用我的 Android 手机并连接到我的 Windows PC,配对过程将再次开始(我猜这是因为之前的配对没有成功完成)。

Windows代码如下:

int Authenticate(BLUETOOTH_DEVICE_INFO device)
{
HBLUETOOTH_AUTHENTICATION_REGISTRATION hAuthentication = nullptr;

DWORD err = BluetoothRegisterForAuthenticationEx(&device,
&hAuthentication,
&::AuthenticationCallbackStatic,
nullptr);
if (ERROR_SUCCESS != err) { return -1; }

// Changing last parameter to MITMProtectionRequired will cause to pairing
// complete unsuccessfully
err = BluetoothAuthenticateDeviceEx(nullptr,
nullptr,
&device,
nullptr,
MITMProtectionRequiredGeneralBonding);
if (ERROR_SUCCESS != err) { return -1; }

return 0;
}

知道为什么这个参数会导致配对失败吗?

最佳答案

“配对”和“绑定(bind)”是有区别的。配对是在当前 session 的身份验证期间可能使用的两个设备之间共享 secret ( key )的生成。

如果存储了 key ,则两个设备绑定(bind)。

MITMProtectionRequired 根据 MSDN,是“MITM 身份验证要求”所以我理解这意味着只是配对而不是绑定(bind)。这就是您看到 ERROR_SUCCESS 但未存储 key 的方式。因此后续连接需要配对。

关于c++ - Windows 中的蓝牙中间人保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213709/

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