神探tcpdump第五招
前四招都是围绕tcpdump的选项来介绍的,从这招起,我们会把目光转向更加常用的“过滤表达式”内容。
通过这几招的学习,你将具备“心无旁骛,潜心专注”的武功。
==
【师傅领进门】
可以给tcpdump传送“过滤表达式”来起到网络包过滤的作用,而且可以支持传入单个或多个过滤表达式,从这一点来说tcpdump还是很大肚能容的。
当你传入的过滤表达式含有shell通配符时,别忘使用单引号把表达式括起来,以防shell自作主张的把含有通配符的表达式先进行了解释和通配。
如果你希望自己研究“过滤表达式”,没问题,我会告诉你如何“进门”,方法就是:
man pcap-filter
你会发现,过滤表达式大体可以分成三种过滤条件,“类型”、“方向”和“协议”,这三种条件的搭配组合就构成了我们的过滤表达式。
【我只想抓UDP的包,不想被TCP的包打扰】
# tcpdump -i eth0 -c 10 \'udp\' tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 11:25:20.801612 IP 116.255.245.48.54808 > 229.111.112.12.csd-mgmt-port: UDP, length 4 11:25:20.802120 IP 116.255.245.206.54313 > ns.sc.cninfo.net.domain: 5256+ PTR? 12.112.111.229.in-addr.arpa. (45) 11:25:21.145126 IP ns.sc.cninfo.net.domain > 116.255.245.206.54313: 5256 NXDomain 0/0/0 (45) 11:25:21.145315 IP 116.255.245.206.46658 > ns.sc.cninfo.net.domain: 15551+ PTR? 48.245.255.116.in-addr.arpa. (45) 11:25:21.153966 IP 116.255.245.43.62220 > 229.111.112.12.csd-mgmt-port: UDP, length 4 11:25:21.180135 IP 116.255.245.61.hsrp > all-routers.mcast.net.hsrp: HSRPv0-hello 20: state=active group=21 addr=116.255.245.33 11:25:21.231151 IP ns.sc.cninfo.net.domain > 116.255.245.206.46658: 15551 NXDomain 0/0/0 (45) 11:25:21.231430 IP 116.255.245.206.46158 > ns.sc.cninfo.net.domain: 31924+ PTR? 69.2.139.61.in-addr.arpa. (42) 11:25:21.277087 IP ns.sc.cninfo.net.domain > 116.255.245.206.46158: 31924 1/0/0 PTR ns.sc.cninfo.net. (72) 11:25:21.277824 IP 116.255.245.206.42656 > ns.sc.cninfo.net.domain: 806+ PTR? 206.245.255.116.in-addr.arpa. (46) 10 packets captured 20 packets received by filter 0 packets dropped by kernel
举这个例子,是为了说明tcpdump具有根据网络包的协议来进行过滤的能力,我们还可以把udp改为ether、ip、ip6、arp、tcp、rarp等。
或许你会提问“为啥这些协议里没有应用层协议呢?”,其实理由很简单,应用层协议非基础类网络协议,经常会新增或淘汰,tcpdump不会深入到应用层部分去智能解析。所以,你现在看到的tcpdump支持的protocol都是应用层以下的。
【我想专门查看这个源机器和那个目的机器之间的网络包,不想被其他无关的机器打扰】
这个其实很简单,也很直观,只要设置src(source)和dst(destination)就好了,而且方便的是,tcpdump还支持使用and和or来进行搭配组合呢!
如果没有设置的话,默认是src or dst。
# tcpdump -i eth0 \'dst 8.8.8.8\' tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 13:21:23.281978 IP 116.255.245.206 > google-public-dns-a.google.com: ICMP echo request, id 23081, seq 1, length 64 13:21:24.286663 IP 116.255.245.206 > google-public-dns-a.google.com: ICMP echo request, id 23081, seq 2, length 64 13:21:25.288612 IP 116.255.245.206 > google-public-dns-a.google.com: ICMP echo request, id 23081, seq 3, length 64 ^C 3 packets captured 5 packets received by filter 0 packets dropped by kernel
【我只想查目标机器端口是53或80的网络包,其他端口的我不关注】
# tcpdump -i eth0 -c 3 \'dst port 53 or dst port 80\' tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 13:29:04.530130 IP 114.255.192.96.29832 > 116.255.245.206.http: Flags [S], seq 3169042560, win 5840, options [mss 1460,sackOK,TS val 2949111416 ecr 0], length 0 13:29:04.530660 IP 116.255.245.206.43211 > ns.sc.cninfo.net.domain: 40188+ PTR? 206.245.255.116.in-addr.arpa. (46) 13:29:04.548589 IP 114.255.192.96.29832 > 116.255.245.206.http: Flags [.], ack 3709396068, win 5840, options [nop,nop,TS val 2949111475 ecr 1601243970], length 0 3 packets captured 10 packets received by filter 0 packets dropped by kernel
我们可以设置过滤类型,上面例子中我们使用了port这个类型,就是来指定端口。当然,tcpdump还支持如下的类型:
1 host:指定主机名或IP地址,例如’host roclinux’或’host 202.112.18.34′
2 net :指定网络段,例如’arp net 128.3′或’dst net 128.3′
3 portrange:指定端口区域,例如’src or dst portrange 6000-6008′
如果我们没有设置过滤类型,那么默认是host。
谢谢!
建议继续学习:
- 神探tcpdump第一招 (阅读:8263)
- 使用wireshark分析网络报文 (阅读:6651)
- 记一次丢包网络故障 (阅读:5334)
- 神探tcpdump第六招 (阅读:4202)
- 神探tcpdump第四招 (阅读:4130)
- 神探tcpdump第三招 (阅读:4090)
- ssldump (阅读:3978)
- tcpdump匹配http头 (阅读:2651)
- 调试利器之tcpdump详解 (阅读:2326)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:rocrocket 来源: linux大棚-roclinux.cn
- 标签: tcpdump
- 发布时间:2012-09-03 13:54:15
- [52] 图书馆的世界纪录
- [52] IOS安全–浅谈关于IOS加固的几种方法
- [51] 如何拿下简短的域名
- [50] android 开发入门
- [49] Oracle MTS模式下 进程地址与会话信
- [49] Go Reflect 性能
- [47] 【社会化设计】自我(self)部分――欢迎区
- [45] 读书笔记-壹百度:百度十年千倍的29条法则
- [37] 程序员技术练级攻略
- [28] 视觉调整-设计师 vs. 逻辑