السلام عليكم ... من فترة ... كنت اجرب برنامج مدفوع .... وكالعادة ... احاول معرفة اكواد التبليغ في النسخة
ولكن البرمجية هذه المرة مختلفة ... لا تحتوي على اكواد للتبليغ ... وإنما على ملف license ... يتم وضعه في المجلد ....
إذا كانت المعطيات في الملف صحيحة ... تعمل البرمجية بشكل كامل ...
مثال عن محتويات الملف :
كود PHP:
first_name = "Bahr";
last_name = "AbdUlrazzak";
email = "insyria@gmail.com";
site_url = "http://127.0.0.1/";
expiration_date = "2018-01-01";
verification_code = "29f4e300f173b0d79cd4c680557422b4NzkwYzhjN2Q4MjA5NWRhZGYxMWRjN";
(( ال verification_code .. طويل جداً .. واكتفيت بجزء منه ))
المهم ...
عرفت ان دالة الحماية موجودة في ملف ال functions :nice: <----- ذكاء خارق ..
بس للأسف طلع الملف مشفر بال Zend .. :funny::funny::funny:
فكيته ... وبعدها سحبت الكود تبع الفحص
وطلع معي التالي :
كود PHP:
<?php
class license
{
var $license_info;
var $error = null;
function license( )
{
$this->license_info = is_readable( "bahr.lic" ) ? parse_ini_file( "bahr.lic" ) : array(
"expiration_date" => null,
"verification_code" => null
);
}
function isvalid( )
{
if ( $this->_islocalperformed( ) )
{
return true;
}
if ( !$this->_islicensecodevalid( ) )
{
$this->error = "INVALID_VERIFICATION_CODE";
}
else if ( $this->_islicenseexpired( ) )
{
$this->error = "EXPIRED_LICENSE";
}
return empty( $this->error );
}
function geterrormessage( )
{
header( $_SERVER['SERVER_PROTOCOL']." 403 Forbidden" );
if ( $this->error == "INVALID_VERIFICATION_CODE" )
{
echo "The software license is invalid \r\n";
}
else
{
echo "The software license is expired \r\n";
}
}
function _islocalperformed( )
{
// المتغير $SITE_URLهون .. كان عم يتم اخذه بشكل تلقائي
// من قواعد بيانات البرمجية الرئيسية ... بس النقطة اختلفت .. انو
// بدنا نستفيد من الكود نفسه
// وهو لازم ياخد عنوان الموقع بشكل تلقائي
$parsed_url = parse_url("$SITE_URL");
return $parsed_url['host'] == "localhost";
}
function _islicensecodevalid( )
{
$cryptographer = new cryptographer( $this->license_info['expiration_date'] );
return $cryptographer->getcrypt( ) === $this->license_info['verification_code'];
}
function _islicenseexpired( )
{
return $this->license_info['expiration_date'] < date( "Y-m-d" );
}
}
class cryptographer
{
var $expiration_date;
var $site_url;
var $inserted_words;
function cryptographer( $expiration_date, $site_url = null )
{
$this->expiration_date = $expiration_date;
// المتغير $SITE_URLهون .. كان عم يتم اخذه بشكل تلقائي
// من قواعد بيانات البرمجية الرئيسية ... بس النقطة اختلفت .. انو
// بدنا نستفيد من الكود نفسه
$this->site_url = empty( $site_url ) ? $SITE_URL: $site_url;
$this->inserted_words = array( "asdfg14235", "*&^%\$RTGFVBJL:)(*", "-=+[]lLLL7gfd@" );
}
function getcrypt( )
{
return $this->_getencryptedcombination( $this->_getcombinedunencryptedstring( ), 0 );
}
function _getcombinedunencryptedstring( )
{
$result = join( "", $this->inserted_words );
return $this->expiration_date.$result.$this->site_url;
}
function _getencryptedcombination( $string, $counter )
{
if ( 5 < $counter )
{
return $string;
}
$result = md5( $string ).crc32( $string ).base64_encode( $string );
$result = md5( $result ).base64_encode( $string ).crc32( $string ).md5( $result );
return $this->_getencryptedcombination( $result, ++$counter );
}
}
?>
طبعاً في كود تاني لحتى يطلب ال CLASS الموجودين فوق ويفحصهم
كود PHP:
<?php
$license =& new license( );
if ( $license->isvalid( ) )
{
return ($page_config);
}
return $license->geterrormessage( );
?>
ولكن الكود لم يعمل معي :nice::nice::nice: :nice:
هل من اقتراحات ؟