‏نمایش پست‌ها با برچسب ترفند. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب ترفند. نمایش همه پست‌ها

۱۳۹۰ اردیبهشت ۲, جمعه

ترفند 10 - چگونه وسط یک اتصال TCP بنشینیم و محتویاتش را ببینیم؟

تعریف مساله

گاهی اوقات دلمان می‌خواهد ببینیم برنامه‌ها با همدیگر چه صحبتی می‌کنند و چه داده‌هایی بین آنها رد و بدل می‌شود. مثلا من امروز مشغول برنامه‌نویسی بودم و متوجه خطایی در برنامه شدم. می‌خواستم ببینم چه اطلاعاتی بین برنامه من و سرور در حال رد و بدل شدن است تا شاید بتوانم خطا را برطرف کنم. یا ممکن است شما بخواهید اطلاعاتی که بین مرورگر شما و یک سرور رد و بدل می‌شود را ببینید و ...
این مساله زیاد پیش می‌آید؛ و راه‌حل‌های متنوعی هم دارد. مثلا می‌توان با ابزاری مثل WireShark یا WinDump کل بسته‌های اطلاعاتی رد و بدل شده روی شبکه را دید، مربوط به هر برنامه‌ای که می‌خواهد باشد. یا مثلا برنامه‌هایی (مثل مرورگرها) که قابلیت تنظیم پروکسی دارند را می‌توان تنظیم کرد که از یک برنامه پروکسی خاص استفاده کنند که اطلاعات را ذخیره می‌کند و ... که البته این دو راه برای مساله من جوابگو نبودند. چرا؟ چونکه ...
اولا برنامه‌ای که من با آن سر و کار داشتم قادر به استفاده از پروکسی نبود. بنابراین راه حل دوم از دور خارج می‌شود. (که مساله مهمی هم نیست؛ چون راه حلی که خواهم گفت تفاوتی با این راه حل ندارد، فقط عمومی‌تر است)
اما کجا نمی‌توان از WireShark یا WinDump استفاده کرد؟
وقتی - مثل مساله جاری من - هر دو برنامه روی کامپیوتر خودتان اجرا می‌شوند و از آدرس loopback یعنی 127.0.0.1 برای اتصال استفاده می‌کنند این ترافیک برای WinShark و WinDump و مشابه آن قابل رویت نیست. ظاهرا چاره‌ای هم ندارد، مگر اینکه یکسری حرکات آکروباتیک پیاده کنید تا جواب بگیرید ... (اینجا را بخوانید)

... اما راه حل

من احتیاج به یک راه حل سریع، آماده و بدون نیاز به حرکات آکروباتیک داشتم. راه حلی که توضیح می‌دهم می‌تواند روی اتصالات TCP به کار گرفته شود.
خوشبختانه برنامه‌ی ncat روی کامپیوترم موجود بود. (این برنامه همراه با نرم‌افزار ‌nmap نصب می‌شود) برنامه ncat کلا ابزاریست برای «بازی کردن» با اتصالات شبکه و وصل کردن آن‌ها به برنامه‌های مختلف به شیوه‌های مختلف!
فرض کنید یک سرور داریم که روی پورت 8888 منتظر اتصال کلاینت‌ها است. دستور زیر، به کمک ncat یک سرور مجازی روی پورت 9999 راه می‌اندازد، و به محض اینکه اتصالی با آن برقرار شد، با پورت 8888 روی کامپیوتر محلی (127.0.0.1) تماس می‌گیرد و اطلاعات را دست به دست می‌کند. یعنی هر داده‌ای که برای ncat روی پورت 9999 ارسال شود عینا برای سرور روی پورت 8888 ارسال می‌شود و بالعکس.
علاوه بر این به کمک سوییچ x، اطلاعات رد و بدل شده داخل یک فایل (با نام dump) نوشته می‌شود.
> ncat -l 9999 -x dump -e "ncat 127.0.0.1 8888"
شرح مختصر:
  • -l 9999 باعث می‌شود ncat روی پورت 9999 منتظر دریافت اتصال شود.
  • -x dump اطلاعات را به صورت hex درون یک فایل ذخیره می‌کند.
    نکته: اگر می‌خواهید اطلاعات روی صفحه نمایش نشان داده شوند نام فایل را con بزنید!
    نکته: اگر می‌خواهید اطلاعات به صورت خام ذخیره شوند به جای سوییچ x از سوییچ o استفاده کنید.
  • -e "..." باعث می‌شود ncat به محض برقراری تماس، دستور داخل گیومه را اجرا کند و ورودی/خروجی آن را روی شبکه بفرستد. در اینجا یکبار دیگر ncat جهت اتصال با سرور فراخوانی می‌شود.
  • متاسفانه در اطلاعاتی که بدین شیوه ذخیره می‌شوند مشخص نیست هر بسته اطلاعاتی از سمت سرور به کلاینت ارسال شده یا بالعکس. که نشان می‌دهد اگر بتوانید از WireShark استفاده کنید، جواب بسیار بهتری می‌گیرید ...
  • دستور بالا عینا روی لینوکس هم قابل اجرا است، هر چند محدودیت ذکر شده برای WireShark، روی لینوکس وجود ندارد.

۱۳۸۹ دی ۸, چهارشنبه

ترفند 9 - خاموش کردن خودکار کامپیوتر بعد از تمام شدن کار یک برنامه

تا حالا شده که بخواین وقتی اجرای فلان برنامه تمام شد کامپیوتر خودبخود خاموش بشه؟ مثلا وقتی که برنامه‌ی محاسبه‌ی عدد پی که نوشته‌اید خاتمه پیدا کرد، یا نصب برنامه‌ای تمام شد، یا وقتی که فرمت کردن هارد دیسک خاتمه یافت یا ...
در این ترفند، یاد می‌گیرید که چطور این کار را خودتون و بدون ابزارهای اضافی انجام بدین: به کمک خط فرمان (command-prompt) ویندوز، یا ترمینال (terminal) لینوکس.
اول روش ویندوزی رو بگم، بعد بریم سراغ لینوکس.

۱۳۸۹ آبان ۲۴, دوشنبه

ترفند 8 » محافظت از حافظه فلش درایو (USB) در برابر کرم‌های AutoRun

داستان: چقدر ویروس میل دارید؟

هر از چندی گذار آدم به زیراکسی‌ها میفتد تا چیزی را برایش چاپ کنند. من هر وقت سراغ زیراکسی دانشگاه می‌روم تا فایلی را از روی فلش درایو (USB) چاپ بگیرد، علاوه بر کاغذ چاپ شده، چندتا «ویروس» هم داخل فلش درایو «هدیه» می‌گیرم.
قبلا توضیح دادم که چطور می‌شود از ویندوز در برابر کرم‌های autorun.inf محافظت کرد. با این کار دیگر نیازی به نرم‌افزارهای (به زعم من) بی‌مصرفی مثل autorun blocker و anti autorun و غیره ندارید و ویندوز هرگز از این طریق آلوده نخواهد شد. [*]
اما این مانع از این نمی‌شود که ویروس (در واقع، کرم) تلاش نکند خودش را از این طریق منتقل کند. بنابراین، اگرچه کامپیوتر من آلوده نمی‌شود، اما کرم خودش را روی فلش درایو کپی می‌کند. و این یعنی من باید هر بار زحمت پاک کردن این مهمان ناخواسته را بکشم، حواسم باشد تا وقتی کرم پاک نشده، فلش درایو را به کامپیوتر دوستم متصل نکنم و از این دردسرها ... !
اما آیا راهی هست که به کرم بگوییم زحمت نکشد و روی فلش درایو هم کپی نشود؟ بله. تقریبا بله.

۱۳۸۹ مهر ۲۳, جمعه

ترفند 7 » امان از دست Spammer ها در Yahoo Groups

مساله چیه؟

مساله اینه که یکی از رفقا دچارش شده بود: سیل هرزنامه‌ها (Spam) که هر روز در ایمیل یاهو دریافت می‌کرد و هیچ روشی برای متوقف کردنش موثر نشده بود:
  • خود یاهو قادر نبود این هرزنامه‌ها رو تشخیص بده و بفرسته به فولدر Spam.
  • هر چقدر هم کلید Spam روی نامه‌های مختلف فشار داده می‌شد باز هم یاد نمی‌گرفت.
  • ایمیل‌ها از طرف یک گروه یاهو ارسال می‌شد.
  • ولی تعریف کردن فیلتر بر اساس مشخصات نامه‌ها افاقه نکرده بود.
ضمنا هرزنامه‌ها فارسی بودند. برای همه‌ی اسپمرها، تبلیغاتچی‌ها و کسانی که نامه‌های ناخواسته می‌فرستند دعا می‌کنم که گرفتار یک موجود سمج و بی‌ملاحظه مثل خودشون بشوند. :)

چطوری حل شد؟

وقتی این مشکل با من مطرح شد، یادم اومد که سال‌ها پیش خودم همین مشکل را داشتم و حتی به خاطرش با پشتیبانی یاهو مکاتبه هم کرده بودم! راه حلش گزینه‌ایه که داخل تنظیمات Yahoo Groups به بهترین نحو ممکن مخفی شده بود و شده است.
راه حل:
  1. رفتن به صفحه تنظیمات Yahoo Groups (راستش این مرحله لازم نیست، بلکه یکراست برید مرحله دو :)
  2. پیدا کردن لینک My Email Preferences
  3. دو حالت داره:
    الف) اگر تعدادی ایمیل به حساب یاهو اضافه کرده باشید، لیست آنها را در اینجا خواهید دید. یکی را انتخاب کنید و لینک Edit را کلیک کنید.
    ب) در غیر این صورت، به مرحله بعدی بروید.
  4. تیک گزینه Allow group moderators to directly add me to their groups را پاک کنید.
  5. پایان! و خداحافظ اسپمرهای یاهو گروپ!
به نظر من نه تنها یاهو نباید به صورت پیشفرض این گزینه رو فعال کنه، بلکه باید در طراحی صفحه تنظیماتش تجدید نظر کنه تا راحتتر بشه این گزینه رو پیدا کرد.
همین. از اونجایی که این تنظیمات اصلا جلوی چشم نیست و حتی ممکنه بسیاری ندونند که مشکلشون از این گزینه ناشی می‌شه، به نظرم اومد به شما هم بگم.

۱۳۸۹ شهریور ۱۱, پنجشنبه

ترفند 6 » ISP شما هم با https مشکل پیدا کرده؟

از دیشب سرویس‌دهنده اینترنت (ISP) من با SSL مشکل پیدا کرده و صفحات https را باز نمی‌کند. طبیعتا راه حل چنین مشکلی این است که بتوان به طریقی از یک محل دیگر متصل شد. به چنین ابزارهایی proxy (واسط) گفته می‌شود که متاسفانه این واژه در ایران بار منفی پیدا کرده است.
توجه: این پست به کار کسی که دنبال دور زدن چیزی(!) باشد نمی‌خورد. فقط برای وقتی که ISP مشکل پیدا می‌کند و https را رد نمی‌کند به کار می‌آید.
برای این ترفند باید از قبل یک «واسط» آماده داشته باشید.
نکته این پست ساده است: لازم نیست کل ترافیکتان را از «واسط» عبور دهید که گاهی سرعتش کم است. احتمالا می‌دانید که می‌شود به مرورگر گفت فقط روی HTTPS از «واسط» استفاده کند، ولی مثل من حواستان نبوده :)

راه حل FireFox

بخش تنظیمات واسط در فایرفاکس: Options\Advanced\Network\Settings
کافیست تیک Use this server for all protocols را بردارید، و آدرس ip و port کادر HTTP (و سایر پروتکل‌ها) را حذف کنید و فقط در کادر جلوی SSL، همان ip و port را قرار دهید.

راه حل Internet Explorer

بخش تنظیمات واسط در اینترنت اکسپلورر: Options\Connections\Lan Settings
باید اول گزینه Advanced را انتخاب کنید. سپس کادر مربوط به همه‌ی پروتکل‌ها را پاک کنید و فقط در کادر Secure مقدار ip و port مناسب را بنویسید.

۱۳۸۹ شهریور ۸, دوشنبه

ترفند 5 » رنگ آمیزی خط فرمان لینوکس

در پست قبلی در مورد تاکید خط فرمان لینوکس بر رنگی بودن گفتم و نحوه رنگ آمیزی دستور grep را نوشتم. این بار جالبتر است!
دوست دارید رنگ سطری که دستور را در آن می‌نویسید با بقیه ترمینال متفاوت باشد؟
این کار چند فایده دارد:
اول) وقتی دستوری مثل cat یا grep خروجی زیادی تولیدی می‌کند، خود دستور گم نمی‌شود. راحت معلوم است که ابتدای خروجی کجاست و آخرش کجا.
دوم) با کمی سلیفه می‌توانید کاری کنید که حالت‌های مختلف رنگ‌های مختلف داشته باشد: مثلا من برای کاربر عادیم رنگ آبی، برای کاربر root (یا sudo) رنگ قرمز و برای کاربری راه دور (با ssh) رنگ سبز گذاشته‌ام.

روش انجام

کافیست خطوط زیر را در محل مناسبی از فایل .bashrc در شاخه home کاربری‌تان اضافه کنید: (بگردید و آن را بعد از تمام خطوطی که PS1 در آن به کار رفته بگذارید)
#!/bin/bash
promptcolor="2;34"
if [[ $EUID -eq 0 ]]; then
    promptcolor="2;31"
fi
PS1="\[\e[${promptcolor}m\]$PS1\[\e[0m\]"
یادتان باشد که لازم است یکبار دیگر ترمینال را باز کنید تا (.bashrc اجرا شده و) تغییرات را در پنجره جدید ببینید.
عدد 34 رنگ آبی و عدد 31 رنگ قرمز را مشخص می‌کند. (جدول رنگ) عدد 2 هم تاثیراتی بر میزان روشن بودن یا حتی درشت (bold) شدن متن دارد که بهتر است تغییر دهید و ببینید.
شرح کامل اینکه PS1 چیست و معنی این دستورات اجق وجق را در همان لینک جدول رنگ پی بگیرید.

کلمات کلیدی: ،shell ،terminal رنگی، رنگ آمیزی، لینوکس، اسکریپت، ترفند، پوسته، حط فرمان.

۱۳۸۹ شهریور ۷, یکشنبه

ترفند 4 » رنگ آمیزی دستور grep در لینوکس

یکی از تفاوت‌های خط فرمان لینوکس با ویندوز در تاکیدی است که روی رنگارنگ بودن دارد!

grep رنگی

اولین بار به طور اتفاقی با لینوکسی مواجه شدم که هنگام استفاده از grep، عبارات پیدا شده را با رنگ متفاوت نشان می‌داد.
این کار ساده و کم‌شناخته است. کافیست از سوییچ --color=auto استفاده کنید:
grep --color=auto {بقیه خط فرمان}
دوست داشتید؟ خب پس خطوط زیر را به محل مناسبی از فایل .bashrc در شاخه home کاربری‌تان اضافه کنید تا همیشه grep این کار را خودبخود انجام دهد و لازم نباشد هربار سوییچ را تایپ کنید: (این فایل پنهان است و برای دیدنش شاید لازم باشد گزینه نمایش فایل‌های پنهان را فعال کنید Ctrl+H)
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
با این کار یک alias برای grep و مشتقاتش تعریف کردید تا هر بار آنها را صدا می‌زنید این سوییچ فعال شود.

بروزرسانی: پست بعدی در مورد رنگ آمیزی خط فرمان لینوکس

کلمات کلیدی: shell، terminal، grep، رنگی، رنگ آمیزی، لینوکس، اسکریپت، ترفند، پوسته، حط فرمان.

۱۳۸۹ مرداد ۱۷, یکشنبه

ترفند 3 » تحریم ایران در SourceForge و راه حلی برای دانلود آسان!

برای: هر مرورگر مدرن و هر سیستم‌عاملی
سطح: مبتدیمواد لازم: سی ثانیه وقت!

مدتی است که سایت سورس فورج (Sourceforge.net) ایران را تحریم کرده است. بسیاری از پروژه‌های متن‌باز (opensource) در این سایت توسعه می‌یابند و منبع خوبی برای برنامه‌های رایگان به شمار می‌رود. البته مدیر هر پروژه در سورس فورج می‌تواند انتخاب کند که دسترسی به آن پروژه برای کشورهای تحریم شده مسدود باشد یا خیر.

راه حل

راه ساده دور زدن این تحریم - بدون استفاده از پروکسی و ... - را در زیر می‌خوانید:
  1. این لینک تصحیح SourceForge را بکشید و در نوار Bookmarks مرورگرتون اضافه کنید. (برای اینترنت اکسپلورر کلیک راست و Add to Favorites)
  2. هر وقت خواستید از سورس فورج چیزی دانلود کنید، کافیه قبل از کلیک کردن روی لینک دانلود، این بوک‌مارک رو کلیک کنید تا لینک دانلود رو به صورت مستقیم در بیاره.
  3. این بوک‌مارک بیشتر جاها باید جواب بده. ولی اگر به صفحه اول پروژه در خود سایت سورس فورج، یا صفحه دانلود آن بروید قطعا جواب خواهد داد. :)
  4. گاهی اولین تلاش نتیجه نمی‌دهد و با کلیک روی لینک تصحیح شده پیغام 404 Not Found می‌گیرید. این مشکل به خاطر اینه که گاهی همه سرویس‌دهنده‌های سورس فورج بروز نیستند و فایل را ندارند. در این صورت کافیست یکبار دیگه بوک‌مارک را کلیک کنید تا سرویس‌دهنده دیگری انتخاب بشه.

آزمایش

برای تست به این صفحه بروید. در حالت عادی کلیک روی دکمه Download به صفحه تحریم منجر می‌شود. اما اگر قبل از کلیک کردن روی آن از بوک‌مارک «تصحیح SourceForge» استفاده کنید و سپس دکمه Download را کلیک کنید مستقیما فایل را دریافت خواهید کرد.

این بوک‌مارک با فایرفاکس 3.6 و اینترنت اکسپلورر 8 تست شده است. اگر مشکلی داشتید خبر بدهید.

تاریخچه

قبل از این دوستم هدایت در وبلاگش یک اسکریپت را معرفی کرده بود و اون رو برای استفاده بهبود داده بود. من هم این بوک‌مارک را با سهولت استفاده با کمک و توسعه همان اسکریپت نوشتم.

توضیح بیشتر رو می‌توانید در ادامه مطلب بخوانید:

۱۳۸۹ تیر ۱۳, یکشنبه

ترفند 2 » جابجا کردن فایل در SVN به شیوه صحیح

تعریف مساله

اگر نمی‌دانید SVN چیست بی‌خیال این پست بشوید و در عوض اینجا یا اینجا را بخوانید.

اگر تا به حال برای مدیریت فایل‌های پروژه از نرم‌افزار SVN (SubVersioN) استفاده کرده باشید، احتمالا به این موضوع برخورد داشته‌اید که یک فایل را جابجا کرده‌اید یا نامش را تغییر داده‌اید و سپس هنگامیکه می‌خواستید تغییرات را ارسال (commit) کنید، متوجه شده‌اید که به جای اینکه از دستورات svn برای جابجا کردن فایل استفاده کنید، از دستورات سیستم فایل استفاده کرده‌اید.

در این حالت SVN به مشکل برمی‌خورد: SVN نمی‌تواند بفهمد که شما فایل را جابجا کرده‌اید، بنابراین این جابجایی را به صورت دو تغییر می‌بیند: اولا فایل اصلی گم‌شده است. دوما فایل جدیدی اضافه شده است که تحت مدیریت نسخ قرار ندارد.

شما می‌توانید این تغییرات را ارسال کنید که معادل یک حذف/اضافه شدن یک فایل جدید به مخزن (Repository) است. اما این وضعیت با یک جابجایی(move) متفاوت است، چرا که در جابجایی سابقه تغییرات فایل حفظ می‌شود ولی در یک حذف/اضافه دو فایل به همدیگر هیچ ارتباطی ندارند و سابقه آنها از همدیگر مستقل است.

راه‌حل ویندوزی

این وضعیت به کمک TortoiseSVN در ویندوز به سادگی قابل حل است:
کافیست در پنجره ارسال، دو فایل قدیم و جدید را انتخاب کنید و از منوی کلیک راست، گزینه Repair Move را انتخاب کنید. شرح بیشتر

راه‌حل لینوکسی

در لینوکس اما وضعیت اندکی متفاوت است. حقیقتش من هیچ رابط کاربری دلچسبی برای SVN در لینوکس سراغ ندارم. با اینکه در حال حاضر SVN جزء لاینفک برنامه‌نویسی متن‌باز است و خودش نیز زاده این فرهنگ است و طبیعتا انتظار می‌رود برنامه‌های مناسبی برای آن در لینوکس موجود باشد؛ و با اینکه برنامه‌های بیشماری در این رابطه برای لینوکس نوشته شده‌اند، به نظر من هیچ یک کارایی TortoiseSVN را ندارند. برنامه‌هایی مثل: RabbitVCS, RapidSVN, SmartSVN, Subclipse و …

از طرف دیگر معلوم نیست امکان Repair Move در کدامیک از این برنامه‌ها وجود دارد یا خیر. نتیجه اینکه تصمیم گرفتم برای حل این مشکل دست به کار شوم و یک اسکریپت ساده بنویسم. حاصل کار اسکریپت svnfixmove است که از طریق خط فرمان قابل استفاده است.

فراخوانی اسکریپت بسیار شبیه استفاده از دستور svn move است. مثلا اگر اسکریپت را در فولدر خانه (home) خود قرار دهید:

~/svnfixmove oldfile newfile

اول بررسی می‌کند که فایل oldfile در وضعیت Missing باشد و فایل newfile نیز در وضعیت Unversioned قرار داشته باشد و فقط در این صورت، وضعیت فایل را «تصحیح» می‌کند.

برای استفاده از اسکریپت کافیست متن آن را از کادر زیر کپی کنید و در یک فایل ذخیره کنید. سپس فایل را به عنوان فایل قابل اجرا علامت بزنید:

#!/bin/sh
#
# By: Sajjad Naficy (2010/Jul/4)
#
# This work is in public domain. You may use/modify/redistribute 
# it anyway you want. However a mention of the original creator 
# is appreciated.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#

(svn st $1|grep "^\!") >/dev/null
if [ $? -ne 0 ]; then
  echo "$1 must be missing." 
  exit 1
fi
(svn st $2|grep "^\?") >/dev/null
if [ $? -ne 0 ]; then
  echo "$2 must be unversioned." 
  exit 2
fi

mv $2 $1
svn move $1 $2
کلمات کلیدی: Linux, script, subversion, svn, svn move, TortoiseSVN, Windows, اسکریپت, ترفند, لینوکس, ویندوز

۱۳۸۹ خرداد ۲۹, شنبه

ترفند 1 » از کار انداختن AutoRun ویندوز

برای: ویندوز - همه نسخه‌ها (از 95 تا XP تا Vista تا ویندوز هفت)
سطح: متوسطمواد لازم: دو دقیقه وقت!

بسیاری از بدافزارهای امروزی از طریق درایوهای USB منتقل می‌شوند. چنین رفتاری کرم USB نامیده می‌شود. برای پیشگیری از این نوع بدافزارها نیاز به هیچ برنامه خاصی نیست؛ شما می‌توانید AutoRun ویندوز را از کار بیاندازید تا دیگر از طریق حافظه USB آلوده نشود:

  1. برنامه Notepad را بازکنید و کد زیر را عینا درون آن کپی کنید:
    REGEDIT4
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
    @="@SYS:DoesNotExist"
  2. از منوی File گزینه Save as را انتخاب کنید.
  3. کادر انتخاب واقع در پایین پنجره را از Text Files به All Files تغییر دهید. (این تغییر لازم است وگرنه فایل با نام صحیح ذخیره نخواهد شد)
  4. فایل را با نام مثلا DisableAutoRun.reg ذخیره کنید.
  5. فایل را اجرا کنید. به پیغام‌هایی که داده می‌شود جواب مثبت بدهید.

عوارض جانبی: با این کار ویندوز هرگز به سراغ فایل autorun.inf نمی‌رود. بنابراین دیگر سی‌دی‌ها نیز خودبخود اجرا نخواهند شد و باید به صورت دستی آنچه می‌خواهید را از روی آنها فراخوانی کنید. همچنین احتمالا شکلک مخصوص هر سی‌دی نیز دیگر قابل رویت نخواهد بود. حواستان باشد!


تمام شد؛ اما اگر می‌خواهید می‌توانید اطلاعات بیشتر را در ادامه مطلب بخوانید: