TCPDUMP中文手册最详细的手册

合集下载

tcpdump用法

tcpdump用法

tcpdump用法

tcpdump是一个功能强大的网络分析工具,能够捕获网络上的数据包,用于网络故障排除、网络性能监控以及网络安全审计等目的。它支持多种网络协议,支持文本输出和二进制输出。本文将介绍tcpdump的使用方法,以及它的参数详解。

#### 一、基本用法

tcpdump的基本用法非常简单:

```

tcpdump [options]

```

它默认以单个模式运行,在一次持续抓包过程中,一直以标准输出格式显示网络数据包,每条信息显示一个数据包信息,直到用户中断或者网络停止发包为止。

#### 二、抓包参数

tcpdump参数繁多,但常用参数主要有以下几类:

**1.滤参数**

* -net据子网抓包,支持IPv4和IPv6,比如`-net

192.168.1.0/24`

* -host据网络主机抓包,支持IPv4和IPv6,比如`-host 192.168.1.1`

* -port据端口号抓包,比如`-port 80`

**2.示参数**

* -X示数据包的十六进制与ASCII文本,通常用于检测网络攻击和病毒

* -v示更详细的抓取信息,比如IP地址、端口号等

* -vv示更详细的抓取信息,同时把协议中的详细信息也显示出来

**3.能参数**

* -r 以二进制文件的方式读取已保存的抓包数据,一般用于进行离线分析

* -w 以二进制文件的方式将抓取的数据保存下来,方便以后分析

* -c定抓包的数量,比如`-c 1000`表示只抓前1000条数据包 #### 三、高级用法

tcpdump还支持一些高级参数,用于更加精确的抓包,主要有:

TCPdump使用方法

TCPdump使用方法

下面的例子全是以抓取eth0接口为例,如果不加”-i eth0”是表示抓取所有的接口包括lo。 首先安装tcpdump包:yum install -y tcpdump 1、抓取包含172.16.1.122的数据包 # tcpdump -i eth0 -vnn host 172.16.1.122 2、抓取包含172.16.1.0/24网段的数据包 # tcpdump -i eth0 -vnn net 172.16.1.0/24 3、抓取包含端口22的数据包 # tcpdump -i eth0 -vnn port 22 4、抓取udp协议的数据包 # tcpdump -i eth0 -vnn udp 5、抓取icmp协议的数据包 # tcpdump -i eth0 -vnn icmp 6、抓取arp协议的数据包 # tcpdump -i eth0 -vnn arp 7、抓取ip协议的数据包 # tcpdump -i eth0 -vnn ip 8、抓取源ip是172.16.1.122数据包。 # tcpdump -i eth0 -vnn src host 172.16.1.122 9、抓取目的ip是172.16.1.122数据包 # tcpdump -i eth0 -vnn dst host 172.16.1.122 10、抓取源端口是22的数据包 # tcpdump -i eth0 -vnn src port 22 11、抓取源ip是172.16.1.253且目的ip是22的数据包 # tcpdump -i eth0 -vnn src host 172.16.1.253 and dst port 22 12、抓取源ip是172.16.1.122或者包含端口是22的数据包 # tcpdump -i eth0 -vnn src host 172.16.1.122 or port 22 13、抓取源ip是172.16.1.122且端口不是22的数据包 [root@ ftp]# tcpdump -i eth0 -vnn src host 172.16.1.122 and not port 22 14、抓取源ip是172.16.1.2且目的端口是22,或源ip是172.16.1.65且目的端口是80的数据包。 # tcpdump -i eth0 -vnn srchost172.16.1.2anddstport22 or srchost172.16.1.65anddstport80 15、抓取源ip是172.16.1.59且目的端口是22,或源ip是172.16.1.68且目的端口是80的数据包。 # tcpdump -i eth0 -vnn 'src host 172.16.1.59 and dst port 22' or ' src host 172.16.1.68 and dst port 80 ' 16、把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序。 # tcpdump –i eth0 -vnn -w /tmp/fil1 -c 100 17、从/tmp/fill记录中读取tcp协议的数据包 # tcpdump –i eth0 -vnn -r /tmp/fil1 tcp 18、从/tmp/fill记录中读取包含172.16.1.58的数据包 # tcpdump –i eth0 -vnn -r /tmp/fil1 host 172.16.1.58 tcpdump -s 0 -i any -w /home/1.cap port 5061

tcpdump命令详解

tcpdump命令详解

tcpdump命令详解

⼀、tcpdump简介

tcpdump命令是基于unix系统的命令⾏的数据报嗅探⼯具,可以抓取流动在⽹卡上的数据包。它的原理⼤概如下:linux抓包是通过注册⼀种虚拟的底层⽹络协议来完成对⽹络报

⽂(准确的是⽹络设备)消息的处理权。当⽹卡接收到⼀个⽹络报⽂之后,它会遍历系统中所有已经注册的⽹络协议,如以太⽹协议、x25协议处理模块来尝试进⾏报⽂的解析

处理。当抓包模块把⾃⼰伪装成⼀个⽹络协议的时候,系统在收到报⽂的时候就会给这个伪协议⼀次机会,让它对⽹卡收到的保温进⾏⼀次处理,此时该模块就会趁机对报⽂进

⾏窥探,也就是啊这个报⽂完完整整的复制⼀份,假装是⾃⼰接收的报⽂,汇报给抓包模块。

⼆、语法

1、查看本地⽹卡状态

[root@cnetos daocoder]# netstat -i

Kernel Interface table

Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

docker0 1500 40409 0 0 0 20376 0 0 0 BMU

ens5f0 1500 22999894941 0 0 0 25581016784 0 0 0 BMRU

lo 65536 850291094 0 0 0 850291094 0 0 0 LRU

Iface:存在的⽹卡。

MTU:最⼤传输单元。

RX-OK RX-ERR RX-DRP RX-OVR:正确接收数据报的数量以及发⽣错误、流式、碰撞的总数。

TCPdump使用详解

TCPdump使用详解

TCPdump使用详解

TCP dump 使用入门在调试过程中,我们经常要使用TCPdump来分析数据包的流向。但这个东西是比较难用的。因此需要好好研究一下。

超级详细Tcpdump 的用法

作者:jeffyan 发表于:2006-07-29 23:45:54

第一种是关于类型的关键字,主要包括host,net,port, 例如 host

210.27.48.2,指明 210.27.48.2是一台主机, net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.

第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络) 上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi 协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcp dump将会监听所有协议的信息包。

tcpdump常用命令用法

tcpdump常用命令用法

tcpdump常用命令用法

tcpdump是一个常用的网络抓包工具,可以用来分析网络流量,下面是一些常见的tcpdump命令用法:

1. 抓取指定网卡的所有流量:

```

tcpdump -i eth0

```

这里的eth0是网卡的名称,可以根据实际情况替换。

2. 抓取指定源IP和目标IP的流量:

```

tcpdump src <source_ip> and dst <destination_ip>

```

source_ip和destination_ip分别是源IP和目标IP地址。

3. 抓取指定端口的流量:

```

tcpdump port <port_number>

```

port_number是要抓取的端口号。

4. 抓取指定协议的流量:

```

tcpdump -v icmp

```

这里的icmp是要抓取的协议,可以是icmp、tcp、udp等。

5. 抓取指定主机的流量:

```

tcpdump host <hostname>

```

hostname是要抓取的主机名。

6. 抓取指定长度的流量:

```

tcpdump less <length>

```

length是要抓取的数据包长度。

7. 将抓包结果保存到文件中:

```

tcpdump -w <output_file>

```

output_file是保存抓包结果的文件名。

8. 从文件中读取抓包结果进行分析:

```

tcpdump -r <input_file>

```

input_file是要读取的抓包结果文件名。

tcpdump常用抓包命令

tcpdump常用抓包命令

tcpdump常用抓包命令

一、什么是tcpdump

tcpdump是一款用于抓取网络数据包的功能强大的命令行工具。它可以通过监听网络接口,捕获和分析传输过程中的数据包,对网络问题进行排查和故障分析。

二、安装tcpdump

在大多数Linux发行版中,tcpdump已经默认安装。如果您的系统没有预装tcpdump,可以通过以下命令进行安装:

sudo apt-get install tcpdump # Debian/Ubuntu

sudo yum install tcpdump # CentOS/RHEL

三、tcpdump的基本用法

1. 抓取数据包

使用tcpdump进行抓包非常简单,只需要在命令行中输入tcpdump命令即可开始捕获所有的数据包。

tcpdump

2. 指定网络接口

如果有多个网络接口可以选择,可以使用-i参数指定要监听的网络接口。例如,要监听eth0接口的数据包,可以使用以下命令:

tcpdump -i eth0

3. 保存捕获的数据包

默认情况下,tcpdump会将捕获的数据包输出到标准输出。如果需要将数据包保存到文件中,可以使用-w参数指定文件名。例如,将数据包保存到capture.pcap文件中:

tcpdump -w capture.pcap

4. 显示捕获的数据包内容

通过默认设置,tcpdump只会以十六进制格式显示捕获的数据包。如果想要查看更多的信息,可以使用-A参数以ASCII格式显示数据包内容。例如:

tcpdump -A

5. 显示源和目标IP地址

如果只需要查看数据包的源和目标IP地址,而不关心其他详细内容,可以使用-n 参数。例如:

tcpdump使用方法

tcpdump使用方法

tcpdump使用方法

一、什么是tcpdump

tcpdump是一种在Linux和Unix操作系统上使用的网络抓包工具。它可以捕获网络数据包并将其显示或保存到文件中,以供后续分析和诊断。tcpdump可以用于调试网络问题、监视网络流量、分析网络协议等。

二、安装tcpdump

1.在Ubuntu上安装tcpdump:

sudo apt-get install tcpdump

2.在CentOS上安装tcpdump:

sudo yum install tcpdump

三、基本用法

1.捕获所有数据包:

sudo tcpdump -i eth0

-i选项指定要监听的接口,eth0为网卡接口名称。

2.捕获指定端口的数据包:

sudo tcpdump -i eth0 port 80

port选项指定要监听的端口号,80为HTTP服务默认端口号。

3.捕获指定IP地址的数据包:

sudo tcpdump -i eth0 host 192.168.1.100

host选项指定要监听的IP地址,192.168.1.100为目标IP地址。

4.捕获指定协议类型的数据包:

sudo tcpdump -i eth0 icmp

icmp为ICMP协议类型。

5.捕获指定源IP地址和目标IP地址之间的数据包:

sudo tcpdump -i eth0 src 192.168.1.100 and dst 192.168.1.200 src选项指定源IP地址,dst选项指定目标IP地址。

6.保存抓包结果到文件:

sudo tcpdump -i eth0 -w capture.pcap

TCPDUMP中文手册最详细的手册

TCPDUMP中文手册最详细的手册

tcpdump的使用

tcpdump采用命令行方式,它的命令格式为:

tcpdump [ -a d e f l n N O p q S t v x]

[ -c 数量 ]

[ -F 文件名 ]

[ -i 网络接口 ]

[ -r 文件名]

[ -s snaplen ]

[ -T 类型 ]

[ -w 文件名 ]

[表达式 ]

描述(DESCRIPTION)

Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头.

对于SunOS的nit或bpf界面:要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限.

对于Solaris的dlpi:你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限.

对于HP-UX的dlpi:你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:你必须是root,或者把它安装成root的设置uid程序.对于Linux:你必须是root,或者把它安装成root的设置uid程序.

对于Ultrix和DigitalUNIX:一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump.

对于BSD:你必须有/dev/bpf*的读访问权限.

1. tcpdump的选项介绍

2. tcpdump的表达式介绍

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。

tcpdump命令详解

tcpdump命令详解

名称(NAME)

tcpdump-转储网络上的数据流

总览(SYNOPSIS)

tcpdump[-adeflnNOpqStvx][-ccount][-Ffile]

[-iinterface][-rfile][-ssnaplen]

[-Ttype][-wfile][expression]

描述(DESCRIPTION)

Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头.

对于SunOS的nit或bpf界面:要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限.

对于Solaris的dlpi:你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限.

对于HP-UX的dlpi:你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:你必须是root,或者把它安装成root的设置uid程序.对于Linux:你必须是root,或者把它安装成root的设置uid程序.

对于Ultrix和DigitalUNIX:一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump.

对于BSD:你必须有/dev/bpf*的读访问权限.

选项(OPTIONS)

-a

试着把网络和广播地址转换成名称.

-c

当收到count报文后退出.

-d

把编译好的报文匹配模板(packet-matchingcode)翻译成可读形式,传往标准输出,然后退出.

TCPDUMP中文手册最详细的手册

TCPDUMP中文手册最详细的手册

tcpdump的使用

tcpdump采用命令行方式,它的命令格式为:

tcpdump [ -a d e f l n N O p q S t v x]

[ -c 数量 ]

[ -F 文件名 ]

[ -i 网络接口 ]

[ -r 文件名]

[ -s snaplen ]

[ -T 类型 ]

[ -w 文件名 ]

[表达式 ]

描述(DESCRIPTION)

Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头.

对于SunOS的nit或bpf界面:要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限.

对于Solaris的dlpi:你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限.

对于HP-UX的dlpi:你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:你必须是root,或者把它安装成root的设置uid程序.对于Linux:你必须是root,或者把它安装成root的设置uid程序.

对于Ultrix和DigitalUNIX:一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump.

对于BSD:你必须有/dev/bpf*的读访问权限.

1. tcpdump的选项介绍

2. tcpdump的表达式介绍

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。

最全的tcpdump使用详解

最全的tcpdump使用详解

最全的tcpdump使⽤详解

简介

⽤简单的话来定义tcpdump,就是:dump the traffic on a network,根据使⽤者的定义对⽹络上的数据包进⾏截获的包分析⼯具。 tcpdump可以将⽹络中传送的数据包的“头”完全截获下来提供分析。它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。

实⽤命令实例

默认启动

tcpdump

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

监视指定⽹络接⼝的数据包

tcpdump -i eth1

如果不指定⽹卡,默认tcpdump只会监视第⼀个⽹络接⼝,⼀般是eth0,下⾯的例⼦都没有指定⽹络接⼝。 

监视指定主机的数据包

打印所有进⼊或离开sundown的数据包.

tcpdump host sundown

也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包

tcpdump host 210.27.48.1

打印helios 与 hot 或者与 ace 之间通信的数据包

tcpdump host helios and \( hot or ace \)

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

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.

tcpdump抓包命令使用教程

tcpdump抓包命令使用教程

tcpdump抓包命令使⽤教程

⽬录

tcpdump 是Linux系统下的⼀个强⼤的命令,可以将⽹络中传送的数据包完全截获下来提供分析。它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。

⼀、tcpdump 命令格式介绍

⾸先我们对Linux系统下tcpdump命令格式进⾏⼀个介绍说明,在下⾯的使⽤教程中讲到tcpdump命令⽰例时,您就可以参考tcpdump命令参数说明进⾏学习。

1.1 语法

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

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

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

[ -Q|-P in|out|inout ]

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

[ -W filecount ]

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

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

[ expression ]

1.2 命令⾏参数介绍

-A 以ASCII格式打印出所有分组,并将链路层的头最⼩化。

-c 在收到指定的数量的分组后,tcpdump就会停⽌。

Tcpdump使用介绍

Tcpdump使用介绍

1Tcpdump命令

1.1Tcpdump常用选项

1.2tcpdump的表达式介绍

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字。

第一种是关于类型的关键字,主要包括host,net,port, 例如host 210.27.48.2,指明210.27.48.2是一台主机,net 202.0.0.0 指明202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.

第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump 将会监听所有协议的信息包。

tcpdump常用抓包命令

tcpdump常用抓包命令

tcpdump常用抓包命令

TCPDump是一个基于命令行的抓包工具,它可以帮助网络管理员和安全专家捕获和分析数据包。在网络故障排除、网络性能分析和网络安全检测等方面都有着广泛的应用。本文将介绍TCPDump的常用抓包命令。

一、基本使用

1.抓取指定网卡的数据包

tcpdump -i eth0

-i选项后面跟要抓取数据包的网卡名称,这里以eth0为例。

2.保存抓取到的数据包

tcpdump -i eth0 -w capture.pcap

-w选项后面跟要保存数据包的文件名,这里以capture.pcap为例。

3.读取已保存的数据包文件

tcpdump -r capture.pcap

-r选项后面跟要读取的数据包文件名,这里以capture.pcap为例。

二、过滤器使用

1.根据IP地址过滤数据包

tcpdump host 192.168.1.1

host选项后面跟要过滤的IP地址,这里以192.168.1.1为例。2.根据端口号过滤数据包

tcpdump port 80

port选项后面跟要过滤的端口号,这里以80为例。

3.根据协议类型过滤数据包

tcpdump icmp

icmp表示Internet控制报文协议。

4.组合使用多个条件进行过滤

tcpdump host 192.168.1.1 and port 80

and表示“与”的关系,即同时满足两个条件。

tcpdump host 192.168.1.1 or port 80

or表示“或”的关系,即满足其中一个条件即可。

5.使用逻辑运算符进行复杂过滤

tcpdump 'src net 192.168.1 and (dst net 10 or dst net 172)'

TCPDUMP命令详解

TCPDUMP命令详解

TCPDUMP命令详解

⼯作中⼀直在⽤tcpdump,感觉⾮常⽅便,今天⼼⾎来潮百度了⼀下tcpdump的⽤法,才发现原来还有这么多强⼤的功能⾃⼰都不知道,那叫⼀个汗啊。

废话不多说,切⼊正题。命令及解释⽤红⾊字体,命令所需参数的参数值⽤斜体标⽰。

先来看⼀个⽐较基本的⽤法:

tcpdump -i eth0

其中,eth0为参数值,表⽰需要抓包的⽹⼝,这是个必需参数哦。

tcpdump⽀持很多的关键字,下⾯先看⼏个例⼦:

(例1)tcpdump -i eth0 host 192.168.0.250 -----在⽹⼝eth0上抓取主机地址为192.168.0.250的所有数据包。

(例2)tcpdump -i eth0 net 192.168.0.0/24 ------ 在⽹⼝eth0上抓取⽹络地址为192.168.0.0/24的所有数据包

(例3)tcpdump -i eth0 port 80 ------ 在⽹⼝eth0上抓取端⼝为80的所有数据包(注意,这⾥不区分是源端⼝还是⽬的端⼝)

当然,我们也可以指定源端⼝或⽬的端⼝

(例4)tcpdump -i eth0 src port 80 and dst port6100 --- 在⽹⼝eth0上抓取源端⼝为80且⽬的端⼝为6100的数据包,这⾥⽤到了and逻辑运算符,后⾯再介绍

(例5)tcpdump -i eth0 icmp --- 在⽹⼝eth0上抓取所有icmp协议的数据包

以上⼏个例⼦,可以⼤致体现出tcpdump的基本⽤法。

实际上,tcpdump主要包括三种类型的关键字,第⼀种是关于类型的关键字,主要包括host,net,port,如上⾯的例(1)(2)(3),第⼆种

Tcpdump的详细用法

Tcpdump的详细用法

1. TCPDump介绍

TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网

络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉

无用的信息。tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump

存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能

正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

我们用尽量简单的话来定义tcpdump,就是:dump the traffice on anetwork.,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统

管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管

理员分析网络,排查问题等所必备的东西之一。tcpdump提供了源代码,公开了接口,

因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在

于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常

执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

2. TcpDump的使用

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

tcpdump的使用

tcpdump采用命令行方式,它的命令格式为:

tcpdump [ -a d e f l n N O p q S t v x]

[ -c 数量 ]

[ -F 文件名 ]

[ -i 网络接口 ]

[ -r 文件名]

[ -s snaplen ]

[ -T 类型 ]

[ -w 文件名 ]

[表达式 ]

描述(DESCRIPTION)

Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头.

对于SunOS的nit或bpf界面:要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限.

对于Solaris的dlpi:你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限.

对于HP-UX的dlpi:你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:你必须是root,或者把它安装成root的设置uid程序.对于Linux:你必须是root,或者把它安装成root的设置uid程序.

对于Ultrix和DigitalUNIX:一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump.

对于BSD:你必须有/dev/bpf*的读访问权限.

1. tcpdump的选项介绍

2. tcpdump的表达式介绍

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。

在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast, less, greater ,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算是'or' ,'||';

这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

(1)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:

#tcpdump host 210.27.48.1

(2)想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(。在命

令行中使用括号时,一定要

#tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

(3)如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

#tcpdump ip host 210.27.48.1 and ! 210.27.48.2

(4)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:

#tcpdump tcp port 23 host 210.27.48.1

3. tcpdump 的输出结果介绍

下面我们介绍几种典型的tcpdump命令的输出信息

(1)数据链路层头信息

#tcpdump -e host ice

ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A

H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:B:46;上一条命令的输出结果如下所示:

21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 >

ice.telnet 0:0(0) ack 22535 win 8760 (DF)

分析:21:50:12是显示的时间, 847509是ID号,eth0 <表示从网络接口eth0 接受该数据包,eth0 >表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包. 0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60 是数据包的长度, h219.33357 >

ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.

(2)ARP包的TCPDUMP输出信息

使用命令#tcpdump arp

得到的输出结果是:

22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)

22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)

分析: 22:32:42是时间戳, 802509是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP 请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。

0:90:27:58:af:1a是主机ICE的MAC地址。

(3)TCP包的输出信息

用TCPDUMP捕获的TCP包的一般输出信息是:

src > dst: flags data-seqno ack window urgent options

src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针.

Options是选项.

(4)UDP包的输出信息

用TCPDUMP捕获的UDP包的一般输出信息是:

route.port1 > ice.port2: udp lenth

UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE 的port2端口,类型是UDP,包的长度是lenth

相关文档
最新文档