>> 欢迎您, 傲气雄鹰: 重登陆 | 退出 | 注册 | 资料 | 设置 | 排行 | 新贴 | 精华 | 管理 | 帮助 首页

  小榕软件实验室
  刀光雪影
  URL编码及C语言实现
发表文章 发表涂鸦
  回复数:8  点击数:263 将此页发给您的朋友        
作者 主题: URL编码及C语言实现 回复 | 收藏 | 打印 | 篇末
我饿了帅哥哦
级别:老 站 友
威望:0
经验:0
货币:827
体力:63.1
来源:61.158.88.*
总发帖数:294
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

Stamina(我饿了)
http://substorm.yeah.net/
2002.4.17

由于时间的仓促.没有能够很好的了解URL编码.所以为大家做如下简单的解释.
首先将字符转换为ASCII码,之后将ASCII制转换成16进制.再在前面加上一个"%"就是该字符的URL编码了!~(注:空格会被编成加号"+").如果你弄过CGI安全.一定会了解这东西.

最近analysist的跨站攻击不知大家看过没有..我想这东西会对跨站攻击有所帮助...想想看.你知道这样的连接是什么吗??
%73%75%62%73%74%6F%72%6D%2E%79%65%61%68%2E%6E%65%74
在地址栏中输入并访问你就知道是什么了:).我想这样的链接隐蔽性还是比较大的吧~


知道编码方法后就好办了.这里用C写了一段代码.可用来将字符转换成URL编码.程序写的简陋.所以请高手们不要吝惜你们的批评.只有这样我才可以写的更好.谢谢!~.
由于时间问题.没有加入解码部分.等有时间吧~希望能对你有所帮助.

这是编译好的一个可以直接下载.


#include <stdio.h>


void usage(char *);
int main(int argc, char* argv[])
{
int c;
char *h = "0123456789ABCDEF";

if (argc !=2)
usage(argv[0]);
else
do
{

c = *(argv[1]++);
if (c==' ')
putchar('+');
else
{
putchar('%');
putchar(h[c >> 4]);
putchar(h[c & 0X0F]);
}
}
while(*argv[1]);

}
void usage(char *proname)
{
printf("Power by Stamina 2002.4.17"
"\nWelcome to http://Substorm.yeah.net/"
"\nThank you for RockTank!!"
"\n\nUsage: %s <string>"
"\ne.g. : %s substorm.yeah.net",proname,proname);
}

/* WindowXP + VC++6.0 */

下面放上一段analysist用perl写的程序.而且可以解码.推荐!!!!

#!/usr/bin/perl
#Proof of Concept
#URL Encode & Decode Script
#Codz by analysist <analysist@nsfocus.com>

$ARGC = @ARGV;
if ($ARGC != 2) {
print "Usage: $0 <option> <string>\n";
print " 1:url encode \n";
print " 2:url decode \n";
exit;
}

$option = shift;
$string = shift;

if ($option == 1) {
@todo = split("",$string);
@todo2 = map(ord($_),@todo);
@todo3 = map(&int2hex($_),@todo2);
$string = join("%",@todo3);
$string = "%".$string;
print $string;
}
elsif ($option == 2) {
$string =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
print $string;
}
else {
print "Invalid option!\n";
exit;
}

sub int2hex {
my ($int) = @_;
push(@int,int($int/16));
push(@int,int($int%16));
@xxx = (10,11,12,13,14,15);
@yyy = (A,B,C,D,E,F);
$x = 0;
while ($x < @int) {
$y = 0;
while ($y < @xxx) {
if ($int[$x] eq $xxx[$y]) {
push(@hex,$yyy[$y]);
last;
}
$y++;
}
if ($hex[$x] eq "") {
push(@hex,$int[$x]);
}
$x++;
}
$hex = join("",@hex);
undef @int;
undef @hex;
return $hex;
}
----------------------------------------------------------
我有空~~我兼职~~我赚钱~~

编辑 删除 发表时间发表于 2002-04-17.00:37:33   MSIE 5.0 Windows 98IP: 已记录
我饿了帅哥哦
级别:老 站 友
威望:0
经验:0
货币:827
体力:63.1
来源:61.158.88.*
总发帖数:294
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

如果对你有用一定请我吃饭呀~!
因为..现在已经是0:29了..刚刚又被老妈骂了!~
明天还要上课呀~~~!!不行了..去睡了!~~...
----------------------------------------------------------
我有空~~我兼职~~我赚钱~~

编辑 删除 发表时间发表于 2002-04-17.00:42:17   MSIE 5.0 Windows 98IP: 已记录
0BIRD帅哥哦
级别:本站元老
威望:0
经验:0
货币:910
体力:40
来源:来自黑龙江省
总发帖数:1027
注册日期:2002-03-17
查看 邮件 主页 QQ 消息 引用 复制 下载 

好,我请客你买单!到头还是我付账
----------------------------------------------------------
http://bbs.netxeyes.org/image/bbs3000/affix/20020603023845.jpg

编辑 删除 发表时间发表于 2002-04-17.03:01:42   MSIE 5.0 Windows 98IP: 已记录
我饿了帅哥哦
级别:老 站 友
威望:0
经验:0
货币:827
体力:63.1
来源:61.158.88.*
总发帖数:294
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

原文由 0BIRD 发表:
好,我请客你买单!到头还是我付账

好呀~!!
----------------------------------------------------------
我有空~~我兼职~~我赚钱~~

编辑 删除 发表时间发表于 2002-04-17.12:12:09   MSIE 5.0 Windows 98IP: 已记录
蔚蓝元素帅哥哦
级别:老 站 友
威望:0
经验:0
货币:1147
体力:70.9
来源:其它
总发帖数:268
注册日期:2002-02-28
查看 邮件 主页 QQ 消息 引用 复制 下载 

我饿了
可以不可以回一下我的帖子,多谢了:)
----------------------------------------------------------

编辑 删除 发表时间发表于 2002-04-17.12:14:43   MSIE 5.01 Windows 2000IP: 已记录
我饿了帅哥哦
级别:老 站 友
威望:0
经验:0
货币:827
体力:63.1
来源:61.158.88.*
总发帖数:294
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

原文由 蔚蓝元素 发表:
我饿了
可以不可以回一下我的帖子,多谢了:)

??????????????
----------------------------------------------------------
我有空~~我兼职~~我赚钱~~

编辑 删除 发表时间发表于 2002-04-17.22:21:42   MSIE 5.0 Windows 98IP: 已记录
我饿了帅哥哦
级别:老 站 友
威望:0
经验:0
货币:827
体力:63.1
来源:61.158.88.*
总发帖数:294
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

好像?????????
----------------------------------------------------------
我有空~~我兼职~~我赚钱~~

编辑 删除 发表时间发表于 2002-04-17.22:44:18   MSIE 5.0 Windows 98IP: 已记录
雪狼湖帅哥哦
级别:精灵王
威望:0
经验:2
货币:1832
体力:100
来源:218.26.32.*
总发帖数:472
注册日期:2002-01-19
查看 邮件 主页 QQ 消息 引用 复制 下载 

很好可惜我看不懂
留着我以后慢慢研究吧!!
谢谢我饿了
----------------------------------------------------------

编辑 删除 发表时间发表于 2002-04-18.00:07:26   MSIE 6.0 Windows 98IP: 已记录
我饿了帅哥哦
级别:老 站 友
威望:0
经验:0
货币:827
体力:63.1
来源:61.158.88.*
总发帖数:294
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

原文由 雪狼湖 发表:
很好可惜我看不懂
留着我以后慢慢研究吧!!
谢谢我饿了

C语言的基本东西....很好懂~!
不用客气.
----------------------------------------------------------
我有空~~我兼职~~我赚钱~~

编辑 删除 发表时间发表于 2002-04-18.12:45:37   MSIE 5.0 Windows 98IP: 已记录
选择回复        
 快速回复主题: >>>高级模式
  用户名: 没有注册? 密码: 忘记密码?
记住密码
HTML语法
禁止IDB代码
禁止表情字符

[按 Ctrl+Enter 快捷键可直接提交帖子]
 投票评分: 共 0 票  
所有时间均为: 北京时间 ↑TOP 
关闭主题 拉前主题 移动主题 主题置顶 取消置顶 总固顶主题 取消总固顶 加入精华 移出精华 删除主题