gbemulation2000
23-04-2004, 05:10 PM
بسم الله الرحمن الرحيم
حصلت على هذا الكود من أحد المواقع وهو يقوم بتشفير المصدر لصفحات الHTML المتشكلة عن طريق سكريتات الPHP وكل ما عليك هو إضافة الملف الخاص بالكود في بداية مشروعك.. مثال
include('csource.php');
يقوم الكود بتحويل محتويات الصفحة إلى ما يقابلها من رموز ASCII بطريقة معينة بحيث لا يتم التعرف على الشفرة المصدرية للصفحة.. لكنه لا يدعم الحروف العربية حيث يقوم باستبدالها بحروف أخرى وتظهر الصفحة كأن Charset المستخدم لا يدعم اللغة العربية.. على الرغم من تعريفه في ترويسة الصفحة ليكون
Charset=windows-1256
لذلك هل أجد لدى أحدكم الحل لجعل هذا الكود يتعامل مع الحروف العربية بشكل صحيح؟؟
نص الكود: موقع مبرمج الكود هو http://cleverscripts.com
<?php
function _fwk_filter_encrypt($content)
{
$table = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@";
$xor = 165;
// Prepare encoding table
$table = array_keys(count_chars($table, 1));
$i_min = min($table);
$i_max = max($table);
for ($c = count($table); $c > 0; $r = mt_rand(0, $c--))
array_splice($table, $r, $c - $r, array_reverse(array_slice($table, $r, $c - $r)));
// Encode sequence
$len = strlen($content);
$word = $shift = 0;
for ($i = 0; $i < $len; $i++)
{
$ch = $xor ^ ord($content[$i]);
$word |= ($ch << $shift);
$shift = ($shift + 2) % 6;
$enc .= chr($table[$word & 0x3F]);
$word >>= 6;
if (!$shift)
{
$enc .= chr($table[$word]);
$word >>= 6;
}
}
if ($shift)
$enc .= chr($table[$word]);
// Decode sequence
$tbl = array_fill($i_min, $i_max - $i_min + 1, 0);
while (list($k,$v) = each($table))
$tbl[$v] = $k;
$tbl = implode(",", $tbl);
$fi = ",p=0,s=0,w=0,t=Array({$tbl})";
$f = "w|=(t[x.charCodeAt(p++)-{$i_min}])<<s;";
$f .= "if(s){r+=String.fromCharCode({$xor}^w&255);w>>=8;s-=2}else{s=6}";
// Generate page
$r = "<script language=JavaScript>";
$r.= "function decrypt_p(x){";
$r.= "var l=x.length,b=1024,i,j,r{$fi};";
$r.= "for(j=Math.ceil(l/b);j>0;j--){r='';for(i=Math.min(l,b);i>0;i--,l--){{$f}}document.write(r)}";
$r.= "}decrypt_p(\"{$enc}\")";
$r.= "</script>";
return $r;
}
ob_start("_fwk_filter_encrypt");
?>
حصلت على هذا الكود من أحد المواقع وهو يقوم بتشفير المصدر لصفحات الHTML المتشكلة عن طريق سكريتات الPHP وكل ما عليك هو إضافة الملف الخاص بالكود في بداية مشروعك.. مثال
include('csource.php');
يقوم الكود بتحويل محتويات الصفحة إلى ما يقابلها من رموز ASCII بطريقة معينة بحيث لا يتم التعرف على الشفرة المصدرية للصفحة.. لكنه لا يدعم الحروف العربية حيث يقوم باستبدالها بحروف أخرى وتظهر الصفحة كأن Charset المستخدم لا يدعم اللغة العربية.. على الرغم من تعريفه في ترويسة الصفحة ليكون
Charset=windows-1256
لذلك هل أجد لدى أحدكم الحل لجعل هذا الكود يتعامل مع الحروف العربية بشكل صحيح؟؟
نص الكود: موقع مبرمج الكود هو http://cleverscripts.com
<?php
function _fwk_filter_encrypt($content)
{
$table = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@";
$xor = 165;
// Prepare encoding table
$table = array_keys(count_chars($table, 1));
$i_min = min($table);
$i_max = max($table);
for ($c = count($table); $c > 0; $r = mt_rand(0, $c--))
array_splice($table, $r, $c - $r, array_reverse(array_slice($table, $r, $c - $r)));
// Encode sequence
$len = strlen($content);
$word = $shift = 0;
for ($i = 0; $i < $len; $i++)
{
$ch = $xor ^ ord($content[$i]);
$word |= ($ch << $shift);
$shift = ($shift + 2) % 6;
$enc .= chr($table[$word & 0x3F]);
$word >>= 6;
if (!$shift)
{
$enc .= chr($table[$word]);
$word >>= 6;
}
}
if ($shift)
$enc .= chr($table[$word]);
// Decode sequence
$tbl = array_fill($i_min, $i_max - $i_min + 1, 0);
while (list($k,$v) = each($table))
$tbl[$v] = $k;
$tbl = implode(",", $tbl);
$fi = ",p=0,s=0,w=0,t=Array({$tbl})";
$f = "w|=(t[x.charCodeAt(p++)-{$i_min}])<<s;";
$f .= "if(s){r+=String.fromCharCode({$xor}^w&255);w>>=8;s-=2}else{s=6}";
// Generate page
$r = "<script language=JavaScript>";
$r.= "function decrypt_p(x){";
$r.= "var l=x.length,b=1024,i,j,r{$fi};";
$r.= "for(j=Math.ceil(l/b);j>0;j--){r='';for(i=Math.min(l,b);i>0;i--,l--){{$f}}document.write(r)}";
$r.= "}decrypt_p(\"{$enc}\")";
$r.= "</script>";
return $r;
}
ob_start("_fwk_filter_encrypt");
?>