原始连接:
http://www.phpwind.net/read.php?tid=161585
信息来源:邪恶八进制信息安全团队(
www.eviloctal.com)
议题作者:sumic
今天看了下PHPWIND 4.32的代码,发现比起以前的版本对COOKIES进行了加密,这里有段代码根据我对照上下代码初步理解为加密的还原,但是有点不太明白,希望高手给点指点。
COOKIES里面保存的信息为
winduser=BTxVX1oBWwRcBgMIBFYFUwICAwEGC10HCAZcCVkABAYHVQ%3D%3D
代码为:
list($winduid,$windpwd)=explode("\t",StrCode($_COOKIE['winduser'],'DECODE'));
function StrCode($string,$action='ENCODE'){
$key= substr(md5($_SERVER["HTTP_USER_AGENT"].$GLOBALS['db_hash']),8,18);
$string= $action == 'ENCODE' ? $string : base64_decode($string);
$len= strlen($key);
$code= '';
for($i=0; $i<strlen($string); $i++){
$k= $i % $len;
$code .= $string[$i] ^ $key[$k];
}
$code = $action == 'DECODE' ? $code : base64_encode($code);
return $code;
}
关键在于
$key= substr(md5($_SERVER["HTTP_USER_AGENT"].$GLOBALS['db_hash']),8,18);
这个$key绝不是无所谓的!由于他使用了用户登陆名和数据库信息,所以对于任意用户来说都是唯一的
其他的事情就是扰码了
加密:
输入串按字节与$key做异或运算
返回结果的base64编码
解密:
base64解码后的输入串按字节与$key做异或运算
返回结果