write

Запись пакетных данных протокола в PCAP или файл PCAPNG

    Описание

    write(pcapObj,packet,timestamp) записывает пакетные данные протокола в файл PCAP, указанный в объекте средства записи файлов PCAP, pcapObj. Входные packet задает пакет протокола и входные timestamp определяет время прибытия пакета.

    write(pcapngObj,packet,timestamp,interfaceID) записывает пакетные данные протокола в файл PCAPNG, указанный в объекте средства записи файлов PCAPNG, pcapngObj. Входные packet, timestamp, и interfaceID определяет пакет протокола, время поступления пакета и идентификатор интерфейса, соответственно.

    пример

    write(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к комбинациям входных аргументов из любого из предыдущих синтаксисов. Для примера, 'PacketFormat','bits' устанавливает формат пакетов протокола в битах.

    Примеры

    свернуть все

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

    pcapObj = pcapWriter('FileName','write5GNRpacket');
    timestamp = 300;                                           % Timestamp

    5G NR-пакеты не имеют допустимого типа ссылки. Согласно Tcpdump, если допустимый тип ссылки отсутствует, укажите тип ссылки для пакета SLL.

    linkType = 113;

    Запись глобального заголовка в файл PCAP.

    writeGlobalHeader(pcapObj,linkType);

    5G NR-пакеты не поддерживаются непосредственно Wireshark. Чтобы включить Wireshark для анализа 5G пакетов NR, добавьте инкапсуляцию и метаданные к 5G пакету NR.

    payload = [59; 205];                                       % MAC subPDU (contains truncated buffer status report (BSR) control element)
    radioType = 1;                                             % Frequency division duplexing
    linkDir = 0;                                               % Uplink packet
    rntiType = 3;                                              % Cell-RNTI
    startString = [109; 97; 99; 45; 110; 114];                 % Tag to indicate start of NR MAC signature
    payloadTag = 1;                                            % Payload tag for NR packets
    signature = [startString; radioType; linkDir; rntiType];
    macNRInfoPacket = [signature; payloadTag; payload];

    Создайте заголовок протокола пользовательских датаграмм (UDP).

    udpPacketLength = 8 + length(macNRInfoPacket);             % Length of header (8 bytes) and payload
    udpHeader = [163; 76;                                      % Source port number
        39; 15;                                                % Destination port number
        fix(udpPacketLength/256); mod(udpPacketLength,256);    % Total length of UDP packet
        0; 0];                                                 % Checksum

    Создайте заголовок IPv4.

    ipPacketLength = 20 + udpPacketLength;                     % Length of header (20 bytes) and payload
    ipHeader = [69;                                            % Version of IP protocol and priority or traffic class
        0;                                                     % Type of service
        fix(ipPacketLength/256); mod(ipPacketLength,256);      % Total length of the IPv4 packet
        0; 1;                                                  % Identification
        0; 0;                                                  % Flags and fragmentation offset
        64;                                                    % Time to live in seconds
        17;                                                    % UDP protocol number
        0; 0;                                                  % Header checksum
        127; 0; 0; 1;                                          % Source IP address
        127; 0; 0; 1];                                         % Destination IP address

    Создайте заголовок SLL.

    sllHeader = [0; 0;                                         % Packet type
        3; 4;                                                  % Address resolution protocol hardware (ARPHRD) type
        0; 0;                                                  % Link layer address length
        0; 0; 0; 0; 0; 0; 0; 0;                                % Link layer address
        8; 0];                                                 % Protocol type

    Создайте 5G пакет NR путем добавления инкапсуляции и метаданных.

    packet = [sllHeader; ipHeader; udpHeader; macNRInfoPacket];

    Запишите 5G пакетные данные NR в файл PCAP.

    write(pcapObj,packet,timestamp);

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

    pcapngObj = pcapngWriter('FileName','write5GNRpacket');

    Запишите блок интерфейса для 5G New Radio (NR). 5G NR-пакеты не имеют допустимого типа ссылки. Согласно Tcpdump, если допустимый тип ссылки отсутствует, укажите тип ссылки для пакета SLL.

    interface = '5GNR';                                        % Interface name
    linkType = 113;                                            % Link type of SLL packet
    timestamp = 300;                                           % Timestamp
    interfaceID = writeInterfaceDescriptionBlock(pcapngObj,linkType,interface);

    5G NR-пакеты не поддерживаются непосредственно Wireshark. Чтобы включить Wireshark для анализа 5G пакетов NR, добавьте инкапсуляцию и метаданные к 5G пакету NR.

    payload = [59; 205];                                       % MAC subPDU (contains short truncated buffer status report (BSR) control element)
    radioType = 1;                                             % Frequency division duplexing
    linkDir = 0;                                               % Uplink packet
    rntiType = 3;                                              % Cell-RNTI
    startString = [109; 97; 99; 45; 110; 114];                 % Tag to indicate the start of NR MAC signature
    payloadTag = 1;                                            % Payload tag for NR packets
    signature = [startString; radioType; linkDir; rntiType];
    macNRInfoPacket = [signature; payloadTag; payload];

    Создайте заголовок UDP.

    udpPacketLength = 8 + length(macNRInfoPacket);             % Length of header (8 bytes) and payload
    udpHeader = [163; 76;                                      % Source port number
        39; 15;                                                % Destination port number
        fix(udpPacketLength/256); mod(udpPacketLength,256);    % Total length of UDP packet
        0; 0];                                                 % Checksum

    Создайте заголовок IPv4.

    ipPacketLength = 20 + udpPacketLength;                     % Length of header (20 bytes) and payload
    ipHeader = [69;                                            % Version of IP protocol and Priority or Traffic Class
        0;                                                     % Type of service
        fix(ipPacketLength/256);mod(ipPacketLength,256);       % Total length of the IPv4 packet
        0; 1;                                                  % Identification
        0; 0;                                                  % Flags and fragmentation offset
        64;                                                    % Time to live in seconds
        17;                                                    % UDP protocol number
        0; 0;                                                  % Header checksum
        127; 0; 0; 1;                                          % Source IP address
        127; 0; 0; 1];                                         % Destination IP address

    Создайте заголовок SLL.

    sllHeader = [0;0;                                          % Packet type
        3; 4;                                                  % Address resolution protocol hardware (ARPHRD) type
        0; 0;                                                  % Link layer address length
        0; 0; 0; 0; 0; 0; 0; 0;                                % Link layer address
        8; 0];                                                 % Protocol type

    Создайте 5G пакет NR путем добавления инкапсуляции и метаданных.

    packet = [sllHeader; ipHeader; udpHeader; macNRInfoPacket];

    Запишите 5G пакетные данные NR в файл PCAPNG.

    packetComment = 'This is 5G NR MAC packet';                % Packet comment
    write(pcapngObj,packet,timestamp,interfaceID,'PacketComment',packetComment);

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

    свернуть все

    Примечание

    The pcapWriter и pcapngWriter объекты не перезаписывают существующие файлы PCAP или PCAPNG, соответственно. Во время каждого вызова этих объектов задайте уникальное имя файла PCAP или PCAPNG.

    Объект средства записи файлов PCAP, заданный как pcapWriter объект.

    Пакет протокола, заданный в качестве одного из следующих значений.

    • Двоичный вектор - Это значение представляет биты.

    • Вектор символов - это значение представляет октеты в шестнадцатеричном формате.

    • Строковый скаляр - это значение представляет октеты в шестнадцатеричном формате.

    • Числовой вектор с каждым элементом в области значений [0, 255] - Это значение представляет октеты в десятичном формате.

    • n массива символов -by-2 - В этом значении каждая строка представляет октет в шестнадцатеричном формате.

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

    Время поступления пакета с 1/1/1970, заданное как неотрицательное целое число. Это значение должно быть выражено в микросекундах.

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

    Объект средства записи файлов PCAPNG, заданный как pcapngWriter объект.

    Уникальный идентификатор для интерфейса, заданный как неотрицательный скаляр.

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

    Аргументы в виде пар имя-значение

    Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

    Пример: 'PacketFormat','bits' задает формат пакета протокола в виде бит.

    Формат пакета протокола, заданный как разделенная разделенными запятой парами, состоящая из PacketFormat и 'octets' или 'bits'. Если это значение задано как 'octets', packet задается как одно из следующих значений.

    • Двоичный вектор - Это значение представляет биты.

    • Вектор символов - это значение представляет октеты в шестнадцатеричном формате.

    • Строковый скаляр - это значение представляет октеты в шестнадцатеричном формате.

    • Числовой вектор с каждым элементом в области значений [0, 255] - Это значение представляет октеты в десятичном формате.

    • n массива символов -by-2 - В этом значении каждая строка представляет октет в шестнадцатеричном формате.

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

    Комментарий для пакета протокола, заданный как разделенная разделенными запятой парами, состоящая из PacketComment и вектор символов или строковый скаляр.

    Зависимости

    Чтобы включить этот аргумент пары "имя-значение", задайте pcapngObj входной параметр.

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

    Ссылки

    [1] Tuexen, M. «PCAP Next Generation (Pcapng) Capture File Format». 2020. https://www.ietf.org/.

    [2] Группа, The Tcpdump. «Общий репозиторий Tcpdump/Libpcap». Доступ к 20 мая 2020 года. https://www.tcpdump.org.

    [3] «Development/LibpcapFileFormat - The Wireshark Wiki». Доступ к 20 мая 2020 года. https://www.wireshark.org/.

    Расширенные возможности

    Генерация кода C/C + +
    Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

    .
    Введенный в R2020b