51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3534|回复: 12
打印 上一主题 下一主题

[原创] 一个脚本乱码转义的研究!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-3-9 17:40:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用socket协议录制了 一段脚本, 里面有乱码,
我就像把乱码 转义,只有先转义才能做参数化。
提供参考资料:
lr_convert_string_encoding 这个可以转义分4种
   int lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);
    该函数有4个参数,含义如下:
    sourceString:被转换的源字符串。
    fromEncoding:转换前的字符编码。
    toEncoding:要转换成为的字符编码。
    paramName:转换后的目标字符串。

请问怎么把这个socket 中action录制的buf12这个包里 对应data.ws里面buf12里面的数据进行转义后,在参数化。能写句例子吗?先谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-3-9 18:35:26 | 只看该作者
参考这个帖子http://www.51testing.com/index.p ... space-itemid-200711

ps,你要data.ws里面的东西参数化直接在这个文件里面写<参数名>就可以了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-3-16 18:57:45 | 只看该作者

不行啊

data.ws里面都是乱码怎么直接参数化呢?
send  buf8 271
        "ddt"
        "\x00\x01"
        "\n"
        "\x00\x00\x00"
        "`"
        "\x10\x05"
        "RH"
        "\x11\x11\x11\x11\x12"
        "\"\"\"44444444455
我想把这些数据参数化,应该怎么办
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-3-16 20:24:57 | 只看该作者
这不是乱码,本来就是这个,用了socket 你必须知道编码的格式和含义,内容封包后是16进制而已
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-3-17 00:18:30 | 只看该作者
把以下函数加入到你的 global.h 文件下,调用这个函数,可以输出你要的字符串对应的16进制编码,将此编码作为参数到你要参数的地方就OK 了。

void fdk_out_message_to16(void *_hexbuf, int _bufsize)
{
   /************************************
                说明:16进制方式方式打印出参数内容
                参数: _hexbuf = string
                        _bufsize = 3 (字符串长度)
                copyright 2009/07/07 by Fin.
        *************************************/
        int _i;
        unsigned char *_buf_str;
        unsigned char *_x;

        _buf_str = (unsigned char *)malloc(_bufsize * 4 + 1);
        _x = _buf_str;       
        memset(_x, 0, _bufsize*4+1);

        for(_i = 0; _i < _bufsize; _i++)
        {       
                sprintf(_x, "%x ",((unsigned char *)_hexbuf)[_i]);
                _x = _x+3;
        }

        lr_message("[Fin] =>(to16) %s = #%s# \n", _hexbuf, _buf_str);

        free(_buf_str);
}
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-3-17 15:19:47 | 只看该作者

global.h 文件


global.h 文件这个文件在哪没找到,
我还没有弄清楚,能在详细说下吗?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-3-18 09:34:31 | 只看该作者

急啊

data.ws里面都是乱码怎么直接参数化呢?
send  buf8 271
        "ddt"
        "\x00\x01"
        "\n"
        "\x00\x00\x00"
        "`"
        "\x10\x05"
        "RH"
        "\x11\x11\x11\x11\x12"
        "\"\"\"44444444455
我想把这些数据参数化,应该怎么办,哪个知道下这段参数的步骤实现及说明啊
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-3-18 11:06:53 | 只看该作者
云层大师说的对,你先搞明白你抓的数据的含义

举个例子:
比如第一行“ddt”代表一个用户的帐号,你就把其他帐号写在参数列表里对“ddt”进行参数化就行了
再比如第二行“\x01”意思是这个字节是十进制数1,这个1代表一个标志位,标志男性(0标志女性),你就可以把0也参数化进去了

以上所说的这些含义你可以问开发人员,是他开发的他就一定知道


我不知道我说这么多你明白没!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2010-3-18 18:49:21 | 只看该作者

我明白你的意思

我就是开发人员,这个数据原来不是这样的,但是录下来就是这样的了,我想把他转成我能看得懂的显示形式,在参数化。ddt后面跟的 是 十六进制字符串格式的,一些数据。比如说这些相当于 64647400010A0500000000530100001877000000601....数据。
我现在想 参数化这些数据继续发送。但录下来的东西没弄懂还。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-3-19 09:29:45 | 只看该作者
你要参数化的地方应该不会很多吧,如果不多的话,把需要参数化的地方自己人工翻译成字符串吧(自己参照assic码表)
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2010-3-19 12:10:15 | 只看该作者

呵呵

谢谢楼上的方法,让我弄了几个小时,还好数据不多,但不知道有没有更简便的方法,如果数据量大怎么办呢,写函数行吗?可惜我不会写脚本,希望楼下的继续讨论。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-3-19 14:47:33 | 只看该作者
一个土点的办法:
先查找替换,把你录的十六进制数中“\”替换成“0”,然后再复制到一起,
比如“\x01\x02\x03”替换成“0x010x020x03”

然后就可以用这个函数了(在loadrunner中执行)
        char* end;
        long l;
        char buf[]="0x010x020x03";(把刚才替换完的串粘到这)
        char buf2[5];
        int i;
        int j;
        j=strlen(buf);
        for(i=0;i<j;i=i+4)
        {
        memset(buf2,0,sizeof(buf2));
        memcpy(buf2,buf+i,4);
        l=strtol(buf2,&end,16);
        lr_output_message ("%s 是 %c",buf2,l);
        }
    return 0;

这样程序就自动替你翻译了,你就不用自己查assic表了
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2010-3-24 17:59:15 | 只看该作者

我就是用的这个土办法,但是也感觉不方便哈。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 08:24 , Processed in 0.068036 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表