libpcap--03

/*  file:  ldev.c

 *  data:  Thu June 10 

 *  Simple single packet capture program

 */

#include <stdio.h>

#include <stdlib.h>

#include <pcap.h>

#include <arpa/inet.h>

#include <errno.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <netinet/if_ether.h>

int main(int argc, char *argv[])

{

    const char *dev;

    char *net;

    char *mask;

    int ret;

    char errbuf[PCAP_ERRBUF_SIZE];

    bpf_u_int32 netp; // ip

    bpf_u_int32 maskp; //subnet mask

    struct in_addr addr; //

    dev = pcap_lookupdev(errbuf); // ask pacp to find a valid device for use to sniff on

    if(dev == NULL)

    {

        printf("%s\n",errbuf);

        exit(1);

    }

    printf("DEV: %s\n",dev);

    ret = pcap_lookupnet(dev ,&netp, &maskp, errbuf);  // ask pcap for the network address and mask of the device 

    if(ret == -1)

    {

        printf("%s\n",errbuf);

        exit(1);

    }

    addr.s_addr = netp;  // get the network address in a human readable form 

    net = inet_ntoa(addr);

    if(net == NULL)

    {

        perror("inet_ntoa");

        exit(1);

    }

    printf("NET: %s\n",net);

    addr.s_addr = maskp;

    mask = inet_ntoa(addr);

    if(mask == NULL)

    {

        perror("inet_ntoa");

        exit(1);

    }

    printf("MASK:%s\n",mask);

    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值