浅谈Linux之抓包命令tcpdump

浅谈Linux之抓包命令tcpdump


前言

Tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助去掉无用的信息。TcpDump的总的输出格式为:系统时间,来源主机+端口,目标主机+端口,数据包参数。

如何躲过Tcpdump的监听、分析?一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP 堆栈才行。在FreeBSD下,这就需要内核支持伪设备bpfilter。因此,在内核中取消bpfilter支持,就能屏蔽tcpdump之类的网络分析工具。


一、命令介绍

tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]

               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]

               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]

               [ -P in|out|inout ]

               [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]

               [ -W filecount ]

               [ -E spi@ipaddr algo:secret,...  ]

               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]

               [ expression ]

Tcpdump基本指令:

tcpdump

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

二、操作

ifconfig

查看本机网卡

上图中的网卡可为eth0/lo

tcpdump -i eth1

如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。 

tcpdump host 210.27.48.1

截获所有210.27.48.1的主机收到的和发出的所有的数据包

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包

截获主机hostname发送的所有数据

tcpdump -i eth0 src host hostname

监视所有送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

tcpdump tcp port 端口 and host 主机ip

tcpdump -c 接收指定数量

tcpdump host/net/port src/dst/src or dst/dst and src

主机/网络地址/端口.若无指定,则为host

指明源地址/指明网络地址

tcpdump -i eth1 src port 443

简单实例

172.24.18.25 ping 172.24.18.8

在172.24.18.8中抓包172.24.18.25

IP iZ88BFRKH96Z为18.8的hostname名,可见抓包成功

猜你喜欢

转载自blog.csdn.net/Aaron_ch/article/details/113007659