手把手教你jmeter+fiddler处理加密 解密 以及断言处理
Posted 飞测
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你jmeter+fiddler处理加密 解密 以及断言处理相关的知识,希望对你有一定的参考价值。
飞测说:互联网在发展,安全问题也是开始被重视,我们很多应用开始采取数据加密了,这给做接口测试的我们带来了一些挑战,今天我们来说说那些加密解密的事情,手把手教你如何使用fiddler+Jmeter来操作。
第一步、 Fiddler的使用在本文中就不介绍了,直接进行使用,首先用进行抓包处理加密报文;
第二步、(因为fiddler抓包是经过URL转码,所以需要进行一步URL解码,解码效果如下)
第三步、
一、 下面是解码之前的报文,包含两个字段k,与d,这个是我们需要提交的表单数据;
k=vMMHIfRdhQX5FPhIs1l8MXSrHR%2BhDLYRvuuOudttz3l2Eo%2FOnMd1o0oCf%2FM%2FCOGfGa1XE8nQZcm7GxwjtyEGkgGiRW2nRTIlesfXaR%2FFvHFKoxMUDYV5ngzIf%2B8jAp86gu2Imq8mfkvPI7fxhbkZ%2FdwkwS0c5b3i4FwAvaoBlIk%3D&d=D450EB4A40FDB924FDAD0ABF484E488B1623CA789718148522D4595489DD1D0508C1DF64A03AF16DB963C05F588D699955CEB043120FE7B4FEE8372F863033A821115FE8E72109E910664735EA5CA7BCFC44BEA367C3FCDE7663FA42E2ECF048555D51F4535CAA079BAFFF4051C6ED44D2F8BECA694478406102B7D970EBCD07EB946E3E37DE42E23C5CE8270AA401D88D7FB3B82D8945C2E6B25499BD893E1A73439935C171283CF0E06C091D96141034CA256C7873E1687853ED49C1A98EF4546696E626E8848B6D6F4CF87E540AD0DAF680FD256102B03CBFFDB17B2E82291E50F596ED9BC19A3ECA86E4301FA43CF957E7E83530BB1C6096D1FE0F9E3ACFAA51D12DBF7FA1E134435E2C744D195275C9884454763719BA888EBD4B3C15D81B0D37189277858DADEE39FD75C5EBCE50B0C89279A1776BC05CC6E7DF26F240938170AB6BBBBBE47282FD4A8BAB65CBD38D789B2C7A991B385E597E8AEAD5B6C2419A0033D14962E348B37E64A5995481F7ED4138797B8DB1170B8B798CE0FFF9C49096527D994F8C12B818AF412F3E7762190CAB1E49413DA05D0F4B63715B109AFE45FE7DA9E5D218BB45E7358CA1AA69EF2AB83C74280CCDE5CB1F281541&
二、将抓取的加密报文进行URL解码,解码结果如下
k=vMMHIfRdhQX5FPhIs1l8MXSrHR+hDLYRvuuOudttz3l2Eo/OnMd1o0oCf/M/COGfGa1XE8nQZcm7GxwjtyEGkgGiRW2nRTIlesfXaR/FvHFKoxMUDYV5ngzIf+8jAp86gu2Imq8mfkvPI7fxhbkZ/dwkwS0c5b3i4FwAvaoBlIk=&d=D450EB4A40FDB924FDAD0ABF484E488B1623CA789718148522D4595489DD1D0508C1DF64A03AF16DB963C05F588D699955CEB043120FE7B4FEE8372F863033A821115FE8E72109E910664735EA5CA7BCFC44BEA367C3FCDE7663FA42E2ECF048555D51F4535CAA079BAFFF4051C6ED44D2F8BECA694478406102B7D970EBCD07EB946E3E37DE42E23C5CE8270AA401D88D7FB3B82D8945C2E6B25499BD893E1A73439935C171283CF0E06C091D96141034CA256C7873E1687853ED49C1A98EF4546696E626E8848B6D6F4CF87E540AD0DAF680FD256102B03CBFFDB17B2E82291E50F596ED9BC19A3ECA86E4301FA43CF957E7E83530BB1C6096D1FE0F9E3ACFAA51D12DBF7FA1E134435E2C744D195275C9884454763719BA888EBD4B3C15D81B0D37189277858DADEE39FD75C5EBCE50B0C89279A1776BC05CC6E7DF26F240938170AB6BBBBBE47282FD4A8BAB65CBD38D789B2C7A991B385E597E8AEAD5B6C2419A0033D14962E348B37E64A5995481F7ED4138797B8DB1170B8B798CE0FFF9C49096527D994F8C12B818AF412F3E7762190CAB1E49413DA05D0F4B63715B109AFE45FE7DA9E5D218BB45E7358CA1AA69EF2AB83C74280CCDE5CB1F281541&
第四步、利用eclipse将报文进行解密,可以看到解密结果如下,代码如下(最好能有一点java代码基础效果比较好,在这里最好是研发同事配合处理,这样可以加快速度,减少在解码中的失误),
打印结果如下:第三次打印:{"a":"10003","av":"1.1","auth":"","d":{"cpu":"","dm":"a5ltezc","imei":"357095064513509","mac":"0C:B3:19:92:D1:AA","os":"A","ov":"4.4.4","sh":"1280","sw":"720","uuid":"b972f9df2bfb52316a80b8309a16354b"},"m":"Gyai0019","p":{"jsonStr":"{\"head\":{\"token\":\"0\",\"encrypt\":\"0\",\"version\":\"65\"},\"body\":{\"pageSize\":\"10\",\"currentPageNo\":\"1\",\"orderType\":\"0\",\"community\":\"340111030001\"}}"},"sn":"ef212c6b64d449fe9b6fa0b744b1a504"}
第五步、这里将加密之后的报文进行解密操作,下面主要是介绍jmeter,先新建线程组
第六步、新建一个线程组
简单介绍一个,默认线程数是1,Ramp UpPeriod(in seconds) 则表示jmeter达到最大线程数的一秒;
第七步、本次的例子主要是进行json格式数据提交,所以需要设置一下,同时普及一下知识,同时要注意设置信息头存储信息管理器中 Content-Type 一定要设置如图所示
第八步、在这里说明一下,因为我们需要将发送的数据需要进行加密处理,所以现将加密包存放到lib/ext下面,(这里加密包可以找研发人员要,他们一般都会提供相关的加解密包)箭头下方则是存放的加密包,
第九步、将解密之后的文件存放到用户定义的变量之中(建议不要使用 用户定义的变量 而使用用户参数 , 通过查看日志 用户定义的变量 是一个全局变量)如下图所示
第十步、利用前置bean shellPreprocess进行数据加密,可以实现java脚本的编写,这里可以到看到我们引用的相应的class , 同时也有自身的自身的语法 ,
BeanShell是一种完全符合语法规范的脚本语言,并且又拥有自己的一些语法和方法;
BeanShell是一种松散类型的脚本语言(这点和JS类似)
BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。
BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法
其中 vars 是 map 对象是 jmeterbean shell 内置的。put 到 vars 里就可以用 ${var_name} 引用它的内容了。但需要注意的是 vars 的值是字符串的例如:vars.put("da",data001);
第十一步、新建http请求,同时将定义好的变量参数化形式填写在Parameter中,在这里看到看到${da} ${ke} 就是通过jmeter bean shell取得值, 备注:(这里的编码如果打钩则表明进行了URL转码)
第十二步、利用正则表达式获取http请求返回的信息,k是变量名 这里是将加密的返回报文按照解密规则,将其解密(在返回的加密报文中也是有k,与d两个变量,这里需要将k,与d变量的加密的结果存储到新建立的变量k与d中)
备注:
1、要检查的字段:主体等选择,一般我们选择主体,即服务器返回给我们的页面主体信息
2、引用名称:即参数名称,这个自己定义,在后面时可用
3、正则表达式: 正则表达式中()括起来的部分就是要提取的。.代表任意字符,+代表出现任意次,后面加?。
4、模板:$1$代表只有一组数据
5、匹配数字:0代表随机取值,1代表全部取值,通常情况下填0,
6、缺省值:如果参数没有取得到值,那默认给一个值让它取
第十三、利用后置处理器,将返回的加密结果进行解码,将返回结果存放在变量中
第十四、断言处理,JmeterVariable resp
本文主要是简单介绍利用jmeter实现,报文加密与解密的http请求,以及在针对加密结果返回之后,怎样处理断言的方式,将相关的知识点进行串起来,实现在实际项目中怎样运用相关的小知识点,起到一个抛砖引玉的作用。
好了,本次到此,欢迎留言、点赞、转发等来交流,更多分享下期再会,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下:
以上是关于手把手教你jmeter+fiddler处理加密 解密 以及断言处理的主要内容,如果未能解决你的问题,请参考以下文章