微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640蓝牙密码配对出现的漏洞

CC2640蓝牙密码配对出现的漏洞

时间:10-02 整理:3721RD 点击:

问题现象:CC2640作为蓝牙发起设备,设置为需要密码配对但不绑定模式(密码设置为123456),分别采用IOS和Android蓝牙APP进行测试,现象如下:

1. 当使用IOS系统中蓝牙APP——LightBlue进行连接CC2640设备时,IOS手机端弹出配对框,此时必须输入密码才能与设备正常连接通讯,但这个输入的密码只要包含了正确的密码就可以连接,正确密码为“123456”,但我输入如“0123456”、“12345678”、“0123456789”等这样的密码均可以正常连接通讯。

2. 当使用Android系统中蓝牙APP进行连接CC2640设备时,Android手机端选择不输入任何密码,此时也可以正常连接该设备,通讯也正常。

请问这两个现象是什么原因导致,怎么解决啊?

方便把你的配置发出来吗?如果禁止了IO capacity,会使用just works完成配对

这是配置:

// Setup the GAP //BY ZCX TGAP_CONN_PAUSE_PERIPHERAL参数更新请求
GAP_SetParamValue(TGAP_CONN_PAUSE_PERIPHERAL, DEFAULT_CONN_PAUSE_PERIPHERAL);

// Setup the GAP Peripheral Role Profile
{
// For all hardware platforms, device starts advertising upon initialization
uint8_t initialAdvertEnable = TRUE;

// By setting this to zero, the device will go into the waiting state after
// being discoverable for 30.72 second, and will not being advertising again
// until the enabler is set back to TRUE
uint16_t advertOffTime = 0;

uint8_t enableUpdateRequest = DEFAULT_ENABLE_UPDATE_REQUEST;//BY ZCX使能请求更新
uint16_t desiredMinInterval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;//BY ZCX最小连接间隔
uint16_t desiredMaxInterval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;//BY ZCX最大连接间隔
uint16_t desiredSlaveLatency = DEFAULT_DESIRED_SLAVE_LATENCY;//BY ZCX从潜伏期
uint16_t desiredConnTimeout = DEFAULT_DESIRED_CONN_TIMEOUT;//BY ZCX监督超时

// Set the GAP Role Parameters
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),
&initialAdvertEnable);//BY ZCX 广播使能
GAPRole_SetParameter(GAPROLE_ADVERT_OFF_TIME, sizeof(uint16_t),
&advertOffTime);//BY ZCX 广播关闭时间

GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData),
scanRspData);//BY ZCX 扫描请求数据
GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData);//BY ZCX 广播数据

GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t),
&enableUpdateRequest);//BY ZCX 从机连接参数更新使能
GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t),
&desiredMinInterval);//BY ZCX 最小连接时间间隔
GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t),
&desiredMaxInterval);//BY ZCX 最大连接时间间隔
GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t),
&desiredSlaveLatency);//BY ZCX 从机潜伏
GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t),
&desiredConnTimeout);//BY ZCX 最大耐心等待时间?
}

// Set the GAP Characteristics
GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName);

// Set advertising interval
{
uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL;//BY ZCX 广播时间间隔

GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MIN, advInt);//BY ZCX 在限制发现模式下最小广播时间间隔
GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MAX, advInt);//BY ZCX 在限制发现模式下最大广播时间间隔
GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MIN, advInt);//BY ZCX 永久广播模式下最小广播时间间隔
GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MAX, advInt);//BY ZCX 永久广播模式下最大广播时间间隔
}

// Setup the GAP Bond Manager
{
uint32_t passkey = 123456; // passkey "000000"
// uint8_t pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ;//BY ZCX 等待配对请求
uint8 pairMode = GAPBOND_PAIRING_MODE_INITIATE;
uint8_t mitm = TRUE;
uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;//BY ZCX 只有显示
uint8_t bonding = TRUE;

GAPBondMgr_SetParameter(GAPBOND_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey);//BY ZCX 默认密码
GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode);//BY ZCX 配对模式
GAPBondMgr_SetParameter(GAPBOND_MITM_PROTECTION, sizeof(uint8_t), &mitm);
GAPBondMgr_SetParameter(GAPBOND_IO_CAPABILITIES, sizeof(uint8_t), &ioCap);
GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bonding);//BY ZCX 开启配对功能
}


// Initialize GATT attributes
GGS_AddService(GATT_ALL_SERVICES); // GAP
GATTServApp_AddService(GATT_ALL_SERVICES); // GATT attributes
DevInfo_AddService(); // Device Information Service

TI 员工,你好:

请问下“禁止了IO capacity,会使用just works完成配对”,如何配置做才会出现这个情况,

也就是说如何禁止了IO capacity?

连接与配对是两件事情,连接在配对之前。

不输入密码而能读写特征值,这是因为你的从机代码没有把特征值加密导致的。

详情看我个性签名档的博客地址,《CC2541之配对与绑定》。

那请问下,“正确密码为“123456”,但我输入如“0123456”、“12345678”、“0123456789”等这样的密码均可以正常连接通讯;但如果输入不包含正确密码,如“234656”这样的密码就会正常显示密码错误。”,这个问题是如何导致的?

不用管,特征值加密了就能正常。上面文章自己看。

TI员工,你好:

我的问题依然存在,希望指点下。你看看我的配置怎么导致IO capicity禁止的吧。

谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top