Tcpdump使用总结

举报
放星星的羊 发表于 2017/12/22 15:45:34 2017/12/22
【摘要】 1 介绍1.1 一些闲话Tcpdump是一个历史悠久的报文分析工具。目前主要由www.tcpdump.org维护,底层是libpcap库。libpcap使用非常广泛,原始的版本是利用raw socket实现,性能有限,新的版本在Linux上开始支持PF_RING。windows的移植版本是winpcap,目前在Wireshark底层抓包驱动就是winpcap。另外,如果需要高性

1      介绍

1.1      一些闲话

Tcpdump是一个历史悠久的报文分析工具。目前主要由www.tcpdump.org维护,底层是libpcap库。libpcap使用非常广泛,原始的版本是利用raw socket实现,性能有限,新的版本在Linux上开始支持PF_RINGwindows的移植版本是winpcap,目前在Wireshark底层抓包驱动就是winpcap

另外,如果需要高性能报文抓取功能,可以考虑netsniff-ng,这是一个工具集,直接利用PF_RING实现零拷贝抓包,很强悍。

2      使用说明

2.1      命令格式

tcpdump                                   [ -adeflnNOpqStvx ]

[ -c pkt_num ] [ -F filename ]

          [ -i ifname ] [ -r filename] [ -s snaplen ]

          [-T type] [ -w filename ] [ expression ]

-a    将网络地址和广播地址转变成名字

-d    将匹配信息包的代码以人们能够理解的汇编格式给出

-dd    将匹配信息包的代码以c语言程序段的格式给出

-ddd   将匹配信息包的代码以十进制的形式给出

-e    在输出行打印出数据链路层的头部信息

-f    将外部的Internet地址以数字的形式打印出来

-l    使标准输出变为缓冲行形式

-n    不把网络地址转换成名字

-nn      不实现IPPort的名称

-t    在输出的每一行不打印时间戳

-v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息

-vv    输出详细的报文信息

-c    在收到指定的包的数目后,tcpdump就会停止

-F    从指定的文件中读取表达式,忽略其它的表达式

-i    指定监听的网络接口

-r    从指定的文件中读取包(这些包一般通过-w选项产生)

-w    pcap格式,写入文件中。

-T    将监听到的包直接解释为指定的类型的报文,常见的类型有RPCsnmp

-x   输出报文的内容(IP报文),-X还会额外打印ASCII信息。

-xx   输出完整的报文,-XX还会额外打印ASCII信息。

 

默认行为:

如果不指定接口,默认使用第一个接口。

默认截取报文的长度是96字节(老版本是60),可用-s修改。

使用etherhostnetport等类型,host是默认类型。

默认进行域名解析,可以用-n-nn取消。

2.2      2个要知道的参数

-c pkt_num

以前让用服抓包的时候,经常会说网络流量太大,抓包的笔记本直接跪了。这个时候,这个参数就可以登场了,用-c可以指定抓取的报文的个数,完成之后自动退出。(Wireshark上也有相同选项)

-w file_name

将抓取的报文,写入到指定文件(使用.pcap后缀)。可以将文件拖过来后,用Wireshark来分析。

2.3      过滤主机

tcpdump -i eth1 host 192.168.1.1

tcpdump -i eth1 src host 192.168.1.1

tcpdump -i eth1 dst host 192.168.1.1

2.4      协议

tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i
eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp

2.5      几个综合例子

抓取所有经过 eth1,目标 MAC 地址是 00:01:02:03:04:05 ICMP 数据

 tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

 

抓取所有经过 eth1,目的IP192.168.1.254192.168.1.200,端口为80TCP数据

tcpdump -i eth1 ' ((tcp) && (port 80) and ((dst host 192.168.1.254) or (dst host
192.168.1.200))) '

 

抓取所有经过 eth1,目的网络是 192.168,但目的IP不是 192.168.1.200 TCP 数据

tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。