tcpdump Windows Version: http://www.winpcap.org/windump/
[前语]最近要用到数据包分析软件(tcpdump),从网上搜索发现资料重多,但让我发现大部分的内容都比较乱,让人不敢往下读,今天我也将我整理的资料,拿给网上的朋友分享下,可能我整理得也比较乱,或者分析得有误,请大家指出,谢谢!~
[内容]
v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} st1/:*{behavior:url(#ieooui) } <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} -->
SYNOPSIS( 概要)
tcpdump [ -ADeflnNqtvx ] [ -c count ]
[ -i interface ] [ -r file ] [ -s snaplen ]
[ -T type ] [ -w file ] [ expression ]
选项 (OPTIONS)
-A
Print each packet (minus its link level header) in ASCII. Handy for capturing web pages
[ 应用] 在网关服务器中输入:tcpdump –A src host 192.168.x.y
每行都显示链路层报头.
当收到count个 报文 后 退出.
[ 应用 ] tcpdump -D
监听interface接口. 如果不指定接口, tcpdump在系统的接口清单中, 寻找号码最小, 已经配置好的接口(loopback 除外). 选中的时候会中断连接.
-f
用数字形式显示 '外部的' 互联网地址, 而不是字符形式 (如:tcpdump -f -i eth0 -c 4 src host 192.168.x.y)
-l
行缓冲标准输出. 可用于捕捉数据的同时查看数据. 例如,
-n
不把地址转换成名字 (如主机地址, 端口号等)
[ 分析 ] 抓取的数据包不会将数字地址转换成名字
-q
快速输出. 显示较少的协议信息, 输出行将短一点点.
[ 分析 ] 打印较短的协议,用与快速分析。
把原始报文存进file, 不分析也不显示. 它们可以以后用 -r 选项显示. 如果 file 是 “-'', 就写到标准输出.(如:tcpdump -e src host 192.168.x.y -w /tmp/tcpdump.log)
从file中读入数据报 (文件是用 -w 选项创建的). 如果 file 是 “-'', 就读标准输入. (如:tcpdump -e src host 192.168.x.y -r /tmp/tcpdump.log)
-t
禁止显示时戳标志.
-tt
显示未格式化的时戳标志.
-v
(稍微多一点) 繁琐的输出. 例如, 显示IP数据报中的生存周期和服务类型.
-vv
更繁琐的输出. 例如, 显示NFS应答报文的附加域.
-x
以十六进制数形式显示每一个报文 (去掉链路层报头后) . 可以显示较小的完整报文
expression ( 表达式)
表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> <!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->
(1)type
类型修饰字指出标识名称或标识数字代表什么类型的东西. 可以使用的类型有host, net 和 port. 例如, `host foo', `net 128.3', `port 20'. 如果不指定类型修饰字, 就使用缺省的 host
(2)Direction
方向修饰字指出相对于标识的传输方向 (数据是传入还是传出标识). 可以使用的方向有 src, dst, src or dst 和 src and dst. 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'. 如果不指定方向修饰字, 就使用缺省的src or dst . 对于 `null' 链路层 (就是说 象 slip 之类的 点到点 协议), 用 inbound和outbound修饰字指定所需的传输方向.
(3)proto
协议修饰字要求匹配指定的协议. 可以使用的协议有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp 和 udp. 例如,ether src foo', `arp net 128.3', `tcp port 21'. 如果不指定协议修饰字, 就使用所有符合类型的协议. 例如, `src foo' 指 `(ip or arp or rarp) src foo', `net bar' 指 `(ip or arp or rarp) net bar', `port 53' 指 `(tcp or udp) port 53'.
[`fddi' 实际上 是 `ether' 的 别名; 分析器把它们视为 ``用在指定网络接口上的数据链路层.'' FDDI 报头包含类似于以太协议的源目地址, 而且通常包含 类似于以太协议的报文类型, 因此你可以分析 FDDI 域, 就象分析以太协议一样. FDDI报头也包含其他域, 但是你不能在过滤器表达式里显式描述.]
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
更复杂的过滤器表达式 可以通过 and, or 和 not 连接原语来组建. 例如, `host foo and not port ftp and not port ftp-data'. 为了少敲点键, 可以忽略 相同的修饰子. 例如, `tcp dst port ftp or ftp-data or domain' 实际上 就是 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.
允许的 原语 有:
dst host host
如果报文中IP的目的地址域是 host, 则逻辑为真. host既可以是地址, 也可以是主机名.
src host host
如果报文中IP的源地址域 是 host, 则 逻辑为 真.
host host
如果报文中 IP 的 源地址域或者目的地址域是host, 则逻辑为真. 上面所有的 host 表达式 都可以加上 ip, arp, 或 rarp 关键字做前缀, 就象:
ip host host
如果host是拥有多个IP地址的主机名, 它的每个地址都会被查验.
dst net net
如果报文的IP目的地址属于网络号net, 则逻辑为真.
src net net
如果 报文的 IP 源地址 属于 网络号 net, 则逻辑为真.
net net
如果报文的IP源地址或目的地址属于网络号 net, 则逻辑为真.
net net mask netmask (如net 192.168.1.0 mask 255.255.255.128)
如果IP地址匹配指定网络掩码(netmask)的net, 则 逻辑为真. 本原语可以用src 或 dst 修饰.
net net/len
如果IP地址匹配指定网络掩码的net, 则逻辑为真, 掩码的有效位宽为len. 本原语可以用src或dst修饰.
dst port port
如果报文是ip/tcp或ip/udp, 并且目的端口是port, 则逻辑为真. port是一个数字, 也可以是 /etc/services 中 说明过的名字(参看tcp(4P)和udp(4P)). 如果使用名字, 则检查端口号和协议. 如果使用数字, 或者有二义的名字, 则只检查端口号 (例如, dst port 513 将显示 tcp/login 的数据 和 udp/who 的数据, 而 port domain 将显示 tcp/domain 和 udp/domain 的数据).
src port port
如果 报文 的 源端口号 是 port, 则 逻辑 为 真.
port port
如果报文的源端口或目的端口是port, 则逻辑为真. 上述的任意一个端口表达式都可以用关键字tcp或udp做前缀,就象:
tcp src port port
它只匹配源端口是port的 TCP 报文.
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
如果 报文 的 长度 小于等于 length, 则 逻辑 为 真. 它等同于:
len <= length.
greater length
如果报文的长度大于等于 length, 则逻辑为真. 它等同于:
len >= length.
原语可以用下述方法结合使用:
圆括弧括起来的原语和操作符(园括弧在Shell中有特定含义, 所以必须转义).
取反操作 (`!' or `not').
连结操作 (`&&' or `and').
或操作 (`||' or `or').
取反操作有最高优先级. 或操作和连结操作有相同的优先级, 运算时从左到右结合. 注意连结操作需要显式的and算符, 而不是并列放置.
如果给出标识符, 但没给修饰符, 那么暗指最近使用的修饰符. 例如,
not host vs and ace作为 not host vs and host ace的简写形式, 不应该和 not ( host vs or ace )混淆.
tcpdump 的输出结果介绍 (OUTPUT FORMAT)
下面我们介绍几种典型的 tcpdump 命令的输出信息
显示 所有 进出 sundown 的 报文:
tcpdump host sundown
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
tcpdump host helios and /( hot or ace /)
显示ace和除了helios 以外的所有主机的IP报文:
tcpdump ip host ace and not helios