libpcap的使用

int	pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *);

    此接口用于对特定的设备,获取32进制的网络号和掩码;

获取的ip是网络地址,不是ip地址;

与我们的理解不一致,但是这不是异常。

根据libpcap官方的issue上记录

pcap_lookupnet() is used to determine the network number and mask associated with the network device device. Both netp and maskp are bpf_u_int32 pointers. A return of -1 indicates an error in which case errbuf is filled in with an appropriate error message.



----------
"Network number", not "network address". The old pcap man page, from before the individual man pages were created, says the same thing:

 

可以使用ioctl接口获取ip地址

 

-----------------------------------

inet_ntoa

这是整数值转换字符串接口,使用时有一点需要注意,函数内部使用静态内存,不是可重入函数,所以下面调用是错误的,得到的都是同一块控件字符串

printf("[+] Network number: %s\n[+] Subnet mask: %s\n", inet_ntoa(net), inet_ntoa(mask));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值