tcpdump过滤特定IP的数据包,结果不对?
来源:互联网 发布:先锋网络电视vip 编辑:程序博客网 时间:2024/05/17 21:45
项目中自己需要写个程序通过
pcap-filter
表达式过滤数据包,测试时发现过滤结果不对!现将问题简化如下(以tcpdump举例)
问题描述
- 通过 tcpdump 过滤出173_20170107_180747_p5p2.pcap 文件中IP为 10.10.88.173的数据包,并保存为result.pcap
- 过滤命令
tcpdump -r 173_20170107_180747_p5p2.pcap -w result.pcap "host 10.10.88.173"
- 原始数据包用wireshark打开,设置过滤表达式为
ip.addr==10.10.88.173
,发现IP为 10.10.88.173的数据包个数为7150
- 但用wireshark打开tcpdump过滤出的result.pcap文件,发现其数据包个数为
7152
,如下图!(此时如果知道原因就不用往下看了)
问题分析
- 通过对比wireshark和tcpdump过滤出的数据包,发现tcpdump过滤出的pcap文件,多了两个ARP数据包。如图
- 但就自己所了解的,ARP协议应属于链路层的,不属于IP网络层的(这种表述可能有争论),为什么tcpdump会将其包含在过滤结果内呢?
- 通过
man pcap-filter
查阅pcap-filter表达式语法,发现自己写的tcpdump过滤表达式host 10.10.88.173
是正确的啊 - 但细看却发现,默认下的
host
,src host
,dst host
过滤出的IP数据包,是包含ARP, RARP协议的!!!准确描述如下
问题解决
- 将tcpdump过滤表达式修改为
ip host 10.10.88.173
,即运行命令tcpdump -r 173_20170107_180747_p5p2.pcap -w result.pcap "ip host 10.10.88.173"
即可!
问题总结
- 在使用tcpdump或其他工具过特定IP的数据包时,pcap-filter过滤表达式的书写要注意!
- 如果仅仅是想过滤出IP层的特定IP的数据,需要使用
ip host X.X.X.X
或ip src X.X.X.X
或ip dst X.X.X.X
- 如果仅仅是想过滤出ARP或RARP协议的IP数据包时,需要使用
arp host X.X.X.X
或rarp host X.X.X.X
man pcap-filter
,多熟悉下
0 0
- tcpdump过滤特定IP的数据包,结果不对?
- tcpdump 过滤数据包
- 数据包过滤及分析实例 tshark tcpdump
- 用wireshark过滤特定主机数据包
- tcpdump抓取TCP/IP数据包分析
- 基于netfilter机制的IP数据包过滤驱动模版
- 被动数据包采集过滤测量技术---TCPdump应用详解
- 高效过滤tcpdump输出取源IP
- 代码的结果输出不对
- wireshark捕获/过滤指定ip地址数据包
- wireshark捕获/过滤指定ip地址数据包
- wireshark捕获/过滤指定ip地址数据包
- wireshark捕获/过滤指定ip地址数据包
- wireshark捕获/过滤指定ip地址数据包
- wireshark捕获/过滤指定ip地址数据包
- wireshark捕获/过滤指定ip地址数据包
- tcpdump/ethereal的过滤规则
- 利用tcpdump抓取ios的tcp数据包
- Maven配置文件pom.xml详解
- Python3.52安装扩展错误
- struts2的执行流程(执行原理)
- 【LeetCode】Sum of Left Leaves 解题报告
- ArrayList,Vector, LinkedList的存储性能和特性
- tcpdump过滤特定IP的数据包,结果不对?
- 0107
- C语言register关键字
- JVM加载class文件的原理机制?
- NetBeans的代码度量插件SourceCodeMetrics的基本使用方法
- 修改百度输入法截图保存的默认文件名
- GC是什么? 为什么要有GC
- redis学习资料汇总
- 图像滤镜的一些加速和改进--笔记