1
我試圖使用pcap_dump()和pcap.h庫中的其他函數將示例數據包保存到.pcap文件。當我在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」的代碼)。你可能打算給它字符串表示的字節序列。您需要將每對十六進制數字轉換爲一個無符號字符。 –