Wireshark,蓝牙接口,识别帧/重传错误

网络工程 线鲨
2022-02-15 21:22:54

我在 Ubuntu 20.04.1 LTS 上使用 WireShark。我在通过蓝牙(使用 Blueman)将文件从笔记本电脑传输到智能手机时收听 bluetooth0 接口。在没有任何传输的情况下,我获得了协议的数据包:HCI_EVT 和 HCI_CMD 以获得有意义的 Tx 功率级别、RSSI 和链路质量。

当我传输文件时,我会额外收到 L2CAP 数据包。

我的目标是仅过滤具有碎片/数据包/任何丢失/重新传输错误的数据包。我对蓝牙协议不是很熟悉,我从这里尝试了几个过滤器:https ://www.wireshark.org/docs/dfref/b/btl2cap.html

任何关于过滤具有碎片/数据包/任何丢失/重新传输错误的数据包的可能性的知识都会真正有帮助。

1个回答

我找到了一个解决方案,并为它编写了一个 python 脚本。过滤器btl2cap.retransmittimeout和代码(使用pyshark):

import pyshark

class SniffPacket(object):
    def sniff(self):
        capture = pyshark.LiveCapture(interface='bluetooth0', display_filter='btl2cap.retransmittimeout')
        try:
            capture.sniff(timeout=20)
        except:
            pass
        return capture

if __name__ == '__main__':
    print(f'Initiate sniffer...')
    capture = SniffPacket().sniff()
    print('Sniffer complete, parse data...')
    ct = 0
    try:
        while True:
            res = str(capture.next_packet())
            ct += 1
    except:
        pass
    print('Retransmitted packets: ' + str(ct))