简介
简单的说,tcpdump就是一个抓包工具,类似Wireshark。
tcpdump可以根据使用者的定义过滤/截取网络上的数据包,并进行分析。tcpdump可以将数据包的头部完全接货下来进行分析。支持网络层、协议层、主机、端口等特定规则的过滤。
tcpdump的使用
快速入门
首先接收两个选项
-i 指定网络接口 -w 将截取到的数据包写入文件
为什么先介绍这两个选项呢,因为有了这两个选项,结合Wireshark,你不想学tcpdump就可以不学了,直接把通过某个网络接口的所有数据包都保存到一个文件中,再到Wireshark中进行分析即可。
命令如下:
windeal@ubuntu:~$ sudo tcpdump -i eth0 -w hello.cap tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes ^C129 packets captured 129 packets received by filter 0 packets dropped by kernel windeal@ubuntu:~$
可以看出例子中一共截获了129个数据包,然后直接用Wireshark打开文件hello.cap即可对其进行分析。
如下图:
tcpdump常用命令:
tcpdump提供了一系列的参数来满足用户需求,根据使用者定义分析过滤数据包。
windeal@ubuntu:~$ tcpdump --help tcpdump: invalid option -- '-' tcpdump version 4.2.1 libpcap version 1.1.1 Usage: tcpdump [-aAbdDefhHIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z command ] [ -Z user ] [ expression ] windeal@ubuntu:~$
这些参数大致可以分为以下几类:
捕获过滤类:类似Wireshark的capture filter
显示过滤类:类似Wireshark的display filter,就是Wireshark左上角有个下拉框的那个
辅助类
默认情况下,tcpdump显示格式如下:
04:57:52.195631 IP 192.168.1.2.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST 04:57:52.662335 IP 192.168.1.2.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST 04:57:52.944999 IP 192.168.1.2.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAS
下面介绍一些常用的参数:
-i 前面已经介绍,用于指定网络接口 -v 显示稍微详细信息 -vv 显示比-v更详细的信息 -e 打印链路层头部信息 -t 不输出时间戳 -tttt 输出date格式的时间戳 host 指定主机
在tcpdump中也可以使用src、dst 以及and or not之类的参数
应用举例:
tcpdump host widneal-PC #进出windeal-PC的数据包 tcpdump host 192.168.1.1 #指定ip, 进出192.168.1.1 的数据包 tcpdump src host 192.168.1.1 #指定源ip, 来自192.168.1.1 的数据包 tcpdump tcp port 23 host 192.168.1.1 #获取主机192.168.1.1 接收或发出的telnet(端口号23)包 #To print all ICMP packets that are not echo requests/replies (i.e., not ping packets) tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'