百度搜索结果url加密算法 PHP源码

2021-08-22  阅读 242 次

百度搜索结果都是加密过的,比如:https://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99f3c09e2f0fb2a52fca84c6

<?php
//$ascii码表x,y位置
$ascii = [
    0 => [ ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/' ],
    1 => [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?' ],
    2 => [ '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O'  ],
    3 => [ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\',']', '^', '_' ],
    4 => [ '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o' ],
    5 => [ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', ' ' ]
    ];
 
//url第N个位置对应的(x,y),目前只得到80位的url
$data = [
    [13, 10], [10, 1], [16, 15], [7, 6], [5, 13], [18, 9], [13, 11], [7, 12],
    [10, 5], [15, 9], [15, 9], [13, 5], [16, 11], [0, 1], [8, 2], [8, 5],
    [0, 0], [17, 15], [14, 8], [2, 1], [10, 5], [17, 14], [16, 5], [3, 8],
    [14, 9], [5, 8], [15, 1], [3, 15], [13, 10], [10, 12], [5, 7], [0, 2],
    [18, 14], [0, 15], [1, 6], [13, 5], [2, 1], [15, 14], [18, 8], [18, 9],
    [1, 10], [14, 14], [13, 2], [5, 3], [5, 8], [0, 4], [1, 5], [16, 1],
    [8, 1], [2, 5], [10, 7], [10, 15], [14, 14], [17, 3], [15, 0], [14, 5],
    [7, 7], [3, 4], [14, 8], [12, 0], [13, 12], [12, 3], [6, 5], [3, 1],
    [1, 14], [5, 4], [0, 12], [7, 0], [10, 7], [15, 12], [8, 2], [18, 15],
    [3, 12], [1, 12], [0, 15], [17, 4], [17, 2], [11, 1], [3, 12], [11, 5],
    [0, 13], [1, 1], [2, 12]
    ];

//所有的y值
$y = ['0123456789abcdef', '1032547698badcfe', '23016745ab89efcd', '32107654ba98fedc', 
      '45670123cdef89ab', '54761032dcfe98ba', '67452301efcdab89', '76543210fedcba98', 
      '89abcdef01234567', '98badcfe10325476', 'ab89efcd23016745', 'ba98fedc32107654',
      'cdef89ab45670123', 'dcfe98ba54761032', 'efcdab8967452301', 'fedcba9876543210'];

//所有的x值
$x = ['016745', '107654', '234567', '321076', '325476', '452301', '543210',
      '670123', '765432', '761032', '89abcd', '89efcd', '98fedc', 'abcdef',
      'badcfe', 'cdab89', 'dcba98', 'ef89ab', 'fe98ba' ];

// 测试数组   var_dump($ascii[3]);   print sizeof($data);   var_dump($x);

function encode_url($url){
    global $x, $y, $ascii, $data;
    $mi = '';
    for ($i = 0; $i != strlen($url); $i++){
        $ch = $url[$i];  $f_real_x = -1;  $f_real_y = -1;

        for ($real_x = 0; $real_x != sizeof($ascii); $real_x++){
            $real_y_chs = $ascii[$real_x];

            for($real_y = 0; $real_y != sizeof($real_y_chs); $real_y++){
                $real_y_ch= $real_y_chs[$real_y];
                if ($real_y_ch == $ch){
                    $f_real_x = $real_x;
                    $f_real_y = $real_y;
                }
            }
        }
        if (($f_real_y != -1) && ($f_real_x != -1)) {
            $this_data_x = $x[$data[$i][0]];
            $encode_x = $this_data_x[$f_real_x];
            $mi .= $encode_x;
            $this_data_y = $y[$data[$i][1]];
            $encode_y = $this_data_y[$f_real_y];
            $mi .= $encode_y;
        }
    }
    return  'https://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99' . $mi;
}

$url ="https://yaaibk.com/post/269.html";
$t = encode_url($url);
print $url . " --> " . $t;

?>

精简版

function baidu($domain='www.abeip.com'){
    global $x, $y, $ascii, $data;

    $domains = str_split($domain);
    $mi='';
    for($i=0;$i<count($domains);$i++){
        $f_real_x ='';  $f_real_y ='';

        for($real_x=0;$real_x<count($ascii);$real_x++){
            $real_y_chs=$ascii[$real_x];

            for($real_y=0;$real_y<count($real_y_chs);$real_y++){
                if($real_y_chs[$real_y]==$domains[$i]){
                    $f_real_x = $real_x ;
                    $f_real_y = $real_y;
    } } }    
    // 这里不判断 $ascii码表x,y 问题其实也不大
    $this_data_x=$x[$data[$i][0]];
    $encode_x = $this_data_x[$f_real_x];

    $this_data_y = $y[$data[$i][1]];
    $encode_y = $this_data_y[$f_real_y];

    $mi = $mi. $encode_x. $encode_y;
    return 'http://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99' . $mi;
}

另外一个

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<?php
//$ascii码表x,y位置
$ascii = array(
	0=>array(' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/'),
	1=>array('0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?'),
	2=>array('@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'),
	3=>array('P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_'),
	4=>array('`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'),
	5=>array('p','q','r','s','t','u','v','w','x','y','z','{','|','}','~',' '),);
//url第N个位置对应的(x,y),目前只得到80位的url
$data  = array(
	array(13,10),
	array(10,1),
	array(16,15),
	array(7,6),
	array(5,13),
	array(18,9),
	array(13,11),
	array(7,12),
	array(10,5),
	array(15,9),
	array(15,9),
	array(13,5),
	array(16,11),
	array(0,1),
	array(8,2),
	array(8,5),
	array(0,0),
	array(17,15),
	array(14,8),
	array(2,1),
	array(10,5),
	array(17,14),
	array(16,5),
	array(3,8),
	array(14,9),
	array(5,8),
	array(15,1),
	array(3,15),
	array(13,10),
	array(10,12),
	array(5,7),
	array(0,2),
	array(18,14),
	array(0,15),
	array(1,6),
	array(13,5),
	array(2,1),
	array(15,14),
	array(18,8),
	array(18,9),
	array(1,10),
	array(14,14),
	array(13,2),
	array(5,3),
	array(5,8),
	array(0,4),
	array(1,5),
	array(16,1),
	array(8,1),
	array(2,5),
	array(10,7),
	array(10,15),
	array(14,14),
	array(17,3),
	array(15,0),
	array(14,5),
	array(7,7),
	array(3,4),
	array(14,8),
	array(12,0),
	array(13,12),
	array(12,3),
	array(6,5),
	array(3,1),
	array(1,14),
	array(5,4),
	array(0,12),
	array(7,0),
	array(10,7),
	array(15,12),
	array(8,2),
	array(18,15),
	array(3,12),
	array(1,12),
	array(0,15),
	array(17,4),
	array(17,2),
	array(11,1),
	array(3,12),
	array(11,5),
	array(0,13),
	array(1,1),
	array(2,12)
);
//所有的y值
$y = array(
0=>
'0123456789abcdef',
'1032547698badcfe',
'23016745ab89efcd',
'32107654ba98fedc',
'45670123cdef89ab',
'54761032dcfe98ba',
'67452301efcdab89',
'76543210fedcba98',
'89abcdef01234567',
'98badcfe10325476',
'ab89efcd23016745',
'ba98fedc32107654',
'cdef89ab45670123',
'dcfe98ba54761032',
'efcdab8967452301',
'fedcba9876543210'
);
//所有的x值
$x = array(
0=>
'016745',
'107654',
'234567',
'321076',
'325476',
'452301',
'543210',
'670123',
'765432',
'761032',
'89abcd',
'89efcd',
'98fedc',
'abcdef',
'badcfe',
'cdab89',
'dcba98',
'ef89ab',
'fe98ba'
);


	//解密过程:

$domain = "www.ccooc.cn";
	$len = strlen($domain);
	
	
	for($i=0;$i<$len;$i++){
		$domain_one  = substr($domain,$i,1);//输出el
		
		$arr_x = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
		$arr_y = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
		
		for($ax =0;$ax<sizeof($arr_x);$ax++){
			for($ay =0;$ay<sizeof($arr_y);$ay++){
			//读取每一组密文的x 和 y
			$one = array($arr_x[$ax],$arr_y[$ay]);//str_split($v);
			$encode_x = $one[0];	//f
			$encode_y = $one[1];	//d
			//得到第$k位的data
			$this_data_x = str_split($x[$data[$i][0]]);	// $data[$k]=13,10 [0] = $x[13] 
			$this_data_y = str_split($y[$data[$i][1]]); // $data[$k]=13,10 [1] = $y[10] 

			//得到在ascii码表的x,y
			$real_x = array_search($encode_x,$this_data_x);	//5 

			$real_y = array_search($encode_y,$this_data_y); //7	3
			//结果
			$result = $ascii[$real_x][$real_y];
			
			if($result == $domain_one ){
				$mi .= $arr_x[$ax].$arr_y[$ay];
				$url .= $result;
				echo '密文对应:'.$arr_x[$ax].$arr_y[$ay].'----'.$result."<br>";
				 break 2;
			}

			
			}
		}
	}
	echo '密文对应:http://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99'.$mi.'----'.$url."<br>";
?>
</body>
</html>


本文地址:https://yaaibk.com/post/269.html
温馨提示:文章内容系作者个人观点,不代表雅爱笔记,雅爱博客对观点赞同或支持。
版权声明:本文为转载文章,来源于 点击这里 ,版权归原作者所有,欢迎分享本文,转载请保留出处!

评论已关闭!