Heim >php教程 >php手册 >发短信?打电话?都会被老婆查?

发短信?打电话?都会被老婆查?

WBOY
WBOYOriginal
2016-06-06 19:32:271058Durchsuche

发短信?打电话?都会被老婆查。再来一利器对Ta说的的悄悄话存到图片中去吧! 完整demo包:http://www.codepearl.com/files/181.html PHP 源码与演示: 源码出处演示出处 ?php//from:http://www.codepearl.cominclude 'Simple.Stegonography.class.php';$a =

发短信?打电话?都会被老婆查。 再来一利器  对Ta说的的悄悄话存到图片中去吧!

完整demo包:http://www.codepearl.com/files/181.html PHP

源码与演示:源码出处 演示出处

发短信?打电话?都会被老婆查?
<?php
//from:http://www.codepearl.com
include 'Simple.Stegonography.class.php';


$a = new Stego();

//先把hello写到logo.png图片里面 保存生成的图片
header('Content-Type: image/png');
imagepng($a -> stegoIt('hello','logo.png',1000));


//根据上一步生成的图片获取里面的内容。记得先注释掉上一步哦
echo $a -> unStegoIt('example.php.png',1000)

?>
<?php

/*
* from:http://www.codepearl.com
*/
class Stego{
	/*..........*/
	//@param $i image file
	//returns jpg or png or false if it isn't one of them
	/*.........*/
	private function mimeType($i)
    {
		$mime = getimagesize($i);
		
		$return = array($mime[0],$mime[1]);
		
		switch ($mime['mime'])
		{
			case 'image/jpeg':
					$return[] = 'jpg';
					return $return;
			case 'image/png':
					$return[] = 'png';
					return $return;
			default:
					return false;
		}
    }
	
	/*..........*/
	//@param $i image file
	//returns image resource
	/*.........*/
	private function createImage($i)
    {
		$mime = $this->mimeType($i);
		
		switch($mime[2]){
			case 'jpg':
				return imagecreatefromjpeg ($i);
			case 'png':
				return imagecreatefrompng ($i);
			
		}
			
    }
	
	
	/*..........*/
	//@param $text text
	//returns array of ASCII values of text
	/*.........*/
	private function toASCII($text)
	{
		$text = str_split($text);
		
		for($i=0;$i<count($text);$i++)
		{
			$text[$i] = ord($text[$i]);
			
		}
		
		return $text;
	}
	
	/*..........*/
	//@param $arr text
	//returns text
	/*.........*/
	private function fromASCII($arr)
	{
		$text = '';
		
		foreach($arr as $a)
		{
			
			$text .= chr($a);
		}
		
		return $text;
	}
	
	/*..........*/
	//@param $text text to place in image
	//@param $i image file
	//@param $steps which pixels should be changed
	//returns image resource or false if there is not enough space in the image to do it
	/*.........*/
	public function stegoIt($text,$i,$steps)
	{
		$im				=	$this->createImage($i);
		
		$mime			=	$this->mimeType($i);
		
		$pixelCount		= $mime[0]*$mime[1];
		
		/*THIS IS THE POINT WHERE YOU CAN CHANGE THE TEXT*/
		//encrypt it maybe?  The text is in $text
		/**/
		
		$ASCII			= $this->toASCII('5TEG0'.$text.'5TEG0');
		
		$textCounter	= 0;
		
		
		
		//Is there enough space for this text?
		if($pixelCount/$steps < strlen ('5TEG0'.$text.'5TEG0')/3)return false;
		
		
		for($x = 1;$x<=$mime[0];$x++)
		{
			for($y = 1;$y<=$mime[1];$y++)
			{
				if(($x*$y)%$steps == 0){
					$r = $ASCII[$textCounter];
					$g = $ASCII[$textCounter+1];
					$b = $ASCII[$textCounter+2];
					$textCounter+=3;
					imagesetpixel($im,$x,$y,imagecolorallocate($im, $r, $g, $b));
					if($textCounter > strlen ('5TEG0'.$text.'5TEG0'))return $im;
				}
				
			}
			
		}
			
		
		
		return $im;
		
	}
	
	/*..........*/
	//@param $i image file
	//@param $steps which pixels should be coded
	//returns image resource or false if there is not enough space in the image to do it
	/*.........*/
	public function unStegoIt($i,$steps)
	{
		$im				=	$this->createImage($i);
		
		$mime			=	$this->mimeType($i);
		
		$pixelCount		= $mime[0]*$mime[1];
		
		$textCounter	= 0;
		
		$ASCII			= array();
		

		
		
		for($x = 1;$x<=$mime[0];$x++)
		{
			for($y = 1;$y<=$mime[1];$y++)
			{
				if(($x*$y)%$steps == 0){
					$rgb = imagecolorat($im, $x, $y);
					$ASCII[] = ($rgb >> 16) & 0xFF;
					$ASCII[] = ($rgb >> 8) & 0xFF;
					$ASCII[] = $rgb & 0xFF;
					
				}
				
			}
			
		}
		preg_match('#5TEG0(.+?)5TEG0#',$this->fromASCII($ASCII),$txt);
		
		/*THIS IS THE POINT WHERE YOU CAN CHANGE THE TEXT*/
		//decrypt it maybe? The text is in $txt[1]
		/**/
		
		return $txt[1];
	}
}
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Wiz笔记SDKNächster Artikel:刪掉三字元文字