wireshark抓不到包,使用wireshark抓netlink包問題

 2023-10-17 阅读 17 评论 0

摘要:使用wireshark抓netlink包問題 如何抓 網上的抓包方法如下: modprobe nlmon ip link add nlmon0 type nlmon ip link set dev nlmon0 up # 必須使用-w保存到文件 tcpdump -i nlmon0 -w netlinik.pcap 注意:tcpdump時必須使用-w保存到文件,然后通過wiresh

使用wireshark抓netlink包問題

如何抓

網上的抓包方法如下:

modprobe nlmon
ip link add nlmon0 type nlmon
ip link set dev nlmon0 up
# 必須使用-w保存到文件
tcpdump -i nlmon0 -w netlinik.pcap

注意:tcpdump時必須使用-w保存到文件,然后通過wireshark分析。不支持tcpdump內直接分析。

抓不到?

將抓到的報文用wireshark打開,看到確實可以解析,一陣竊喜
在這里插入圖片描述

但找了一番,并未找到自己想要的包。
并且可以篤定沒抓到自己發送的netlink消息。
結合網上的分析,以及看代碼,可以得出結論,并不是所有NETLINK包都能抓到,僅支持如下協議的netlink包:

  • NETLINK_ROUTE
  • NETLINK_USERSOCK
  • NETLINK_SOCK_DIAG
  • NETLINK_NFLOG
  • NETLINK_XFRM
  • NETLINK_FIB_LOOKUP
  • NETLINK_NETFILTER
  • NETLINK_GENERIC

wireshark抓不到包?而我想要抓的netlink協議號是自定義的。所以抓不到。

netlink tap口函數大致調用流程

af_netlink.c中
__netlink_sendskb -> netlink_deliver_tap -> __netlink_deliver_tap
__netlink_deliver_tap時調用過濾器函數,不支持的協議會進行過濾

static bool netlink_filter_tap(const struct sk_buff *skb)
{struct sock *sk = skb->sk;/* We take the more conservative approach and* whitelist socket protocols that may pass.*/switch (sk->sk_protocol) {case NETLINK_ROUTE:case NETLINK_USERSOCK:case NETLINK_SOCK_DIAG:case NETLINK_NFLOG:case NETLINK_XFRM:case NETLINK_FIB_LOOKUP:case NETLINK_NETFILTER:case NETLINK_GENERIC:return true;}return false;
}

如何改進代碼

使用NETLINK_GENERIC來進行通信。

NETLINK的協議號本就只支持32個,已經使用了20來個了,也經不起我們一個進程跟內核通信就造一個協議號。因此可以使用NETLINK_GENERIC,也可滿足需求。
這樣還能抓包多好。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/143444.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息