هک و باگ های اسکریپت etchat

mp88

تازه وارد
سلام دوستان

یه چند وقتیه هکرا میان وصفحه ایندکسو پاک میکنن و وارد چتم که میشن نمیشه اخراجشون کرد؟

کسی میدونه چطور میشد این مشکلاتو رفع کرد

ممنون میشم اگه کمکم کنید :53: :53: :53: :53:

 

A_pormehr

کاربر عضو
پیشنهاد میکنم از ورژن جدید جدید استفاده کنی یا پچ امنیتی بگیری نصب کنی :53:

 

mr.na3r

کاربر عضو
سلام

تا حدودی در آخرین نسخه این مشکلات برطرف شده.

همچنین یک باگ خطرناک در شکلکها وجود داره که دیفیس سایت ممکن است به همین خاطر باشه .

1-سطح دسترسی پوشه smilies را روی 775 قرار بدید.

2-سطح دسترسی htaccess را روی 644 قرار بدید.

3-بعضی پلاگینها باگ دارند ، ازشون استفاده نکنید.

4-فایل ایندکس رو که در این مسیر قرار داره public_html >>> styles >>> admin_tpl رو باز کنید و این قسمت رو حذف کنید :


کد:
<a href="./?AdminSmiliesIndex"><?php echo $lang->link[4]->tagData; ?></a> <small> - Plugin by Gerald Saiger, www.flutsch-media.com © 2008</small> <br> <a href="./?AdminPropertyIndex"><?php echo $lang->link[3]->tagData; ?></a><br>
و همچنین فایل های createNewSmilies.tpl و indexSmilies.tpl رو حذف کنید (با این کار شما دیگه نمیتونید شکلک آپلود کنید پس قبل از انجام این مراحل مطمئن بشید که شکلک های مورد نیازتون رو آپلود کردید. در صورتی که مجددا قصد آپلود شکلک رو داشته باشید مجددا میتونید این فایل ها رو آپلود کنید)

روی پوشه ی admin_tpl که در مسیر styles قرار داره و همچنین پوشه class که در public_html قرار داره رمز گذاری کنید.

و توصیه میکنم از پچهای امنیتی هم استفاده کنید که فکر کنم سایت ایران هک برای فروش گذاشته.

 

mp88

تازه وارد
دوستان اگه بتونید بیشتر در مورد پچ امنیتی تو ضیح بدید ممنونتون میشم

چی هست؟از کجا باید تهیه کنم؟چقدر تاثیر داره؟

 

mp88

تازه وارد
سلامتا حدودی در آخرین نسخه این مشکلات برطرف شده.

همچنین یک باگ خطرناک در شکلکها وجود داره که دیفیس سایت ممکن است به همین خاطر باشه .

1-سطح دسترسی پوشه smilies را روی 775 قرار بدید.

2-سطح دسترسی htaccess را روی 644 قرار بدید.

3-بعضی پلاگینها باگ دارند ، ازشون استفاده نکنید.

4-فایل ایندکس رو که در این مسیر قرار داره public_html >>> styles >>> admin_tpl رو باز کنید و این قسمت رو حذف کنید :


کد:
<a rel="nofollow" href="./?AdminSmiliesIndex"><?php echo $lang->link[4]->tagData; ?></a> <small> - Plugin by Gerald Saiger, www.flutsch-media.com © 2008</small> <br> <a rel="nofollow" href="./?AdminPropertyIndex"><?php echo $lang->link[3]->tagData; ?></a><br>
و همچنین فایل های createNewSmilies.tpl و indexSmilies.tpl رو حذف کنید (با این کار شما دیگه نمیتونید شکلک آپلود کنید پس قبل از انجام این مراحل مطمئن بشید که شکلک های مورد نیازتون رو آپلود کردید. در صورتی که مجددا قصد آپلود شکلک رو داشته باشید مجددا میتونید این فایل ها رو آپلود کنید)

روی پوشه ی admin_tpl که در مسیر styles قرار داره و همچنین پوشه class که در public_html قرار داره رمز گذاری کنید.

و توصیه میکنم از پچهای امنیتی هم استفاده کنید که فکر کنم سایت ایران هک برای فروش گذاشته.
داداش این کارا رو که گفتی انجام دادم ولی بازم تونستن عکس اپلود کنن و تو عمومی بفرستن چرا؟

 

A_pormehr

کاربر عضو
سعی میکنم واست آمده کنم بدم نصب کنی تا فردا اگه صبر کنی

 

mr.na3r

کاربر عضو
داداش این کارا رو که گفتی انجام دادم ولی بازم تونستن عکس اپلود کنن و تو عمومی بفرستن چرا؟
این کارو که گفتم برای رفع باگ خطرناک شکلکها بود که شل آپلود میکنند.

برای جلوگیری از آپلود عکس هم به این آدرس مراجعه کنید تا حدودی مشکلتون برطرف میشه.



ضمنا آیا شما از آخرین نسخه استفاده میکنید؟

 

A_pormehr

کاربر عضو
خب همونطور که قول داده بودم فقط دیر شد ببخشین یه مشکلاتی دارم نمیتونم زیاد به نت برسم :53:

حل باگ هک مديريت از طريق لينک ?AdminRegUserEdit&admin&id=555

اول وارد AdminRegUserEdit.class.php شويد

کد زير رو پيدا کرده


کد:
if ($_SESSION['etchat_'.$this->_prefix.'user_priv']=="admin"){
کد زير رو بعد از کد بالا قرار بديد دقیق زير کد بالا


کد:
// Checksum
if($_GET['cs4rue']!=$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'] || !isset($_GET['cs4rue']) || !isset($_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'])){
echo "Dear Admin this User tried to fake you. ;-)";
return false;
}
وارد فايل AdminRegUserIndex.class.php شويد

کد زير رو پيدا کرده


کد:
$print_sitemaker = $sitemakerObj->get();
کد زير رو بعد از کد بالا قرار دهيد


کد:
// Checksum
$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'] = rand(1,999999999);
بعد از انجام تغييرات بالا

درجات کاربرا مديرا و ادمين ها براي مثال ناظر اين جوري هستش لينکش


کد:
| <a href=\"./?AdminRegUserEdit&mod&id=".$datasets[0]."\">mod</a> |
بايد به صورت زير تغيير بديد


کد:
| <a href=\"./?AdminRegUserEdit&mod&cs4rue=".$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit']."&id=".$datasets[0]."\">mod</a> |
اين رو براي همه درجات بايد تکرار کنيد

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل باگ هک مديريت با شکلک [ /img ] [ img ]

براي حل اول وارد فايل StaticMethods.class.php شويد

کد زير رو پيدا کرده


کد:
if (!empty($image_path))
$str="<img src="$image_path" style="max-width:500px;max-height:300px;">";
کد زير رو جايگزين کد بالا کنيد


کد:
if (!empty($image_path) && stripos($str, '?admin')===false)
$str="<img src="$image_path" style="max-width:500px;max-height:300px;">";
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل باگ گذاشتن شکلک بزرگ در درجات ليست آنلاين ها و هنگ شدن ليست آنلاين ها

وارد فايل Changestatus.class.php شويد

کد زير رو پيدا کرده


کد:
// Test if this status is allowed to be used by this user
if (!$this->checkRightsOfStatus($_POST['img'])) {
$_POST['img']="";
$_POST['text']="";
echo "Not allowed operation.";
return false;
}
کد زير رو جايگزين کد بالا کنيد


کد:
// Test if this status is allowed to be used by this user
if (!$this->checkRightsOfStatus($_POST['img'])) {
$_POST['img']="";
$_POST['text']="";
echo "Not allowed operation.";
return false;
}

$_POST['img']= htmlspecialchars(preg_replace("/[^a-zA-Z_0-9\-. ]/i", "", $_POST['img']), ENT_QUOTES, "UTF-8");
$_POST['text']= htmlspecialchars(preg_replace('/[\x00-\x1F]/', '', $_POST['text']), ENT_QUOTES, "UTF-8");
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل باگ هک ليست آنلاين ها با تغيير جنيست

وارد فايل CheckUserName.class.php شويد

کد زير را پيدا کرده


کد:
$userCheckerAndInserterObj = new UserCheckerAndInserter($this->dbObj, $user_exists, $username, $_POST['pw'], $gender, $this->lang);
کد زير رو جايگزين کد بالا کنيد


کد:
$userCheckerAndInserterObj = new UserCheckerAndInserter($this->dbObj, $user_exists, $username, $_POST['pw'], preg_replace("/[^a-z]/i", "n", $gender), $this->lang);
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل باگ وارد شدن در اتاق هاي رمز دار با مروگر اپرا يا گوگل کروم با راست کليک و تغيير و حذف سورس به راحتي بدون اخطار و ارور وارد اتاق هاي رمز دار ميشوند

وارد فايل ReloaderMessages.class.php شويد

کد زير رو پيدا کرده


کد:
if ($room_allowed->room_status!=1){
$raum_array=$this->dbObj->sqlGet("SELECT etchat_id_room, etchat_roomname, etchat_room_goup FROM {$this->_prefix}etchat_rooms where etchat_id_room = 1");
}
کد زير رو جايگزين کد بالا کنيد


کد:
if ($room_allowed->room_status!=1){
$_POST['room'] = 1;
unset($_POST['message']);
$raum_array=$this->dbObj->sqlGet("SELECT etchat_id_room, etchat_roomname, etchat_room_goup FROM {$this->_prefix}etchat_rooms where etchat_id_room = 1");
}
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل جلوگيري از ورود با آي پي فاک ( ip fucker)

وارد فايل

Blacklist.class.php شويد

کد زير را پيدا کرده


کد:
$this->user_param_all = $_SERVER['REMOTE_ADDR']."@".@gethostbyaddr($_SERVER['REMOTE_ADDR'])."@".@getenv('HTTP_X_FORWARDED_FOR');
کد زير رو جايگزين کد بالا کنيد


کد:
$this->user_param_all = $_SERVER['REMOTE_ADDR']."@".@gethostbyaddr($_SERVER['REMOTE_ADDR']);
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل باگ بستن ليست آنلاين ها با استفاده از وضعيت من

statusImage

وارد فايل

ChangeStatus.class.php شويد

به جاي کدهاي


کد:
private function checkRightsOfStatus($statusImagename){

       // create new LangXml Object
       $langObj = new LangXml();
       $lang=$langObj->getLang();

       foreach($lang->chat_js[0]->status as $status_value)
          if ($status_value->tagAttrs['imagename']==$statusImagename && $status_value->tagAttrs['rights']!='all')    
             $thisStatusImagenameRights[]=$status_value->tagAttrs['rights'];

       if (!is_array($thisStatusImagenameRights)) return true;
       else{
          if (in_array($_SESSION['etchat_'.$this->_prefix.'user_priv'], $thisStatusImagenameRights)) return true;
          else return false;
       }
    }
}
کدهاي زير رو جايگزين کنيد


کد:
private function checkRightsOfStatus($statusImagename){

             if(substr($statusImagename, 0, 7)!='status_') return false;

             // create new LangXml Object
             $langObj = new LangXml();
             $lang=$langObj->getLang();

             foreach($lang->chat_js[0]->status as $status_value)
                    if ($status_value->tagAttrs['imagename']==$statusImagename && $status_value->tagAttrs['rights']!='all')
                          $thisStatusImagenameRights[]=$status_value->tagAttrs['rights'];

             if (!is_array($thisStatusImagenameRights)) return true;
             else{
                    if (in_array($_SESSION['etchat_'.$this->_prefix.'user_priv'], $thisStatusImagenameRights)) return true;
                    else return false;
             }
       }
}
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

جلوگيري از ارسال متن تکراري درداخل روم

ميريم سراغ فايلMessageInserter.class.php سپس فايل رو ويرايش ميکنيم

کد زيرراپیدا کنید


کد:
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_text_css, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_ip)
                VALUES ( '".$_SESSION['etchat_'.$this->_prefix.'user_id']."', '".$_POST['message']."', '".$style."', ".date('U').", ".(int)$_POST['room'].", ".(int)$_POST['privat'].", '".$_SERVER['REMOTE_ADDR']."')");
سپس اين کدرو حذف کرده و اين کد را جايگزين کنيد


کد:
if(@$_SESSION['PluginChat_last_message']==$_POST['message'])
{
    $this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_privat) values(1,'Karbar Gerami Lotfan Spam nade ',".$_SESSION['etchat_'.$this->_prefix.'user_id'].")");exit;
}
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_text_css, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_ip)
    VALUES ( '".$_SESSION['etchat_'.$this->_prefix.'user_id']."', '".$_POST['message']."', '".$style."', ".date('U').", ".(int)$_POST['room'].", ".(int)$_POST['privat'].", '".$_SERVER['REMOTE_ADDR']."')");
$_SESSION['PluginChat_last_message'] = $_POST['message'];
وسپس ميتونيد هر متني رو که ميخوايد به کاربر بگه رو باKarbar Gerami Lotfan Spam nadeجايگزين کنيد.

امیدوارم پست مفیدی باشه البته میتونستم اینارو مثل یه فایل بزارم جایگزین کنین ولی گفتم اینطوری توضیح بدم راحتر میتونید یاد بگیرید :53:

 

mp88

تازه وارد
خب همونطور که قول داده بودم فقط دیر شد ببخشین یه مشکلاتی دارم نمیتونم زیاد به نت برسم :53: حل باگ هک مديريت از طريق لينک ?AdminRegUserEdit&admin&id=555

اول وارد AdminRegUserEdit.class.php شويد

کد زير رو پيدا کرده


کد:
if ($_SESSION['etchat_'.$this->_prefix.'user_priv']=="admin"){
کد زير رو بعد از کد بالا قرار بديد دقیق زير کد بالا


کد:
// Checksum
if($_GET['cs4rue']!=$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'] || !isset($_GET['cs4rue']) || !isset($_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'])){
echo "Dear Admin this User tried to fake you. ;-)";
return false;
}
وارد فايل AdminRegUserIndex.class.php شويد

کد زير رو پيدا کرده


کد:
$print_sitemaker = $sitemakerObj->get();
کد زير رو بعد از کد بالا قرار دهيد


کد:
// Checksum
$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit'] = rand(1,999999999);
بعد از انجام تغييرات بالا

درجات کاربرا مديرا و ادمين ها براي مثال ناظر اين جوري هستش لينکش


کد:
| <a href=\"./?AdminRegUserEdit&mod&id=".$datasets[0]."\">mod</a> |
بايد به صورت زير تغيير بديد


کد:
| <a href=\"./?AdminRegUserEdit&mod&cs4rue=".$_SESSION['etchat_'.$this->_prefix.'CheckSum4RegUserEdit']."&id=".$datasets[0]."\">mod</a> |
اين رو براي همه درجات بايد تکرار کنيد

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل باگ هک مديريت با شکلک [ /img ] [ img ]

براي حل اول وارد فايل StaticMethods.class.php شويد

کد زير رو پيدا کرده


کد:
if (!empty($image_path))
$str="<img src="$image_path" style="max-width:500px;max-height:300px;">";
کد زير رو جايگزين کد بالا کنيد


کد:
if (!empty($image_path) && stripos($str, '?admin')===false)
$str="<img src="$image_path" style="max-width:500px;max-height:300px;">";
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل باگ گذاشتن شکلک بزرگ در درجات ليست آنلاين ها و هنگ شدن ليست آنلاين ها

وارد فايل Changestatus.class.php شويد

کد زير رو پيدا کرده


کد:
// Test if this status is allowed to be used by this user
if (!$this->checkRightsOfStatus($_POST['img'])) {
$_POST['img']="";
$_POST['text']="";
echo "Not allowed operation.";
return false;
}
کد زير رو جايگزين کد بالا کنيد


کد:
// Test if this status is allowed to be used by this user
if (!$this->checkRightsOfStatus($_POST['img'])) {
$_POST['img']="";
$_POST['text']="";
echo "Not allowed operation.";
return false;
}

$_POST['img']= htmlspecialchars(preg_replace("/[^a-zA-Z_0-9\-. ]/i", "", $_POST['img']), ENT_QUOTES, "UTF-8");
$_POST['text']= htmlspecialchars(preg_replace('/[\x00-\x1F]/', '', $_POST['text']), ENT_QUOTES, "UTF-8");
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل باگ هک ليست آنلاين ها با تغيير جنيست

وارد فايل CheckUserName.class.php شويد

کد زير را پيدا کرده


کد:
$userCheckerAndInserterObj = new UserCheckerAndInserter($this->dbObj, $user_exists, $username, $_POST['pw'], $gender, $this->lang);
کد زير رو جايگزين کد بالا کنيد


کد:
$userCheckerAndInserterObj = new UserCheckerAndInserter($this->dbObj, $user_exists, $username, $_POST['pw'], preg_replace("/[^a-z]/i", "n", $gender), $this->lang);
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل باگ وارد شدن در اتاق هاي رمز دار با مروگر اپرا يا گوگل کروم با راست کليک و تغيير و حذف سورس به راحتي بدون اخطار و ارور وارد اتاق هاي رمز دار ميشوند

وارد فايل ReloaderMessages.class.php شويد

کد زير رو پيدا کرده


کد:
if ($room_allowed->room_status!=1){
$raum_array=$this->dbObj->sqlGet("SELECT etchat_id_room, etchat_roomname, etchat_room_goup FROM {$this->_prefix}etchat_rooms where etchat_id_room = 1");
}
کد زير رو جايگزين کد بالا کنيد


کد:
if ($room_allowed->room_status!=1){
$_POST['room'] = 1;
unset($_POST['message']);
$raum_array=$this->dbObj->sqlGet("SELECT etchat_id_room, etchat_roomname, etchat_room_goup FROM {$this->_prefix}etchat_rooms where etchat_id_room = 1");
}
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل جلوگيري از ورود با آي پي فاک ( ip fucker)

وارد فايل

Blacklist.class.php شويد

کد زير را پيدا کرده


کد:
$this->user_param_all = $_SERVER['REMOTE_ADDR']."@".@gethostbyaddr($_SERVER['REMOTE_ADDR'])."@".@getenv('HTTP_X_FORWARDED_FOR');
کد زير رو جايگزين کد بالا کنيد


کد:
$this->user_param_all = $_SERVER['REMOTE_ADDR']."@".@gethostbyaddr($_SERVER['REMOTE_ADDR']);
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل مشکل باگ بستن ليست آنلاين ها با استفاده از وضعيت من

statusImage

وارد فايل

ChangeStatus.class.php شويد

به جاي کدهاي


کد:
private function checkRightsOfStatus($statusImagename){

       // create new LangXml Object
       $langObj = new LangXml();
       $lang=$langObj->getLang();

       foreach($lang->chat_js[0]->status as $status_value)
          if ($status_value->tagAttrs['imagename']==$statusImagename && $status_value->tagAttrs['rights']!='all')    
             $thisStatusImagenameRights[]=$status_value->tagAttrs['rights'];

       if (!is_array($thisStatusImagenameRights)) return true;
       else{
          if (in_array($_SESSION['etchat_'.$this->_prefix.'user_priv'], $thisStatusImagenameRights)) return true;
          else return false;
       }
    }
}
کدهاي زير رو جايگزين کنيد


کد:
private function checkRightsOfStatus($statusImagename){

             if(substr($statusImagename, 0, 7)!='status_') return false;

             // create new LangXml Object
             $langObj = new LangXml();
             $lang=$langObj->getLang();

             foreach($lang->chat_js[0]->status as $status_value)
                    if ($status_value->tagAttrs['imagename']==$statusImagename && $status_value->tagAttrs['rights']!='all')
                          $thisStatusImagenameRights[]=$status_value->tagAttrs['rights'];

             if (!is_array($thisStatusImagenameRights)) return true;
             else{
                    if (in_array($_SESSION['etchat_'.$this->_prefix.'user_priv'], $thisStatusImagenameRights)) return true;
                    else return false;
             }
       }
}
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

جلوگيري از ارسال متن تکراري درداخل روم

ميريم سراغ فايلMessageInserter.class.php سپس فايل رو ويرايش ميکنيم

کد زيرراپیدا کنید


کد:
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_text_css, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_ip)
                VALUES ( '".$_SESSION['etchat_'.$this->_prefix.'user_id']."', '".$_POST['message']."', '".$style."', ".date('U').", ".(int)$_POST['room'].", ".(int)$_POST['privat'].", '".$_SERVER['REMOTE_ADDR']."')");
سپس اين کدرو حذف کرده و اين کد را جايگزين کنيد


کد:
if(@$_SESSION['PluginChat_last_message']==$_POST['message'])
{
    $this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_privat) values(1,'Karbar Gerami Lotfan Spam nade ',".$_SESSION['etchat_'.$this->_prefix.'user_id'].")");exit;
}
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_messages ( etchat_user_fid, etchat_text, etchat_text_css, etchat_timestamp, etchat_fid_room, etchat_privat, etchat_user_ip)
    VALUES ( '".$_SESSION['etchat_'.$this->_prefix.'user_id']."', '".$_POST['message']."', '".$style."', ".date('U').", ".(int)$_POST['room'].", ".(int)$_POST['privat'].", '".$_SERVER['REMOTE_ADDR']."')");
$_SESSION['PluginChat_last_message'] = $_POST['message'];
وسپس ميتونيد هر متني رو که ميخوايد به کاربر بگه رو باKarbar Gerami Lotfan Spam nadeجايگزين کنيد.

امیدوارم پست مفیدی باشه البته میتونستم اینارو مثل یه فایل بزارم جایگزین کنین ولی گفتم اینطوری توضیح بدم راحتر میتونید یاد بگیرید :53:
ممنون داداش نمدونم چی بهت بگم فقط باید بگم 20 عالی دمت گرم :53: :53: :53: :53: :53: :53: :53: :53: :53: :53: :53: :53:

 
بالا