یوشا آل ایوب

وبگاه دست نوشته ها و تجربیات شخصی
بِسمِ اللّه‏ِ الرَّحمنِ الرَّحيمِ

یوشا آل ایوب

وبگاه دست نوشته ها و تجربیات شخصی

یوشا آل ایوب

دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم: آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست!

تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران
مفهوم هکینگ ممکن است در ذهن تصاویری از خرابکاری الکترونیکی، جاسوسی و مواردی از این دست تداعی کند; در صورتی که 100% اشتباه هست!
بسیاری از افراد هک کردن را با شکستن قانون در ارتباط نزدیک می دانند. بنابراین در این راستا، تمام افرادی را که به فعالیت های هکینگ مجذوب گشته اند، مساوی با بزهکاران و مجرمان (الکترونیکی) می دانند. اگرچه افرادی از تکنیک های هکینگ برای قانون شکنی استفاده می کنند، اما ماهیت این علم در اصل اینگونه نیست!

ماهیت و ذات هکینگ، پیدا کردن راه ها و کاربردهای غیرمعمول و دور از انتظار برای قوانین و خصوصیاتِ یک وضعیت مشخص و سپس اعمال آنها در قالب روش های جدید جهت حل مسئله است. یک مسئله ممکن است عدم دستیابی به یک سیستم باشد یا پیدا کردن روشی که بتوان با استفاده از تجهیزات قدیمی، یک Rail Road را کنترل کرد. معمولا هکینگ راه حل چنین مسائلی را به طریق منحصر بفردی ارائه می کند که با روش های متعارف و سنتی بسیار تفاوت دارد.

در اواخر دهه 1950 میلادی، به باشگاهِ MIT Model Railroad هدیه ای داده شد که قسمت عمده آن، ابزار قدیمی تلفن بود. اعضای این باشگاه از تجهیزات فوق جهت فریب دادن یک سیستم پیچیده استفاده کردند که به چندین متصدی(Operator) اجازه کنترل قسمت های مختلف خط را با شماره گیری به قسمت مناسب می داد. آنها این استفاده مبتکرانه و جدید از تجهیزات را هکینگ(Hacking) نامیدند و بسیاری، این گروه را هکرهای اولیه قلمداد می کردند. آنها به برنامه نویسی روی پانچ کارتها و نوارهای تلگرافی(ticker tape) در کامپیوتر های اولیه IBM روی آوردند؛ در حالیکه دیگران تنها به نوشتن برنامه هایی می پرداختند که صرفاً بتواند مشکلات را حل کند. اما برای اینکه هکرهای اولیه بتوانند برنامه ها را بخوبی بنویسند، خود را درگیر چالش های بسیاری می نمودند، برنامه ای که با تعداد پانچ کارتهای کمتر بتواند همان نتایج را حاصل دهد. تفاوت کلیدی بین این دو راهبرد، ریزه کاری برنامه در نیل به نتایج بود. توانایی کاهش تعداد پانچ کارتها برای یک برنامه، نوعی سلطه هنری بر کامپیوتر بود. آنهایی که این هنر را درک می کردند، این توانایی را مورد تحسین و قدردانی قرار می دادند. هکرهای اولیه برنامه نویسی را از وظیفه ای مهندسی به یک قالب هنری تبدیل کردند. این هنر نیز مانند دیگر هنرها توسط افرادی که آنرا درک می کردند مورد تقدیس و تقدیر قرار می گرفت و افراد ناآگاه هم چیزی از آن سر در نمی آوردند.

هکرها، شکوه و عظمتی را در علوم خشک و قراردادی ریاضی و الکترونیک پیدا کردند. آنها برنامه نویسی را در قالب تجلی هنری می دیدند و کامپیوتر، ابزار و اسباب هنری آنها بود. این ارزش های منبعث از دانش در نهایت تحت عنوان اخلاق هکری( Hacker's Ethic) نامگذاری شد. اخلاق هکری به معنی ستودن منطق به عنوان یک ابزار هنری و ترقیب جریان آزاد اطلاعات، بر طرف کردن مرزها و محدودیت های قراردادی به منظور فهم بهتر دنیا بود.

بنابراین چگونه می توان بین هکرهای خوب (که برای ما پیشرفت های فنی را به ارمغان می آوردند) و هکرهای مضر (که اطلاعات را سرقت می کنند و یا آسیب می رسانند) تمایز قائل شد؟! به این صورت از واژه کِرَکِر(Cracker) خطاب به هکرهای مضر استفاده شد، تا آنها را از هکرهای خوب و مفید متمایز سازد. روزنامه نگارها و نویسنده ها هر روزه اذعان به بد بودن کرکرها می کردند، در حالیکه هکرها افرادی مفید و خوب بودند. هکرها در اخلاق هکری راست و پابرجا ماندند، اما کرکرها تنها علاقه مند به شکستن قانون بودند. کرکرها در مقابل هکرها با استعدادهای بیشتری به نظر می آمدند، ولی در حقیقت آنها از ابزارهایی که هکرها نوشته و طراحی کرده بودند استفاده می کردند.
عنوان کرکر به فردی که عمل غیراخلاقی با کامپیوتر انجام می داد اطلاق می شد - کپی کردن نرم افزارها به صورت غیر قانونی، Deface کردن وب سایت ها و بدتر از همه این که خود نمی دانستند، چه می کنند! اما امروزه افراد معدودی از این کلمه برای این منظور استفاده می کنند.
نبودن عبارات همه فهم ممکن است ناشی از تعاریف نامناسب آن عبارات باشد - کلمه کرکر در اصل برای توصیف افرادی بکار می رفت که نرم افزارهای کپی رایت را کرک و الگوهای محافظت از کپی را مهندسی معکوس می کردند. عبارت کرکر ممکن است بسادگی از تعریف جدیدش سرچشمه گیرد که هم به گروهی از افراد که به صورت غیرقانونی با کامپیوتر کار می کنند و هم به افرادی که نسبتا هکرهای خام و بی تجربه هستند، اطلاق می شود. اما من معتقد هستم که هرکسی که دارای روح هکری است، یک هکر است، صرفنظر از اینکه آیا او قانون شکنی می کند یا خیر.

منبع: کتاب هنر اکسپلویت نویسی با کمی تغییر

۳ نظر ۹۱/۰۶/۳۰
یوشا آل ایوب

یه سوال ایده ئولوژیک به ذهنم رسیده بود، گفتم اینجا هم بزنم!
اگه ثروت زیاد دستتوت بیاد در حوزه IT ایران چکار می کنید؟
(در صورتی که اون موقع خودمونو گم نکنیم Dodgy)

من که:
اول کل نظام رایانه ای/IT کشور رو سروسامان می دم! و رسماً سازمانیش می کنم(زیرآب زنای حقوق بگیر مفت خور رو هم اخراج می کنم).
اگر از این حرکت جون سالم بدر بردم و از پشت با چاقو نکشتنم:
بعد پروژه سراسری فیبر نوری رو اجرا و تمومش می کنم
اینترنت واقعی بیسیم/باسیم ملی پر سرعت و ایمن پیاده سازی می کنم.

آموزشگاه دوره های IT دولتی واقاً قوی و حرفه ای با ارائه مدرک/certificate معتبر ایجاد می کنم(یعنی این مدرک میشه سند معتبر برای استخدام در حوزه مربوطه). و اجباریش می کنم برای تمام IT کارها بعنوان مجوز کار.

کارشناس ها و دانشمندان ادبی فارسی و IT ایران رو وادار به ترجمه واقعی/کاربردی لغات غیر فنی IT می کنم.
چندین تالار مناسب برای گردهمایی ها و سمینار های IT در شهر های مختلف درست می کنم.
خط تولید داخلی یک سری قطعات کامپیوتر از نوع درجه یک رو میزنم(با قیمت مناسب که اجناس خارجی تو ایران کمر خم کنن).
کتابهای قوی آموزشی IT اونم نوشته داخلی چاپ می کنم.
یه سیستم عامل ملی قوی(از روی هسته لینوکس یا BSD) و 100% user friendly برای کل سازمانها و ارگانهای دولتی و استفاده های شخصی می سازم.
یک نرم افزار بانکداری قوی برای بانکهای دولتی مخصوصاً بانک ملی(ایران) دره پیت تولید می کنم.
ایمیل ملی 100% داخلی راه اندازی می کنم.
سیستم متنی، صوتی و تصویری Chat کاملاً ملی راه اندازی می کنم.
تمام وبسایتها، واسط ها و سامانه های نرم افزاری دولتی رو سازماندهی می کنم.
و...

خوبه نه؟ D:

۷ نظر ۹۱/۰۶/۱۵
یوشا آل ایوب

 

ماژول، قطعه ی نرم افزاری در بخشی جدا از Core سیستم هستش که در زمان فراخوانی، پیوند و فعال میشه و یکسری عملیات تعریف شده ای رو انجام میده.
این ماژول می تونه سرویس باشه، filesystem باشه، پروتکل شبکه باشه، تعدادی System call باشه و یا درایور یک سخت افزار باشه; که در هر صورت ماژول نام داره.

۲ نظر ۹۱/۰۵/۳۰
یوشا آل ایوب


این مقاله آموزش نصب لینوکس Slackware نسخه های 11 تا 14 هستش.
اگر لازمه اطلاعات بیشتری درمورد لینوکس Slackware و تاریخچه این سیستم عامل کسب کنید پیشنهاد می کنم به لینکهای زیر مراجعه کنید:

http://en.wikipedia.org/wiki/Slackware

http://slackware.com

 

فهرست/مندرجات:

  • حداقل نیازهای لینوکس Slackware
  • دریافت لینوکس Slackware
  • آماده سازی سیستم
    • برای نصب از طریق CD/DVD یا USB
  • پارتیشن بندی فضا
  • نصب لینوکس Slackware
  • تنظیم محیط گرافیکی

۱ نظر ۹۱/۰۵/۲۵
یوشا آل ایوب

 

در این مقاله(ها) قصد دارم برنامه نویسی هسته لینوکس 2 و 3 رو آموزش بدم.

اول برخی از اصول سیستم عامل و هسته لینوکس(از جمله Version های هسته، دانلود سورس، ساختمان دایرکتوری سورس، چگونگی نصب، Patch کردن، پیکربندی و Compile) رو معرفی می کنم و بعد به مباحث پیشرفته و برنامه نویسی(از قبیل تفاوت بین kernel-space و User-space، سازه های برنامه نویسی استفاده شده در هسته، Process ها، System-call ها، ساختمان داده هسته، Interrupt handler ها، همگاه سازی، مدیریت Time، مدیریت حافظه، سیستم فایل و خروجی/ورودی) می پردازم.

در این بین از کتابهای Advanced Linux programming، Linux Advanced Administration و Linux Kernel Development هم بهره ای می گیرم.
 

فهرست/مندرجات:

  • تعریف سیستم عامل
  • انواع معماری سیستم عامل
  • تعریف هسته
  • انواع معماری هسته

۴ نظر ۹۱/۰۴/۳۰
یوشا آل ایوب

ExeStrip

این برنامه Header/Stup [داس] رو از فایل های Exe جدا می کنه.

BootSectorWriter

این برنامه 512 بایت از داده یا فایل رو روی سکتور بوت Write می کنه. (هارددیسک و فلاپی دیسک)

۰ نظر ۹۱/۰۴/۱۵
یوشا آل ایوب
  • انواع داده ها/Data types

داده ها(اطلاعات)ای که در برنامه استفاده می شوند، توسط نوع آنها طبقه بندی می شوند. نوع یک داده بیانگر مقادیر و دامنه آن داده می باشد. داده ها اندازه و انواع مختلفی دارند و هر نوع داده برای ذخیره شدن نیاز به مقدار حافظه متفاوتی دارد.

کلیه برنامه هایی که نوشته می شوند بر روی برخی از انواع داده ها عملیاتی انجام می دهند. پس برنامه برای پردازش داده باید نوع آنها را شناسایی کند.
در زبان C سه نوع داده اصلی(اساسی) وجود دارد: Integer, Float, Character (معادل فارسی: عدد صحیح، شناور/ممیزی/اعشاری و کاراکتری). هر کدام از این نوعها شامل گونه های زیادی(ریز تری) هستند که دامنه وسعی از مقادیر را در بر می گیرند.

۴ نظر ۹۱/۰۳/۳۰
یوشا آل ایوب
  • روند تولید(کامپایل) برنامه

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

اولین مرحله در پردازش(ایجاد برنامه)، استفاده از ویرایشگر متنی برای نوشتن کدهای C++ می باشد. شما فایل Source رو به زبان C++ که شبیه به معماری کامپیوتر هست می نویسید(به لاتین). بعد باید آنرا به زبان و دستورالعمل های ماشینی(Machine language) تبدیل کنید. این کار بعهده کامپایلر می باشد. کامپایلر برای اینکار عملیات زیر را انجام می دهد:
(برای درک بهتر این موضوع، بر روی یک کامپایلر Open source(منبع باز/متن باز) کار کنید)

ابتدا فایل سورس(Source) خوانده می شود و به تعدادی علایم پیش پرازش(Preprocessor token)(عناصری که کامپایر می تواند با آنها کار کند. مثل عمگر ها، ثابتها، کلمات کلیدی و...) و کاراکتر های سفید(Blank)(شامل فضاهای خالی، Tab ها و Comment ها) تبدیل می شود. در این مرحله کاراکتر های ویژه(Special) تبدیل می شوند و عبارات جدا که دو یا چند خط اشغال نمودند به یکدیگر پیوند می خورند.

سپس دستورات پیش پردازنده(# دار ها) اجرا می شوند. این دستورات شامل include, define if و... می باشد. در این مرحله تمامی دستوات و ماکروها Expand می شوند و عملیات و ضمیمه های لازم انجام می گیرد.

بعد پردازش کاراکترها و رشته ها انجام می گیرد. در این مرحله برنامه برای صحت شکل گرامری(Syntax) و لغات، تجزیه و تحلیل می شود(خطاها و هشدارهای Syntax در این مرحله نمایان می شود). اگر اشتباهات مهلک(Fatal) پیدا نشود، یک فایل تجزیه/تحلیل شده(معمولاً با پسوند obj) تولید می شود، تا با بقیه فایل ها ترکیب شود.

دستور پیش پردازنده #include در هر لحظه می تواند چندین فایل را داخل برنامه ادغام(Merge) کند. و هر بار که کامپایلر به این دستور برخورد می کند، به اندازه محتوایش موقتاً پردازش را متوقف(Halt) می کند. (همینکار رو زبان های دیگه مثل PHP, C# , Python, PERL و... انجام می دهند)

در آخرین مرحله(ایجاد برنامه قابل اجرا)، پردازش فایل تولید شده(obj) توسط یک پیوند دهنده(Linker یا Link) انجام می شود. اکثر برنامه ها دارای رجوعاتی به روتین(Routine) می باشند که در خارج از برنامه جاری وجود دارند. این روتین ها باید آدرس یابی و به برنامه شما اتصال داده شوند تا بتوان با آنها کار کرد.
پیوند دهنده(Linker) تمامی فایلها را با هم ترکیب می کند و در نتیجه یک برنامه قابل اجرا تولید می شود.

 

لازم بذکر هست که تمامی این مراحل توسط کامپایلر انجام می شود. و شما فقط کد نویسی می کنید و بعد با یک کلیک بر روی Build/Make برنامه را تولید می کنید. (در کامپایلرهای GUI)

۰ نظر ۹۱/۰۳/۱۵
یوشا آل ایوب

مقدمه ای کوتاه:

 

  • زبان C (سی)

C یک زبان برنامه نویسی کامپیوتری هست که در سال 1972 توسط Dennis Ritchie برای سیستم عامل Unix نوشته شد.

C تکامل یافته زبان برنامه نویسی B می باشد و نامگذاری C که بعد از B بوجود آمد همین است.

C یک زبان برنامه نویسی سطح میانی و ساخت یافته می باشد. در علوم کامپوتری، سطوح زبانهای برنامه نویسی را به سه دسته اصلی تقسیم می کنند:
1- سطح بالا.
2- سطح میانی(C و C++).
3- سطح پایین.
زبان C جزو دسته دوم می باشد. به این دلیل که قادر است مانند زبان اسمبلی مستقیماً با حافظه(بیت، بایت، آدرس و...) کار کند و از طرف دیگر نوشتن و خواندنش راحت می باشد(مانند زبان Pascal).

از جمله ویژگی های زبان C می توان به:
قابلیت انعطاف، زبان سیستمی، سطح میانی، قابل حمل، کامل و کوچک، سبک، سریع و قدرتمند بودنش اشاره کرد.

۰ نظر ۹۱/۰۲/۳۰
یوشا آل ایوب

بودا در لغت به معنای روشنی یافته است، در اصطلاح به معنای شناسنده و بیدار است و این نامی است که به فرزانه هندی، گوتمه(به لاتین Gotama/Gautama) داده اند و او آیین رهایی را - که در جهان به آیین بودا معروف است - کشف و بیان کرده است.

 

 

۴ نظر ۹۱/۰۲/۱۵
یوشا آل ایوب