jmeter脚本处理加密验签

news2024/9/20 21:32:04

一 、账号密码加密

1.1 背景:

一个登录接口,账号是明文传输,但是密码要先经过加密,再做传输。

比如:

一个用户,账号为123465 密码为 abcde

实际上登录接口,请求,传参为

账号 123465

但是密码经过 了加密为 agce43===dxe/z 

1. 2 举例:

我们这里举一个小例子,实战一下。

get 请求 www.baidu.com 这个请求。 传参一共三个,name(用户名)、password(密码)、和type

账号为 123465,密码为 abcde。type是固定的1

密码加密规则为,密码字符串的前后各拼接一个test。

如 密码为 abcde ,加密后的密码为 testabcdetest

name:123465

password:testabcdetest

type:1

二  js处理账号密码加密

1、前提:

我们使用js来写脚本

用户账号信息,我们使用参数化,读取txt文件。

2、整个脚本结构

 

3、数据准备

一共两个账号:

12345,adcd
1234567,hhhav

新建一个txt文件,然后写入这两个账号。命名为user.txt

在jmeter中:

添加--》配置元件--〉CSV Data Set Config

 

CSV 数据文件设置: 

 文件名:文件的路径

变量名:我们一共需要两个变量,用户名的变量为user,密码对应的变量名为pwd

读取txt文件,从第一行开始读取

txt每一行数据,多个变量之间,用,进行分割

4、http 取样器配置

4.1 传参为form表单格式

 name ,读取txt得到的变量 ${user}

password,是经过加密处理后,得到的${encrypt_pwd}

type 为固定的1

4.2 传参为json格式

{
	"name":"${user}",
	"password":"${encrypt_pwd}",
	"type":1
	}

 

5、js编写脚本

添加前置处理器

添加--前置处理器--- JSR223 PreProcessor

 脚本内容:

// pwd是传参
function enc(pwd) {

    var pwd = "test"+pwd+"test"
    return pwd;
}

// ${pwd}" 是从txt读取的密码的变量
var encrypt_pwd = enc("${pwd}");
// js脚本将变量encrypt_pwd 传给jmeter,这个变量的名称为"encrypt_pwd"
vars.put("encrypt_pwd", encrypt_pwd);

脚本语言选择js 

6、运行脚本 

设置线程组为2

 再添加一个查看结果树。

运行脚本,查看结果。

查看请求的传参


GET data:
{
	"name":"1234567",
	"password":"testhhhavtest",
	"type":1
	}



 密码就是我们加密后的。

三、BeanShell 处理账号密码加密

 1、前提:

我们使用BeanShell 来写脚本

用户账号信息,我们使用参数化,读取txt文件。

2、整个脚本结构

 

3、数据准备

一共两个账号:

12345,adcd
1234567,hhhav

新建一个txt文件,然后写入这两个账号。命名为user.txt

在jmeter中:

添加--》配置元件--〉CSV Data Set Config

CSV 数据文件设置: 

 文件名:文件的路径

变量名:我们一共需要两个变量,用户名的变量为user,密码对应的变量名为pwd

读取txt文件,从第一行开始读取

txt每一行数据,多个变量之间,用,进行分割

4、http 取样器配置

4.1 传参为form表单格式

 name ,读取txt得到的变量 ${user}

password,是经过加密处理后,得到的${encrypt_pwd}

type 为固定的1

4.2 传参为json格式

{
	"name":"${user}",
	"password":"${encrypt_pwd}",
	"type":1
	}

5、添加BeanShell 预处理程序

添加--前置处理器---BeanShell PreProcessor

 编写BeanShell脚本,其实就是java脚本。

我们先在idea中,写好java脚本,再放到jmeter中。

// 加密方法
public class Enc {
    public String getPwd(String pwd){
        return "test"+pwd+"test";
    }
}

// 调用我们的加密方法
Enc enc = new Enc();
// 将txt文档中的${pwd}变量传到脚本中
String encrypt_pwd = enc.getPwd("${pwd}");
// 将脚本中的变量,传到jmeter中
vars.put("encrypt_pwd", encrypt_pwd);

 

 6、运行脚本 

设置线程组为2

 再添加一个查看结果树。

运行脚本,查看结果。

查看请求的传参


GET data:
{
	"name":"1234567",
	"password":"testhhhavtest",
	"type":1
	}



 密码就是我们加密后的。

三、调用jar处理账号密码加密

后续我更新。。。

四、 验签加密

4.1 背景:

一个接口,header中存在sign 验签。

sign 验签 是 请求传参,经过一系列计算得出来的。

4.2 举例

我们这里举一个小例子,实战一下。

get 请求 www.baidu.com 这个请求。 传参一共三个,name(用户名)、password(密码)、和type

账号为 123465,密码为 abcde。type是固定的1

密码加密规则为,密码字符串的前后各拼接一个test。

如 密码为 abcde ,加密后的密码为 testabcdetest

name:123465

password:testabcdetest

type:1

header,存在sign。 

sign 是请求参数的值,多个k=v,拼接起来的。

如此处的sign应为

sign=123465password=testabcdetesttype=1

五、js处理验签

1、整体项目结构

 

2、添加请求头

添加--配置元件--HTTP信息头管理

配置 sign,声明sign的值为变量#{sign} 

 

 3、http 取样器处理

将所有的传参整体,作为一个变量${param}

 4.js脚本




// pwd是传参
function enc(pwd) {

    var pwd = "test"+pwd+"test";
    return pwd;
}

// 验签加密方法
// 这里我只是简单的将json 转化为字符串了
function sign(param) {
    var jsonStr = JSON.stringify(param);
    return jsonStr;
}

// ${pwd}" 是从txt读取的密码的变量
var encrypt_pwd = enc("${pwd}");
// js脚本将变量encrypt_pwd 传给jmeter,这个变量的名称为"encrypt_pwd"
vars.put("encrypt_pwd", encrypt_pwd);

// 获取整个传参
var param = {"name":"${user}","password":"${encrypt_pwd}","type":1};

// 获取验签
var sign = sign(param);
// 将 传参数与 验签吐给jmeter
vars.put("sign", sign);
vars.put("param", JSON.stringify(param));






注意:

写js脚本的时候, 容易格式写错,而且这个编译器也没有格式校验,所以写的时候一定要仔细。

每行代码是以;结尾。

5、运行脚本,查看结果树

 请求的参数及header 都是我们处理后的。 

六、BeanShell处理验签

七、jar包处理处理验签

八、相关文章:

jmeter 使用beanshell 编写脚本_做测试的喵酱的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用傅里叶级数展开法从谐波的和中产生方波(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 谐波是指对周期性非正弦交流量进行傅里叶级数分解所得到的大于基波频率整数倍的各次分量,通常称为高次谐波&#xf…

C++11 可变参数模板

作者:小萌新 专栏:C进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍C11的可变参数模板 可变参数模板可变参数模板的概念可变参数模板的定义方式参数包两种解开方式递归展开参数包逗号表达式展开参数包…

Springboot在线考试管理系统

一、项目简介 本项目是一套基于Springboot在线考试管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,…

java基于springboot+vue的校园跑腿系统

随着我国教育制度的改革的发展,各大高校的学生数量也在不断的增加。当前大学生的生活和消费习惯等导致他们更喜欢通过网络来获取自己想要的商品和服务,这也是导致当前校园跑腿盛行的主要原因。为了能够让更多的学生享受到校园跑腿的服务,我们…

中睿天下荣获中国网络安全产业联盟(CCIA)2022年度先进会员单位奖

近日,中国网络安全产业联盟(CCIA)发布“关于2022年度表彰先进的决定”,对在联盟工作中做出积极贡献的会员单位进行表彰,中睿天下荣获中国网络安全产业联盟“2022年度先进会员单位“奖。中国网络安全产业联盟成立于2015…

Linux基本使用

文章目录1. Linux 基本命令文件内容查看命令wget下载tar.gz文件tar压缩解压缩yum2. 安装node/npm下载解压配置环境变量设置npm代理3. 权限1. Linux 基本命令 ls:用来查看当前目录文件 # 查看隐藏文件 -a ls -a # 查看详细信息 -l 简写为 ll ls -l ll # 查看指定目…

Docker - 8. Docker镜像底层原理

目录 1. 镜像是什么 2. UnionFS 联合文件系统 3. Docker镜像加载原理 4. Docker 容器和镜像的底层关系 5. Docker 镜像 commit 操作案例 1. 镜像是什么 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还…

漏洞深度分析|Apache iotdb-web-workbench 认证绕过漏洞(CVE-2023-24830)分析

项目介绍 IoTDB-Workbench是IoTDB的可视化管理工具,可对IoTDB的数据进行增删改查、权限控制等。 项目地址 https://github.com/apache/iotdb-web-workbench 漏洞概述 Apache iotdb-web-workbench 由于硬编码了jwt token加密密钥,导致攻击者可以伪造t…

数仓之缓慢变化维(拉链表)

文章目录缓慢变化维拉链表 -- 理论缓慢变化维解决方案:拉链表场景:拉链表缺点:拉链表查询优化:拉链表 -- 示例sql查询方式补充流水表全量表增量表缓慢变化维 什么是缓慢变化维? 缓慢变化维,简称SCD(Slowl…

科技云报道:上云尚未成功,“下云潮”已悄然来临?

科技云报道原创。 云计算一直被视为是企业数字化转型的底座,很多企业都在通过加速数字化转型应对市场环境的动荡变化,一手抓降本增效,另一手也还在继续谋求突破式创新。 然而,经历这两年的疫情,活下去成为每一个企业的…

【js逆向 | 网络爬虫】简单 js 逆向实践,获取邮箱地址

网站&#xff1a; https://australia51.com/citywide/ 在各个城市分类下&#xff0c;可以看到商家链接 而部分商家介绍中&#xff0c;含有邮箱 我们通过 f12 检查元素&#xff0c;发现邮箱字段在 html 里面。 但是抓包发现&#xff0c;该字段是 <a href"/cdn-cg…

Anaconda环境Python中xlrd库的配置方法

本文介绍在Anaconda环境下&#xff0c;安装Python读取.xls格式表格文件的库xlrd的方法。 首先需要说明的是&#xff0c;由于xlrd库在读取.xlsx格式文件时具有安全漏洞&#xff0c;因此在其2.0.0及以后的版本中&#xff0c;只能读取.xls格式的表格文件&#xff1b;如果需要读取其…

C语言中字符串库函数

目录1.求字符串长度strlen模拟实现strlen2.长度不受限制的字符串函数strcpy模拟实现strcpystrcat模拟实现strcatstrcmp模拟实现strcmp3.长度受限制的字符串函数介绍strncpy模拟实现strncpystrncat模拟实现strncatstrncmp模拟实现strncmp4.字符串查找strstr模拟实现strstrstrtok…

POE交换机全方位解读(下)

POE供电在安防系统中的应用 安防行业应用PoE组网主要有简化布线、节能灵活、安全方便等优势。众所周知&#xff0c;一般的网络摄像机除了需要通过网线来传输视频信号外&#xff0c;还必须全天候为其提供足够的电力。而在现实施工中&#xff0c;经常会出现因为无法提供稳定的电源…

[SSL]微信实机测试 request:fail -2:netLERR_FAILED

request:fail -2:netLERR_FAILED 微信小程序开发过程中&#xff0c;实机测试调用服务器链接报错。 SSL证书已安装&#xff0c;通过下面工具检查&#xff0c;中间证书安装有问题。 下面是检查证书链和补全证书链的工具网站&#xff0c;亲测有效。 w​​​​​​​​​​​​​…

[数仓]埋点数据接入

第40个视频的1&#xff1a;03&#xff1a;31一、采集flume日志服务器&#xff1a;将日志采集到本地&#xff0c;共有两个日志服务器&#xff0c;因此要安装两台flume&#xff0c;每个flume采集其所在服务器上的日志source:taildir source可以实时的读取文件中的数据&#xff0c…

详解Linux中网络文件系统

目录 前言 一、samba服务简介 1、windos如何共享文件 2、在linux中访问共享文件 二、samba基本信息 三、samba的安装与启用 1.服务端 2.客户端 3.服务启用 四、建立samba服务共享目录 五、samba用户的建立 六、 samba用户访问加目录 七、samba的访问控制 八、 sa…

Web(十一)

Request 1. request对象和response对象的原理 1. request和response对象是由服务器创建的。我们来使用它们 2. request对象是来获取请求消息&#xff0c;response对象是来设置响应消息 2. request对象继承体系结构&#xff1a; ServletRequest -- 接…

Kafka知识概况

Kafka知识概况Kafka简介Kafka 生产者Kafka BrokerKafka 消费者Kafka-Eagle 监控Kafka-Kraft 模式集成 SpringBootKafka简介 消息队列简介&#xff1a; 目 前企业中比较常见的消息队列产 品主 要有 Kafka、ActiveMQ 、RabbitMQ 、RocketMQ 等。在大数据场景主要采用 Kafka 作为…

【ElasticSearch8.X】学习笔记(一)

【ElasticSearch8.X】学习笔记一、8.x与7.x的对比二、安装elk8.x2.1、下载2.2、集群规划2.3、安装2.4、配置环境2.5、修改配置文件2.6、启动2.5、安装其他结点三、Kibana 安装3.1、下载3.2、配置环境3.2、修改配置文件3.4、启动一、8.x与7.x的对比 减少内存堆使用&#xff0c;…