4 posts / 0 new
Last post
GGQ_in
Offline
Last seen:5 months 1 day ago
加入:2019-07-23 04:41
数据包抓包问题

这几天学习弄了一下蓝牙抓包,遇到了问题请帮忙解答一下~

主从都是DA14580,主设备的连接方式为扫描从为不定项连接时,抓到连接后的数据包是没问题的,但是当主连接方式直接从发起态请求连接时抓到的数据包如pdf中的图,这种情况是我直接从发起态请求连接时的程序问题吗?我的从设备最终是想要以定向连接方式连接,定向连接后的数据包无法实现抓包吗? 谢谢!

static const struct default_app_operations user_default_app_operations = {
.default_operation_adv = user_gap_start_connect_to_set,
};

//建立发起连接的消息

static struct gapm_start_connection_cmd* user_easy_gap_start_connection_msg_create(uint8_t slave_num)
{
struct gapm_start_connection_cmd *cmd;
cmd = app_connect_start_msg_create();
start_connection_cmd = cmd;

cmd->op.code = user_central_conf.code;
cmd->op.addr_src = user_adv_conf.addr_src;

cmd->op.renew_dur = user_adv_conf.renew_dur;
cmd->scan_interval = user_central_conf.scan_interval;
cmd->scan_window = user_central_conf.scan_window;
cmd->con_intv_min = user_central_conf.con_intv_min;
cmd->con_intv_max = user_central_conf.con_intv_max;
cmd->con_latency = user_central_conf.con_latency;
cmd->superv_to = user_central_conf.superv_to;
cmd->ce_len_min = user_central_conf.ce_len_min;
cmd->ce_len_max = user_central_conf.ce_len_max;

cmd->nb_peers = CFG_MAX_CONNECTIONS;


if(slave_num == 0)
{
memcpy(cmd->peers[0].addr.addr, slave_addr_set_info[0].addr.addr, BD_ADDR_LEN*sizeof(uint8_t));
cmd->peers[0].addr_type = slave_addr_set_info[0].addr_type;
}

return start_connection_cmd;
}

一个ttachment:
Device:
CYibin
Offline
Last seen:6 months 1 week ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

可能是抓包器性能的问题。

好一点的抓包器,应能支持“同时”在多个 RF 通道上扫描 BLE 包,抓包有很高的成功率,抓包结果比较可靠。

一般的蓝牙 dongle 做的抓包器,个人猜测只会在一个 RF 通道上抓包,大大减少了抓包成功的概率。抓不到定向广播包,可能是定向广播包在空中的时间比较短(被连接了),也可能是抓包器软件不支持。

GGQ_in
Offline
Last seen:5 months 1 day ago
加入:2019-07-23 04:41
你好,谢谢你的解答

你好,谢谢你的解答。请问哪款抓包器比较好可以抓到定向包的呀? 我看PACKET NUM排列都是按顺序的,如何分析是否丢包了?

谢谢

CYibin
Offline
Last seen:6 months 1 week ago
工作人员
加入:2017-12-14 02:48
package number 仅是抓包工具抓到的包的序号

package number 仅是抓包工具抓到的包的序号。无论有无漏报都会顺序排列下来。

判断有无漏包可以通过理论该有的包的数量对比实际看到的包的数量,来判断。

如,对于一个 1s 广播间隔的非定向广播包,理论上,应该能看到每隔 1s,都有三个非定向广播包 + 偶尔的 scan_req scan_rsp 包