addUpperLayerDecoder

Добавьте пользовательский декодер протокола верхнего уровня в средство чтения файлов PCAP

    Описание

    Можно использовать addUpperLayerDecoder возразите функции, чтобы включить пользовательский декодер протокола верхнего уровня к pcapReader объект для декодирования полезной нагрузки существующего декодера протокола. Например, можно добавить декодер протокола верхнего уровня, такой как открытая сеть радиодоступа (ORAN), чтобы декодировать полезную нагрузку в выходе существующего декодера протокола, расширенного общего общедоступного радио-интерфейса (eCPRI).

    addUpperLayerDecoder(pcap,protocolName,fieldName,fieldValue,upperLayerProtocolName,upperLayerDecoder) добавляет пользовательский указатель на функцию декодера протокола верхнего уровня, upperLayerDecoder, к пакетному получению (PCAP) средство чтения файлов, pcap, для декодирования полезной нагрузки в выходе существующего декодера протокола, protocolName. fieldName введите задает поле в структуре output существующего декодера протокола и fieldValue введите задает значение этого имени поля. upperLayerProtocolName введите задает имя для декодера протокола верхнего уровня.

    пример

    addUpperLayerDecoder(pcap,protocolName,fieldName,fieldValue,upperLayerProtocolName,upperLayerDecoder,protocolFields) дополнительно задает поля протокола, чтобы отфильтровать пакеты на основе заданных полей декодера протокола выход.

    Примеры

    свернуть все

    Создайте указатель на функцию декодера протокола для декодирования пакетов ОРАНА.

    oranDecoderHandle = @decodeORANPacket;

    Создайте объект средства чтения файлов PCAP, задав имя файла PCAP и выходного формата для пакетной метки времени.

    pcapReaderObj = pcapReader('ethernetSamplePackets.pcap',...
        'OutputTimestampFormat','seconds');

    Добавьте декодер ОРАНА в средство чтения файлов PCAP.

    addUpperLayerDecoder(pcapReaderObj,'ecpri','MessageType','IQData','oran', ...
        oranDecoderHandle,{'Source','hexadecimal'});

    Отобразите декодер ОРАНА.

    pcapReaderObj.UpperLayerDecoders(end)
    ans = struct with fields:
             ProtocolName: 'ecpri'
                FieldName: 'MessageType'
               FieldValue: 'IQData'
        UpperProtocolName: 'oran'
             UpperDecoder: @decodeORANPacket
    
    

    Считайте пакеты ОРАНА от файла PCAP до рабочей области MATLAB®.

    oranPacket = read(pcapReaderObj,'oran.Source == 090807060504')
    oranPacket = struct with fields:
                 SNo: 21
           Timestamp: 1.6128e+09
            LinkType: 1
            Protocol: 'eth'
        PacketLength: 64
              Packet: [1x1 struct]
            RawBytes: [1x0 double]
    
    

    Отобразите декодируемую пакетную структуру ОРАНА.

    oranPacket.Packet
    ans = struct with fields:
          eth: [1x1 struct]
        ecpri: [1x1 struct]
         oran: [1x1 struct]
    
    

    Входные параметры

    свернуть все

    Средство чтения файлов PCAP в виде pcapReader объект.

    Имя существующего декодера протокола в виде вектора символов или строкового скаляра. Существующий декодер протокола может быть декодером Ethernet, eCPRI декодером или любым другим недавно добавленным декодером протокола.

    Типы данных: char | string

    Имя поля в структуре output существующего декодера протокола в виде вектора символов или строкового скаляра. Для получения дополнительной информации об именах полей Ethernet и eCPRI декодеров протокола, смотрите protocolPackets выход read или readAll функции объекта.

    Типы данных: char | string

    Значение имени поля в виде неотрицательного целого числа, вектора символов или строкового скаляра. Если fieldName введите имеет это значение, затем эта объектная функция передает полезную нагрузку указателю декодера протокола верхнего уровня.

    Типы данных: double | char | string

    Имя декодера протокола верхнего уровня в виде вектора символов или строкового скаляра. Сохранить декодируемый пакет декодера протокола верхнего уровня, read или readAll возразите, что функции используют это значение, чтобы создать новое поле в Packet поле выхода декодировало пакетную структуру протокола.

    Типы данных: char | string

    Декодер протокола верхнего уровня, который декодирует полезную нагрузку существующего декодера протокола и возвращает декодируемый пакет с обработанной длиной в виде указателя на функцию. Этот код показывает синтаксис этого аргумента.

    [outputPacket,processedLength] = upperLayerDecoderFunction(existingProtocolPayload);
    upperLayerDecoder = @upperLayerDeocderFunction
    upperLayerDecoderFunction функция, которая декодирует полезную нагрузку существующего декодера протокола. outputPacket выведите содержит декодируемый пакет как структуру. processedLength выход является количеством декодируемых байтов. Отрицательная величина обработанной длины указывает на отказавшее пакетное декодирование. Если пакетное декодирование перестало работать, декодируемая пакетная структура выхода пуста.

    Типы данных: function_handle

    Поля протокола и типы данных в виде массива 2D ячейки столбца, который указывает на поля протокола и их соответствующие типы данных. Задайте эти поля и типы данных как векторы символов или строковые скаляры. Первый столбец массива ячеек задает имя поля. Второй столбец массива ячеек задает тип данных имени соответствующего поля. Допустимыми значениями для типа данных является numericСтрока, и hexadecimal. Это значение задает поля (структуры output декодера протокола) на который read или readAll объектные функции могут задать packetFilter входной параметр. Когда вы задаете packetFilter вход read или readAll возразите функциям, эта объектная функция использует protocolFields значение для:

    • Заполнение клавишей Tab packetFilter строка

    • Проверка packetFilter строка

    Для получения дополнительной информации о том, как использовать это значение, чтобы отфильтровать пакеты, смотрите packetFilter вход read или readAll функции объекта.

    Типы данных: cell

    Ссылки

    [1] Группа, Tcpdump. “Репозиторий Общественности Tcpdump/Libpcap”. Полученный доступ 20 мая 2020. https://www.tcpdump.org.

    Смотрите также

    Объекты

    Функции

    Введенный в R2021b
    Для просмотра документации необходимо авторизоваться на сайте