wireshark导入数据包进行分析

描述

linux的tcpdump命令主要用于网络问题的调试中,通过抓取传输过程的数据包进行分析和调试。而wireshark则是一款功能强大,使用方便的数据包分析工具,tcpdump+wireshark组合使用,完美,perfect,让网络问题无处遁形。

1 tcpdump及wireshark基本介绍

1.1 tcpdump

tcpdump是基于Unix系统的命令行式的数据包嗅探工具,可以抓取流动在网卡上的数据包。默认情况下,tcpdump不会抓取本机内部通讯的报文。根据网络协议栈的规定,对于报文,即使是目的地是本机,也需要经过本机的网络协议层,所以本机通讯肯定是通过API进入了内核,并且完成了路由选择。

linux抓包原理:

Linux抓包是通过注册一种虚拟的底层网络协议来完成对网络报文(准确的说是网络设备)消息的处理权。当网卡接收到一个网络报文之后,它会遍历系统中所有已经注册的网络协议,例如以太网协议、x25协议处理模块来尝试进行报文的解析处理,这一点和一些文件系统的挂载相似,就是让系统中所有的已经注册的文件系统来进行尝试挂载,如果哪一个认为自己可以处理,那么就完成挂载。当抓包模块把自己伪装成一个网络协议的时候,系统在收到报文的时候就会给这个伪协议一次机会,让它来对网卡收到的报文进行一次处理,此时该模块就会趁机对报文进行窥探,也就是把这个报文完完整整的复制一份,假装是自己接收到的报文,汇报给抓包模块。

1.2 wireshark

wireshark是一种数据包分析工具,在各种网络应用中,比如通过思博伦的Spirent_TestCenter(TC)、Ixia测试仪抓取接口报文或者利用本文介绍的linux自带的tcpdump监听抓包工具,抓包后导出报文再导入wireshark工具中进行图形化分析。

2 tcpdump抓包

2.1 常用命令

2.1.1 默认启动

# tcpdump

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。但是由于linux默认网卡的问题,可能出现下面报错:

tcpdump: packet printing is not supported for link type NFLOG: use -w

Linux

此时,可以通过ifconfig或者ip address命令查看网卡信息,并通过指定网口进行数据抓包

Linux

2.1.2 监视指定网络接口的数据包

# tcpdump -i ens33

Linux

2.1.3 监视指定主机的数据包

指定通过网口ens33, 并且进出口IP地址为10.193.12.119的数据包

# tcpdump -i ens33 host 10.193.12.119

Linux

指定通过网口ens33, 并且主机10.193.12.12 和主机10.193.17.4 或10.193.12.119之间的通信

# tcpdump -i ens33 -n host 10.193.12.12 and ( 10.193.17.4 or 10.193.12.119 )

Linux

指定通过网口ens33, 并且主机10.193.12.12 和非主机10.193.17.4之间的通信

# tcpdump -i ens33 -n host 10.193.12.12 and ! 10.193.17.4

Linux

指定通过网口ens33, 并且由主机10.193.12.12发送的所有数据

# tcpdump -i ens33 -n src 10.193.12.12

Linux

指定通过网口ens33, 并且由主机10.193.12.12接收的所有数据

# tcpdump -i ens33 -n dst 10.193.12.12

Linux

2.1.4 指定抓包数量

指定通过网口ens33, 并且由主机10.193.12.12接收的连续5个数据包

# tcpdump -i ens33 -n dst 10.193.12.12 -c 5

Linux

2.1.5 抓包精简显示

# tcpdump -i ens33 -n dst 10.193.12.12 -c 5 -q

指定通过网口ens33, 并且由主机10.193.12.12接收的连续5个数据包,并采用精简显示,可与上图进行对比

Linux

2.1.6 按照协议类型抓包

以ping为例,我们知道ping的协议类型为icmp,我们可以指定icmp协议类型进行抓包

# tcpdump -i ens33 -n icmp

Linux

2.1.7 指定主机和端口号进行抓包

指定网卡ens33,端口号为55555并且ip地址为10.193.12.12的连续10个数据包

# tcpdump -i ens33 -n tcp port 55555 and host 10.193.12.12 -c 10

Linux

2.1.8 抓包并保存

抓包并保存package.cap文件,可导出后再导入wireshark进行包分析

# tcpdump -i ens33 -n port 55555 and host 10.193.12.12 -c 10 -w package.cap

Linux

2.2 tcpdump详细参数

-a 尝试将网络和广播地址转换成名称。

-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。

-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。

-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。

-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。

-e 在每列倾倒资料上显示连接层级的文件头。

-f 用数字显示网际网络地址。

-F<表达文件> 指定内含表达方式的文件。

-i<网络界面> 使用指定的网络截面送出数据包。

-l 使用标准输出列的缓冲区。

-n 不把主机的网络地址转换成名字。

-N 不列出域名。

-O 不将数据包编码最佳化。

-p 不让网络界面进入混杂模式。

-q 快速输出,仅列出少数的传输协议信息。

-r<数据包文件> 从指定的文件读取数据包数据。

-s<数据包大小> 设置每个数据包的大小。

-S 用绝对而非相对数值列出TCP关联数。

-t 在每列倾倒资料上不显示时间戳记。

-tt 在每列倾倒资料上显示未经格式化的时间戳记。

-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。

-v 详细显示指令执行过程。

-vv 更详细显示指令执行过程。

-x 用十六进制字码列出数据包资料。

-w<数据包文件> 把数据包数据写入指定的文件。

3 wireshark导入数据包进行分析

Linux

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分