《SQL基础教程》简要总结 《设计师要懂心理学》读书笔记 MySQL与MariaDB学习笔记 WDT (Folly) 安装指南 -- CentOS 7 [solved]Page build failed(Jekyll) 数据包过滤及分析实例 tshark tcpdump Scala Tour 学习总结 “Docker容器和容器云”读书笔记(1) “Docker Practice”读书笔记 “图解基础设施设计模式”小结 “图解服务器端网络架构”小结 Python网络安全编程 数据包解析笔记 华为挑战赛(1) DDoS攻击防御与云服务 基于网络回溯分析技术的异常行为分析 “Linux程序设计”小结(进程间通信) C语言编程规范(华为软件精英挑战赛) 2017阿里在线编程题--单源最短路径问题 2017年阿里在线编程题-- 数串分组 Uinx/Linux上的帮助查询命令 你懂C,所以C++不在话下 一篇特别长的总结(C专家编程) 程序员面试金典--笔记(精华篇) C陷阱与缺陷--笔记 半小时搭建电子商务网站--opencart linux网络知识和工具(持续更新) 网卡参数查询及设置工具ethtool 高性能流量生成工具trafgen(DDoS模拟) Linux流量控制工具TC 流量控制工具TC详细说明 tcpdump过滤数据包,结果不对? Lecture 网络攻击与防御技术笔记 gotgit-git权威指南 高效使用MacOS所要知道的 shell内置字符串处理 配置ntp(知其所以然) 360黑客攻防技术分享会--记录 中毒U盘恢复--快捷键病毒 Tor--anonymity network介绍(PPT) IBM bluemix 再读《Linux Shell脚本攻略》 linux shell 学习摘记(9) linux shell 学习摘记(8) linux shell 学习摘记(7) linux shell 学习摘记(6) linux shell 学习摘记(5) linux shell 学习摘记(4) linux shell 学习摘记(3) linux shell 学习摘记(2) linux shell 学习摘记(1) firefox vim 插件 vimperator A Byte of Vim 笔记 windows注册表小知识 安全测试工具篇(开源&商业) 安全及性能测试工具(网站收集) 性能测试工具 屡试不爽的“3个”iPad使用技巧 Shell Shortcuts(和Tab键一样实用) vim--自动添加jekyll post信息头 vim 自动给文件添加头部信息 GitHub Tips (很实用,值得收藏) Linux路由、防火墙、NAT命令

tcpdump过滤数据包,结果不对?

2017年01月10日

需要写个程序通过pcap-filter表达式过滤数据包,测试时发现过滤结果不对!现将问题简化如下(以tcpdump举例)

问题描述

  1. 通过 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"
  2. 原始数据包用wireshark打开,设置过滤表达式为ip.addr==10.10.88.173,发现IP为 10.10.88.173的数据包个数为7150
  3. 但用wireshark打开tcpdump过滤出的result.pcap文件,发现其数据包个数为7152,如下图!(此时如果知道原因就不用往下看了)
    image_1b5sh1esi12fhcde4ln8id1k1r1c.png-97.6kB
    image_1b5sh37cbdt41hthgqrk3ntgo1p.png-89kB

问题分析

  1. 通过对比wireshark和tcpdump过滤出的数据包,发现tcpdump过滤出的pcap文件,多了两个ARP数据包。如图
    image_1b5si96kh1o96afr1qeam615b530.png-37.4kB
  2. 但就自己所了解的,ARP协议应属于链路层的,不属于IP网络层的(这种表述可能有争论),为什么tcpdump会将其包含在过滤结果内呢?
  3. 通过man pcap-filter查阅pcap-filter表达式语法,发现自己写的tcpdump过滤表达式host 10.10.88.173是正确的啊
    image_1b5siqkvebebkal10scanm1nf53d.png-4.2kB
  4. 但细看却发现,默认下的host,src host, dst host过滤出的数据包,是包含ARPRARP协议的!!!wireshark解析ARP数据包,其也包含对应的IP 10.10.88.173, man pcap-filter,其准确描述如下
    image_1b5sj4q5krlc1uka1i1bjul1gkn3q.png-17.1kB

问题解决

  1. 将tcpdump过滤表达式修改为ip host 10.10.88.173,即运行命令tcpdump -r 173_20170107_180747_p5p2.pcap -w result.pcap "ip host 10.10.88.173"即可!

问题总结

  1. 在使用tcpdump或其他工具过特定IP的数据包时,pcap-filter过滤表达式的书写要注意!
  2. 如果仅仅是想过滤出IP层的特定IP的数据,需要使用ip host X.X.X.Xip src X.X.X.Xip dst X.X.X.X
  3. 如果仅仅是想过滤出ARP或RARP协议的IP数据包时,需要使用arp host X.X.X.Xrarp host X.X.X.X
  4. man pcap-filter,多熟悉下

知识共享许可协议
SWF's Hacking Dreamonephone 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2017. All rights reserved by onephone. Powerd by Jekyll.