【讲清楚,说明白!】tcpdump命令行网络抓包工具

目录:
(一)tcpdump命令
(二)tcpdump筛选数组


(一)tcpdump命令
(1.1)tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类Unix系统下用于网络分析和问题排查的首选工具。tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等语句来帮助你去掉无用的信息。
(1.2)tcpdump指令默认只抓取每一个数据包的前68个字节,一般状况下会将TCP/IP以及二层包头信息会完整抓取的,若是须要作完整的数据包的内容分析是不够的,通常68个字节中只是包含了源地址、目的地址、端口等信息。
(1.3)首先咱们可使用“-i”参数指定网卡名,使用“-s”指定抓的数据包的大小,使用“-w”参数表示将数据包保存到指定的文件中。咱们指定vms001主机的网卡是eno16777728,而后指定数据包的大小为0表示抓所有的数据包,使用-w表示将抓取的数据包的信息存放到a.cap文件中。
# tcpdump -i eno16777728 -s 0 -w a.cap---指定vms001主机的网卡是eno16777728,而后指定数据包的大小为0表示抓所有的数据包,使用-w表示将抓取的数据包的信息存放到a.cap文件中
【讲清楚,说明白!】tcpdump命令行网络抓包工具
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(1.4)若是咱们但愿查看所抓的包的内容,可使用“-r”参数对数据包进行查看。
# tcpdump -r a.cap---表示读取数据包中内容
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(1.5)若是咱们但愿经过ASCII码的形式将数据包显示出来,咱们能够经过使用“-A”的参数将数据包显示出来。
# tcpdump -A -r a.cap---以ASCII码的形式进行显示
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(1.6)若是咱们但愿经过十六进制的形式去显示数据包中的内容,则咱们能够经过“-X”的参数来进行查看。
# tcpdump -X -r a.cap---以十六进制的形式显示数据包中的内容
【讲清楚,说明白!】tcpdump命令行网络抓包工具网络


(二)tcpdump筛选
(2.1)tcpdump也可使用抓包筛选器进行信息的筛选,若是咱们但愿抓某种类型或者某种端口的包,则能够指定网卡或者端口号。
# nc -nv 192.168.26.102 22---从vms001主机上尝试链接vms002主机的22端口
# tcpdump -i eno16777728 tcp port 80---在vms001主机上抓eno16777728网卡上80端口的数据包
【讲清楚,说明白!】tcpdump命令行网络抓包工具
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(2.2)tcpdump指令也是能够实现显示筛选器的功能,咱们首先建立一个http.cap的文件,而后使用“tcpdump -n -r”将全部的信息显示出来,其中“-n”表示不解析主机名,“-r”表示读取文件,并使用awk显示文件的第3列信息,最后使用sort命令去重,此时咱们便获得了全部的IP地址和端口号信息。
# tcpdump -i eno16777728 -w http.cap---收集网卡eno16777728的信息并写入到http.cap文件中
# tcpdump -n -r http.cap---显示http.cap文件中全部记录的信息,“-n”表示不解析主机名
# tcpdump -n -r http.cap | awk '{print $3}'| sort -u---使用“tcpdump -n -r”将全部的信息显示出来,并使用awk显示文件的第3列信息,最后使用sort命令去重,注意sort -u命令和sort | uniq -c意义相同一致
【讲清楚,说明白!】tcpdump命令行网络抓包工具
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(2.3)若是咱们想查询来源IP的主机名为192.168.26.101的全部的信息行,咱们可使用tcpdump -n src host来指定来源IP地址的信息,此时咱们便获得了源IP是192.168.26.101的全部信息行(图1-10)。若是咱们须要查询目标IP地址为192.168.26.102的全部信息行,则咱们可使用tcpdump -n dst host来指定目标IP地址的信息(图1-11)。
# tcpdump -n src host 192.168.26.101 -r http.cap---在vms002主机查询源地址为192.168.26.101主机的全部符合要求的行
# tcpdump -n dst host 192.168.26.102 -r http.cap---在vms002主机查询目标地址为192.168.26.102主机的全部符合要求的行
【讲清楚,说明白!】tcpdump命令行网络抓包工具
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(2.4)咱们也能够经过端口号来进行筛选,咱们可使用tcpdump -n tcp port来指定端口号,以此来查询对应的信息行。
# tcpdump -n tcp port 22 -r http.cap---指定抓取端口号为22的信息行
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(2.5)若是但愿以十六进制的形式将数据包的筛选信息显示出来,则可使用-X参数。
# tcpdump -n -X port 22 -r http.cap---以十六进制的形式将数据包的筛选信息显示出来,“-n”表示不解析主机名
【讲清楚,说明白!】tcpdump命令行网络抓包工具
(2.6)tcpdump指令还能够执行不少高级筛选的功能,其中每一行8位表示一个字节,每一行表示有4个字节共有32位,其中第5部分开头Date Offset表示的是数据的偏移量,其中cwr、ece、urg、ack、psh、rst、ayn、fin表示的是TCP的标签位。例如咱们但愿将ack和psh标签位为1的数据所有筛选出来,此时咱们将两个位的值加起来能够获得10进制的结果为24。其中“source port”和“Destination Port”一行表示的是标号0-3共4个字节,以res.cwr开头的字节表示的是标号0-13的第14个字节,因此咱们在tcp数组中使用tcp[13]表示的是标签位的信息,咱们只须要指定“tcp[13]=24”,就能够筛选出ack和psh标签位为1的全部数据行信息。此时咱们即可以实现tcp包中任何位置、任何数值的筛选,颗粒度很是的细化了。
# tcpdump -A -n 'tcp[13]=24' -r http.cap---筛选出来tcp包的0-13,即第14个字节的和为24的全部信息行,以ASCII码的形式显示
【讲清楚,说明白!】tcpdump命令行网络抓包工具
【讲清楚,说明白!】tcpdump命令行网络抓包工具tcp

—————— 本文至此结束,感谢阅读 ——————ide