libpcap是一个网络数据包捕获函数库。
1.安装:
http://www.tcpdump.org/ 下载libpcap 解压缩
2.在终端输入命令:
cd 解压缩完的文件名
./configure
make
make install
3.C语言代码:
vi packet.c
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <time.h>
void getPacket(u_char * arg, const struct pcap_pkthdr * pkthdr, const u_char * packet){
int * id = (int *)arg;
printf("id: %dn", ++(*id));
printf("Packet length: %dn", pkthdr->len);
printf("Number of bytes: %dn", pkthdr->caplen);
printf("Received time: %sn", ctime((const time_t *)&pkthdr->ts.tv_sec));
int i;
for(i = 0; i < pkthdr->len; ++i){
printf(" %02x", packet[i]);
if((i+1)%16 == 0){
printf("n");
}
}
printf("nn");
}
int main(){
char *devStr, errBuf[PCAP_ERRBUF_SIZE];
devStr = pcap_lookupdev(errBuf);
if(devStr){
printf("success: device: %sn", devStr);
}
else{
printf("error: %sn", errBuf);
exit(1);
}
pcap_t * device = pcap_open_live(devStr, 65535, 1, 0, errBuf);
if(!device){
printf("error: pcap_live_open(): %sn", errBuf);
exit(1);
}
int id = 0;
pcap_loop(device, -1, getPacket, (u_char *)&id);
pcap_close(device);
return 0;
}
4.编译命令:
gcc -g -Wall -o packet packet.c -lpcap
./packet
5.结果图:
![ad8f239aa1f028d46c09b7dd7a03b850.png](https://i-blog.csdnimg.cn/blog_migrate/36d269c5c1c1e157b676eaa5e02f36fd.jpeg)