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 与 portnumber 捉下 eth0 这个网络卡上的封包,持续3 秒
[root@linux ~]#tcpdump -i eth0 -nn
tcpdump: verboseoutput suppressed, use -v or -vv for full
protocol decode
listening on eth0,link-type EN10MB (Ethernet), capture size 96
bytes
01:33:40.41 IP192.168.1.100.22 > 192.168.1.11.1190: P
116:232(116) ack 1 win 9648
01:33:40.41 IP192.168.1.100.22 > 192.168.1.11.1190: P
232:364(132) ack 1 win 9648
<==按下 [ctrl]-c 之后结束
6680
packetscaptured
<==捉下来的封包数量
14250 packetsreceived by filter
<==由过滤所得的总封包数量
7512 packetsdropped 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 96