phpはhttpヘッダを偽造して盗難防止チェーンコードを解読する

2690 ワード

画像、ソフトウェアなどの防犯チェーンを突破する方法に使用されます.
refererインスタンスコードを偽造し、主に画像、ソフトウェアなどの盗難防止チェーンを突破するために使用されます.
ここでは完全なプログラムを直接与えましょう.具体的なアプリケーションは自分で修正することができます. 
私がここで示した例は簡単で、実はこの例から多くの応用を発展させることができます.例えばリアルなURLアドレスを隠す…へへへ、具体的には自分で分析していきましょう 
ここにファイルfile.phpを新規作成します.後のパラメータはreferferのターゲットアドレスを偽造する必要があるでしょう.例:file.php/http://www.xxx.xxx/xxx.mp3 
コード:
 
$url=str_replace('/file.php/','',$_SERVER["REQUEST_URI"]);//         。      ,       ,         
$downfile=str_replace(" ","%20",$url);//      ,             
$downfile=str_replace("http://","",$downfile);//  http:// 
$urlarr=explode("/",$downfile);// "/"      
$domain=$urlarr[0];//   
$getfile=str_replace($urlarr[0],'',$downfile);//  header  GET   
$content = @fsockopen("$domain", 80, $errno, $errstr, 12);//       
if (!$content){//          
die("   ,      $domain 。"); 
} 
fputs($content, "GET $getfile HTTP/1.0rn"); 
fputs($content, "Host: $domainrn"); 
fputs($content, "Referer: $domainrn");//     
fputs($content, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)rnrn"); 
while (!feof($content)) { 
$tp.=fgets($content, 128); 
if (strstr($tp,"200 OK")){ //       。header              。     HTTP 1.1         hi.baidu.com/110911/blog/item/21f20d2475af812ed50742c5.html            ,         。            
header("Location:$url"); 
die(); 
} 
} 
//302   ,              referfer,            。           。 
$arr=explode("n",$tp); 
$arr1=explode("Location: ",$tp);//   Location        
$arr2=explode("n",$arr1[1]); 
header('Content-Type:application/force-download');//     
header("location:".$arr2[0]);//       
die(); 
?> 

以上のコードはreferを用いてチェーンを盗むか否かを判断する防犯チェーンシステムに対してのみ適用され、他の特殊な方法でチェーンを盗む場合は適用されません.
例:
array('header'=>"Referer:$refer")); 
$context=stream_context_create($opt); 
Header("Location:".$url); 
return file_get_contents($url,false,$context); 
} 
 
$host = "pakey.net"; //        
$target = "/test.asp"; //          
$referer = "http//uuwar.com/"; //       
$fp = fsockopen($host, 80, $errno, $errstr, 30); 
if(!$fp){ 
echo "$errstr($errno)

"; }else{ $out = " GET $target HTTP/1.1 Host: $host Referer: $referer Connection: Close\r
\r
"; fwrite($fp, $out); while(!feof($fp)){ echo fgets($fp, 1024); } fclose($fp); } ?>