دسته Archives: سیستم عامل

به روزرسانی هسته اوبونتو – update Ubuntu kernel

به نام  دانای بر حق

مقدمه

گاه شما نیاز میبینین که کرنل سیستم عامل خودتون رو آپدیت کنین، از اونجایی که لینوکس مثل ویندوز، شما رو یک انسان نادان فرض نکرده به شما این اجازه رو میده خودتون کرنل سیستم عامل خودتون رو آپدیت کنین پس سیستم عامل Ubuntu برای نمونه نحوه آپدیت کردن کرنل به ورژن دلخواهتون رو در موردش صحبت میکنیم تا باشد که رستگار شوید.

 

Linux_kernel_ubiquity.svg

پیدا کردن packge ها کرنل

شما به مراجعه به این صفحه :

میتونین تمامی ورژن هایی kernel ای که برای اوبنتو کامپایل شده رو دانلود آپدیت کنین و اولین و مهم ترین اصل این هستش که اگر سیستم عامل شما 32bit باشد حتما باید package های که با .i386 ختم میشوند را دانلود کنید در غیر این صورت اگر 64bit بودید باید پکیج هایی که به .amd64 ختم میشوند را دانلود کنید اگر هم از سیستم های دیگه مثل پردازنده arm استفاده میکنید به سراغ پکیج مورد نظر خودتون برید.

حال کدام پیکج ها را نصب کنم؟

ابتدا ورژن مورد نظر خود را انتخاب کنید، معمولا شما دو header و یک image نیاز دارید اما header ای را که پیشوند ندارد و در آخر آن اطلاعات بیشتر

آنالیز ساختار ویندوز و روت کیت های سطح هسته-بخش پایانی

اگر کمی با برنامه نویسی کرنل آشنایی داشته باشید، حتما ساختار DRIVER_OBJECT را به خوبی می شناسید. این ساختار دارای فیلدی به نام MajorFunction است که آرایه ای از نوع PDRIVER_DISPATCH که آدرس روتین های مدیریت IRP دریافتی را در خود نگهداری می کند. IRP ها در wdm.h تعریف گردیده اند، نمیخواهیم وارد مبحث برنامه نویسی سطح کرنل شویم پس بیشتر وارد جزییات نمی شویم. اگر بتوانیم به ساختار DRIVER_OBJECT یک درایور دسترسی پیدا کنیم می توانیم عمل هوک را برای IRP های دریافتی آن انجام دهیم و IRP های آن درایور را مشاهده نماییم. ساده ترین راه برای دسترسی به این ساختار استفاده از تابع IoGetDeviceObjectPointer() است. این تابع آدرس Device Object را به عنوان خروجی بر میگرداند و درواقع Driver Object فیلدی از Device Object است.ساختار Device_Object ها را در تصویر زیر میبینیم:

Device_Object

همانگونه که مشاهده می کنیم فیلد NextDevice به دیوایس بعدی اشاره می کند وقتی درایورها به هم متصل شده اند و یک chain تشکیل دهند می توان مقادیر آن را مشاهده نماییم.  هر DeviceObject دارای DriverObject خودش می باشد که در فیلد DriverObject مشخص گردیده است. برای مشاهده درایورها می توانیم از کامند !object \device\ استفاده نماییم که لیستی از کل آبجکت ها را نشان می دهد. سپس برای نمایش استک از کامند  !devstackمی توانیم استفاده نماییم.

اطلاعات بیشتر

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

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

یکی دیگر از تکنیک های که روت کیت ها استفاده می نمایند درواقع می توان گفت نسل جدیدتر روت کیت ها، استفاده از تکنیک DKOM[1] نام دارد. در این تکنیک ساختار های کرنل را تغییر میدهیم . ساختارهایی مانند لیست پروسه های فعال ، درایورها.

در این روش هیچگونه هوک و یا تغییری در جداولی مانند SSDT,IDT انجام نمیدهیم. روت کیت ها می توانند با Unlink نمودن یک شی EPROCESS از ActiveProcesLinks خود را پنهان نمایند و پروسه ای را از دید تابع ZwQuerySystemInformation() که برای بدست آوردن لیست پروسه های اجراشده در سیستم استفاده می نماییم پنهان نماید. کرنل از ساختاری به نام KPCR[2] استفاده می کند. در این ساختار اطلاعات مهم و اساسی مانند IDT ، GDT و … ذخیره می شود. برای دسترسی راحتتر به KPCR کرنل آدرس آن را در نسخه های x86 ویندوز درون رجیستر fs و همچنین در ویندوزهای x64 در رجیستر gs ذخیره می کند. KPCR شامل ساختاری است به نام KPRCB[3] است. KPCR مستند شده است ولی KPRCB یک ساختار خصوصی است و تنها در ntoskrnl مورد استفاده قرار می گیرد. این ساختار شامل اطلاعات درباره Scheduling پروسه ها می باشد.

Kernel processor control region

در ساختار _KPRCB فیلدی به نا م CurrentThread وجود دارد که برایمان مهم می باشد همانطور در تصویر زیر می بینیم این فیلد از نوع ساختار _KTHREAD است:

kernel processor control block

برای مشاهده محتوای ساختارهای KPCR و KPRCB می توانیم از دستور های !pcr و !prcb استفاده نماییم، مقدار Current  را به یاد داشته باشید.

pcr-command-windbgاطلاعات بیشتر

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

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

سطح هسته همانند سطح کاربر دارای هوک های خاص خودش است که معروفترین آن ایجاد تغییرات دلخواه در جداولی است که آدرس توابع مورد نیاز سیستم را در خود نگهداری می کنند:

  • System Service Dispatch Table (SSDT)
  • Interrupt Descriptor Table (IDT)

آدرس توابع سطح کرنل درون جدول SSDT نگهداری می شود(توابع nt*). هنگامیکه روند اجرا یک برنامه سطح کاربر میخواهد به سمت کرنل هدایت شود  ID مرتبط با تابع کرنل درون رجیستر EAX قرار می گیرد و رجیستر EDX به لیست پارامترهای که بایستی به تابع ارجاع داده می شود اشاره می کند، سپس با اجرای دستور int 2e و یا sysenter روند اجرا پروسه به سطح کرنل خواهد رفت.  هنگامیکه وقفه ای رخ می دهد سیستم عامل با جستجو در IDT ، روتین مرتبط با مدیریت آن وقفه را بدست میاورد. این جدول تمامی وقفه ها را درون خود نگهداری می کند. روتین هندل کننده وقفه 0x2e  تابع KiSystemService() از ntoskrnl است. برای بازگشت به سطح کاربر از دستور iret استفاده می شود. در صورتی که از دستور sysenter استفاده شود برای بازگشت به سطح کاربر از دستور sysexit استفاده خواهد شد. برای پشتیبانی از دستور sysenter ویندوز در زمان بوت آدرس روتین مرتبط را بجای IDT در رجیستر  MSR[1]  ذخیره می کند. . اسکریپت زیر را می توانید از این آدرس[2] دریافت نمایید. با دستور زیر در windbg میبینیم که handler این وقفه تابع  KiSystemService() است :

اطلاعات بیشتر

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

در این پست و چند پست آتی به نحوه آنالیز و تحلیل Rootkit ها خواهیم پرداخت که پیش نیاز آن، آشنایی با ساختار و تکنیک های مورد استفاده در آنها می باشد. Rootkit ها مختص به یک سیستم عامل و پلتفرم خاص نیستند، در واقع یک اصطلاح می باشد که به دسته خاصی از بدافزارها اشاره می شود. روت کیت هایی برای MS Windows ، Linux ، Cisco IOS و … نوشته شده و می توان نوشت. مایکروسافت درباره روت کیت چنین می گوید که نویسندگان بدافزارها برای پنهان کردن بدافزار از روت کیت ها استفاده می کنند، حال روت کیت بدافزار است یا بخشی از بدافزار و تعریف و تعابیر دیگر از این واژه ، خود را درگیر این قبیل مباحث نخواهیم کرد.

rootkit

Rootkit را می توان به دو بخش root و kit تقسیم کرد تا بهتر به مفهوم آن آشنا شد. سیستم عامل ویندوز به طورکلی به دو سطح تقسیم می شود یعنی Ring0 و Ring3 (به هر سطح Ring گوییم). Ring0 دارای بالاترین سطح دسترسی می باشد که به آن Kernel-mode نیز گفته می شود و همچنین Ring3 دارای کمترین سطح دسترسی که به آن نیز User-mode گوییم.

هر سطح دارای ساختار و ویژگی خاص خود می باشد بنابراین در مبحث دیباگینگ نیز تفاوت هایی وجود دارد. WinDBG دیباگر مایکروسافتی است که می توان در هر دوسطح عمل دیباگ را انجام دهیم ولی نکته قابل توجه کارایی آن است که در Ring3 دیباگر هایی مانند OllyDBG ، ImmunityDBG و… کارایی بهتری را دارا هستند. با توجه به ویژگی های WinDBG ، در دیباگ سطح هسته از آن استفاده می کنیم. راه های دیباگ در windbg را می توان در تصویر زیر مشاهده نمود:

windbg-debug-ways

 

برای دیباگ کرنل به دو صورت Remote و یا Local می توانیم عمل نماییم. Local Debug در سطح هسته بدین معنی است که خود سیستم مان را دیباگ نماییم که در این حالت دارای محدودیت هایی خواهیم بود و کارهایی مانند: توقف در اجرا، قرار دادن نقاط توقف در روند اجرا و امثالهم را نمی توان انجام داد. برای این حالت علاوه بر WinDBG ممکن است به ابزار LiveKD [1]  نیاز شود. در حالت Remote که در واقع بحث اصلی مان خواهد بود، علاوه بر روش های مختلف موجود که محبوبترین آن Serial است با استفاده از ابزار Virtual KD [2]  نیز میتوانید دیباگ را انجام دهید. روش Serial دارای سرعت پایین تری نسبت به Virtual KD می باشد. در حالت Serial سرعتی که داریم   bps  115200 است ولی در Virtual KD  حداکثر سرعت در Virtual Box نیز 450 KB/s  و برای VMware حداکثر 150 KB/s  است. بعد از نصب و راه اندازی Virtual KD در ماشین مجازی براحتی میتوان با استفاده از WinDBG و یا IDA به آن متصل شد و دیباگینگ را انجام دهیم.

اطلاعات بیشتر

Shellcode نویسی در لینوکس بخش 3

به نام دانای بر حق

پیرو آموزش های بخش اول و دوم shell code نویسی در لینوکس یه خرده از بحث مبتدی خارج شده و کمی تولید علم در زبان پارسی در این مورد می کنیم نظر به این نکته که شل کد ها معمولا کد ماشین هستند ما کمی از مباحث پایه خارج میشویم و در این مورد بیشتر بحث می کنیم ، البته اگر خسته نشید : )

 

کمی در مورد ساختار سخت افزار ، زبان ماشین و اسمبلی

ابتدا من از سخت افزار و ساختار cpu به طور مختصر و مفید بگم،هم ما فک میکنیم CPU زبون نفهم هست هم CPU بلا نسبت شخص شخیص شما همچین فکری میکنه 😀 به تصویر زیر توجه کنید:

 

chart cpu

خب این رابطه معادله مثل ترازو هست مشخص هستش که هر چی بیشتر زبان برای ما خوش آیند تر میشه برای پردازنده  نا خوشایند میشود و همین نسبت عکسش هم برقرار هستش خب بهترین حالت شلکد نوشته شدن در پایین ترین قسمت تصویر بالا هستش و حالا یه خرده بیشتراطلاعات بیشتر

نصب آخرین نسخه wine در لینوکس ubuntu.

به نام دانای بر حق

 

 

 

wine چیست؟ ( کم در مورد واین)

 

واین درواقع یعنی باده (شـ-ــراب) و نماد این برنامه نیز می باشد در اصل این نام گذاری برای شبیه بودن به کلمه win که مخفف ویندوز هست میباشد اما به نقل از ویکی پدیا wine این است:

 

wine-logo

واین (به انگلیسی: Wine) یک نرم‌افزار کاربردی آزاد(یعنی اوپن سورس)  است که به نرم‌افزارهای نوشته‌شده سیستم‌عامل مایکروسافت ویندوز اجازهٔ اجرا شدن بر روی سیستم‌عامل‌های شبه-یونیکس را می‌دهد. همچنین واین دارای کتابخانه‌ای به نام Winelib است که توسعه‌دهندگان می‌توانند نرم‌افزارهای ویندوز خود را با آن کامپایل کنند تا سازگار کردن آن برای سیستم‌عامل‌های شبه-یونیکس راحت‌تر شود.

واین یک شبیه‌ساز کامل نیست اما می‌توان آن‌را لایه سازگاری نامید به این خاطر که آن پیاده‌سازی دوبارهٔ دی‌ال‌ال‌های ویندوز است. نام واین از مخفف جملهٔ Wine Is Not an Emulator آمده‌است که «واین یک شبیه‌ساز نیست» معنی آن است.

واین در حالت پیش‌فرض بر روی اکثر توزیع‌های گنو/لینوکس نصب نیست و باید آن را جداگانه نصب کنید.

 

می باشد. ولی حقیقت امر این است که این برنامه اکثر برنامه ویندوز را اجرا می کند نه با شبیه سازی بلکه با تغییر در هدر های برنامه آن را سازگار با لینوکس یا mac osx می کند و آن را به سادگی اجرا میکند من یادم هستش از ورژن 0.1 تا 1 این نرم افزار حداقل 7 سالاطلاعات بیشتر

اجرای برنامه در سطح دسترسی root در lazarus

به نام دانای برحق

مقدمه

شاید اگر شما با لینوکس و دلفی با هم کار کردید سراغ لازاروس هم رفته باشید این پلنگ مظلوم خوب با برنامه نویس های دلفی راه میادش با وجود لنگ زدن بازم سعی می کنه هواتو داشته باشه اما مسائله ای تو لینوکس وجو داره که توی ویندوز هم بخشی از بدل زده شده تو لینوکس دسترسی برنامه ها دو حالت هستش حالت کاربر عادی یا کاربر root یا ریشه که دسترسی کامل رو سیستم داره.
همین حالت تقریبا همون معادل run as admin در ویندوز هست اما با تفاوت های فاحش که اینجا جای بحث نیست.

 

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

موارد مورد استفاده :

یونیت (ها):

 Process

 

تابع (ها) :

 GetUserDir , RunCommand

سایر موارد

 Application class, gksu app

نحوه run شدن برنامه در حالت دسترسی root :

روی فرمتون دوبار کلیک کنید تا رویداد FormCreate برای ویرایش نمایش داده شود سپس کد زیر رو داخل کپی کنید:

اطلاعات بیشتر

solving shortcut work in non-latin java appsحل مشکل فارسی shortcut ها در زبان های غیر لاتین – ubuntu

به نام دانای بر حق

 

این مقاله به علت عدم وجود نمونه انگلیسی در نوع خودش به دو زبان مطرح میشه:

 

keyboard-wallpaper_1112201491

abstract and solving problem

In the some Linux same as Ubuntu we have some problem with non-latin language layout shortcuts, for example for save Ctrl+S not work on other layout now one package can be solving this problem now download and install it and enjoy:

اطلاعات بیشتر

چطوری لینوکسی بشیم | بالاخره منم لینوکسی شدم

به نام دانای بر حق

مقدمه

ابتدا این یادداشت به درد اونایی میخوره که به این تصمیم رسیدن که بیان سمت لینوکس حالا میخوان شروع کن چون من هیچ استدلالی رو برای لینوکسی شدن تو این یادداشت مطرح نمی کنم. چون اینجا کلی فک زدم نا سلامتی هوای عمه ام 😀
یکی از چیز هایی که اولش باهاش درگیر بودم این بودش که چطور بیام سمت لینوکس خداییش جون کندیم [ اعصابمون پاره شد : )] تو این راه و حداقل ۳ بار کل هاردم رو یک پارچه کردم اطلاعاتم پریده و همه اینا از نا آگاهی بوده.

خب حالا گام به گام با هم میریم جلو تاتی تاتی 😀

linuxkit_primary-100028443-gallery

گام اول – دانلود لینوکس مورد نظر

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

بهترین توزیع های سال ۲۰۱۴
بهترین توزیع های سال ۲۰۱۵

خب حالا مختارید نسخه ۳۲ یا ۶۴ را نصب کنید من خودم به شخصه نسخه ۳۲ بیت استفاده می کنم چرا که بهتر هستش نگار رم بالاتون هم نباشید نسخه ۳۲ بیت اکثر توزیع ها خصوصا بر پایه های debian تا 64 گیگ رم رو  با PAE (Physical Address Extension)  ساپورت می کند بسیار  و نسخه های ۳۲ بیتی برنامه های بهتری داره باز صلاح اطلاعات بیشتر

topten یا ده توزیع برتر لینوکس در سال 2015 – Linux

به نام دانای بر حق

 

ما در انتهای هر سال سعی می کنیم برترین های سال رو مشخص کنیم و اما امسال با ده توزیع برتر لینوکس در خدمت شما هستیم.

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

زیبا ترین لینوکس در سال 2015 : elementary OS

 

این توزیع به عنوان زیبا ترین نسخه لینوکس امسال شناخته شده است اما من پیشنهاد می کنم نصب نکنید روی توزیع خودتون چرا که با unity تداخل داشت و من رو اذیت کرد.

 

elementary-OS

ام این نسخه برای کسانی علاقه به max osx  دارن نسخه جالبی هستش چون استاندارد ها بر اساس این سیستم عامل چیده شده است و حس خوبی برای کاربرانی که میخوان از مک به linux سویچ کند رو داره.

 

این توزیع دارای نسخه live برای آزمایش و امتحان است.

 

برای دانلود و توضیحات بیشتر میتونید به وبسایت رسمیش مراجعه کنید:

 

 

 

بهترین نسخه برای کابران شخصی یا همون desktop

 

رقابت اصلی در امسال ما بین ubuntu و openSUSE بودش که قابل توجه هستش که openSUSE گو سبقت رو ربود و نسخه برتر امسال رو در desktop ها به خودش اختصاص داد و باید عرض کنم openSUSE تحت نسخه fedora عرضه میشه و برای debian کار ها زیاد خوشایند نیست.

 

مهمترین ویژگی ان نسخه که باعث برتریش شدش نصب برنامه های third-party با یک کلیک در این نسخه می باشد.

اطلاعات بیشتر

nodejs – آموزش نصب nodejs برای روی توزیع های لینوکس Ubuntu , CentOS

به نام دانای بر حق

 

مقدمه

 

یکی مسائلی که امروزه خیلی گریبانگیر دنیای وب هستش بحث real-time هستش که خیلی در نظر توسعه دهنده های وب برجسته  شده برنامه های real-time برنامه هایی هستند که به رخداد ها و رویداد های مورد نظر پاسخ لحظه میدهند به این صورت هستش شما در زمانی که نیاز به ارسال یا دریافت اطلاعات از سمت سرور یا کاربر دارین سعی در بقراری ارتباط می کنین نه مثل اون روش قدیمی که تند تند طبق یه زمانی هی ajax بزنین سمت سرور تا ببنین آیا پاسخی دریافت کردید یا خیر و هر بار این ارتباط قطع و مجددا وصل شود کار به این صورت هست که سرور و کلاینت همیشه به هم وصل هستن و در مواقع نیاز ارتباط برقرار می شود.

 

node-js-logo

 

آموزش نصب

 

Ubuntu

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

 

۱. ترمینال رو باز کنید.

۲. دستورات زیر روش واردش کنید:

 

به همین سادگی نصب شد : )          ; )

 

CentOS

دوم بریم سراغ س centos رایج ترین توزیع لینوکس برای سرور ها که برای این کار دستورات زیر  رو در SSH خود اطلاعات بیشتر

آپدیت هسته ویندوز بعد از 9 سال در ویندوز 10 کمی در مورد این چگونگی تکامل این ویندوز

مقدمه

 

انتشار ویندوزی به نام ویندوز 10 همه رو شگفت زده کرد البته اول به دلیل نام گذاری عجیب غریب مایکروسافت که یهو از روی 8.1 سویچ کرده روی 10 البته این مسائله که ویندوزی به نام 8.1 وجود نداره و فقط تغییرات بوده رو در ادامه توضیح میدیم ولی این نام گذاری در نوع خودش کم نظیر  بود و در جایگاه دوم این که عرضه این نسخه برعکس نسخه های قبلی که گرون تر از قبل می کرد رایگان برای مدتی در نظر گرفت و مورد بعدی که من مستند نخوندم ولی بارها شنیدم که میگفتن که ویندوز 10 آخرین نسخه ویندوز خواهد بود در آخرین چیزی که منو شگفت زده کرد آپدیت هسته ویندوز برای منی که به معماریش دقت می کنم شگفت زده ام کرد علت رو میگم وگرنه منگول نیستم 😀

 

442994-windows-10

تاریخچه ای از ویندوز از نگاه من

(این قسمت در قالب خاطره مقدمه ای هست برای ادامه یادداشت)

 

در زمانی که ویندوز xp رو نصب می کردیم کلی حال می کردیم یه بار رفتم پیش یکی از دوستام دیدم روی سیستم یه ویندوز خیلی خیلی خوشگل ( البته برای اون موقع) هستش گفتم اسمش چیه این؟ با غرور تمام گفت: LongHorn…

واااای هنوز نمیتونم فراموش کنم چقدر حسرت نصب این ویندوز توی دلم موند و چقدر دنبالش گشتم، آخه اون موقع سیستمم کشش نداشت ( گرافیک ۶۴ مگ و اینا میخواست) و بعدش دیگه ویستا اومده بودش و ماجرا پیش رفت.

آره خلاصه در حسرت لانگ هورن بسی سوختیم و اما مایکروسافت در پی تجربه ای که xp داشت به این نتیجه رسیده بودش خوشگل کردن ویندوز تنها دلیل کوچ کردن کاربران از ویندوز های قبلی به بعدی هستش.

اما متاسفانه در یک حرکت جالب لانگ هورن رو تو نطفه خفه کرد و در نهایت اشتباه جدید رو مرتکب شد اونم این بودش به کاربری ویندوز فکر نکرد فقط ظاهرش رو ساخت یعنی همون خروس قندی داد دست دنیا که اسمش Vista بودش ولی هرگز توجه دنیا به آن جلب نشد، و مهم ترین دلیل هاش چیزی به ناماطلاعات بیشتر

آموزش نحوه نوشتن یک ربات bot برای Telegram

به نام دانای بر حق

مقدمه

با این که من خودم مخالف ۱۰۰٪ این تکنولوژی هایی هستم که هر روز زندگی بشر رو بیشتر به پوچی نزدیک می کنه ولی خب بد نیستش که از نظر فنی بیایم و به این موضوع نگاهی بندازیم همونجوری که میدونین تلگرام یه شبکه ای هستش شبیه وایبر منتهی با حذف یه سری محدودیت ها که وایبر داره محبوب تر شده و با داشتن ربات ها متمایز شده از سایر شبکات دیگر، ما در این آموزش در مورد نحوه راهندازی یک ربات صحبت می کنیم ما تک تک api ها رو معرفی نمیکنیم یک ربات  رو تعریف می کنیم  از ۰ تا ۱۰۰ اما تا حد زیادیش رو میگم بقیه با شما شاید هم یک آموزش تکمیلی در این مورد ارسال کردیم.

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

پیش فرض ها

اول از همه شما باید به سیستم عامل خودتون تسلط داشته دارید ( من تو آموزش از لینوکس توزیع ubuntu استفاده می کنم و به شما هم همین os رو پیشنهاد می کنم.) .

دوم با زبان پایتون حداقل دست پا شکسته آشنایی داشته باشید.

سوم تسلط به یک زبان وب و نوشتن یک ربات برای پرسش و پاسخ ( ضروری نیست)

دانلود و نصب

ابتدا پایتون روی سیستمتون نصب کنین اگر لینوکسی هستید نصب شده است نگران نباشید البته نسخه 2.x نه 3

سپس python pip رو نصب کنید در اوبنتو با دستور زیر:

سپس کتابخانه telegram bot رو با Pip نصب کنید به شکل زیر:

سپس git را نصب کنید در Ubuntu به شکل زیر:

در نهایت میریم به پوشه مشخص مثل desktop بعد یه همزاد یا همون clone از ربات اطلاعات بیشتر

چگونه یک متغیر مقداردهی نشده، باگ ایجاد می کند؟

سلامی دوباره، بعد از مدتها استراحت و بی حوصلگی در راستای تجزیه نشدن و همچنین جزیی از طبیعت قرار نگرفتن یه پستی توی بلاگ میزارم تا این پست رو همانند پکت های Keep-Alive در نظر بگیرید.  :دایی

خوب، قرار نیست نحوه اکسپلویت کردن و تکنیک هارو توضیح بدیم فقط میخواهیم کمی درباره خطرات مقداردهی نکردن متغیرها در برنامه و نحوه بوجود آمدن باگ صحبت کنیم، واس خیلی ها از جمله خودم پیش اومده که در زبان C/C++ متغیری مانند Integer رو مقداردهی اولیه انجام ندادیم ، یادمون رفته و یا برحسب عادت در زبان های برنامه نویسی دیگر مثل VB6.0 اینکار رو انجام ندادیم. بنظرم تنها دلیلی که بعضی ها هنوزم که هنوزه طرفدار VB6.0 هستند! همین مقداردهی اولیه نکردن متغیرهاست، اگر شما حتی نوع متغیر رو تعریف نکنین بطور خودکار متغیر از نوع Variant در نظر گرفته میشه و هر DATA Type بخواهید میتونید درون متغیر بریزید!!! اینها انسانهای خاص هستند و خاص هم که فحش نیست !؟

خوب از بحث اصلیمون دور نشیم،اگر استاد همون درس برنامه نویسی و یا افراد دیگری که ازشون این سوال “متغییر مقدار دهی نشده ولی دارای مقدار هست و خروجی به ما نشون میده” رو پرسیدین بهمون گفتن که وقتی یک نوع Integer رو مقدار دهی نمیکنیم ، مقداری  Random درون متغیر ریخته میشه؟!؟ و اینم جز خیلی از حرفاس که وارد مغزمون کردن تا بیشتر ندونیم و نپرسیم. (انگاری دلم خیلی پره :دایی) بایک مثال خیلی ساده و راحت میخواهیم به صحت و سقم این دلیل پی ببریم. خوب سورس زیر رو کامپایل و اجرا میکنیم:

بعد از اجرا مقدار این متغیر رو داریم میبینیم که بایستی این یک مقدار تصادفی باشه و در هر بار اجرا مقداری مختلف ببینید، من درون سیستم خودم فقط این مقدار رو میبینیم و نتیجه میگیرم که مقدار Random نیست:

Ouput

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

debuggingاطلاعات بیشتر

افزودن یک متغییر environment در لینوکس

به نام دانای بر حق

سلام شاید مطلبی که داریم در موردش صحبت کنیم خیلی سخیف به نظر بیادش و بگین مبحثی در حد اندازه xmen نبودش اما خوب خیلی مواقع به کار میادش و ممکنه کسانی به زبان پارسی در این مسائله مشکل داشته باشند. رو همین حساب به عنوان یک یادداشت ما اضافه کردیم.

اما environment var چیست؟

متغییر های environment رو بخوایم خلاصه وار بگیم و به زبان ساده متغییر هایی هستند که در سراسر سیستم عامل قابل دسترسی هستند و یکی از اون ها که خیلی از بقیه مهم تر هستش متغییر PATH هستش که در سه سیستم عامل معروف برای desktop یعنی ویندوز ، لینوکس و مک یکی هستند. و حال مثلا شما میخواین یه فایل اجرایی رو در همه جای سیستم داشته باشین و بهش دسترسی داشته باشین شما باید آدرس اون فایل رو به قاعده خود سیستم عامل انتهای env path اضافه کنید تا مشخص شود و قابل دسترسی از همه جا باشد.

افزودن و تغییر یک متغییر environment در لینوکس

در سیستم عامل  لینوکس این کار ساده تر از ویندوز هستش ضمن این که این روش برای MAC OSX هم قابل پیاده سازی هستش چرا که بنیان این سیستم عامل نیز از یونیکس هستش 😉 خب اگر از mac استفاده می کنید به جای برنامه nano از vim استفاده کنید همین.

حال برای دیدن تمام متغییر های سطح environment ابتدا دستور زیر رو تو ترمینال بزنین تا براتون داخل ترمینال فایل با قابلیت ویرایش باز شود:

صفحه ای با این شکل رو خواهید  داشت:

Screenshot from 2015-05-03 22:35:39

متغییر PATH$ در اینجا برای ما مهم هستش ، ما فرض کنیم کهاطلاعات بیشتر

آموزش shell code نویسی در لینوکس – Linux قسمت دوم

به نام دانای بر حق

در قسمت قبلی در مورد مقدمات و شل کد نویسی صحبت کردیم و از بحث های بسیار ابتدایی شروع کردیم و این خودش برای شروع خوب بودش حالا در این قسمت قصد داریم ببینیم به چه صورت میتونیم بدون ورود مستقیم کدها در ترمینال اون ها رو در ترمینال اجرا کننیم و به bash بفرستیم خب این میشه شروع ماجرای دوم که جای تعمق داره.

تحریک bash با فایل و اجرا دستور در آن

اول باید بگیم فایل هایی با پسوند sh میتونه این کار رو انجام بده و حالا این فایل sh رو چطور بنویسیم باز هم از رفتن به سمت خرابکاری امتناع می کنیم تا و یه سری دستور ساده در نظر میگیریم خب دستور  اولی که در نظر می گیریم برنامه xampp اگر به صورت اجرای خودکار یا سرویس نباشد در لینوکس بعد از روشن شدن سیستم میبایستی xampp رو استارت کنید و حتی میتونید با دستور ریستارت از اول اجراش کنید برای این کار باید دستور زیر رو در ترمینال وارد کنید:

خب حالا ما برای بسته بندی و اجرا این کد در bash راه خیلی سختی در پیش نداریم با ۳ تا حرکت ردیفش می کنیم هول نکنین 😀

خب حرکت اول یه text editor رو باز کنین و به نام xampp-restart.sh مثلا در دستکتاپ خودتون وارد کنید

حرکت دوم این کد رو توش paste کنید و دوباره ذخیره کنید:اطلاعات بیشتر

آموزش shell code نویسی در لینوکس – Linux قسمت اول

به نام دانای بر حق

مقدمه

پیرو آموزش هایی که SadeghPM عزیز در مورد شل کد نویسی قرارداده بودش ما سعی کردیم این آموزش رو برای لینوکس ادامه بدیم البته با کسب اجازه از ایشان، و اما اگر بخواهیم در یک جمله در مورد شل کد صحبت کنیم شل کد کدهای ماشینی هستند که برای انجام یه سری عمل به سیستم عامل تحویل داده میشند و نتیجه خاصی دارند و این اعمال میتونه خرابکارانه باشه یا نباشه و حالا برای کسب اطلاعات بیشتر به آموزش SadeghPM قسمت اول مراجعه کنید در اینجا، حال آنکه شل کد های میتونند با زبان ماشین یا همون همون آپکد های hex یا هگزادسیمال بهتره بگیم باشند یا می تونند به صورت فرامینی باشند که در که در بخش های که از سیستم عامل اجرا شوند که گاهی پذیرای command line هستند به صورت متنی ارسال شده و اجرا شوند که بحث ما اکنون حول محور این بخش command line هستش.

تفاوت ارسال command line در ویندوز و لینوکس

خب در این شکی نیست در مبحث شل کد نویسی در لینوکس بسیار دست انسان باز هستش تا ویندوز، که در ادامه توضیح مبسوط تر میدیم، تفاوت اولی که میتونیم ازش یاد بکنیم این هستش کد های شما باید در ویندوز در cmd و یا همون command port می باشد ولی در لینوکس از bash و برنامه ی terminal استفاده میشود حال چرا لینوکس قدرت بیشتری داره، علت اول این هستش که این سیستم عامل جوری تعریف شده که حدودا ۹۵٪ از اعمال در این سیستم عامل غیر وابسته به واسط گرافیکی هستش و با terminal میشود به سرعت انجام کار داد، به طور مثال تقریبا در تمام ابر توزیع های لینوکس یه نسخه سرور دارد که فاقد GUI یا واسط گرافیکی میباشد و همواره باید از پروتوکل SSH و خط فرمان اجرای دستور کرد.

اجرای کد در terminal

برای اجرای دستور در ترمینال ما به سادگی میتونیم  با کلید ترکیبی Ctrl+Alt+T اون رو اجرا کنه، و کد های مورد نظر مون رو بنویسیم، به عنوان مثال با نوشت دستور dir لیست فایل ها و فولدر های جاری به شما نمایش داده میشود و و به همین تریتب شما موفق میشوید حال آنکه ما برای shellcode نویسی نیاز به کامپایلر و یا اسمبلر ها داریم که تو لینوکس به صورت پیش فرض کامپایلر c به به نام gcc نصب هستش و خیالتون رو از این بابت راحت می کنه و حالا برای اجرا کد های اسمبل با نصب nasm که به سادگی میتونین کد ها اسمبلی رو هم اجرا کنید بیاییم مراحل زیر رو با هم اجرا کنیم، ولی قول بدین زیاد روی نکنین سیستم منفجر کنین 😀 :

دستور ها در ترمینال اجرا میشود تا اولین برنامه یعنی hello world رو در اسمبلی بنویسیم.اطلاعات بیشتر

اسکایپ و skype در Ubuntu و Linux

 

اسکایپ چیست؟

به نقل از ویکی پدیا:  نرم‌افزار کاربردی است که به کاربر اجازه می‌دهد به وسیله صدا روی پروتکل اینترنت تماس تلفنی برقرار کنند. تماس تلفنی و ویدیویی بین کاربران اسکایپ کاملاً رایگان است و برای تماس با تلفن ثابت و تلفن موبایل نیاز به خرید اعتبار می‌باشد. همچنین این برنامه امکانات مختلف دیگری مانند پیام‌رسان فوری، انتقال فایل، ویدیو کنفرانس و پست صوتی در اختیار کاربران قرار می‌دهد.

اسکایپ یک شبکه ارتباطات تلفنی کاربر به کاربر (Peer to Peer) است که توسط نیکلاس زنشتروم سوئدی و جانوس فریس دانمارکی ایجاد شد. این دو قبلاً در ساخت یک شبکهٔ اشتراک پرونده به نام کازا (به انگلیسی: Kazaa) همکاری داشتند. برنامه اسکایپ تا انتهای سال ۲۰۰۹ میلادی بیش از ۵۰۰ میلیون کاربر داشته‌است.

شرکت پشتیبانی کنندهٔ این شبکه به نام Skype Group در سال ۲۰۰۵ توسط شرکت ای-بی (به انگلیسی: ebay) خریداری شد و در سال ۲۰۱۱ مایکروسافت اسکایپ را به قیمت ۸٫۵ میلیارد دلار خرید.[۴] مقر اصلی این شرکت در لوکسامبورگ قرار دارد و شعبه‌هایی نیز در لندن، پاریس، تالین و پراگ دارد.

هشدار در مورد اسکایپ

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

بررسی نصب بودن Soap در PHP و نحوه نصب آن روی سرور های لینوکس

به نام یگانه دانای هستی

یکی از روش ارتباط میان دو سرور استفاده از سرویس Soap هستش که معمولاً کمی بد قلق هستش و کسایی که برای اسکریپت های راتباط ما بین سرور کار انجام میدن به Soap میرسن یه دو تا فحش اساسی به سیستم بانکی و سیستم این روش میدن، به سیستم بانکیش رو که کار خوبی میکنند فحش میدن با اون نمیشه باهاش کنار اومد ولی با سوآپ میشه کنار بیای ابتدا برای کار با Soap باید چک کنید ببینید نصب شده یا خیر برای اینکار دو تا کار می تونید آنجام بدین اول اصولی تر این هستش که شما phpinfo() رو اجرا کنید و سرچ کنید ببینید سوآپ نصب هستش یا خیر و اگر نصب بود فعال هستش یا خیر؟ این راه مطمئن بودش ولی یک راه دیگه چک کردن این هستش که آیا کلاس های آن وجود دارند یا خیر :

 

خب حالا اگر نصب باشد که بهتر میتونید توی php.ini اون رو فعال کنید یعنی سرچ کنید کلمه Soap رو و خطوط آن رو uncomment کنید و بعد از ریست کردن سرور ازش استفاده کنید و اما اگر نصب نبودش به طریق زیر میتونید اون رو نصب کنید.

 

ابتدا یا ترمینال سرور رو باز کنید و یا از طریق SSH به سرور متصل بشید و در لینوکس های وابسته به red hat مثل centos از کد زیراطلاعات بیشتر