TCPDUMP中文手册最详细的手册
- 格式:doc
- 大小:57.00 KB
- 文档页数:6
tcpdump 抓包参数TCPDump抓包参数是网络工程师在进行网络数据包分析时经常使用的工具。
通过使用不同的参数,可以提取出特定的网络数据包,从而更好地了解网络通信过程中发生的问题。
本文将介绍一些常用的TCPDump抓包参数,并说明它们的作用和用法。
1. -i 参数:指定抓包的网络接口。
例如,使用命令“tcpdump -i eth0”可以抓取eth0接口上的网络数据包。
2. -c 参数:指定抓包的数据包数量。
例如,使用命令“tcpdump -c 100”可以抓取100个数据包后停止。
3. -n 参数:禁止将网络地址和端口号解析为名称。
使用该参数可以提高抓包效率,并且避免了DNS解析的开销。
4. -s 参数:指定抓取数据包的长度。
例如,使用命令“tcpdump -s 100”可以抓取每个数据包的前100个字节。
5. -w 参数:将抓取的数据包保存到文件中。
例如,使用命令“tcpdump -w capture.pcap”可以将抓取的数据包保存到名为capture.pcap的文件中。
6. -r 参数:从文件中读取数据包进行分析。
例如,使用命令“tcpdump -r capture.pc ap”可以分析名为capture.pcap的数据包文件。
7. -A 参数:以ASCII文本形式显示数据包的内容。
使用该参数可以方便地查看数据包中的具体信息。
8. -e 参数:显示数据包的以太网帧头部信息。
使用该参数可以查看源MAC地址和目的MAC地址等信息。
9. -v 参数:增加详细输出。
使用该参数可以获得更多关于数据包的信息,如IP头部信息和TCP头部信息等。
10. -X 参数:以十六进制和ASCII形式显示数据包的内容。
使用该参数可以同时查看数据包的二进制和可读形式。
11. -q 参数:静默模式。
使用该参数可以减少输出信息,只显示关键信息。
12. -tt 参数:显示时间戳。
使用该参数可以查看数据包抓取的时间。
13. -S 参数:显示绝对序号。
tcpdump使用方法tcpdump是一种网络封包分析工具,使用命令行界面进行操作。
它可以监听网络接口传输的数据包,并将其显示在终端上。
tcpdump是一个功能强大的工具,可以用于网络排错、协议分析、安全审计等多种用途。
下面将详细介绍tcpdump的使用方法。
1. 安装tcpdump```sudo apt-get install tcpdump```2. 使用tcpdump命令```sudo tcpdump [options] [expression]```其中,options是一些可选项,expression是过滤器表达式。
3.监听所有网络接口使用tcpdump监听所有网络接口的数据包,可以使用以下命令:```sudo tcpdump```这将显示所有接口传输的数据包。
4.监听指定网络接口使用tcpdump监听指定网络接口的数据包,可以使用以下命令:```sudo tcpdump -i eth0```这将监听名为eth0的网络接口的数据包。
5.保存数据包到文件使用tcpdump将捕获到的数据包保存到文件,可以使用以下命令:```sudo tcpdump -w output.pcap```这将将数据包保存到名为output.pcap的文件中。
6.读取保存的数据包文件使用tcpdump读取保存的数据包文件,可以使用以下命令:```sudo tcpdump -r input.pcap```这将读取名为input.pcap的文件中的数据包。
7.过滤数据包使用tcpdump可以根据特定的条件对数据包进行过滤,只显示满足条件的数据包。
以下是一些常用的过滤器表达式示例:-过滤源IP地址:```sudo tcpdump src 192.168.1.1```-过滤目标IP地址:```sudo tcpdump dst 192.168.1.1```-过滤源和目标IP地址:```sudo tcpdump host 192.168.1.1```-过滤指定端口:```sudo tcpdump port 80```-过滤指定协议:```sudo tcpdump icmp```8.显示数据包详细信息使用tcpdump可以显示每个数据包的详细信息。
在 Windows 操作系统上,可以使用 WinDump 来实现类似于 Unix/Linux 系统中的tcpdump 功能。
WinDump 是 Windows 版本的 tcpdump 实用程序,它允许用户在Windows 系统上执行网络流量分析和抓包操作。
以下是 WinDump 的一些基本用法:1.安装 WinDump:在 Windows 系统上使用 WinDump 之前,首先需要下载并安装 WinDump。
可以从其官方网站或其他可信赖的来源下载可执行文件,并按照指示进行安装。
2.基本语法:在命令提示符(cmd)或 PowerShell 中使用以下语法来运行 WinDump:3.常用选项:–-i:指定要捕获的网络接口。
–-s:指定要捕获的数据包大小。
–-w:将捕获的数据包保存到文件中。
–-n:禁用网络地址和端口的解析。
–-X:打印数据包的十六进制和 ASCII 格式。
4.常用过滤器:–host:根据 IP 地址过滤数据包。
–port:根据端口号过滤数据包。
–src和dst:根据源或目标 IP 地址过滤数据包。
–tcp或udp:根据传输层协议过滤数据包。
以下是一个示例,显示如何使用 WinDump 来捕获特定网络接口上的数据包并将结果保存到文件中:在上面的示例中,-i 1指定要捕获的网络接口,-s 0指定要捕获的数据包大小为完整的数据包,-w capture_output.pcap指定将捕获的数据包保存到名为capture_output.pcap 的文件中。
通过这些基本用法,可以开始在 Windows 系统上使用 WinDump 进行网络流量分析和抓包操作。
记住,在使用任何网络工具进行捕获和分析之前,请确保有权限执行这些操作,并且遵循所在地区的法律法规。
tcpdump命令详解⼀、tcpdump简介tcpdump命令是基于unix系统的命令⾏的数据报嗅探⼯具,可以抓取流动在⽹卡上的数据包。
它的原理⼤概如下:linux抓包是通过注册⼀种虚拟的底层⽹络协议来完成对⽹络报⽂(准确的是⽹络设备)消息的处理权。
当⽹卡接收到⼀个⽹络报⽂之后,它会遍历系统中所有已经注册的⽹络协议,如以太⽹协议、x25协议处理模块来尝试进⾏报⽂的解析处理。
当抓包模块把⾃⼰伪装成⼀个⽹络协议的时候,系统在收到报⽂的时候就会给这个伪协议⼀次机会,让它对⽹卡收到的保温进⾏⼀次处理,此时该模块就会趁机对报⽂进⾏窥探,也就是啊这个报⽂完完整整的复制⼀份,假装是⾃⼰接收的报⽂,汇报给抓包模块。
⼆、语法1、查看本地⽹卡状态[root@cnetos daocoder]# netstat -iKernel Interface tableIface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgdocker0 1500 40409 0 0 0 20376 0 0 0 BMUens5f0 1500 22999894941 0 0 0 25581016784 0 0 0 BMRUlo 65536 850291094 0 0 0 850291094 0 0 0 LRUIface:存在的⽹卡。
MTU:最⼤传输单元。
RX-OK RX-ERR RX-DRP RX-OVR:正确接收数据报的数量以及发⽣错误、流式、碰撞的总数。
TX-OK TX-ERR TX-DRP TX-OVR:正确发送数据报的数量以及发⽣错误、流式、碰撞的总数。
2、tcpdump帮助命令[root@centos daocoder]# tcpdump --helptcpdump version 4.9.0libpcap version 1.5.3OpenSSL 1.0.1e-fips 11 Feb 2013Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ][ --immediate-mode ] [ -T type ] [ --version ] [ -V file ][ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ][ -Z user ] [ expression ](1)、类型的关键字host:指明⼀台主机。
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使用方法一、什么是tcpdumptcpdump是一种在Linux和Unix操作系统上使用的网络抓包工具。
它可以捕获网络数据包并将其显示或保存到文件中,以供后续分析和诊断。
tcpdump可以用于调试网络问题、监视网络流量、分析网络协议等。
二、安装tcpdump1.在Ubuntu上安装tcpdump:sudo apt-get install tcpdump2.在CentOS上安装tcpdump:sudo yum install tcpdump三、基本用法1.捕获所有数据包:sudo tcpdump -i eth0-i选项指定要监听的接口,eth0为网卡接口名称。
2.捕获指定端口的数据包:sudo tcpdump -i eth0 port 80port选项指定要监听的端口号,80为HTTP服务默认端口号。
3.捕获指定IP地址的数据包:sudo tcpdump -i eth0 host 192.168.1.100host选项指定要监听的IP地址,192.168.1.100为目标IP地址。
4.捕获指定协议类型的数据包:sudo tcpdump -i eth0 icmpicmp为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-w选项指定保存到文件的名称,capture.pcap为文件名。
7.读取保存的抓包结果:sudo tcpdump -r capture.pcap-r选项指定读取文件的名称,capture.pcap为文件名。
四、高级用法1.显示数据包详细信息:sudo tcpdump -i eth0 -v-v选项可以显示更详细的信息,如源地址、目标地址、协议类型等。
centos tcpdump 使用CentOS是一种基于Linux的操作系统,而tcpdump是CentOS系统上一款常用的网络抓包工具。
使用tcpdump可以捕获网络中的数据包,并对其进行分析和解读。
本文将介绍如何在CentOS上使用tcpdump,并说明其功能和用途。
一、tcpdump的安装和基本用法1. 安装tcpdump:在CentOS系统上,可以使用以下命令安装tcpdump:```yum install tcpdump```2. 基本用法:使用tcpdump的基本命令格式如下:```tcpdump [options] [filter_expression]```其中,options可以指定一些额外的选项,filter_expression是用于过滤数据包的表达式。
二、捕获数据包使用tcpdump捕获数据包可以帮助我们了解网络中的通信情况,以及排查网络故障。
下面是一些常用的捕获数据包的命令示例:1. 捕获所有网络接口上的数据包:```tcpdump -i any```2. 捕获指定网络接口上的数据包:```tcpdump -i eth0```3. 指定捕获数据包的数量:```tcpdump -c 10```4. 指定捕获数据包的大小:```tcpdump -s 1500```5. 保存捕获的数据包到文件中:```tcpdump -w capture.pcap```三、过滤数据包tcpdump提供了强大的过滤功能,可以根据不同的条件过滤出我们需要的数据包。
下面是一些常用的过滤数据包的命令示例:1. 按源IP地址过滤数据包:```tcpdump src host 192.168.1.100```2. 按目标IP地址过滤数据包:```tcpdump dst host 192.168.1.100```3. 按源端口过滤数据包:```tcpdump src port 80```4. 按目标端口过滤数据包:```tcpdump dst port 80```5. 组合多个条件进行过滤:```tcpdump src host 192.168.1.100 and dst port 80```四、解读捕获的数据包通过捕获数据包,我们可以获取到很多关于网络通信的信息。
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 -nntcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 116:232(116) ack 1 win 964801: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 ;192.168.1.100.22 > :传送端是192.168.1.100 这个IP,而传送的port number 为22,您必须要了解的是,那个大于(>) 的符号指的是封包的传输方向喔!192.168.1.11.1190:接收端的IP 是192.168.1.11,且该主机开启port 1190 来接收;P 116:232(116):这个封包带有PUSH 的数据传输标志,且传输的数据为整体数据的116~232 byte,所以这个封包带有116 bytes 的数据量;ack 1 win 9648:ACK与Window size 的相关资料。
服务器抓包命令:tcpdump详解简介:tcpdump,就是:dump the traffic on a network,根据使⽤者的定义对⽹络上的数据包进⾏截获的包分析⼯具。
⼀个No-GUI的抓包分析⼯具。
tcpdump,可以将⽹络中传送的数据包的“头”完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
Linux已经⾃动安装,可直接使⽤。
概要:tcpdump采⽤命令⾏⽅式,它的命令格式为:tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ] [ -C file_size ][ -E spi@ipaddr algo:secret,... ][ -F file ] [ -G rotate_seconds ] [ -i interface ][ --immediate-mode ] [ -j tstamp_type ] [ -m module ][ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ --version ][ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ][ -z postrotate-command ] [ -Z user ][ --time-stamp-precision=tstamp_precision ][ expression ]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码⽅式显⽰每⼀个数据包(不会显⽰数据包中链路层头部信息). 在抓取包含⽹页数据的数据包时, 可⽅便查看数据(nt: 即Handy for capturing web pages).-b 使⽤ASDOT表⽰法在BGP数据包中打印AS号,⽽不是ASPLAIN表⽰法-B buffer_size--buffer-size=buffer_size将操作系统捕获缓冲区⼤⼩设置为buffer_size,单位为KiB(1024字节)-c counttcpdump将在接受到count个数据包后退出.-C file-size (nt: 此选项⽤于配合-w file 选项使⽤)该选项使得tcpdump 在把原始数据包直接保存到⽂件中之前, 检查此⽂件⼤⼩是否超过file-size. 如果超过了, 将关闭此⽂件,另创⼀个⽂件继续⽤于原始数据包的记录. 新创建的⽂件名与-w 选项指定的⽂件名⼀致, 但⽂件名后多了⼀个数字.该数字会-d 以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停⽌.(nt | rt: human readable, 容易阅读的,通常是指以ascii码来打印⼀些信息. compiled, 编排过的. packet-matching code, 包匹配码,含义未知, 需补充)-dd 以C语⾔的形式打印出包匹配码.-ddd 以⼗进制数的形式打印出包匹配码(会在包匹配码之前有⼀个附加的'count'前缀).-D 打印系统中所有tcpdump可以在其上进⾏抓包的⽹络接⼝. 每⼀个接⼝会打印出数字编号, 相应的接⼝名字, 以及可能的⼀个⽹络接⼝描述. 其中⽹络接⼝名字和数字编号可以⽤在tcpdump 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓此选项在不⽀持接⼝列表命令的系统上很有⽤(nt: ⽐如, Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接⼝的数字编号在windows 2000 或其后的系统中很有⽤, 因为这些系统上的接⼝名字⽐较复杂, ⽽不易使⽤.如果tcpdump编译时所依赖的libpcap库太⽼,-D 选项不会被⽀持, 因为其中缺乏 pcap_findalldevs()函数.-e 每⾏的打印输出中将包括数据包的数据链路层头部信息-E spi@ipaddr algo:secret,...可通过spi@ipaddr algo:secret 来解密IPsec ESP包(nt | rt:IPsec Encapsulating Security Payload,IPsec 封装安全负载, IPsec可理解为, ⼀整套对ip数据包的加密协议, ESP 为整个IP 数据包或其中上层协议部分被加密后的数据,前者的⼯作模式称为需要注意的是, 在终端启动tcpdump 时, 可以为IPv4 ESP packets 设置密钥(secret).可⽤于加密的算法包括des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或者没有(none).默认的是des-cbc(nt: des, Data Encryption Standard, 数据加密标准, 加密算法未知, 另需补充).secret 为⽤于ESP 的密钥, 使⽤ASCII 字符串⽅式表达该选项中ESP 的定义遵循RFC2406, ⽽不是 RFC1827. 并且, 此选项只是⽤来调试的, 不推荐以真实密钥(secret)来使⽤该选项, 因为这样不安全: 在命令⾏中输⼊的secret 可以被其他⼈通过ps 等命令查看到.除了以上的语法格式(nt: 指spi@ipaddr algo:secret), 还可以在后⾯添加⼀个语法输⼊⽂件名字供tcpdump 使⽤(nt:即把spi@ipaddr algo:secret,... 中...换成⼀个语法⽂件名). 此⽂件在接受到第⼀个ESP 包时会打开此⽂件, 所以最好此时把赋予tcp -f 显⽰外部的IPv4 地址时(nt: foreign IPv4 addresses, 可理解为, ⾮本机ip地址), 采⽤数字⽅式⽽不是名字.(此选项是⽤来对付Sun公司的NIS服务器的缺陷(nt: NIS, ⽹络信息服务, tcpdump 显⽰外部地址的名字时会⽤到她提供的名称服务): 此NIS服务由于对外部(foreign)IPv4地址的测试需要⽤到本地⽹络接⼝(nt: tcpdump 抓包时⽤到的接⼝)及其IPv4 地址和⽹络掩码. 如果此地址或⽹络掩码不可⽤, 或者此接⼝根本就没有设置相应⽹络地址和⽹络掩码(nt: linux 下的 'any' ⽹络接⼝就不需要设置地-F file使⽤file ⽂件作为过滤条件表达式的输⼊, 此时命令⾏上的输⼊将被忽略.-i interface指定tcpdump 需要监听的接⼝. 如果没有指定, tcpdump 会从系统接⼝列表中搜寻编号最⼩的已配置好的接⼝(不包括 loopback 接⼝).⼀但找到第⼀个符合条件的接⼝, 搜寻马上结束.在采⽤2.2版本或之后版本内核的Linux 操作系统上, 'any' 这个虚拟⽹络接⼝可被⽤来接收所有⽹络接⼝上的数据包(nt: 这会包括⽬的是该⽹络接⼝的, 也包括⽬的不是该⽹络接⼝的). 需要注意的是如果真实⽹络接⼝不能⼯作在'混杂'模式(promiscuou 如果 -D 标志被指定, tcpdump会打印系统中的接⼝编号,⽽该编号就可⽤于此处的interface 参数.-l 对标准输出进⾏⾏缓冲(nt: 使标准输出设备遇到⼀个换⾏符就马上把这⾏的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有⽤. ⽐如, 可通过以下命令组合来达到此⽬的:``tcpdump -l | tee dat'' 或者 ``tcpdump -l > dat & tail -f dat''.(nt: 前者使⽤tee来把tcpdump 的输出同时放到⽂件dat和标准输出中, ⽽后者通过重定向操作'>', 把tcpdump的输出放到dat ⽂件中, 同时通过tail把dat⽂件中的内容放到标准输出中) -L 列出指定⽹络接⼝所⽀持的数据链路层的类型后退出.(nt: 指定接⼝通过-i 来指定)-m module通过module 指定的file 装载SMI MIB 模块(nt: SMI,Structure of Management Information, 管理信息结构MIB, Management Information Base, 管理信息库. 可理解为, 这两者⽤于SNMP(Simple Network Management Protoco)协议数据包的抓取. 具此选项可多次使⽤, 从⽽为tcpdump 装载不同的MIB 模块.-M secret 如果TCP 数据包(TCP segments)有TCP-MD5选项(在RFC 2385有相关描述), 则为其摘要的验证指定⼀个公共的密钥secret.-n 不对地址(⽐如, 主机地址, 端⼝号)进⾏数字表⽰到名字表⽰的转换.-N 不打印出host 的域名部分. ⽐如, 如果设置了此选现, tcpdump 将会打印'nic' ⽽不是 ''.-O 不启⽤进⾏包匹配时所⽤的优化代码. 当怀疑某些bug是由优化代码引起的, 此选项将很有⽤.-p ⼀般情况下, 把⽹络接⼝设置为⾮'混杂'模式. 但必须注意 , 在特殊情况下此⽹络接⼝还是会以'混杂'模式来⼯作;从⽽, '-p' 的设与不设, 不能当做以下选现的代名词:'ether host {local-hw-add}' 或 'ether broadcast'(nt: 前者表⽰只匹配以太⽹地址为ho -q 快速(也许⽤'安静'更好?)打印输出. 即打印很少的协议相关信息, 从⽽输出⾏都⽐较简短.-R 设定tcpdump 对 ESP/AH 数据包的解析按照 RFC1825⽽不是RFC1829(nt: AH, 认证头, ESP,安全负载封装, 这两者会⽤在IP包的安全传输机制中). 如果此选项被设置, tcpdump 将不会打印出'禁⽌中继'域(nt: relay prevention field). 另外,由于ES-r file从⽂件file 中读取包数据. 如果file 字段为 '-' 符号, 则tcpdump 会从标准输⼊中读取包数据.-S 打印TCP 数据包的顺序号时, 使⽤绝对的顺序号, ⽽不是相对的顺序号.(nt: 相对顺序号可理解为, 相对第⼀个TCP 包顺序号的差距,⽐如, 接受⽅收到第⼀个数据包的绝对顺序号为232323, 对于后来接收到的第2个,第3个数据包, tcpdump会打印其序-s snaplen设置tcpdump的数据包抓取长度为snaplen, 如果不设置默认将会是68字节(⽽⽀持⽹络接⼝分接头(nt: NIT, 上⽂已有描述,可搜索'⽹络接⼝分接头'关键字找到那⾥)的SunOS系列操作系统中默认的也是最⼩值是96).68字节对于IP, ICMP(nt: Internet C -T type强制tcpdump按type指定的协议所描述的包结构来分析收到的数据包. ⽬前已知的type 可取的协议为:aodv (Ad-hoc On-demand Distance Vector protocol, 按需距离向量路由协议, 在Ad hoc(点对点模式)⽹络中使⽤),cnfp (Cisco NetFlow protocol), rpc(Remote Procedure Call), rtp (Real-Time Applications protocol),rtcp (Real-Time Applications con-trol protocol), snmp (Simple Network Management Protocol),tftp (Trivial File Transfer Protocol, 碎⽂件协议), vat (Visual Audio Tool, 可⽤于在internet 上进⾏电视电话会议的应⽤层协议), 以及wb (distributed White Board, 可⽤于⽹络会议的应⽤层协议).-t 在每⾏输出中不打印时间戳-tt 不对每⾏输出的时间进⾏格式处理(nt: 这种格式⼀眼可能看不出其含义, 如时间戳打印成1261798315)-ttt tcpdump 输出时, 每两⾏打印之间会延迟⼀个段时间(以毫秒为单位)-tttt 在每⾏打印的时间戳之前添加⽇期的打印-u 打印出未加密的NFS 句柄(nt: handle可理解为NFS 中使⽤的⽂件句柄, 这将包括⽂件夹和⽂件夹中的⽂件)-U 使得当tcpdump在使⽤-w 选项时, 其⽂件写⼊与包的保存同步.(nt: 即, 当每个数据包被保存时, 它将及时被写⼊⽂件中,⽽不是等⽂件的输出缓冲已满时才真正写⼊此⽂件)-U 标志在⽼版本的libcap库(nt: tcpdump 所依赖的报⽂捕获库)上不起作⽤, 因为其中缺乏pcap_cump_flush()函数.-v 当分析和打印的时候, 产⽣详细的输出. ⽐如, 包的⽣存时间, 标识, 总长度以及IP包的⼀些选项. 这也会打开⼀些附加的包完整性检测, ⽐如对IP或ICMP包头部的校验和.-vv 产⽣⽐-v更详细的输出. ⽐如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码.-vvv 产⽣⽐-vv更详细的输出. ⽐如, telent 时所使⽤的SB, SE 选项将会被打印, 如果telnet同时使⽤的是图形界⾯,其相应的图形选项将会以16进制的⽅式打印出来(nt: telnet 的SB,SE选项含义未知, 另需补充).-w 把包数据直接写⼊⽂件⽽不进⾏分析和打印输出. 这些包数据可在随后通过-r 选项来重新读⼊并进⾏分析和打印.-W filecount此选项与-C 选项配合使⽤, 这将限制可打开的⽂件数⽬, 并且当⽂件数据超过这⾥设置的限制时, 依次循环替代之前的⽂件, 这相当于⼀个拥有filecount 个⽂件的⽂件缓冲池. 同时, 该选项会使得每个⽂件名的开头会出现⾜够多并⽤来占位的0, 这可-x 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据(但不包括连接层的头部).总共打印的数据⼤⼩不会超过整个数据包的⼤⼩与snaplen 中的最⼩值. 必须要注意的是, 如果⾼层协议数据没有snaplen 这么长,并-xx tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据, 其中包括数据链路层的头部.-X 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析⼀些新协议的数据包很⽅便.-XX 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据, 其中包括数据链路层的头部.这对于分析⼀些新协议的数据包很⽅便.-y datalinktype设置tcpdump 只捕获数据链路层协议类型是datalinktype的数据包-Z user使tcpdump 放弃⾃⼰的超级权限(如果以root⽤户启动tcpdump, tcpdump将会有超级⽤户权限), 并把当前tcpdump的⽤户ID设置为user, 组ID设置为user⾸要所属组的ID(nt: tcpdump 此处可理解为tcpdump 运⾏之后对应的进程)此选项也可在编译的时候被设置为默认打开.(nt: 此时user 的取值未知, 需补充)命令实例:⼀、默认启动tcpdump:直接启动tcpdump将监视第⼀个⽹络接⼝上所有流过的数据包。
专注于一个理想,专注于每一个目标,专注于每一件事,在不忙碌之时,我们的想像力往往很丰富也很混乱,有时总喜欢设想一些荒诞不稽的可能性,这些胡思乱想就好象传说中的妖精,会掏空我们的思想,摧毁我们的行动力与意志力,这是很严重的事情,我们真的不必去设想任何无关的遥远的东西,我们要让自已忙碌起来,让思想变得专注与敏锐,做一些有用的事情。
tcpdump详细用法一、tcpdump简明用法Usage: tcpdump [-adeflnNOpqRStuvxX] [ -c count ] [ -C file_size ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ][ -T type ] [ -U user ] [ -w file ] [ -E algo:secret ] [ expression ]-c 捕获指定数量的报文-F使用文件作为过滤表达式的源-i 使用可选网络接口捕获报文-p 禁止在杂凑模式下捕获、- r读取捕获文件而非网络接口-w保存原始报文到文件中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的使用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.13. tcpdump 的输出结果介绍下面我们介绍几种典型的tcpdump命令的输出信息(1)数据链路层头信息#tcpdump -e host iceice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1AH219是一台装有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 optionssrc > 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 lenthUDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP,包的长度是lenth超级详细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' ,'││';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
# tcpdumptcpdump: listening on fxp011:58:47.873028 bios-ns > 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=430000 0000 0080 0000 1007 cf08 0900 00000e80 0000 902b 4695 0980 8701 0014 0002000f 0000 902b 4695 0008 0011:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97ffff 0060 0004 ffff ffff ffff ffff ffff0452 ffff ffff 0000 e85b 6d85 4008 00020640 4d41 5354 4552 5f57 4542 0000 00000000 00使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存A想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:#tcpdump host 210.27.48.1B想要截获主机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.2D如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:#tcpdump tcp port 23 host 210.27.48.1E 对本机的udp 123 端口进行监视 123 为ntp的服务端口# tcpdump udp port 123F 系统将只对名为hostname的主机的通信数据包进行监视。