linux 抓包生成文件,Linux下使用libpcap进行网络抓包并保存到文件(函数介绍)

libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文;

使用libcap库编译时都要在后面加上-lpcap选项

使用pcap探测获取网络接口

char * pcap_lookupdev(char * errbuf)

这个函数就是用来探测网络接口的,它会返回第一个合适的网络接口字符串指针,如果出错则在errbuf中返回,长度至少是PCAP_ERRBUF_SIZE。

#include

#include

#include

int main()

{

char errBuf[PCAP_ERRBUF_SIZE], * devStr;

devStr = pcap_lookupdev(errBuf);

if (devStr)

printf("success: device: %s\n", devStr);

else

{

printf("error: %s\n", errBuf);

exit(1);

}

return 0;

}

注意这个函数是返回第一个合适的网络接口字符串,我的主机第一个合适的网络接口为 vibir0端口,在这个虚拟端口下没有办法抓到包,因而要找到指定的端口要要循环遍历端口后,进行选择特定网卡端口

char * get(){

pcap_if_t *alldevs;

pcap_if_t *d;

int i=0;

char errbuf[PCAP_ERRBUF_SIZE];

/* 获取本地机器设备列表 */

if (pcap_findalldevs( &alldevs, errbuf ) == -1)

{

fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);

exit(1);

}

for(d= alldevs; d != NULL; d= d->next)

{

printf("%d. %s\n", ++i, d->name);

}

//获取指定的设备

char getPort[32];

gets(getPort);

for(d= alldevs; d != NULL; d= d->next)

{if(strcmp(d->name,getPort)==0)

{

printf("%d. %s", ++i, d-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值