PDA

View Full Version : سوال: تابع کنترل لایسنس



Alireza.fa
سه شنبه 06 تیر 1391, 23:20 عصر
چند روز پیش با این تابع برخوردم
قسمت چپ و راست کلید خیلی ساده قابل بازگشت هست ولی قسمت ۱ و ۲ رو نویسنده خیلی پیچونده.
در صورتی که علاقه دارید فکرتون درگیر بشه یه لطفا نگاه کنید .
منو خیلی درگیر کرده این تابع.:گیج::گیج:


<?php
private function checkLicense( $string )
{
$domainName = $_SERVER['SERVER_NAME'];
if ( substr( $domainName, 0, 4 ) == "www." )
{
$domainName = substr( $domainName, 4 );
}
$split = explode( "-", $string );
if ( count( $split ) != 4 )
{
return false;
}
$left = sha1( base64_encode( str_rot13( md5( W3E_VERSION.base64_encode( $domainName ) ) ) ) );
$left = ( substr( $left, 10, 10 ) );
if ( $left != $split[0] )
{
return false;
}
$right = base64_encode( );
$right = strtoupper( substr( $right, 13, 5 ) );
if ( $right != $split[3] )
{
return false;
}

$domain = $domainName;
$version = W3E_VERSION;
$domain = sha1( str_rot13( md5( strrev( base64_encode( $domain ) ) ) ) );
$version = base64_encode( sha1( $version ).strrev( md5( $version ) ) );

$key = str_rot13( base64_encode( strrev( $domain.$version.md5( $domain ) ) ) ).str_rot13( base64_encode( $version.$domain ) );
$key = substr( $key, 7, 25 );
$key .= $split[2];

$enc = base64_decode( str_replace( "|", "", base64_decode( $split[1] ) ) );

$string_len = strlen( $enc );
$key_length = strlen( $key );
$i = 0;
while ( $i < $string_len )
{
$position = $i % $key_length;
$replace = ord( $enc[$i] ) ^ ord( $key[$position] );
$enc[$i] = chr( $replace );
++$i;
}
if ( $enc != sha1( $domainName ) )
{
return false;
}
return true;
}