[原创]从php源码中提取纯C编写的url编解码两函数
发表于:
2012-5-24 23:57
10037
[原创]从php源码中提取纯C编写的url编解码两函数
忙里偷闲,实验报告没写,老师一直催。
今晚吃完饭看了一下绿盟杯信息安全与对抗竞赛的最后两真实关题,
搜索php服务器漏洞的时候突然想看一下php源代码,
于是到php官网下载了最新版的源代码,
看着看着晚上6点钟就到了11点了,
时间过得真T M D快呀!桑不起~~~~
平时使用php时觉得php的urlencode和urldecode这两个函数挺好用,
自己大二的时候用C++设计搜索网页爬虫,根据项目需要解析url的时还要处理url编解码,
因为没用浏览器控件实现爬虫,C++没有这个函数,看了相关ansi规范封装了一个
urlencode和urldecode函数,但在使用的过程中经常发现问题,原因是非所有字符都正常编解
码,网上的方法大体都差不多,没一个标准。
今晚顺便从php源代码中提取出这两个标准的url编解码(也不能说标准,因为提取的时候还是有
相应地方需要改动的), 算法是纯C写的哦!
函数声明:
char *php_url_encode(char const *in_str, int in_str_len, int *out_str_len);
int php_url_decode(char *in_str, int in_str_len); /* return value: length of decoded string */
使用例子:
/* by:小覃
*/
#include <IOSTREAM>
using namespace std;
#include "url.c"
int main()
{
const char * s = "http://www.qinrihong.com?aaa=111&bbb=222&ccc=333";
int new_len=0;
/* encode url */
char *s_en = php_url_encode(s, strlen(s), &new_len);
cout<< s_en << endl;
/* decode url */
int len_s = php_url_decode(s_en, new_len);
cout<< s_en << endl;
return 0;
}
附件包含了url.c文件,是php中提取的url编解码两函数。
还有一个test.cpp是用于测试函数的例子。
欢迎使用!
[课程]FART 脱壳王!加量不加价!FART作者讲授!
上传的附件: