多系统识别需要在连接的过程中写一些命令给从机判断主机的系统,我使用BleAnalyzer抓了配对连接过程中的包,但是BleAnalyzer没办法筛选、查找,不知道该怎么去模拟这个工程
1、确定是低功耗蓝牙BLE;
2、使用手机APP:BLE调试助手或者系统蓝牙连接该蓝牙键盘从机,并使用抓包工具抓包;
3、根据抓取到的连接包,尝试使用CH582模仿主机行为并发起连接。
4、抓包工具使用参考:
请问一下我想修改Attribute Opcode的值,应该修改代码的什么地方呢?
如果我想读Handle的值,代码里面应该怎么操作呢?
我是这么写入的,但是回复的全部是错误。对照正确的值发现是Attribute Opcode的值不一样,但是修改req.sig并不会影响Attribute Opcode的值,我想修改Attribute Opcode的值,应该修改代码的什么地方呢?
uint16_t Header_value[4] = {0x2A4D, 0x0031, 0x2A4D, 0x000A};
// PRINT("\r\nWriteNotify---- %d-%d ",WriteNotify_Count,NotifyHandleQuantity);
// if((centralProcedureInProgress == FALSE))
{
PRINT("\r\n WriteNotify ");
// Do a write
attWriteReq_t req;
req.cmd = FALSE;
req.sig = 2;
req.handle = Header_value[WriteNotify_Count];
req.len = 2;
req.pValue = GATT_bm_alloc(centralConnHandle, ATT_WRITE_REQ, req.len, NULL, 0);
PRINT(" handle : %04X\r\n",req.handle);
if(req.pValue != NULL)
{
req.pValue[0] = 0x01;
req.pValue[1] = 0;
if(GATT_WriteCharValue(centralConnHandle, &req, centralTaskId) != SUCCESS)
{
GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
}
}
}
蓝牙建立连接之后,会有参数更新,mtu交互,配对绑定的流程。一般第一次的连接会卡在配对绑定的流程不匹配上,可以重点查看。在可以直接使用分析仪抓包的情况下,可以直接查看该流程是否有异常,比对即可。
接下来是到数据收发阶段,根据handle值进行收发,可以查看手机连接该从机后发送数据的handle是多少,然后主机直接模拟该handle值进行相同的数据发送。其他如opcode是不需要修改的。
根据handle直接进行数据收发:
找到了读取操作,写的时候还是会报错误码,还要再查查看
? ? ? ? ? ? ? ? // Do a read
? ? ? ? ? ? ? ? attReadReq_t req;
? ? ? ? ? ? ? ? req.handle = centralCharHdl;
? ? ? ? ? ? ? ? if(GATT_ReadCharValue(centralConnHandle, &req, centralTaskId) == SUCCESS)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? centralProcedureInProgress = TRUE;
? ? ? ? ? ? ? ? ? ? centralDoWrite = !centralDoWrite;
? ? ? ? ? ? ? ? }
邮件已回复。