wireshark学习——5.命令行模式

了解命令行的特点
只要我们在计算机中安装了Wireshark,那么在其安装目录中就可以找到tshark这款工具:

Alt text

它的下方名为tshark.html的文件就是这款工具的帮助信息。注意这款工具并不是通过直接在这里双击运行的,而是需要通过cmd命令行切换到wireshark的安装目录,然后再通过相应的命令来使用这款工具。或者直接将tshark加入环境变量就可以直接使用。

而我之所以要以一节课来论述这款工具,是因为我们在实际的分析中,为了得到精准的分析结果,往往需要通过编写脚本程序来实现我们的目的。比如假设我们想要统计某一个捕获文件中由于某一条件导致的停滞共有多少毫秒,那么显然仅仅通过Wireshark生成的图形进行统计是不精确的。而传统的做法就需要把符合该条件的数据包筛选出来,逐段统计停滞的时间。如果捕获文件不复杂,那么统计的速度还会比较快,可是一旦出现复杂的网络状况,那么这种纯手工的方式就明显力不从心了。

遇到这种情况,我们就需要使用脚本程序来辅助我们的分析,可是Wireshark本身并没有提供这样的功能,因此我们就需要利用tshark这款命令行工具来引入相应的脚本程序。脚本程序的编写不是我们课程的讨论范围,但是依旧有必要讨论tshark的基本用法,其实它就是相当于Wireshark的命令行版本。与图形界面相比,命令行存在着一些先天的优势:

可以使用诸如awk或者grep这样的工具来辅助分析。这一点就是图形界面无法实现的。而有些高手之所以说tshark的功能比Wireshark强大,往往就是由于这个原因。这里所说的awk可以将文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。而grep可以用于字符串的查找。但是这些工具一般需要在Linux系统中才能实现。这里我可以给大家展示一下tshark与grep的使用。我使用的是Kali Linux 1.0.7的操作系统,利用如下命令搜索Lab5-1.pcapng中含有GET字符串的数据包:

Alt text

上述命令的意思是,使用tshark来读取Lab5-1这个文件的内容,并且使用grep这款工具来匹配文件中是否包含有GET字符的数据包。可以看到,结果已经清晰地显示出来了。

编辑命令虽然比较费时,但是编辑好之后可以反复使用,甚至可以写成一个程序供以后使用。如果大家经常需要进行性能调优的操作,那就可以写一段程序来完成,这会比直接使用Wireshark要快得多。而进行性能调优主要是对Summary(概述信息)、Service Response Time(服务响应时间)以及Expert Info Composite(专家信息整合)的内容进行分析。

比如Summary可以通过capinfos进行查询(注意我已经将Lab5-1.pcapng放在了Wireshark目录中):

Alt text

而如果想要获取Service Response Time的情况,则需要视不同的协议而定。比如对于NFS(网络文件系统)协议可以使用以下命令:

Alt text

上述命令中的-n表示禁止所有地址名字解析(默认为允许所有);-q设置为标准输出(常用于统计);-z表示设置统计参数。

而对于CIFS协议,只要把上述命令中的双引号里面的内容改为“smb,srt”即可:

Alt text

tshark输出的分析文本大多可以直接写入分析报告里面,而Wireshark却无法生成这样的报告。比如,我想统计每一秒里面CIFS操作的Service Response Time,那么可以执行以下命令:

Alt text

如果将这个结果导入到Excel里面,就可以生成各种报表。

和其它软件一样,命令行往往比图形界面快得多。比如现在有一个捕获文件,里面有众多的数据包,但是我只对IP地址为74.125.23.102的数据包感兴趣,如果使用Wireshark操作的话,需要首先打开捕获文件,再利用ip.addr==74.125.23.102进行筛选,最后保存结果。其实这三个步骤还是比较费时的。可是如果使用tshark就只需要以下一条命令就可以了:

tshark –r Lab5-1.pcapng –Y “ip.addr==74.125.23.102” –w Lab5-4.pcapng
这样,生成的Lab5-4.pcapng文件中就会只包含有IP地址为74.125.23.102的数据包了。

由于以上4点优势,一个网络工程师可能在上手tshark之后,很快就会舍弃Wireshark了。虽然我们这个系列的课程是教大家使用Wireshark,但是当大家掌握了足够多的经验的时候,其实完全可以舍弃Wireshark的友好界面,转而使用更加高效,却更加复杂的tshark。

步骤3:了解命令行的常用功能
除了上述给大家演示的几种功能之外,这里再给大家讲解几个命令行的常用功能。如果想统计重传的状况,则需要用到tcp.analysis.retransmission命令:

Alt text

如果想查看乱序的情况,则只需要将retransmission改为out_of_order即可。

我们在之前的课程中讨论过会话窗口,那么我们利用tshark也可以方便地查看会话信息。利用”conv,xxx”就可以做到。其中的xxx可以是tcp、udp或者ip。比如查看TCP的会话信息:

Alt text

大家可以将命令行的结果与Wireshark的会话窗口进行对比,看看是否一致。

最后,如果我们遇到了一个非常大的捕获文件,使用tshark无法打开该怎么办?那么此时就需要将该文件切分成多个,可以利用editcap来实现:

editcap Lab5-1.pcapng output.pcapng –i 4
上述命令可以把Lab5-1.pcapng这个文件以4秒为间隔进行拆分。

实验结果分析与总结
我在这次的课程中讲了一些我们还没有学习的关于协议的知识。也许大家看完本次的课程并不能够马上理解其中的内容。不过没关系,其实本次课程的内容就是希望大家在学完整个系列的课程后,再回头来看的。那时大家再看这些内容,就会有一种豁然开朗的感觉,也许大家就会喜欢上命令行这种方式进行分析。而命令行也是博大精深,更多的内容是需要大家自己去研究的,我在这里所演示的不过是冰山一角。

猜你喜欢

转载自blog.csdn.net/qq_32392853/article/details/81569032