当前位置:文档之家› Tcpdump的详细用法

Tcpdump的详细用法

Tcpdump的详细用法
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将监视第一个网络界面上所有流过的数据包。

# tcpdump

tcpdump: listening on fxp0

11:58:47.873028 https://www.doczj.com/doc/7418350494.html,bios-ns >

https://www.doczj.com/doc/7418350494.html,bios-ns: udp 50

11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43 0000 0000 0080 0000 1007 cf08 0900 0000

0e80 0000 902b 4695 0980 8701 0014 0002

000f 0000 902b 4695 0008 00

11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97

ffff 0060 0004 ffff ffff ffff ffff ffff

0452 ffff ffff 0000 e85b 6d85 4008 0002

0640 4d41 5354 4552 5f57 4542 0000 0000

0000 00

tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。

然而更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。tcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充

分利用这些过滤规则就能达到迅速定位故障的目的。请使用man tcpdump查看这些过滤规则的具体用法。

显然为了安全起见,不用作网络管理用途的计算机上不应该运行这一类的网络分析软件,为了屏蔽它们,可以屏蔽内核中的bpfilter伪设备。一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP堆栈才行。在FreeBSD下,这就需要内核支持伪设备bpfilter。因此,在内核中取消bpfilter支持,就能屏蔽tcpdump之类的网络分析工具。

并且当网卡被设置为混杂模式时,系统会在控制台和日志文件中留下记录,提醒管理员留意这台系统是否被用作攻击同网络的其他计算机的跳板。

May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled

虽然网络分析工具能将网络中传送的数据记录下来,但是网络中的数据流量相当大,如何对这些数据进行分析、分类统计、发现并报告错误却是更关键的问题。网络中的数据包属于不同的协议,而不同协议数据包的格式也不同。因此对捕获的数据进行解码,将包中的信息尽可能的展示出来,对于协议分析工具来讲更为重要。昂贵的商业分析工具的优势就在于它们能支持很多种类的应用层协议,而不仅仅只支持tcp、udp等低层协议。

从上面tcpdump的输出可以看出,tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。FreeBSD提供的一个有效的解码程序为tcpshow,它可以通过Packages Collection来安装。

# pkg_add /cdrom/packages/security/tcpshow*

# tcpdump -c 3 -w tcpdump.out

tcpdump: listening on fxp0

# tcpshow < tcpdump.out

---------------------------------------------------------------------------

Packet 1

TIME:12:00:59.984829

LINK:00:10:7B:08:3A:56 -> 01:80:C2:00:00:00 type=0026

<*** No decode support for encapsulated protocol ***>

---------------------------------------------------------------------------

Packet 2

TIME:12:01:01.074513 (1.089684)

LINK:00:A0:C9:AB:3C:DF -> FF:FF:FF:FF:FF:FF type=ARP

ARP:htype=Ethernet ptype=IP hlen=6 plen=4 op=request

sender-MAC-addr=00:A0:C9:AB:3C:DF sender-IP-address=202.102.245.3 target-MAC-addr=00:00:00:00:00:00 target-IP-address=202.102.245.3

---------------------------------------------------------------------------

Packet 3

TIME:12:01:01.985023 (0.910510)

LINK:00:10:7B:08:3A:56 -> 01:80:C2:00:00:00 type=0026

<*** No decode support for encapsulated protocol ***>

tcpshow能以不同方式对数据包进行解码,并以不同的方式显示解码数据,使用者可以根据其手册来选择最合适的参数对截获的数据包进行分析。从上面的例子中可以看出,tcpshow支持的协议也并不丰富,对于它不支持的协议就无法进行解码。

除了tcpdump之外,FreeBSD的PackagesCollecion中还提供了Ethereal和Sniffit 两个网络分析工具,以及其他一些基于网络分析方式的安全工具。其中Ethereal运行在X Window 下,具有不错的图形界面,Sniffit使用字符窗口形式,同样也易于操作。然而由于tcpdump对过滤规则的支持能力更强大,因此系统管理员仍然更喜欢使用它。对于有经验的网络管理员,使用这些网络分析工具不但能用来了解网络到底是如何运行的,故障出现在何处,还能进行有效的统计工作,如那种协议产生的通信量占主要地位,那个主机最繁忙,网络瓶颈位于何处等等问题。因此网络分析工具是用于网络管理的宝贵系统工具。为了防止数据被滥用的网络分析工具截获,关键还是要在网络的物理结构上解决。常用的方法是使用交换机或网桥将信任网络和不信任网络分隔开,可以防止外部网段窃听内部数据传输,但仍然不能解决内部网络与外部网络相互通信时的数据安全问题。如果没有足够的经费将网络上的共享集线器升级为以太网交换机,可以使用FreeBSD系统执行网桥任务。这需要使用option BRIDGE编译选项重新定制内核,此后使用bridge命令启动网桥功能。

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

tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]

[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]

[ -T 类型 ] [ -w 文件名 ] [表达式 ]

(1). tcpdump的选项介绍

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

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

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

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

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

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

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

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

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

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

-vv 输出详细的报文信息;

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

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

-i 指定监听的网络接口;

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

-w 直接将包写入文件中,并不分析和打印出来;

-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

(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。如果没有指定类型,缺省的类型是

第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net202.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','││';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

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

#tcpdump host 210.27.48.1

B想要截获主机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 \)

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

#tcpdump ip host 210.27.48.1 and ! 210.27.48.2

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

#tcpdump tcp port 23 host 210.27.48.1

E 对本机的udp 123 端口进行监视123 为ntp的服务端口

# tcpdump udp port 123

F 系统将只对名为hostname的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。下面的命令可以读取主机hostname发送的所有数据:

#tcpdump -i eth0 src host hostname

G 下面的命令可以监视所有送到主机hostname的数据包:

#tcpdump -i eth0 dst host hostname

H 我们还可以监视通过指定网关的数据包:

#tcpdump -i eth0 gateway Gatewayname

I 如果你还想监视编址到指定端口的TCP或UDP数据包,那么执行以下命令:

#tcpdump -i eth0 host hostname and port 80

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

#tcpdump ip host 210.27.48.1 and ! 210.27.48.2

K 想要截获主机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 \)

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

#tcpdump ip host 210.27.48.1 and ! 210.27.48.2

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

#tcpdump tcp port 23 host 210.27.48.1

(3). tcpdump的输出结果介绍

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

A,数据链路层头信息

使用命令: #tcpdump --e host ice

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

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

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

h219.33357 > ice.telne

t 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.

B,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地址。

C,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是选项.

D,UDP包的输出信息

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

route.port1 > ice.port2: udp lenth

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

3. 辅助工具

(1) 想查看TCP或者UDP端口使用情况,使用netstat -anp

如果有些进程看不见,如只显示”-”,可以尝试

sudo netstat -anp

如果想看某个端口的信息,使用lsof命令,如:

sudo lsof -i :631

-bash-3.00# netstat -tln

netstat -tln 命令是用来查看linux的端口使用情况

/etc/init.d/vsftp start 是用来启动ftp端口~!

看文件/etc/services

netstat

查看已经连接的服务端口(ESTABLISHED)

netstat -a

查看所有的服务端口(LISTEN,ESTABLISHED)

sudo netstat -ap

查看所有的服务端口并显示对应的服务程序名

nmap <扫描类型><扫描参数>

例如:

nmap localhost

nmap -p 1024-65535 localhost

nmap -PT 192.168.1.127-245

当我们使用netstat -apn查看网络连接的时候,会发现很多类似下面的内容:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTABLISHED 6111/1 显示这台服务器开放了7710端口,那么这个端口属于哪个程序呢?我们可以使用lsof -i :7710命令来查询:

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

sshd 1990 root 3u IPv4 4836 TCP *:7710 (LISTEN)

这样,我们就知道了7710端口是属于sshd程序的。

(2) 运行tcpdump命令出现错误信息排除

tcpdump: no suitable device found

tcpdump: no devices found /dev/bpf4: A file or directory in the path name does not exist.

解决方案2种原因:

1.权限不够,一般不经过处理,只用root用户能使用tcpdump

2.缺省只能同时使用4个tcpdump,如用完,则报此类错。需要停掉多余的tcpdump

Linux下抓包工具tcpdump应用详解

TCPDUMP简介 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的。对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过sniffer 工具来分析原因,找出造成网络阻塞的来源。对于网络程序员来说,通过sniffer工具来调试程序。 用过windows平台上的sniffer工具(例如,netxray和sniffer pro软件)的朋友可能都知道,在共享式的局域网中,采用sniffer工具简直可以对网络中的所有流量一览无余!Sniffer 工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。 Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。所以,今天我们就来看看Linux中强大的网络数据采集分析工具——TcpDump。 用简单的话来定义tcpdump,就是:dump the traffice on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东东之一。 顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。 普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。 ----------------------- bash-2.02# tcpdump

linux之TCPDUMP网络抓包工具

Linux命令之TCPDUMP抓包 TCPDUMP又称网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。 常用选项 -a 将网络地址和广播地址转变成名字 -d 将匹配信息包的代码以人们能够理解的汇编格式给出 -dd 将匹配信息包的代码以c语言程序段的格式给出 -ddd 将匹配信息包的代码以十进制的形式给出 -e 在输出行打印出数据链路层的头部信息 -f 将外部的Internet地址以数字的形式打印出来 -q 快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短 -t 不显示时间 -l 使标准输出变为缓冲行形式 -n 不把网络地址转换成名字 -s 抓取数据包时默认抓取长度为68字节 -t 在输出的每一行不打印时间戳 -v 输出一个稍微详细的信息,如在ip包中可以包括ttl和服务类型的信息-v v 输出详细的报文信息 -c 在收到指定的包的数目后,tcpdump就会停止

-F 从指定的文件中读取表达式,忽略其它的表达式 -i 指定监听的网络接口 -r 从指定的文件中读取包(这些包一般通过-w选项产生) -w 直接将包写入文件中,并不分析和打印出来 -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议) -n 对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。 -nn 除了-n的作用外,还把端口显示为数值,否则显示端口服务名。 -X 输出包的头部数据,会以16进制和ASCII两种方式同时输出。 -XX 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。 一、不指定任何参数 监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。这样抓取的结果会非常多,滚动非常快。 [qh@root localhost]$tcpdump 二、监听指定网卡 [qh@root localhost]$tcpdump -i eth0 三、监听指定主机

Tcpdump常用命令及基础故障定位

tcpdump基础 Tcpdump常用命令及基础故障定位3板斧! 在老4k系统和TOS中的.1平台和.8平台(猎豹)支持TCPDUMP命令。 Tcpdump中and、not、or、host、port、grep、-e、-vv参数的使用: 例1:在eth1口抓包,只显示地址为10.1.1.1和icmp协议的报文。 Tcpdump –i eth1 host 10.1.1.1 and icmp 例2:在所有的接口抓包,不显示4000端口的管理报文,和23端口的telnet报文。 Tcpdump –i any not port 4000 and not port 23 (在同时管理的时候很实用) 例3:在eth1口抓包,显示地址为211.1.1.1或10.1.1.1的报文。 Tcpdump –i eth1 host 211.1.1.1 or host 10.1.1.1 (针对MAP前后的地址同时抓包定位时非常实用) 例4:在所有的接口抓包,显示地址为10.1.1.1报文。 Tcpdump |grep host 10.1.1.1 (在adls环境中非常实用,封装了PPPOE的报文也能抓到,但是TOS不支持grep 的参数了) 在tos系统中,X86的平台下才有抓包的工具,-n表示不需要域名解析,加快抓包的速度。 并且-evv比老的4k系统中,能抓到更多的信息,其中还包括校验和。 例5:System tcpdump –i any –evv -n (TOS系统中最后必须加-n的参数,才能保证抓包的速度) 例6:System tcpdump –i ipsec0-n(TOS支持在ipsec0中抓包,来判断数据流是否进入隧道) 例7:System tcpdump –i ppp0-n(TOS支持在ppp0中抓包,来判断数据流是否进入PPPoE的封装) 下面的4个实例,详细阐述了目的地址转换时如何通过TCPDUMP抓包来快速定位故障点。 现场通过抓包来定位故障原因是最准确高效的方法: 下面抓包中,客户端源地址为168.36.126.1MAP地址为209.136.47.12服务器真实地址为11.68.21.12 对于目的地址转换,天融信也俗称为MAP转换。 例1、如果业务、ping都不通,抓包时只有第一个请求报文,没有匹配MAP转换,说明: A: 防火墙没有到真实服务器的路由,而导致不能匹配MAP策略。 B: 或者是防火墙上没有开放对应的访问策略。 TOS# system tcpdump -i any host 168.36.126.1 -n 04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 例2、如果业务、ping都不通,抓包是匹配了MAP转换策略,说明: A: 对方的服务没有回应。 B: 或者对方回应了但是路由错误,回应数据包没有到防火墙。 TOS# system tcpdump -i any host 168.36.126.1 -n 04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.404216 IP 168.36.126.1 > 11.68.21.12: ICMP echo request, id 10706, seq 4161, length 64 例3、如果业务、ping都不通,抓包显示最后一个报文没有正常转换,说明: A: 防火墙上没有回指路由,而导致最后的报文没有发出。 TOS# system tcpdump -i any host 168.36.126.1 -n 04:19:03.400000 IP 168.36.126.1 >209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64

tcpdump抓包高级用法

tcpdump抓包高级用法 【表达式】tcpdump –i ethx ether[xx:yy]=0xabcde… -nn 【说明】普通的tcpdump抓包后面直接跟主机,端口或协议等过滤条件,而这种抓包方法在某些环境下是无法使用的,如有QinQ,lwapp,wltp,pppoe等协议封装时,要抓电脑真实IP的数据包便实现不了。高级抓包方法可以满足,特别是在wlan环境下,经过我们设备的数据流都是经过隧道封装的,所以只能用高级抓包方法。高级抓包方法中的过滤条件为ether[xx:yy]=0xabcd….,表示从以太网帧头部开始偏移xx字节后的yy个字节的值是十六进制abcd….。如tcpdump –i eth0 ether[92:4]=0xab0d4f9c –nn,表示在eth0抓取符合下面条件的数据包,从以太网帧第92字节开始,后面4个字节的值为十六进制ab0d4f9c的所有数据包。这种抓包方法要求我们事先算好过滤条件对应的十六进制及其偏移值。下面举个例子说明。 【案例】如附件中的数据包,是wlan环境下隧道封装的数据包,用抓包软件打开只能看到隧道头地址,无法看到隧道内真实的IP地址。隧道内真实的IP所在的段为111.14.0.0/16,现要抓取111.14.236.138这个地址的数据包。 1.将111.14.236.138这个IP地址转换为十六进制为0x6f0eec8a 2.在eth0将所有的数据包抓100个下来(tcpdump –i eth0 –s0 –c 100 –w /tmp/test.pcap),如附件,用wireshark打开,找到隧道内真实IP地址,再算出真实IP地址偏移以太网头的字节数(这里应该会有问到怎样找到隧道内真实的IP头,请参考文章自定义协议剥离配置说明)。 3.这里已经算出来,111.14.0.0/16段的上行数据偏移以太网头92字节,下行数据偏移以太网头96字节,所以抓取111.14.236.138这个地址的所有数据包,tcpdump表达式应该如下:tcpdump –i eth0 ether[92:4]=0x6f0eec8a or ether[96:4]=0x6f0eec8a –nn

tcpdump抓包并保存成cap文件

tcpdump抓包并保存成cap文件 首选介绍一下tcpdump的常用参数 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ] [ -w 文件名 ] [表达式 ] 1. tcpdump的选项介绍 -a 将网络地址和广播地址转变成名字; -d 将匹配信息包的代码以人们能够理解的汇编格式给出; -dd 将匹配信息包的代码以c语言程序段的格式给出; -ddd 将匹配信息包的代码以十进制的形式给出; -e 在输出行打印出数据链路层的头部信息; -f 将外部的Internet地址以数字的形式打印出来; -l 使标准输出变为缓冲行形式; -n 不把网络地址转换成名字; -t 在输出的每一行不打印时间戳; -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息; -vv 输出详细的报文信息; -c 在收到指定的包的数目后,tcpdump就会停止; -F 从指定的文件中读取表达式,忽略其它的表达式; -i 指定监听的网络接口; -r 从指定的文件中读取包(这些包一般通过-w选项产生); -w 直接将包写入文件中,并不分析和打印出来; -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程 调用)和snmp(简单网络管理协议;) 当网络出现故障时,由于直接用tcpdump抓包分析有点困难,而且当网络中数据比较多时更不容易分析,使用tcpdump的-w参数+ethereal分析会很好的解决这个问题,具体参数如下: tcpdump -i eth1 -c 2000 -w eth1.cap -i eth1 只抓eth1口的数据 -c 2000代表数据包的个数,也就是只抓2000个数据包 -w eth1.cap 保存成cap文件,方便用ethereal分析 抓完数据包后ftp到你的FTP服务器,put一下,然后用ethereal软件打开就可以很直观的分析了 注:有时将.cap文件上传到FTP服务器后,发现用ethreal打开时提示数据包大于65535个,这是你在ftp上传或者下载的时候没有用bin的模式上传的原因。另:有的网站提示在tcpdump中用-s 0命令,例如 tcpdump -i eth1 -c 2000 -s0 -w eth1.cap,可实际运行该命令时系统却提示无效的参数,去掉-s 0参数即可例子: [root@localhost cdr]#tcpdump -i eth0 -t tcp -s 60000 -w diaoxian.cap [root@localhost cdr]# tcpdump host 58.240.72.195 -s 60000 -w x.cap

TCPdump抓包及分析方法1

1关键字 Tcpdump,丢包,抓包 2Tcpdump抓包的作用 Tcpdump是linux系统自带的抓包工具,功能: >抓进出Linux服务器的IP包 >抓下的IP包,可由WireShark等工具,解码为UDP和RTP包。 >抓下的IP包,可由WireShark等工具分析丢包情况 3Tcpdump常用方法 Tcpdump是linux系统自带的抓包工具,需要root权限才能运行。 //抓网卡eth2上所有进出的数据包,如果没有数据包,则通常会抓到广播包 数会保留所有TS数据包,故重要。 3.4指定入向端口 设入向端口为11866,转换为十六进制,即是0x2e5a,所以: 其中,ether[36]和ether[37]为接收端口的16进制表示。 3.5指定出向端口 其中, Ether[34]和ether[35]为发送端口的16进制表示。 3.6长时间抓包 在抓包命令后加“-C 100”,它会满100M后写到下一个新的文件。直到磁盘满。 3.7后台执行 在抓包命令最后面再加一个&,这样可以后台一直抓。这样的话,登录窗口可以关掉。你想停止抓包,则得用PS把进程杀死。

4抓包分析快进快退 4.1找关键帧 RTP包是否为关键帧的标识保存在RTP扩展位中。WireShark查看RTP包是否为关键帧。 00或者10:普通帧 20或者30: 关键帧首包 40或者50: 关键帧中间包 80或者90: 关键帧尾包 注:以上判断之所以有“或者”,是因为关键帧位只占了3比特。 4.2判断时戳 如果抓包为32倍速,要判断时戳是否正常,则可以用抓包里的: (最大时戳-最小时戳)/90000/倍速=倍速播放时常

tcpdump抓包

tcpdump 必须使用 root 的身份执行 [root@linux ~]# tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae] [-qX] [-r 档案] [所欲撷取的数据内容] 参数: -nn:直接以 IP 及 port number 显示,而非主机名与服务名称 -i :后面接要『监听』的网络接口,例如 eth0, lo, ppp0 等等的界面; -w :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接档名 -c :监听的封包数,如果没有这个参数, tcpdump 会持续不断的监听, 直到使用者输入 [ctrl]-c 为止。 -A :封包的内容以 ASCII 显示,通常用来捉取 WWW 的网页封包资料。 -e :使用资料连接层 (OSI 第二层) 的 MAC 封包数据来显示; -q :仅列出较为简短的封包信息,每一行的内容比较精简 -X :可以列出十六进制 (hex) 以及 ASCII 的封包内容,对于监听封包内容很有用 -r :从后面接的档案将封包数据读出来。那个『档案』是已经存在的档案,并且这个『档案』是由 -w 所制作出来的。 所欲撷取的数据内容:我们可以专门针对某些通讯协议或者是 IP 来源进行封包撷取,那就可以简化输出的结果,并取得最有用的信息。常见的表示方法有: 'host foo', 'host 127.0.0.1' :针对单部主机来进行封包撷取 'net 192.168' :针对某个网域来进行封包的撷取; 'src host 127.0.0.1' 'dst net 192.168':同时加上来源(src)或目标(dst)限制 'tcp port 21':还可以针对通讯协议侦测,如 tcp, udp, arp, ether 等还可以利用 and 与 or 来进行封包数据的整合显示呢! 范例一:以121.9.240.130这台测试机为基础. [root@linux ~]# tcpdump 09:25:40.856970 IP 59.37.164.34.12670 > 121.9.222.91.15649: UDP, length 82 09:25:40.857025 IP 121.9.222.64.15583 > https://www.doczj.com/doc/7418350494.html,.3001: UDP, length 82 09:25:40.857026 IP 121.9.223.171.25511 > 222.223.23.168.2471: P 1681367693:1681367882(189) ack 169128214 win 65455 09:25:40.857027 IP 121.9.222.182.15502 > 218.15.245.162.16059: UDP, length 14 09:25:40.857068 IP 119.132.101.206.3001 > 121.9.222.183.15164: UDP, length 82 09:25:40.857118 IP 121.9.222.175.15693 > 202.101.190.242.3001: UDP, length 82 09:25:40.857119 IP 121.9.222.175.15693 > 202.101.190.242.3001: UDP, length 82 09:25:40.857121 IP 59.34.127.210.43659 > 121.9.222.243.15716: UDP, length 14 09:25:40.857122 IP 121.9.222.87.15030 > 119.132.101.206.3001: UDP, length 14 09:25:40.857123 IP 121.9.222.88.15278 > 113.14.161.238.3001: UDP, length 14 09:25:40.857170 IP https://www.doczj.com/doc/7418350494.html,.3001 > 121.9.222.93.15400: UDP, length 14 09:25:40.857218 IP 58.242.202.10.3001 > 121.9.222.87.15300: UDP, length 10 09:25:40.857219 IP https://www.doczj.com/doc/7418350494.html,.3001 > 121.9.222.242.14920: UDP, length 18

F5负载均衡器用tcpdump命令抓包的方法

F5负载均衡器用tcpdump命令的抓包方法作者:邹善 部门:业务与软件技术服务器支撑技术团队 参考文档:<> 林浩泓 本文简单介绍在F5负载均衡器上用tcpdump命令进行抓包的方法,希望能对调试F5负载均衡器时有所帮助。 用tcpdump命令可以观察到从client端发出来的数据包有没有到F5负载均衡器,F5负载均衡器有没有把收到的数据包按设置发送出去,F5负载均衡器有没有收到后面真实服务器发过来的数据包。Tcpdump命令可以对从client端到F5再到真实服务器的数据流进行跟踪。 Tcpdump命令是F5本身自带的命令,不需要额外安装其他软件包。 1 Tcpdump命令 本文讲述TCPDUMP命令的基本用法,更详细的使用说明请参见“man tcpdump”。 命令语法: tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ] [ -i interface ] [ -m module ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -E algo:secret ] [ expression ] 其中: -e在输出行打印出数据链路层的头部信息 -i报文捕获监听的接口,如果不指定,默认为系统最小编号的接口(不包括

loop-back接口) -n不将IP地址或端口号转化为域名或协议名称 -r从文件中读取(该文件由-w选项创建) -s确定捕获报文大小 -w直接将捕获报文写入文件,而不是对其进行解析并通过屏幕显示(与-r选项对应) -x每个报文以十六进制方式显示 -X每个报文同时以文本和十六进制显示 expression匹配表达式的分组将进行解析。如果不指定表达式,系统对所有分组进行捕获分析。复杂表达式可以使用“and”与、“or”或以及“not”非操作进行 组合。表达式有三种: ?type三种种类:host、net和port。比如:host 10.1.1.1。如果不指定类型,默认为host。 ?dir有src、dst、src or dst和src and dst四种方向。默认为src or dst,即双向。 proto常见协议有:ip、arp、tcp、udp、icmp等。如果不指定协议类型,默认 为所有协议。 2 在F5上用tcpdump抓包示例 以上图数据流为例,在F5上可以用tcpdump命令分别定位手机的数据流有没有到达F5负

tcpdump抓包丢失问题

1 近日用tcpdump抓包,发现有大量的丢包出现("packets dropped by kernel"), 如下: tcpdump -i eth0 dst port 1234 and udp -s 2048 -X -tt >a.pack 264 packets captured 3043 packets received by filter 2706 packets dropped by kernel 丢包原因: 经过google以及分析,造成这种丢包的原因是由于libcap抓到包后,tcpdump 上层没有及时的取出,导致libcap缓冲区溢出,从而覆盖了未处理包,此处即显示为dropped by kernel,注意,这里的kernel并不是说是被linux内核抛弃的,而是被tcpdump的内核,即libcap抛弃掉的,上层监听到 1234端口的server可以正常的获取数据。 解决方法: 根据以上分析,可以通过改善tcpdump上层的处理效率来减少丢包率,下面的几步根据需要选用,每一步都能减少一定的丢包率 1.最小化抓取过滤范围,即通过指定网卡,端口,包流向,包大小减少包数量 2. 添加-n参数,禁止反向域名解析 tcpdump -i eth0 dst port 1234 and udp -s 2048 -n -X -tt >a.pack 大多数情况这样就可以解决了 可以通过改善tcpdump上层的处理效率来减少丢包率 3. 将数据包输出到cap文件 tcpdump -i eth0 dst port 1234 and udp -s 2048 -n -X -tt -w a.cap 用了这一步,基本上所有的网络server都可以搞定了 4. 用sysctl修改SO_REVBUF参数,增加libcap缓冲区长度

F5负载均衡抓包方法

F5负载均衡抓包方法 作者:易隐者发布于:2012-10-17 12:48 Wednesday 分类:参考资料 登录F5 1,超级终端的登录: 通过Console电缆一端连接BIGIP,一端连接PC机的串口,然后打开超级终端,建立一个连接,超级终端中COM的参数设置如图: 不论是从Console口登陆,还是用SSH从网络登陆,BIG-IP的缺省登陆帐号与密码如下:缺省登陆帐号:root 缺省登陆密码:default 输入帐号和密码后,将见到以下界面:

缺省的终端类型为vt100,回车后如图: F5下的tcpdump的使用 1,web管理界面下的抓包 Tcpdump 工具在V4.5 之前只能在CLI 下使用,V9 提供了图形界面下的Tcpdump,在System->support 界面下,我们可以直接使用tcpdump 工具:

2,F5命令行下Tcpdump的使用示例: 当业务无法正常工作时,经常需要在BIG-IP上抓包进行分析定位是什么原因导致数据包没有被常转发。BIG-IP上提供了TCPDUMP抓包分析工具。 TCPDUMP是Unix系统常用的报文分析工具,TCPDUMP经常用于故障定位,如会话保持失效、SNAT通信问题等。本文讲述TCPDUMP命令的基本用法,更详细的使用说明请参见“man tcpdump”。 命令语法: tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ] [ -i interface ] [ -m module ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -E algo:secret ] [ expression ] 其中: ?-i 报文捕获监听的接口,如果不指定,默认为系统最小编号的接口(不包括loop- back 接口),一般对指定Vlan名称进行监控,如-i external 是对external vlan进行监控;也可以对指定端口进行监控如–i 1.1。注意:当vlan 名称过长时,-i后面直接用vlan 名称,tcpdump会出现错误提示,这时需要将vlan名改由vlan加vlan ID代替。如有一vlan 名称为bip_external,vlan ID为2022,如要对bip_externalvlan进行监听,需采用-i vlan2022的方式。 ?-nn 不将IP地址或端口号转化为域名或协议名称 注:与BIG-IP 4.5版本的TCPDUMP命令不一样,在BIG-IP V9里面必须用两个nn才能使IP地址与端口不会被转化为域名或协议名称显示。 ?-r 从文件中读取(该文件由-w选项创建) ?-s 确定捕获报文大小 ?-w 直接将捕获报文写入文件,而不是对其进行解析并通过屏幕显示(与-r选项对应)

tcpdump软件抓包方案_抓取安卓设备的网络数据包

tcpdump工具抓包方案

一、前言 二、核心思想 三、环境搭建 四、抓包流程 五、问题支持 六、遗留B O S S

一、前言 利用tcpdump工具进行抓包其实就是我们之前一直说的“模拟器抓包”,当我们细细研究整个抓包过程后发现类似于“模拟器抓包”等说法其实并不严谨,因为这种抓包方式仅仅是需要借助安卓模拟器中SDK的环境,而整个抓包的过程很大程度上都要依赖tcpdump这个工具。因此,为了之后能更深入的研究类似的抓包方法,在这里我们将使用linux命令调用tcpdump工具来截获网络中的数据包这一方法称之为“tcpdump方法。” 二、核心思想 TcpDump是Linux中强大的网络数据采集分析工具之一。而安卓系统就是基于Linux语言的,因此利用这个工具我们就能很轻松的抓取安卓系统上的数据包。表述这种方法的关键词是“安卓SDK环境”、“linux命令”“tcpdump工具”,严谨一点来说,即:搭建一个SDK环境,通过adb连接设备,并对设备中的tcpdump工具下达linux命令来进行抓包,并传回PC端。 注: SDK:Software Development Kit, 即软件开发工具包 Linux:Linux是一种自由和开放源码的类Unix操作系统,安卓手机的核心正是基于Linux内核。 adb:Android Debug Bridge,即安卓调试桥。用来直接操作管理android模拟器或者真实的andriod设备。

三、环境搭建 首先安装JDK 文件,并一步一步往下走直到安装完成,这里提供的是JDK1.6版本。这里要注意的是,安装路径不要太过复杂,因为接下来配置环境时要用到这个路径。 ①安装JDK 并配置Java 环境所需资源:JDK 安装包、SDK 模拟器、tcpdump 工具、Root Explorer 以上资源均已准备好,请点击右侧这位女同志跳转至相应页面下载工具包。 安装完成以后,接下来便要完成Java 环境的配置,这一步虽然操作起来简单,但是也是非常容易出错的。安装软件——配置环境——监测配置是否正确

tcpdump抓包分析TCP三次握手过程

2012年1月MVP申请倒计时——13日截止“IT适合你吗?”智力挑战tcpdump抓包分析TCP三次握手过程 分类:TCP/IP与套接字编程2010-10-09 15:11 566人阅读评论(0) 收藏举报转:https://www.doczj.com/doc/7418350494.html,/xxjjyy2008/blog/item/e6566bf837d91903d9f9fdd0.html 一、tcpdump使用 1、首先看下MAN手册 TCPDUMP(8) NAME tcpdump - dump traffic on a network SYNOPSIS tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F file ] [ -i interface ] [ -m module ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y datalinktype ] [ -Z user ] [ expression ] 选项: -A 以ASCII码显示消息包 -c 指定包个数 -C 配合-w,当写入文件时,先检查文件大小是否已经超过1M,若超过,生成新文件,文件名为指定文件名加后缀1。 -d 将匹配信息包的代码以人们能够理解的汇编格式给出 -dd 将匹配信息包的代码以c语言程序段的格式给出

-ddd 将匹配信息包的代码以十进制的形式给出。 -D 列出可以抓包的所有网络接口 -e 显示链路层内容 -f 外部的IP以数字方式显示 -i 指定网络接口 -l 使标准输出变为缓冲行形式 -n IP,端口用数字方式显示 -t 在输出的每一行不打印时间戳; -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息; -vv 输出详细的报文信息; -c 在收到指定的包的数目后,tcpdump就会停止; -F 从指定的文件中读取表达式,忽略其它的表达式; -i 指定监听的网络接口; -r 从指定的文件中读取包(这些包一般通过-w选项产生); -w 直接将包写入文件中,并不分析和打印出来; -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;) -x 让十六进制显示包内容 2、过滤 (1)指定接口(-i) 如:tcpdump -i eth0 (2)指定IP地址(host),可以辅加and , or ,!等逻辑符,以及src,dest等表示方向。 如:tcpdump host 192.168.1.23 捕获192.168.1.23发出或者收到的包

16tcpdump命令

TCPDUMP使用说明 tcpdump命令参数解释 (1) Tcpdump使用案例说明: (2) TCPDUMP出现“truncated-ip - 1215 bytes missing!”错误 (3) TCPDUMP 命令中的-i参数用VLAN名称与接口编号有什么区别 (3) TCPDUMP 命令中出现“pcap_loop: Error: Interface packet capture busy”错误信息? (5) tcpdump命令参数解释 TcpD ump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、o r、not等逻辑语句来帮助你去掉无用的信息。 数据过滤 不带任何参数的TcpDu mp将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,Tc pDu mp提供以下参数供我们选择数据:

注:tcpdump命令只针对经过CPU处理的数据包进行捕获,一但在BIGIP中的 某个VIP采用的是performance L4的方式,数据包则由四层加层ASIC芯片处理而没 有流经CPU,无法捕获数据。解决该问题的方法是:选取该Virtual Server将type由 Performance Layer4临时改为Standard再来用TCPDUMP命令抓包,抓包以后,改 回到Performance Layer4。 Tcpdump使用案例说明: 举例1:对external接口主机139.212.96.2并且端口为1433的流量进行监控。 端口不指定tcp和udp,默认为同时对tcp和udp进行报文捕获。本命令不解析IP地 址/端口号为主机名/服务名称,同时显示报文十二进制和文本信息,报文最大为1500 字节。 f5-1:~# tcpdump -i external -nn -X -s 1600 port 1433 and host 139.212.96.2 tcpdump: listening on external 21:48:41.295546 139.212.96.2.1201 > 10.75.9.44.1433: . 302192826:302192827(1) ac k 558871968 win 64360 (DF) 0x0000 012c 0800 4500 0029 38cf 4000 7f06 c3b2 .,..E..)8.@..... 0x0010 8bd4 6002 0a4b 092c 04b1 0599 1203 18ba ..`..K.,........ 0x0020 214f b5a0 5010 fb68 a926 0000 00 !O..P..h.&... 21:48:41.296015 10.75.9.44.1433 > 139.212.96.2.1201: . ack 1 win 64636 (DF) 0x0000 012c 0800 4500 0028 cb2d4000 7f06 3155 .,..E..(.-@...1U 0x0010 0a4b 092c 8bd4 6002 0599 04b1 214f b5a0 .K.,..`.....!O.. 0x0020 1203 18bb 5010 fc7c a812 0000 0000 0000 ....P..|........ 0x0030 0000 .. 21:48:50.701130 139.212.96.2.1206 > 10.75.9.44.1433: . 304974934:304974935(1) ac k 565108263 win 64882 (DF)

tcpdump抓包分析详解

tcpdump抓包分析详解 [root@linux ~]# tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae][-qX] [-r 档案] [所欲撷取的数据内容] 参数: -nn:直接以IP 及port number 显示,而非主机名与服务名称 -i :后面接要『监听』的网络接口,例如eth0, lo, ppp0 等等的界面; -w :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接档名 -c :监听的封包数,如果没有这个参数,tcpdump 会持续不断的监听,直到使用者输入[ctrl]-c 为止。 -A :封包的内容以ASCII 显示,通常用来捉取WWW 的网页封包资料。 -e :使用资料连接层(OSI 第二层) 的MAC 封包数据来显示; -q :仅列出较为简短的封包信息,每一行的内容比较精简 -X :可以列出十六进制(hex) 以及ASCII 的封包内容,对于监听封包内容很有用 -r :从后面接的档案将封包数据读出来。那个『档案』是已经存在的档案,并且这个『档案』是由-w 所制作出来的。 所欲撷取的数据内容:我们可以专门针对某些通讯协议或者是IP 来源进行封包撷取, 那就可以简化输出的结果,并取得最有用的信息。常见的表示方法有: 'host foo', 'host 127.0.0.1' :针对单部主机来进行封包撷取 'net 192.168' :针对某个网域来进行封包的撷取; 'src host 127.0.0.1' 'dst net 192.168':同时加上来源(src)或目标(dst)限制 'tcp port 21':还可以针对通讯协议侦测,如tcp, udp, arp, ether 等 还可以利用and 与or 来进行封包数据的整合显示呢! 范例一:以IP 与port number 捉下eth0 这个网络卡上的封包,持续 3 秒[root@linux ~]# tcpdump -i eth0 -nn tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 116:232(116) ack 1 win 9648 01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 232:364(132) ack 1 win 9648 <==按下[ctrl]-c 之后结束 6680 packets captured <==捉下来的封包数量 14250 packets received by filter <==由过滤所得的总封包数量 7512 packets dropped by kernel <==被核心所丢弃的封包 如果你是第一次看tcpdump 的man page 时,肯定一个头两个大,因为tcpdump 几乎都是分析封包的表头数据,用户如果没有简易的网络封包基础,要看懂粉难吶!所以,至少您得要回到网络基础里面去将TCP 封包的表头数据理解理解才好啊!^_^!至于那个范例一所产生的输出范例中,我们可以约略区分为数个字段,我们以范例一当中那个特殊字体行来说明一下: 01:33:40.41:这个是此封包被撷取的时间,『时:分:秒』的单位; IP:透过的通讯协议是IP ;

Linux下抓包工具tcpdump使用介绍

Linux下抓包工具tcpdump使用介绍 Linux下抓包工具tcpdump使用介绍 作者:佚名 时间:11-30 17:11:39 【大中小】 点评:在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一,本文将介绍Linux下抓包工具tcpdump使用,需要的朋友可以参考下在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的。匹配ether广播包。ether广播包的特征是mac全1.故如下即可匹配: tcpdump 'ether dst ff:ff:ff:ff:ff:ff' ylin@ylin:~$ sudo tcpdump -c 1 'ether dst ff:ff:ff:ff:ff:ff' tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture

size 96 bytes 10:47:57.784099 arp who-has 192.168.240.77 tell 192.168.240.189 在此,只匹配1个包就退出了。第一个是arp请求包,arp 请求包的是采用广播的方式发送的,被匹配那是当之无愧的。匹配ether组播包,ether的组播包的特征是mac的最高位 为1,其它位用来表示组播组编号,如果你想匹配其的多播组,知道它的组MAC地址即可。如 tcpdump 'ether dst ' Mac_Address表示地址,填上适当的即可。如果想匹配所有的ether多播数据包,那么暂时请放下,下面会继续为你讲解更高级的应用。(2)匹配arp包 arp包用于IP到Mac址转换的一种协议,包括arp请求和arp答应两种报文,arp请求报文是ether广播方式发送出去的,也即arp请求报文的mac地址是全1,因此用ether dst FF;FF;FF;FF;FF;FF可以匹配arp请求报文,但不能匹配答应报文。因此要匹配arp的通信过程,则只有使用arp来指定协议。 tcpdump 'arp' 即可匹配网络上arp报文。 ylin@ylin:~$ arping -c 4 192.168.240.1>/dev/null& sudo tcpdump -p 'arp' [1] 9293 WARNING: interface is ignored: Operation not permitted

Tcpdump格式文件分析

Tcpdump格式文件分析 一、前言 Tcpdump是Linux系统上最有名的抓包工具,它所保存的dmp格式文件能被许多抓包分析工具读取(EtherPeek、Ethereal、WinPcap等)。 由于想通过读取Tcpdump格式文件的方式,分析抓取到的数据包。查阅过许多关于TCP/IP协议的书,都是关于IP数据包这层的分析。没有关于Tcpdump格式文件的介绍。后来看过Tcpdump主页(https://www.doczj.com/doc/7418350494.html,)上下载的源码后发现,其对Tcpdump格式文件的处理是通过libpcap这个库实现的。你也可以调用这个库实现对Tcpdump格式文件的读取,但美中不足的是它只提供C语言调用库,不提供Java语言调用库。最后在其网站的https://www.doczj.com/doc/7418350494.html,/release/地址看到了libpcap库的源代码,以下所有结论都是通过分析这个源代码得出的,并且只对Tcpdump格式文件主版本号大于等于2的有效(在之后的Tcpdump格式文件头中会对主版本号加以说明)。 二、总体介绍 Tcpdump格式文件是标准的二进制文件,可以使用UltraEdit等工具打开。分析后发现其文件分为三部分: 1.Tcpdump格式文件头; 2.Packet头; 3.IP数据报包。 其中Tcpdump格式文件头长度为24个字节,Packet头部分长度为16个字节,并且在所有的抓包分析工具(EtherPeek、Ethereal、WinPcap等)中都不能显示出来。 下图就是各部分内容的示意图,其中标记了一个Tcpdump格式文件头和两对Packet头+ IP数据报包。

相关主题
文本预览
相关文档 最新文档