中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 我写的一个“解码”程序; 上一主题 | 下一主题
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『楼 主』:  我写的一个“解码”程序;

经常会在网页上看到一些类似于%D6%D0%B9%FA 的字符,这是因为向WEB服务器提供非英文字符(如中文)时,都会以十六进制数传输,服务器会把它解码为实际字符(两个字符对应一个中文字符);
而有些网上木马病毒为了掩盖其真实意图也常常使用这种字符串(如前一阵子的about:blank病毒)
我写了一个小程序,输入码字符如:%D6%D0%B9%FA就可以得到真实字符串内容(如中国)
#include
#include

int main(void)
{
unsigned int i=0,max=30;
char* dest;
dest=(char*)malloc(max);
if(!dest)exit (1);
printf("input your code string: ";
while((dest=getchar())=='%')
{
        if((dest[++i] =getchar()) >= 'A')
                dest = ((dest & 0xdf) - 'A') + 10;
        else
                dest = dest - '0';
        if((dest[++i] =getchar()) >= 'A')
                dest = ((dest & 0xdf) - 'A') + 10;
        else
                dest = dest - '0';
        dest[i/3]=dest+dest[i-1]*16;
        i++;
        if(i==max)
        {
                max+=max;
                dest=(char*)realloc(dest,max);
                if(!dest) exit(1);
        }
}
dest[i/3]='\0';
printf("this decode string is:%s\n",dest);
free(dest);
return 0;
}


2004-6-15 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5792
发帖 1921
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 2 楼』:  

谢谢楼主了。支持原创。



熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
2004-6-16 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (79207959)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: