exponenta event banner

написать

Запись пакетных данных протокола в файл 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 НОМЕР пакетов, добавьте герметизацию и метаданные к 5G НОМЕР пакета.

    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 НОМЕР данных о пакете к файлу 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 НОМЕР пакетов, добавьте герметизацию и метаданные к 5G НОМЕР пакета.

    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 НОМЕР данных о пакете к файлу PCAPNG.

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

    Входные аргументы

    свернуть все

    Примечание

    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, М. «Формат файла захвата PCAP следующего поколения (Pcapng)». 2020. https://www.ietf.org/.

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

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

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

    Создание кода C/C + +
    Создайте код C и C++ с помощью MATLAB ® Coder™

    .
    Представлен в R2020b