主要内容

pcapReader

协议包的PCAP文件读取器

    描述

    pcapReaderobject object object object object object object object object object object object object object object object object object object object您还可以插入自定义协议解码器。

    创建

    描述

    例子

    pcap= pcapReader (文件名创建一个PCAP文件读取器对象,从输入PCAP文件读取协议数据包。

    例子

    pcap= pcapReader (文件名OutputTimestampFormat =“秒”OutputTimestampFormat财产

    输入参数

    全部展开

    包含扩展名的PCAP文件的名称,指定为字符向量或字符串标量。

    例子:“ethernetSamplePackets.pcap”

    数据类型:字符|字符串

    属性

    全部展开

    数据包时间戳的输出格式,指定为微秒的“秒”,或“datetime”.该值指定解码后的协议报文的时间戳。

    数据类型:字符|字符串

    此属性是只读的。

    PCAP文件格式的主要版本,作为非负标量返回。

    数据类型:

    此属性是只读的。

    PCAP文件格式的次要版本,作为非负标量返回。

    数据类型:

    此属性是只读的。

    PCAP文件中包的最大长度,作为非负标量返回。

    数据类型:

    此属性是只读的。

    PCAP全局标头中的链接类型,作为非负标量返回。有关此属性的更多信息,请参见Tcpdump/Libpcap公共存储库[1]

    数据类型:

    此属性是只读的。

    由PCAP文件读取器对象给出的链接类型的名称,作为字符向量返回。

    数据类型:字符

    此属性是只读的。

    标志,以指示PCAP文件对数据包时间戳是否具有纳秒分辨率,返回为1真正的)或0).

    数据类型:逻辑

    对象的功能

    全部展开

    addLinkTypeDecoder 添加自定义链路层协议解码器到PCAP文件阅读器
    addUpperLayerDecoder 添加自定义上层协议解码器到PCAP文件阅读器
    从PCAP文件读取下一个协议包
    readAll 读取PCAP文件从当前位置到末尾的所有协议报文
    重置 将PCAP文件读取器的位置重置到PCAP文件的第一个协议包

    例子

    全部折叠

    创建一个PCAP文件读取器对象,指定PCAP文件的名称。

    pcapReader obj = pcapReader(“ethernetSamplePackets.pcap”);

    将PCAP文件中的所有数据包读取到MATLAB®工作空间。

    decodedPackets = readAll(pcapReaderObj)
    decodedPackets =1×35包含字段的struct数组:SNo Timestamp LinkType Protocol PacketLength报文RawBytes

    创建一个PCAP文件读取器对象,指定PCAP文件的名称和数据包时间戳的输出格式。

    pcapReader obj = pcapReader(“ethernetSamplePackets.pcap”...OutputTimestampFormat =“datetime”);

    为以太网源地址和以太网类型创建一个过滤器。

    filterString = [”乙。SourceAddress == 44FB5A9710AC && '...”乙。Type == 2048'];

    在流模式下,将与指定过滤器匹配的以太网数据包读取到MATLAB工作空间。

    ethPacket = read(pcapReaderObj,filterString)结束
    ethPacket =带字段的结构:SNo: 1 Timestamp: 08-Feb-2021 03:27:18.043900 LinkType: 1 Protocol: 'eth' PacketLength: 171 Packet: [1x1 struct] RawBytes: [1x0 double] TimestampSec: 1.6128e+09
    ethPacket =带字段的结构:SNo: 4 Timestamp: 08-Feb-2021 03:27:19.098190 LinkType: 1 Protocol: 'eth' PacketLength: 120 Packet: [1x1 struct] RawBytes: [1x0 double] TimestampSec: 1.6128e+09
    ethPacket =带字段的结构:SNo: 5 Timestamp: 08-Feb-2021 03:27:20.145857 LinkType: 1 Protocol: 'eth' PacketLength: 171 Packet: [1x1 struct] RawBytes: [1x0 double] TimestampSec: 1.6128e+09

    创建一个PCAP文件读取器对象,指定PCAP文件的名称。

    pcapReader obj = pcapReader(“ethernetSamplePackets.pcap”);

    为eCPRI包创建一个过滤器,指定eCPRI消息类型。

    filterString = [“ecpri。MessageType == IQData || ecpri.消息类型MessageType == BitSequence '...“| | ecpri。MessageType == RemoteReset'];

    将与指定过滤器匹配的eCPRI包读取到MATLAB工作空间。

    ecpriFilteredFirstPacket = read(pcapReaderObj,filterString)
    ecpriFilteredFirstPacket =带字段的结构:SNo: 21 Timestamp: 1.6128e+15 LinkType: 1 Protocol: 'eth' PacketLength: 64 Packet: [1x1 struct] RawBytes: [1x0 double]
    ecpriFilteredSecondPacket = read(pcapReaderObj,filterString)
    ecpriFilteredSecondPacket =带字段的结构:SNo: 22 Timestamp: 1.6128e+15 LinkType: 1 Protocol: 'eth' PacketLength: 64 Packet: [1x1 struct] RawBytes: [1x0 double]
    ecpriFilteredRemainingPackets = readAll(pcapReaderObj,filterString)
    ecpriFilteredRemainingPackets =1×5包含字段的struct数组:SNo Timestamp LinkType Protocol PacketLength报文RawBytes

    将PCAP文件读取器的位置重置为PCAP文件的第一个包。

    重置(pcapReaderObj);

    在同一个PCAP文件上创建一个新的筛选器,指定消息类型为同相和正交(IQ)数据。

    filterString =“ecpri。MessageType == IQData'

    将与指定过滤器匹配的eCPRI包读取到MATLAB工作空间。

    ecpriFilteredPackets = readAll(pcapReaderObj,filterString)
    ecpriFilteredPackets =带字段的结构:SNo: 21 Timestamp: 1.6128e+15 LinkType: 1 Protocol: 'eth' PacketLength: 64 Packet: [1x1 struct] RawBytes: [1x0 double]

    参考文献

    [1]组,Tcpdump。“Tcpdump/Libpcap公共存储库。”2020年5月20日访问。https://www.tcpdump.org

    [2]开发/LibpcapFileFormat - Wireshark Wiki2020年5月20日访问。https://www.wireshark.org

    [3]“通用公共无线电接口:eCPRI接口规范V1.2”于2021年6月22日访问。

    版本历史

    R2021b中引入

    另请参阅

    对象