Tcpdump流量自动化测试下篇

简介: 接上一篇《Tcpdump流量自动化测试上篇》讲到通过自动化的方式获取到Pcap文件,今天来讲讲怎么用Wireshark来自动分析统计Pcap包中指定的流量。

方案


Wireshark不仅有图形化的界面,还提供了完备的命令行解析方式,今天我们不去讲解它的GUI工具怎么使用,毕竟我们的主题是自动化测试,当然是要看它的命令行工具怎么使用了。


安装好Wireshark之后,通过查看应用包内容,可以看到在MacOS目录下有很多命令,这些命令都是可以在命令行中执行的,在Wireshark图形界面中看到的大部分功能都可以用命令行实现,所有的命令都有Wireshark官方文档的详细介绍:

image.png

下面我们就以用的tshark命令为例进行简单的介绍,下图是参数介绍:

image.png


1、通过tcpdump抓包得到Pcap文件,这个在上篇文章中已经讲过了这里不再赘述。


2、获取被测App的UID,通过adb命令,可以在“/data/system/packages.list”中获取包名对应的UID,命令如下:

adb -s 74912e35 shell cat /data/system/packages.list | grep "包名" | awk '{print $2}'

3、通过UID获取操作过程中App使用的套接字,通过/proc/net/tcp和/proc/net/tcp6文件,来获取App在操作过程中使用的套接字,两者分别保存的是IPv4和IPv6的套接字信息,命令如下:

adb -s 74912e35 shell cat /proc/net/tcp | grep '12361(UID)'

返回结果:

37: 132014AC:B7CC 6CD777CB:01BB 01 00000000:00000000 00:00000000 00000000 12361        0 30936915 1 0000000000000000 26 4 30 10 1400

可以看到UID为12361的套接字信息是:IP地址132014AC,端口B7CC,两者均为十六进制数,需要转换为十进制数。


4、通过tshark命令行解析Pcap文件,命令如下:

tshark -r capture.pcap -qz conv,tcp

可以看到第1列就是会话的IP地址和端口号


image.png


通过匹配步骤3中获取的端口号,即可准确地得出被测App在该过程中消耗的流量。


Linux命令讲解


针对上面这个应用场景,我把其中用到的一些Linux命令和Shell脚本分别讲解一下。


cat

该命令是concatenate的简写,用户查看文件内容,后面跟上要查看的文件名即可。

cat /data/system/packages.list //查看/data/system/packages.list文件内容并输出


管道

说起“管道”,很容易让人想起现实生活中使用的水管、输气管等,它们的作用在于运输气体或液体等物质,有了管道,会让我们方便很多。在Linux中也存在着管道,它是一个固定大小的缓冲区,该缓冲区的大小为1页,即4K字节。管道是一种使用非常频繁的通信机制,我们可以用管道符“|”来连接进程,由管道连接起来的进程可以自动运行,如同有一个数据流一样,所以管道表现为输入输出重定向的一种方法,它可以把一个命令的输出内容当作下一个命令的输入内容,两个命令之间只需要使用管道符连接即可。

cat /data/system/packages.list | grep

可以看出,通过管道,使 cat /data/system/packages.list 命令输出的内容作为下一个命令grep的输入,这样就可以方便地过滤输出内容了。


grep

grep是Linux下非常强大的基于行的文本搜索工具,使用该工具时,如果匹配到相关信息就会打印出符合条件的所有行。


grep的参数很多,下面介绍一些常用的参数:

grep [-ivnc] '需要匹配的字符’ 文件名#-i不区分大小写#-c统计包含匹配的行数#-n输出行号#-v反向匹配

上面的例子中表示的就是将/data/system/packages.list文件的内容输入然后过滤出指定包名的行数。

cat /data/system/packages.list | grep "包名"

awk

awk是基于列的文本处理工具,它的工作方式是按行读取文本并视为一条记录,每条记录以字段分割成若干字段,然后输出各字段的值。事实上,awk是一种编程语言,其语法异常复杂,所以awk也是一种较难掌握的文本处理工具。


awk认为文件都是结构化的,也就是说都是由单词和各种空白字符组成的,这里的“空白字符”包括空格、Tab,以及连续的空格和Tab等。每个非空白的部分叫做“域”,从左到右依次是第一个域、第二个域,等等。$1、$2分别用于表示域,$0则表示全部域。


打印指定域

既然awk使用$1、$2代表不同的域,则可以打印指定域,拿上面的例子来说,我们想要打印IP和端口分别是172.20.32.19:39808的这一项,先用grep过滤出包含这一项的行:


image.png

接着将grep的输出作为awk的输入,打印第一列:


image.png

另外$0表示打印全部域:


image.png

打印指定分隔符

默认情况下awk是使用空白字符作为分隔符的,但是也可以通过-F参数指定分隔符,来区分不同的域,这里我们指定“<->”作为分隔符,这样每行的$1就是“<->”之前的字符,$2就是“<->”之后的字符:


image.png

内部变量NF

通过awk的内部变量NF可以简单地查看每一行有多少个域,当然,如果你指定了不同的分隔符,结果可能不一样:


image.png

打印固定域

通过内部变量可以简单地得到每行的列数,而如果在NF之前加上$符号,则代表“最后一列”,这样不管每行有多少列,只要使用$NF就能打印出最后一行:

image.png

截取字符串

可以使用substr()函数对指定域截取字符串,该函数的基本使用方法如下:

substr(指定域,第一个开始字符的位置,第二个结束的位置)#其中第二个结束的位置可以为空,这样默认输出到该域的最后一个字符

image.png


确定字符串的长度

使用内部变量length可以确定字符串的长度:

image.png

相关文章
|
3月前
|
监控 测试技术 Shell
APP的CPU,内存和流量如何测试?
APP的CPU,内存和流量如何测试?
|
7月前
|
Kubernetes jenkins 测试技术
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
129 1
|
12月前
|
运维 监控 安全
《2023云原生实战案例集》——06 医疗健康——谱尼测试 基于SAE实现业务快速上线并从容应对流量洪峰
《2023云原生实战案例集》——06 医疗健康——谱尼测试 基于SAE实现业务快速上线并从容应对流量洪峰
流量如何才能变现?实际测试谷歌广告联盟(Google Adsense)的广告效果以及如何优化相关代码
2010年,谷歌正式退出中国市场,无数人扼腕叹息,如今十年过去了,谷歌还有两条重要的业务线并没有完全退出,一个是页面统计业务(Google Analytics),另外一个则是谷歌广告联盟(Google Adsense),说起广告联盟,玩儿过网站的朋友应该并不陌生,对于中小型站长、博主来说,要想通过网站的流量取得一些收入,除了和一些线下线上厂商谈包月广告位,更多的可能就是投放广告联盟广告了。但随着网络广告的不断发展,广告形式有了很大的变化,出现了CPC、CPS、CPA、CPV等众多广告类型。
流量如何才能变现?实际测试谷歌广告联盟(Google Adsense)的广告效果以及如何优化相关代码
|
网络协议 Java Linux
Linux流量测试
由于要测试另一个IDC给的带宽是否给足了,所以要从一个机房打10G的流量到测试IDC。之初 采用多线程下载工具,多进程方法下载,可是不理想,跑量达不到要求。
|
测试技术 Shell Linux
Android应用启动流量自动化测试
之前《Tcpdump流量自动化测试上篇》、《Tcpdump流量自动化测试下篇》这两篇文章里讨论了如何通过tcpdump命令行工具来实现Android应用的流量自动化采集和分析,今天再来跟大家分享一下如何针对应用启动场景来做流量测试,有人可能会问了为什么是启动场景?因为现在工信部要求在用户没有授权网络请求前,应用不得擅自进行网络请求,特别是当跟厂商合作提供预装包的时候对此项的检查很严格。 另外跟大家说明一下,我分享的文章都是亲自实践过的,基本照着方案操作不会有大问题,默认情况下我所使用的操作系统都是MacOS。
281 0
Android应用启动流量自动化测试
|
网络协议 Unix Shell
Tcpdump流量自动化测试上篇
在实际的测试开发工作中,由于平时的工作机是Mac再加上自动化测试以及专项性能测试过程中经常会跟各种Linux命令打交道,所以看过好多讲Linux常用命令的书籍和资料,但里面讲到的每个命令的用法、参数都太大而全了,很容易吓退初学者,我觉得这种类型的书更适合作为工具书用来查阅。 这里我打算通过实际工作过程中具体的应用场景来讲解其中用到的一些Linux命令,本文就先以Android Tcpdump抓包分析应用启动流量来展开。
235 0
|
SQL 测试技术
一款流量审计设备压力测试操作
使用tcpreplay工具模拟镜像流量到审计设备,验证产品性能,使用工具重放h.pcap m.pcap l.pcap流量对设备测试
一款流量审计设备压力测试操作