linux tcpdump 抓包

tcpdump是linux命令行下经常使用的的一个抓包工具,记录一下平时经常使用的方式,测试机器系统是ubuntu 12.04。linux

tcpdump的命令格式web

tcpdump的参数众多,经过man tcpdump能够查看tcpdump的详细说明,这边只列一些笔者本身经常使用的参数:ubuntu

tcpdump [-i 网卡] -nnAX '表达式'

各参数说明以下:app

  • -i:interface 监听的网卡。
  • -nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。
  • -A:以ascii的方式显示数据包,抓取web数据时颇有用。
  • -X:数据包将会以16进制和ascii的方式显示。
  • 表达式:表达式有不少种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件能够用and、or组合,取反可使用!,更多的使用能够查看man 7 pcap-filter。

下面进行一些命令测试,若是没有权限,能够先切换成root用户。tcp

监听网卡eth0工具

$ tcpdump -i eth0

这个方式最简单了,可是用处很少,由于基本上只能看到数据包的信息刷屏,压根看不清,可使用ctrl+c中断退出,若是真有需求,能够将输出内容重定向到一个文件,这样也更方便查看。测试

监听指定协议的数据命令行

$ tcpdump -i eth0 -nn 'icmp'

这个是用来监听icmp协议的数据,就是ping命令使用的协议。相似的,若是要监听tcp或者是udp协议,只须要修改上例的icmp就能够了。ping下监听的机器,输出以下:cdn

linux使用tcpdump抓包示例

linux使用tcpdump抓包示例blog

每一行的各个数据表示的含义:

抓到包的时间 IP 发包的主机和端口 > 接收的主机和端口 数据包内容

监听指定的主机

$ tcpdump -i eth0 -nn 'host 192.168.1.231'

这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。

$ tcpdump -i eth0 -nn 'src host 192.168.1.231'

这样只有192.168.1.231这台主机发送的包才会被抓取。

$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'

这样只有192.168.1.231这台主机接收到的包才会被抓取。

监听指定端口

$ tcpdump -i eth0 -nnA 'port 80'

上例是用来监听主机的80端口收到和发送的全部数据包,结合-A参数,在web开发中,真是很是有用。

监听指定主机和端口

$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'

多个条件能够用and,or链接。上例表示监听192.168.1.231主机经过80端口发送的数据包。

监听除某个端口外的其它端口

$ tcpdump -i eth0 -nnA '!port 22'

若是须要排除某个端口或者主机,可使用“!”符号,上例表示监听非22端口的数据包。

 

转自:http://www.01happy.com/linux-use-tcpdump-capture-network-packets/

相关文章
相关标签/搜索