Я пытаюсь сохранить образец пакета в файл .pcap, используя pcap_dump() и другие функции из библиотеки pcap.h. Когда я открываю его в Wireshark, цифры просто отличаются от тех, которые я сохраняю в программе. Вот мой код:Пакет хранится неправильно в .pcap файле
void create_pcap_file() {
string udp = "ff ff ff ff ff ff 00 21 85 11 29 1b 08 00 45 00 00 1c 0c 12 40 00 80 11 00 00 93 af 6a 8d ff ff ff ff 44 5c 44 5c 00 08 78 e9 ";
u_char* packet = (u_char*)malloc(udp.size() * sizeof(u_char*));
for (int i = 0; i < udp.size(); i++) {
packet[i] = (u_char) udp[i];
}
pcap_dumper_t * file = pcap_dump_open(pcap_open_dead(DLT_EN10MB, 65535), "dumper_item1.pcap");
pcap_pkthdr header;
header.caplen = (bpf_u_int32)42; //size of an UDP/IP packet without any data
header.len = (bpf_u_int32)42;
header.ts.tv_sec = time(NULL);
header.ts.tv_usec = 0;
pcap_dump((u_char*)file, &header, packet);
}
Wireshark показывает это:
Кто-нибудь знает, почему это происходит?
Вы дали ему строку, содержащую шестнадцатеричные цифры (0x66 код для «F»). Вероятно, вы должны указать последовательность байтов, которую представляет строка. Вам нужно преобразовать каждую пару шестнадцатеричных цифр в один знак без знака. –