现在的位置: 首页 > 软件开发 > 正文

解码GL\x4f\x42A\x4c\x53

2014年01月09日 软件开发 ⁄ 共 265字 暂无评论 ⁄ 被围观 0+

解码GL\x4f\x42A\x4c\x53

形如GL\x4f\x42A\x4c\x53的文件解码,一般不是直接16进制转字符就可以,对其中的引号和斜杠要做一些判断和处理,例子如下:

< ?php
$t='0123456789abcdefABCDEF';
$fn='hexcodedfile.php';
$r=$p=$qt=$s='';
$slash=false;
$i=$j=0;
if ($f=fopen($fn,"rb")){
	$s=fread($f,filesize($fn));
	fclose($f);
	for ($i=0;$i<strlen($s);$i++){
		$slash=false;
		$p=sprintf("&nbsp;%06d,%06d",$i,$j);
		if ($s&#91;$i&#93;=='\\'&&$s&#91;$i + 1&#93;=='x'
			&&strpos($t,$s&#91;$i+2&#93;)!==false&&strpos($t,$s&#91;$i+3&#93;)!==false){
			$qt=strtolower(substr($s,$i,4));
			$slash=(($qt=='\\x22'||$qt=='\\x5c')&&$s&#91;$i-1&#93;!='\\') //引号\x22 斜杠\x5c,前面不是斜杠,需补充斜杠
				 ||(($qt=='\\x22'||$qt=='\\x5c')&&substr($s,$i-2,2)=='\\\\');//前面是2+个斜杠,需要补充斜杠
			if ($slash) {
				$p=sprintf("<font color=red>%s",$p);
				$j++;
			}
			echo 'H:'.$qt.'=>&nbsp;'.chr(hexdec($s[$i+2].$s[$i+3])).$p.'<br />';
			$qt=($slash)?'\\':'';
			$r.=$qt.chr(hexdec($s[$i+2].$s[$i+3]));
			$i=$i+3;
		}else{
			echo 'C:=====>&nbsp;'.$s[$i].$p.'<br />';
			$r.=$s[$i];
		}
		$j++;
	}
	$fn.='-1';
	$f=fopen($fn,"wb");
	fwrite($f,$r);
	fclose($f);
	echo 'done...';
}
?>

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#