addLinkTypeDecoder

Добавьте декодер протокола слоя настраиваемой ссылки в средство чтения файлов PCAP

    Описание

    Можно использовать addLinkTypeDecoder возразите функции, чтобы включить декодер протокола слоя настраиваемой ссылки к pcapReader основанный на объектах на типе ссылки пакетного получения (PCAP) глобальный заголовок. Например, чтобы добавить декодер слоя ссылки низкой энергии (LE) Bluetooth для декодирования пакетов слоя ссылки LE Bluetooth, задайте тип ссылки как 251. Для получения информации о типах заголовка слоя ссылки и соответствующих значениях типа ссылки, см. Общедоступный Репозиторий Tcpdump/Libpcap [1].

    пример

    addLinkTypeDecoder(pcap,linkType,linkName,protocolDecoder) добавляет указатель на функцию декодера протокола слоя настраиваемой ссылки, protocolDecoder, к средству чтения файлов PCAP, pcap, на основе типа ссылки глобального заголовка PCAP, linkType. linkName введите задает имя для типа ссылки.

    addLinkTypeDecoder(pcap,linkType,linkName,protocolDecoder,protocolFields) дополнительно задает поля протокола, чтобы отфильтровать пакеты на основе заданных полей декодера протокола выход.

    Примеры

    свернуть все

    Создайте указатель на функцию декодера протокола для декодирования пакетов слоя ссылки LE Bluetooth.

    bleDecoderHandle = @decodeBLEPacket;

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

    pcapReaderObj = pcapReader('blePackets.pcap');

    Добавьте декодер слоя ссылки LE Bluetooth в средство чтения файлов PCAP.

    addLinkTypeDecoder(pcapReaderObj,251,'ble',bleDecoderHandle, ...
        {'AccessAddress','hexadecimal'});

    Отобразите декодер слоя ссылки LE Bluetooth.

    pcapReaderObj.LinkTypeDecoders(end)
    ans = struct with fields:
        ProtocolName: 'ble'
            LinkType: 251
             Decoder: @decodeBLEPacket
    
    

    Считайте все пакеты слоя ссылки LE Bluetooth от файла PCAP до рабочей области MATLAB®.

    blePackets = readAll(pcapReaderObj)
    blePackets=1×15 struct array with fields:
        SNo
        Timestamp
        LinkType
        Protocol
        PacketLength
        Packet
        RawBytes
    
    

    Отобразите декодируемую пакетную структуру слоя ссылки LE Bluetooth.

    blePackets(1).Packet
    ans = struct with fields:
        ble: [1x1 struct]
    
    

    Сбросьте положение средства чтения файлов PCAP к первому пакету файла PCAP.

    reset(pcapReaderObj);

    Считайте пакеты слоя ссылки LE Bluetooth, которые совпадают с критериями фильтра.

    blePackets = readAll(pcapReaderObj,'ble.AccessAddress == 8E89BED6')
    blePackets=1×13 struct array with fields:
        SNo
        Timestamp
        LinkType
        Protocol
        PacketLength
        Packet
        RawBytes
    
    

    Отобразите декодируемую пакетную структуру слоя ссылки LE Bluetooth.

    blePackets(1).Packet
    ans = struct with fields:
        ble: [1x1 struct]
    
    

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

    свернуть все

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

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

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

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

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

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

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

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

    Поля протокола и типы данных в виде массива 2D ячейки столбца, который указывает на поля протокола и их соответствующие типы данных. Задайте эти поля и типы данных как векторы символов или строковые скаляры. Первый столбец массива ячеек задает имя поля. Второй столбец массива ячеек задает тип данных имени соответствующего поля. Это значение задает поля (структуры 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
    Для просмотра документации необходимо авторизоваться на сайте