You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vugen中SurePhrase随机密码位提交的参数关联与赋值实现咨询

Vugen处理SurePhrase动态密码提交实现方案

1. 预定义字符映射

固定密码password1共9位,和Piece1~Piece9括号内的标识一一对应,首先在脚本中定义映射关系:

// 数组下标0对应Piece1,依次类推,存储对应位置的密码字符
const char pwd_chars[9] = {'p','a','s','s','w','o','r','d','1'};

2. 动态拼接请求Body

通过循环遍历所有Piece参数,判断是否为需要提交的动态字段,自动拼接键值对:

Action()
{
    char body_buf[1024] = {0}; // 存储最终拼接的Body内容
    char piece_param[16] = {0};
    char field_check[16] = {0};
    char *piece_val;
    int has_content = 0; // 标记是否已有有效键值对,避免开头多冗余&符号
    int i;

    // 遍历9个Piece参数
    for(i=1; i<=9; i++){
        // 生成当前Piece参数名,例如Piece5
        sprintf(piece_param, "Piece%d", i);
        piece_val = lr_eval_string(piece_param);
        
        // 生成对比用的fieldX值,例如field5
        sprintf(field_check, "field%d", i);
        
        // 判断当前Piece值不是fieldX,属于需要提交的动态字段
        if(strcmp(piece_val, field_check) != 0){
            if(has_content == 1){
                // 已有内容先拼接&分隔符
                strcat(body_buf, "&");
            }
            // 拼接键值对:[动态字段ID]=[对应密码字符]
            strcat(body_buf, piece_val);
            strcat(body_buf, "=");
            strncat(body_buf, &pwd_chars[i-1], 1);
            has_content = 1;
        }
    }
    // 拼接末尾固定参数
    strcat(body_buf, "&landingpage");
    
    // 将拼接好的Body存为参数供提交请求调用
    lr_param_sprintf("DynamicBody", "Body=%s", body_buf);

    // 原有提交请求直接替换Body为{DynamicBody}即可
    web_submit_data("login_submit",
        "Action=https://你的登录提交地址",
        "Method=POST",
        lr_eval_string("{DynamicBody}"),
        LAST
    );

    return 0;
}

注意事项

  • 运行前需确认你抓取到的Piece参数数量和密码长度匹配,如果后续密码长度或者Piece参数数量变化,修改数组长度和循环上限即可
  • 若动态字段值存在特殊字符,需要额外做URL编码处理,可调用Vugen内置的web_url_encode函数对值做转义

内容的提问来源于stack exchange,提问作者Hendri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:01