Запись пакетных данных протокола в файл PCAP или PCAPNG
write( записывает пакетные данные протокола в файл PCAPNG, указанный в объекте записи файла PCAPNG, pcapngObj,packet,timestamp,interfaceID)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.
pcapObj - объект записи файлов PCAPpcapWriter объектОбъект записи файла PCAP, указанный как pcapWriter объект.
packet - Пакет протоколаПакет протокола, указанный как одно из этих значений.
Вектор с двоичным значением - это значение представляет биты.
Символьный вектор - это значение представляет октеты в шестнадцатеричном формате.
Скаляр строки - это значение представляет октеты в шестнадцатеричном формате.
Числовой вектор с каждым элементом в диапазоне [0, 255] - это значение представляет октеты в десятичном формате.
символьный массив n-by-2 - в этом значении каждая строка представляет октет в шестнадцатеричном формате.
Типы данных: char | string | double
timestamp - Время поступления пакетаВремя поступления пакета с 1/1/1970, указанное как неотрицательное целое число. Это значение должно быть выражено в микросекундах.
Типы данных: double
pcapngObj - объект модуля записи файлов PCAPNGpcapngWriter объектОбъект записи файла PCAPNG, указанный как pcapngWriter объект.
interfaceID - Уникальный идентификатор интерфейсаУникальный идентификатор интерфейса, указанный как неотрицательный скаляр.
Типы данных: double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'PacketFormat','bits' задает формат пакета протокола в виде битов.'PacketFormat' - Формат пакета протокола'octets' (по умолчанию) | 'bits'Формат пакета протокола, определяемый как разделенная запятыми пара, состоящая из PacketFormat и 'octets' или 'bits'. Если это значение указано как 'octets', packet указывается как одно из этих значений.
Вектор с двоичным значением - это значение представляет биты.
Символьный вектор - это значение представляет октеты в шестнадцатеричном формате.
Скаляр строки - это значение представляет октеты в шестнадцатеричном формате.
Числовой вектор с каждым элементом в диапазоне [0, 255] - это значение представляет октеты в десятичном формате.
символьный массив n-by-2 - в этом значении каждая строка представляет октет в шестнадцатеричном формате.
Типы данных: char | string | double
'PacketComment' - Комментарий для пакета протокола'' (по умолчанию) | символьный вектор | строковый скалярКомментарий для пакета протокола, указанного как разделенная запятыми пара, состоящая из 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/.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.