下c语言实现wc_Linux下C语言实现网络抓包

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值