تبليغاتX
دانشجویان دانشگاه پیام نور آبسرد
دانشجویان دانشگاه پیام نور آبسرد
سایت دانشجویان دانشگاه پیام نور واحد آبسرد

چگونه هکر شویم؟ بخش اول

اریک ریموند (Eric Steven Raymond) می‌گوید: چگونه یک هکر شویم؟
بخش اول
هکر (hacker) چیست؟
پرونده اصطلاحات(Jargon File) شامل تعاریفی‌از' هکر' است که عموما در ارتباط با تعریف تکنیکی‌آن همراه با وصف سرخوشی‌حل مشکلات و مرتفع کردن محدودیت هاست. اگر شما می‌خواهید بدانید چگونه هکر شوید تنها دو تعریف به دردتان می‌خورد.

یک اجتماع ، یک فرهنگ مشترک ، از برنامه نویسان خبره و جادوگران شبکه که پیشینه آن از میان دهه ها به مینی‌کامپیوترهای‌اشتراک زمانی (time-sharing) و اولین تجریه های ‌ARPAnet می‌رسد. اعضای این فرهنگ اصطلاح ' هکر'  را ساختند . هکرها اینترنت را ایجاد کردند. آنان سیستم عاملUnix را آنچنان که امروز هست ایجاد کردند. هکرها usenet را اجرا کردند. آنان باعث شدند شبکه جهانی (World wide web) کار کند. اگر شما دارای این فرهنگ هستید و دیگران می‌دانند که شما چه کسی‌هستید و هکر می‌نامندتان؛ پس شما هکر هستید!

نگرش هکر محدود به 'هکرنرم‌افزار' نمی‌شود ، مردمانی‌هستند که منش هکر را به سایر زمینه ها مانند الکترونیک یا موسیقی‌سرایت می‌دهند. در حقیقت شما می‌توانید این فرهنگ را در بالاترین سطوح هر علم و هنری بیابید. هکرهای نرم‌افزار این هم روحان را در هر جا می‌شناسند، آنان را 'هکر ' می‌نامند و برخی‌معتقدند که طبیعت هکر واقعا مستقل از زمینه ایست که او در آن کار می‌کند. اما در تمام این مقاله ما بطور خاص بر مهارت ها و منش های‌هکر نرم‌افزار، و فرهنگ های مشترکی که واژه ی 'هکر' را بوجود آورد تمرکز خواهیم کرد.

گروه دیگری‌از مردم هستند که متکبرانه خود را هکر می‌نامند اما نیستند! این مردمان (که بیشتر نرهای نابالغند) کسانی‌هستند که سیستمهای‌کامپیوتری و مخابراتی را 'تخریب' می‌کنند. هکرهای واقعی‌اینان را 'شکننده (Cracker) ' می‌نامند و هیچ کاری‌به آنان ندارند. هکرهای واقعی اعتقاد دارند که اینان تنبل، بی‌مسئولیت و نه چندان باهوشند و می‌دانند که توانایی نفوذ به سیستمهای امنیتی‌شما را هکر نمی‌کند. همانگونه که دزدان اتومبیل را هیچگاه نمی‌توان مکانیک نامید. متأسفانه بسیاری از روزنامه نگاران و نویسندگان ناآگاهانه وا‌ژه ی' هکر ' را برای‌توصیف شکننده ها (Crackers) بکار می‌برند و هکرها را تا سرحد مرگ عصبانی می‌کنند.

تفاوت اصلی این است: هکرها می‌سازند اما شکننده‌ها ویران میکنند.

اگر می‌خواهید هکر باشید (همواره ) مطالعه کنید. اما اگر می‌خواهید شکننده شوید گروه خبری‌alt.2600 را بخوانید و آماده باشید که ۵ تا ۱۰ سال را در زندان بگذرانید، پس از اینکه فهمیدید به اندازه‌ای که فکر می‌کردید زرنگ نیستید. این تمام چیزی است که درباره ی‌شکننده ها (Crackers) خواهم گفت.

منش هکر

منش هکر، هکر می‌آفریند و یاری‌می‌کند. او به آزادی و یاری متقابل معتقد است؛ برای آن که هکر نامیده شوید باید چنان رفتار کنید که گویا چنین منشی‌دارید و برای‌اینکه اینگونه رفتار کنید باید واقعا آن را داشته باشید. اگر به پروراندن منش هکر تنها برای پذیرفته شدن در این فرهنگ می‌اندیشید در اشتباه هستید! چنین منشی داشتن همواره کمکتان میکند یادگیرید و با انگیزه باشید. مانند تمام هنرها بهترین راه استاد شدن، نگاه کردن به استاد و تقلید از اوست - نه فقط در باب تفکر که حتی‌در احساس!

همانگونه که در شعر ذن زیر آمده است:

تا که راه یابی:    :  To follow the path

به استاد بنگر ،    ,look to the master

به دنبالش باش ،  , follow the master

با او برو ،    ,walk with the master

از نگاه او بنگر ،   , see through the master,

استاد شو!     . become the master


پس اگر میخواهید استاد شوید، آن قدر ذکرهای‌زیر را بگویید(افکار زیر را با خود مرور کنید) تا باورشان کنید:

۱- جهان پر از مشکلات جذابی‌است که میباید حل گردند.
هکر بودن هیجان دارد، اما هیجانی که نیازمند تلاش فراوان است و تلاش کردن نیازمند انگیزه. ورزشکاران موفق انگیزه خود را از لذتی که در جسمشان احساس میکنند، می‌گیرند؛ در گذر از حدود جسمانیشان. شما نیز باید از حل مشکلاتتان مشعوف شوید. از پیشرفت مهارتتان و زورآزمایی اندیشه‌ی‌تان.

اگر شما به طور ذاتی‌چنین شخصی‌نیستید باید این‌گونه گردید و گرنه انرژیتان با شهوت، پول، شهرت و ... به هدر خواهید داد.
(همچنین باید به توانایی یادگیریتان ایمان آورید - باور به اینکه: گر چه تمام آن چه را لازم دارید نمی‌دانید اما اگر تنها بخشی از آنرا کشف کنید توانایی حل باقی را بدست می‌آورید)

۲-هیچ مشکلی‌نباید دوبار حل گردد اندیشه های‌خلاق گرانبها و محدودند.
ذهن های خلاق باارزش هستند، منابعی محدود. آنان نباید با دوباره کشف کردن چرخ، به هدر بروند در حالی که هزاران معمای حل نشده جذاب باقی است. برای آن که کرداری مانند یک هکر داشته باشید باید باور کنید که وقت هکرها گرانبهاست - آنچنان که گویی یک وظیفه روحانی است که اطلاعتان را مبادله کنید، مشکلات را حل کنیدو راه حل‌ها را به دیگر هکرها بدهید تا آنان مشکلات جدیدتر را مرتفع کنند. بجای آنکه دائما حول همان‌ها بگردند.

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

۳ -کسالت و بیکاری‌شیاطینند.
هکرها (و عموما انسانهای خلاق) هرگز نباید کسل شوند یا مجبور به بیگاری‌شوند چرا که در این صورت آنها از انجام کاری که تنها آنان قادر به انجام آنند باز می‌مانند. این هرز رفتن همه را آزار می‌دهد. بنابراین کسالت و بیگاری نه تنها ناخوشایند بلکه واقعا شیاطینند.

برای اینکه مانند یک هکر رفتار کنید باید باور کنید که می‌خواهید تمام کسالت آوران را کنار بزنید نه تنها برای خودتان بلکه برای همه (خاصه سایر هکرها).

(یک استثناء بارز وجود دارد. هکرها گاهی کارهایی انجام می‌دهند که به نظر تکراری و خسته کننده می‌رسند، تنها برای پاکسازی ذهن شان یا برای بدست آوردن تجربه‌ای خاص. اما به اختیار ،هیچ فرد اندیشمندی نباید مجبور به پذیرفتن موقعیت کسل کننده‌ای‌گردد.)

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

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

۵ -منش جایگزین مهارت نیست.
برای آنکه هکر شوید مجبور به پروراندن مواردی از این منش‌هایید. اما تنها تقلید از این منشها شما را هکر نمی‌سازد همانگونه که شما را قهرمان یا خواننده نمی‌کند. هکر شدن احتیاج به تیزهوشی‌، تمرین، تمرکز و کار سخت دارد.

بنابراین شما باید یاد بگیرید که به منش مشکوک و به مهارت احترام بگذارید. هکرها نمی‌گذارند فضولان وقت شان را هدر دهند و به مهارت ایمان دارند به خصوص مهارت در درک کردن گرچه مهارت در هر زمینه ای‌دلپذیر است. مهارت در زمینه های مورد نیاز که متخصصان کمتری دارد بهتر است و تخصص در زمینه های مورد نیاز که به فکر متبحر، استادی و تمرکز نیاز دارند، بهترین.

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

مهارت‌های پایه‌ای برای هکر شدن
منش هکر حیاتی‌است اما مهارت او حیاتی‌تر است. منش جایگزین مهارت نمی‌گردد و مجموعه مهارت های پایه ای خاصی وجود دارند که باید در خود بپرورانید تا هکرها شما را هکر بنامند.
این ابزار به آرامی تغییر میکند با گذشت زمان تکنولوژی مهارت های جدیدی ایجادمی‌کند و قدیمی‌‌ها را بی‌مصرف میکند. مثلا در گذشته زبان ماشین شامل این مجموعه بود، در حالیکه HTML اخیرا به این مجموعه اضافه شده است. اما این مجموعه در حال حاضر مشخصأ شامل موارد زیر است:

۱ - بیاموزید که چگونه برنامه بنویسید.
این مسلما پایه ای‌ترین مهارت هکر است. اگر شما هیچ زبان برنامه نویسی‌بلد نیستید، پیشنهاد می‌کنم با پیتون شروع کنید. پتیون تمیز طراحی‌شده است. به خوبی‌مستند سازی‌شده و تقریبأ ابتدایی‌است. با آنکه پتیون زبان اولیه خوبی‌است، یک اسباب بازی‌نیست. بلکه بسیار قدرتمند و قابل انعطاف است و مناسب پروژه های بزرگ. من یک مقاله مفصل تر در مورد انقلاب پیتون نوشته‌ام. خودآموزهای خوبی می‌توانید در وب سایت پیتون پیدا کنید.

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

اگر به صورت جدی به برنامه نویسی روی آورید، باید C زبان پایه‌ایUnix را یاد بگیرید. ++C بسیار شبیه C است؛ اگر شما یکی از آنها را یاد بگیرید، یادگرفتن دیگری مشکل نخواهد بود. اما هیچ کدام به عنوان زبان اول قابل یادگیری نیستند. در واقع، هر چقدر از برنامه نویسی به زبان C پرهیز کنید، بازده‌تان بیشتر خواهد بود.


C بسیار کاراست و منابع کامپیوتر را کمتر مصرف می‌کند. متأسفانه C این کارایی را با تلاش بسیار شما برای مدیریت سطح پائین منابع (مانند حافظه) بدست می‌آورد. این نوع برنامه نویسی سطح پائین بسیار پیچیده و باگ -دوست است و زمان بسیاری برای رفع اشکال (Debug) لازم دارد. با قدرت و سرعتی که کامپیوترهای امروز دارند این معامله خوبی نیست. تیز هوشانه‌تر است که از زبانی استفاده کنیم که زمان کامپیوتر را بیشتر می‌گیرد و زمان برنامه نویس را کمتر. مانند ، پیتون.

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

لیسپ (LISP)به دلایل دیگری ارزشمند است – برای روشن نگری عینی که پس از یادگیری آن بدست خواهید آورد . حتی اگر هیچگاه از لیسپ به طور جدی استفاده نکنید، مسلما یادگیری آن شما را برنامه نویس بهتری خواهد کرد. (شما می‌توانید مهارت های اولیه ی‌LISP را به راحتی بانوشتن و تغییر دادن Modها برای ویرایشگر متن Emacs کسب کنید)

حقیقتا بهتر است هر پنج زبان ( پیتون ، جاوا ، C/++C ، پرل و LISP) را یاد بگیرید. جدا از ارزشی که این زبانها برای هکرها دارند، آنان رویکردهای کاملا متفاوتی برای برنامه نویسی دارند که مسا ئل با ارزشی به شما یاد می‌دهند.

نمی‌توانم دستورالعمل خاصی برای یادگرفتن برنامه نویسی بدهم (کار پیچیده ای‌است)، اما می‌توانم بگویم که کتاب‌ها و کلاسها به شما کمک نخواهند کرد (اکثر هکرها خودشان یاد گرفته‌اند) شما می‌توانید روشهایی را از کتاب فراگیرید اما ساختار فکری که این روشها را به مهارت واقعی تبدیل می‌کند، تنها با تمرین و شاگردی کردن بدست می‌آید. وظایف شما شامل ۱) خواندن کد و ۲) نوشتن کد خواهد بود.

یادگیری زبان برنامه نویسی مانند یادگیری نوشتن یک زبان واقعی است. بهترین راه خواندن چیزهایی است که استادان امر نوشته اند و سپس نوشتن برنامه ای از خودتان است؛ بسیار بیشتر مطالعه کنید، کمی‌بیشتر بنویسید، بیشتر مطالعه کنید، بیشتر بنویسید.... و تا آنجا ادامه دهید که نوشته هایتان قدرت و صلابت کارهای استادتان را پیدا کند.

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

۲ - یکی‌از یونیکس های‌باز-متن را بگیرید و استفاده و اجرا کردن آن را بیاموزید.
فرض می‌کنیم یک کامپیوتر شخصی دارید یا لااقل به آن دسترسی دارید (بچه های امروزی خیلی راحت به آن دسترسی دارند:-)). مهمترین قدم اولیه ای که هر مبتدی برای هکر شدن می‌تواند بردارد، گرفتن یک کپی از لینوکس (Linux) یا بی‌اس دی-یونیکس (BSD-Unix)؛ نصب کردن آن روی‌کامپیوتر شخصی و اجرای آن است.

بله ، سیستم عاملهای فراوانی در کنار یونیکس وجود دارد. اما تمام آنها به صورت باینری توزیع می‌شوند و شما قادر به خواندن و تغییر کد آن نیستید. تلاش برای ایجاد تغییر بر روی یک کامپیوتر داس یا ویندوز یا MacOS مانند این است که بخواهید در لباس شوالیه رقص بیاموزید.

تحت OS/X این کار ممکن است ، اما فقط بخشی از این سیستم بازمتن است. شما به موانع بسیاری برخورد خواهید کرد و باید مواظب باشید تا عادت بد تکیه بر کد اختصاصی اپل را در خود توسعه ندهید. در صورتی که بر روی یونیکس‌ها تمرکز کنید، چیزهای مفیدتری فراخواهید گرفت.


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

پس یک یونیکس نصب کنید. من به شخصه لینوکس را دوست دارم اما راههای دیگری هم وجود دارد ( بله! شما می‌توانید مایکروسافت ویندوز و Linux رابا هم داشته باشید). یاد بگیرید، اجرا کنید، ور بروید، کدهایش را بخوانید و تغییرشان دهید. ابزار برنامه نویسی بهتری در اختیار خواهید داشت، مانند C , LISP , Python و Perl که در سیستم عامل ویندوز خواب داشتن آن ها را می‌بیند. بسیار جذاب و سرگرم کننده خواهد بود و آنچنان در دانش غرق میشوید که حتی متوجه آن نمی‌شوید تا هنگامیکه به مانند یک استاد هکر به پشت سرتان بنگرید!

برای اطلاعات بیشتر درباره ی یادگیری‌Unix به The Loginataka نگاه کنید. همین طور شمامی‌توانید نگاهی بهThe Art Of Unix Programing (هنر برنامه نویسی در یونیکس) بیاندازید.

برای آن که چیز هایی از لینوکس دست گیرتان شود به سایت Linux Online بروید؛ شما می‌توانید از آن جا دانلود کنید یا (ایده ی‌بهتر) یک گروه کاربران لینوکس محلی پیدا کنید تا به شما در نصب لینوکس کمک کنند. از دیدگاه یک کاربر تازه کار تمام توزیع های لینوکس بسیار شبیه یکدیگرند.

شما می‌توانید راهنما و منابعBSD Unix را در سایت www.bsd.org پیدا کنید.

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

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

۳ -استفاده از وب و نوشتن HTML را یاد بگیرید.
بسیاری از چیزهایی که فرهنگ هک ساخته است خارج از افق دید شماست، کمک به کارخانه‌ها، دفاتر و دانشگاه‌ها بدون اینکه تأثیر مشخصی در زندگی غیر هکرها نداشته باشد. در این میان اینترنت یک استثناء عمده است، سرگرمی درخشان هکری که حتی به اعتراف سیاست مداران در حال تغییر دادن جهان است . تنها به همین خاطر (و همچنین بسیاری‌از دلایل مشابه دیگر) یاد گرفتن کار در اینترنت احتیاج دارید.
این فقط به این معنی نیست که چگونه از یک مرورگر استفاده کنید(!) بلکه به معنی یادگیری‌HTML است . اگرهنوز برنامه نویسی یاد نگرفته‌اید، نوشتن HTML عادت های ذهنی‌ را برایتان فراهم می‌کند که به یادگیری برنامه نویسی کمک می‌کند. پس برای خودتان یک Homepage درست کنید. سعی کنید از XHTML استفاده کنید که نسبت به HTML سنتی تمیزتر است.(منابع بسیار خوبی برروی وب برای تازه کارها وجوددارد؛ این یکی از آن هاست!)

اما نوشتن یک Homepage به هرحال آنقدر خوب نیست که شما را هکر کند. وب پر از Homepage است. بیشترشان بی‌ارزشند. لجن های بی‌محتوا، فضولات شیک، اما مطمئن باشید که لجن همیشه لجن است. (برای اطلاعات بیشتر صفحه یTheHTML Hell را ببینید.)

برای با ارزش بودن؛ Homepage تان باید محتوا داشته باشد و برای هکرهای دیگر جذاب و یا آموزنده باشد. تمام اینها شمارا به بخش بعد هدایت می‌کند...

۴ -اگر انگلیسی‌بلد نیستید آن رایاد بگیرید.
به عنوان یک آمریکایی بخاطر آنکه زبان مادریم انگلیسی است قبلأ از ذکر این موضوع ناراحت بودم. حداقل این می‌تواند یک امپریالیسم فرهنگی‌تلقی‌گردد. ولی تعدادی از غیر انگلیسی زبانان از من خواستند که این موضوع را متذکر شوم که انگلیسی زبان فرهنگ هکر و اینترنت محسوب می‌گردد و شما احتیاج خواهید داشت که این زبان را یادبگیرید تا در جامعه هکرها فعال شوید.

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

منبع: http://www.catb.org/~esr/faqs/hacker-howto.html




ادامه مطلب + نوشته شده در  جمعه هفدهم اسفند 1386ساعت 0:19  توسط و.د  | 

پورت ۷۹

پورت ۷۹ چيست؟

پورت ۷۹ را پورت finger مي‌گويند. کاربرد اين پورت به اوايل ايجاد اينترنت بر‌مي‌گرده و کاربردش مخصوص سيستم‌عامل يونيکس بوده‌است (الان هم تقريبا فقط در خانواده سيستم‌های يونيکس اين پورت قابل استفاده است).
وقتي اين پورت روی سيستم‌عامل يونيکس باز باشه، مي‌شه با يک request ساده فهميد که از بين کساني که در آن سيستم account دارند، کدام‌ها on هستند (يعني کدام‌ها به سيستم login شده‌اند). برنامه‌اي که پورت ۷۹ رو در يک سيستم باز مي‌کنه، finger server مي‌گن و چون مختص سيستم‌عامل يونيکس است، مي‌تونين از عبارت Finger Deamon استفاده کنين. حالا که پورت ۷۹ روي سيستم باز شد، شما مي‌تونين با اون ارتباط برقرار کنين.


- با پورت ۷۹ صحبت کنيم

همان‌طور که مي‌دانيد، براي صحبت کردن با پورت‌ها از دو برنامه telnet و nc ميشه استفاده کرد. در مورد پورت ۷۹ يه نرم‌افزار ديگر به نام finger در تمام سيستم‌عامل‌های يونيکس و برخي سيستم‌عامل‌هاي ويندوز وجود دارد که علاوه بر دو برنامه قبلي، اونم مي‌شه به کار برد.
فرض کنيد که مي‌خوام با پورت ۷۹ در کامپيوتری به اسم router2.iums.ac.ir ارتباط برقرا کنم. برای اين‌ کار يکي از سه دستور زير را استفاده مي‌کنم:
telnet router2.iums.ac.ir 79
nc -v router2.iums.ac.ir 79
finger .@router2.iums.ac.ir
دقت کنيد که در دو دستور اول شماره پورت مشخص شده ولي دستور آخري نه، چون دستور finger فقط براي همين‌کار استفاده مي‌شه و نمي‌توان باهاش با پورت ديگه‌ای ارتباط برقرار کرد. ضمنا به ساختار دستور آخر توجه کنيد. بعد از اجرای دستور، جواب مي‌شنوم:
    Line     User      Host(s)                  Idle Location
  33 tty 33  whgh      Async interface          0
  34 tty 34  najahan   Async interface          0
  35 tty 35  sadf      Async interface          0
  36 tty 36  abokho    Async interface          0
  38 tty 38  whgh      Async interface          0
  39 tty 39  bzamani   Async interface          0
  40 tty 40  saeedmah  Async interface          0
  41 tty 41  mfaizi    Async interface          0
  42 tty 42  gourabi   Async interface          0
  43 tty 43  farhadz   Async interface          0
  44 tty 44  arbks     Async interface          0
  45 tty 45  mhalavi   Async interface          0
  46 tty 46  farhood   Async interface          0
  47 tty 47  staavoni  Async interface          0
  48 tty 48  whgh      Async interface          0
* 66 vty 0             idle                     0 217.218.84.58

  Interface  User      Mode                     Idle Peer Address
نکته مهم اين است که اطلاعاتي که به کمک پورت ۷۹ به دست مي‌آد، خيلي بستگي به سروري داره که اين اطلاعات رو مي‌فرسته. بعضي از سيستم‌ها علاوه بر نام افراد (username) که در اين مثال ديده مي‌شه، نام و نام خانوادگي افراد، ساعت و محل login کردن و ... را نمايش مي‌دهند. اما چيزي که هميشه وجود دارد و مشترک است، username هاست که از نقطه نظر يک هکر بسيار ارزشمند است. در اين مثال ما اکانت‌هايي به اسم najahan ،whgh و ... در اين سرور وجود دارد و افراد مربوطه در حال حاضر login کرده‌اند. اگر اکانتي موجود باشد ولي فرد مورد نظر در حال حاضر از آن اکانت وارد نشده باشد، نمايش داده نمي‌شود. اين ليست فقط براي اکانت‌های فعال است. پس نتايجي که شما در ارتباط با اين سرور کسب مي‌کنيد، با نتايجي که من نوشتم متفاوت خواهد بود.


- اين اطلاعات به چه دردي مي‌خورد؟

اول اينو بگم که finger کردن، جزئي از مراحل Enumeration است (البته در حالت کاربرد legal يا قانوني). منظور از عبارت Enumeration يا به طور خلاصه Enum، پيدا کردن ليست کاربران است.
+ فرض کنيد مي‌خواهيد يک ليست از پسورد‌ها را تست کنيد تا اينکه يکي شانسي درست در بياد (درست مثل دزدها که يه سري کليد را تست مي‌کنن که يکي به قفل بخوره و باز کنه!) حالا سوال اينه که اين پسورد‌ها رو برای چه username ي تست مي‌کنيد؟ جواب، username هايي است که با Enumeration به دست اومده است. پس اول با Enumeration يه ليست پيدا مي‌کنيد و بعد تعداد زيادی پسورد رو روش تست مي‌کنيد (روش اين کارو بعدا مي‌گم).
+ کاربرد بعدی finger در رابطه با يک سري اکانت‌هاي خاص است. من هميشه وقتي به يک اکانت به اسم guest برخورد مي‌کنم، هميشه پسوردهای guest يا libguest يا myguest و ... رو تست مي‌کنم که گاهي جواب ميده. همين‌طور در مورد اکانتي به اسم demo پسورد demo را تست مي‌کنم و ... معمولا موسسات بزرگ پر است از اين username هاي عمومي که حدس زدن پسورد مربوطه کار مشکلي نيست.
+ گفتم که بعضي سرورهاي finger نام و نام‌خانوادگي افراد را هم برايمان مي‌فرستند. چون بعضي از افراد متاسفانه يا خوشبختانه از اين اطلاعات براي پسوردشون استفاده مي‌کنند، مي‌تونه مفيد باشه.
+ يک کاربرد ديگه و البته بسيار مهم موقعي است که مثلا مي‌خواهيد يک سري پسورد رو روي يک اکانت خاص تست کنيد. من هميشه اول يک finger مي‌کنم که مطمئن بشم که فرد در حال حاضر login نکرده باشد و بعد اين کار رو شروع مي‌کنم ( يعني انقدر صبر مي‌کنم که ديگه آن اسم خاص در finger نمايش داده نشه يعني طرف مقابل logout کرده باشد!)
+ بازم يه کاربرد‌هاي مهم ديگه هست که الان بهتون نمي‌گم تا تو خماريش بمونين ! شوخي کردم، وقتي بحث پورت‌ها تموم شد و رسيديم به کاربرد‌هاي غير معمول اين پورت‌ها، براتون حتما مي‌گم.




ادامه مطلب + نوشته شده در  چهارشنبه هفدهم بهمن 1386ساعت 0:26  توسط و.د  | 

IP Scanning

 IP Scanning

IP Scanning به روش‌های مختلف می‌تواند صورت بگيرد:


۱- در ساده‌ترين نوع آن، يک پکت از نوع ICMP ECHO به يک ip خاص می‌فرستيم و اگر يک ICMP ECHO REPLAY به سمت ما برگشت، در اين صورت آن ip به‌اصطلاح up است. برای اين‌کار می‌توان از ابزارهای زير استفاده کرد:

الف) استفاده از ping موجود در سيستم‌عامل‌های ويندوز و يونيکس (لينوکس). به صورت زير:
ping xxx.xxx.xxx.xxx
مثلا برای 63.148.227.65 می‌نويسيم:
ping 63.148.227.65
اگر در ويندوز اين دستور را تايپ کنيد و به جواب زير برسيد، يعنی آن ip فعال است:
Reply from 63.148.227.65: bytes=32 time=1402ms TTL=105
Reply from 63.148.227.65: bytes=32 time=941ms TTL=105
Reply from 63.148.227.65: bytes=32 time=1402ms TTL=105
Reply from 63.148.227.65: bytes=32 time=941ms TTL=105
و اگه به پيغام زير رسيديد، يعنی فعال نيست:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
همان طور که می‌بينيد با اين دستور در يک لحظه فقط می‌شود، يک ip را تست کرد و اين کار ما را کند می‌کند.

ب) در سيستم‌عامل لينوکس می‌شود از gping استفاده کرد که يک مجموعه ip را به سرعت تست کرد.

ج) در سيستم عامل ويندوز می‌شود از Pinger استفاده کرد. برای داون‌لود اين نرم‌افزار اينجا را کليک کنيد. Pinger يک نرم‌افزار گرافيکی است و کار ping کردن به يک مجموعه ip را ساده می‌کند.


در قسمت From و To مشخص می‌کنيم که از کدام ip تا کدام ip را می‌خواهيم ping کنيم. با فشار دکمه Ping ليست ip هايی که up هستند، نمايش داده می‌شود. فرض کنيد که ip فعلی شما 195.219.176.88 باشد و بخواهيم بدانيم در کلاس C مربوط به ما چه ip های ديگری up هستند. در اين حالت بايد 195.219.176.1 تا 195.219.176.254 را ping کنيم.

د) حالا می‌خواهيم همين کار را با NMapWin انجام دهيم. برای اينکار بايد در برگه Scan، قسمت Mode را در حالت Ping Sweep قرار دهيد. برگه Discover بايد درحالت ICMP Ping باشد و در قسمت Options بايد گزينه OS Detection را از حالت انتخاب شده خارج کنيد. بعد بايد ليست ip ها را تنظيم کنيم، برای اينکار بايد در قسمت Host ، ليست ip ها را وارد می‌کنيم. مثلا اگر بخواهيم 195.219.176.1 تا 195.219.176.254 را تست کنيم بايد بنويسيم: 24/195.219.176.0 که اين 24/ يعنی کلاس C که از ۱ تا ۲۵۵ است. و بعد دکمه Scan را فشار دهيم.
Host   (195.219.176.0) seems to be a subnet broadcast address ...
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
Host (195.219.176.1) appears to be up.
Host (195.219.176.3) appears to be up.
Host (195.219.176.5) appears to be up.
Host (195.219.176.7) appears to be up.
Host (195.219.176.9) appears to be up.
Host (195.219.176.11) appears to be up.
Host (195.219.176.12) appears to be up.
Host (195.219.176.13) appears to be up.
Host (195.219.176.14) appears to be up.
Host H-GVSVY95KXINRJ (195.219.176.15) appears to be up.
Host (195.219.176.16) appears to be up.
Host (195.219.176.17) appears to be up.
Host (195.219.176.18) appears to be up.
Host (195.219.176.19) appears to be up.
Host KERYASBA (195.219.176.20) appears to be up.
Host MARYAM (195.219.176.22) appears to be up.
Host (195.219.176.23) appears to be up.
Host (195.219.176.24) appears to be up.
Host FFX-L2XA0ZM87Q3 (195.219.176.25) appears to be up.
Host (195.219.176.26) appears to be up.
Host (195.219.176.27) appears to be up.
Host (195.219.176.28) appears to be up.
,...
ملاحظه می‌فرماييد که در بعضی موارد اسم کامپيوتر مربوط به ip هم ذکر شده است.


۲- در تمام روش‌های بالا، از پکت‌های ICMP برای پينگ استفاده کرديم. در بعضی کامپيوتر‌ها ممکن است پکت‌های ICMP توسط فايروال يا روتر بلاک شوند. در اين حالت بايد از پورت اسکنينگ برای IP اسکنينگ استفاده کرد! برای اين‌کار می‌توان از ابزارهای زير استفاده کرد:

الف) در سيستم عامل يونيکس (لينوکس) می‌توان از ابزارهايی مثل hping و icmpenum و ... استفاده کرد. که فعلا بحث ما نيستند.

ب) در سيستم‌عامل ويندوز، بازهم از NMapWin استفاده می‌کنيم. ولی طوری Port Scanning می‌کنيم که نياز ما را برای IP Scanning جواب دهد. اين‌کار توسط يک سری پورت‌های عمومی صورت می‌گيرد که در اکثر کامپيوتر‌ها باز هستند مثل ۸۰ ، ۲۵ و...
برای اين‌کار در برگه Scan ، قسمت Mode را در حالت Connect تنظيم می‌کنيم و در قسمت Scan Options ، گزينه Port Range را مثلا برای عدد 80 تنظيم می‌کنيم. Discover را در حالت TCP Ping قرار می‌دهيم. و در برگه Option ، گزينه OS Detection را از حالت انتخاب شده خارج می‌کنيم. ليست ip ها را ست کرده و اسکن را شروع می‌کنيم.




ادامه مطلب + نوشته شده در  چهارشنبه هفدهم بهمن 1386ساعت 0:25  توسط و.د  | 

Port Scanning

- چگونه يک ارتباط TCP برقرار می‌شود که بگوييم فلان پورت باز است يا نه؟

برای اينکه تعيين کنيم که يک پورت روی يک سرور باز است يا نه، معمولا بايد يک TCP connect scan انجام دهيم. اول اين را بگم که Port Scanning انواع مختلف دارد که فعلا ما نوع TCP connect را مدنظر داريم. اين نوع اسکن سه مرحله دارد که به آن TCP"s 3-way handshakeمی‌گويند:
۱- اول کامپيوتر ما به سمت سرور يک SYN packet می‌فرستد که به معنی درخواست اتصال است.
۲- اگر سرور اين درخواست را قبول کند، در مرحله دوم سرور به سمت ما يک SYN/ACK packet می‌فرستد.
۳- در مرحله آخر کامپيوتر ما يک ACK packet به سمت سرور می‌فرستد.

نوع ديگری از پورت اسکن TCP SYN scan نام دارد. با توجه به اينکه معمولا اگر پورت اسکن به روش بالا (TCP connect scan) انجام دهيم، معمولا در سرور اين اتصال ذخيره خواهد شد و بعدا می‌تواند ما را رديابی کنند، به جای آن می‌توان از TCP SYN scan استفاده کرد. در اين نوع اسکن، مراحل ۱ و ۲ از بالا انجام می‌شود ولی مرحله ۳ نه! اگر در مرحله ۲ به ما يک SYN/ACK برسد، آن پورت باز است و اگر يک RST/ACK برسد، يعنی بسته است.

انواع ديگری از پورت اسکنينگ هم وجود دارد مثل UDP scan, TCP Window scan, TCP ACK scan, TCP Null, TCP Xmas Tree, TCP FIN Scan


- چگونه می‌توان عمل Port scanning را انجام داد؟

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

برای Port Scanning می‌توان از ابزارهای مختلفی استفاده کرد که اکثرا برای لينوکس طراحی شده‌اند، اما مهم‌ترين پورت اسکنرها برای ويندوز عبارتند از:

۱- نرم‌افزار NMapWin v1.3.0 :
نسخه گرافيکی و مخصوص ويندوز برای nmap است (nmap در لينوکس استفاده می‌شود). nmap از کامل‌ترين ابزارهايی است که هکر‌ها استفاده می‌کنند که علاوه بر توانايی انواع پورت اسکنينگ‌ها، می‌تواند کارهای بسياری چون تشخيص سيستم‌عامل سرور و ... را انجام دهد. اين ابزار را بعدا توضيح خواهم داد ولی فعلا برای کار ما بيش‌ از حد کامله ;-)

۲- NetScanTools Pro 2000 :
اين هم از بهترين‌هاست ولی چون پولی است به‌ جای داون‌لود بايد در CD هايی که در بازار هست پيدايش کنيد.

۳- WinScan :
برای اسکن کردن TCP (ونه UDP) می‌توانيد از آن استفاده کنيد. من زياد ازش خوشم نيومد.

۴- ipEye v1.2 :
من در این درس از اين نرم‌افزار استفاده خواهم کرد، برای داون‌لود آن می‌توانيد به سايت www.ntsecurity.nu مراجعه کنيد يا مستقيما با کليک روی اين لينک آن را داون‌لود کنيد. لازم است بگويم که اين نرم‌افزار فقط در ويندوز ۲۰۰۰ و xp کار می‌کند و نيز در يک بار اجرا فقط يک ip را می‌تواند تست کند. ضمنا فقط TCP را تست می‌کند.


- چگونه از ipEye برای پورت اسکنينگ استفاده کنيم؟

با تايپ ipEye در command prompt اين نتايج ظاهر می‌شود:
ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
- http://ntsecurity.nu/toolbox/ipeye/

Error: Too few parameters.

Usage:

ipEye -p [optional parameters]
ipEye -p
[optional parameters]

is one of the following:
-syn = SYN scan
-fin = FIN scan
-null = Null scan
-xmas = Xmas scan>br>
(note: FIN, Null and Xmas scans don"t work against Windows systems.

[optional parameters] are selected from the following:
-sip = source IP for the scan
-sp = source port for the scan
-d = delay between scanned ports in milliseconds
(default set to 750 ms)


فرض کنيد که می‌خواهيم سايت سازين را از نظر پورت‌ها از پورت ۱ تا ۲۰۰ تست کنيم. اول بايد ip آن را به دست بياوريم که می‌شود، 63.148.227.65 و حالا به کمک دستور زير آن را بررسی می‌کنيم:

ipeye 63.148.227.65 -syn -p 1 200
دقت کنيد که 63.148.227.65 عدد ip سازين، syn- يعنی SYN SCAN و p 1 200- يعنی تست از پورت ۱ تا ۲۰۰ باشد. البته پارامترهای ديگری را هم می‌شود ست کرد که فعلا به درد ما نمی‌خورد. با اجرای اين دستور به نتايج زير می‌رسيم:
ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
- http://ntsecurity.nu/toolbox/ipeye/

1-20 [drop]
21 [open]
22 [closed or reject]
23-24 [drop]
25 [open]
26-52 [drop]
53 [open]
54-79 [drop]
80 [open]
81-109 [drop]
110 [open]
111-142 [drop]
143 [open]
144-200 [drop]
201-65535 [not scanned]
Closed يعنی کامپيوتر در آن طرف هست ولی به پورت گوش نمی‌دهد، Reject يعنی اينکه يک firewall هست که اجازه اتصال به آن پورت را نمی‌دهد، Drop يعنی اينکه يک firewall همه‌چيز را پس‌ می‌زند و يا اصلا کامپيوتری اونور نيست، Open هم که يعنی باز.
در مورد سازين می‌بينيد که از بين پورت‌های ۱ تا ۲۰۰ ، پورت‌های ۲۱، ۲۵، ۵۳، ۸۰، ۱۱۰، ۱۴۳ باز است و می‌توان به‌ آنها telnet کرد. دقت کنيد که تا تمام پورت‌هايی که مشخص شده، تست نشده است، هيچ نتيجه‌ای نشان داده نمی‌شود و يه‌کم صبر می‌خواد.


- تعيين پورت‌های باز کامپيوتر خودتان

می‌خواهيم درباره کامپيوتر خودمان اين اطلاعات را پيدا کنيم. برای اين کار يکی از دستورات زير را به کار می‌بريم:
netstat -an
netstat -a
فرق اين دو دستور در اين است که اولی پورت‌ها را به صورت عددی و دومی به صورت معادل اسمی آن پورت می‌نويسد. مثلا معادل اسمی پورت 7 ، echo است.

مثلا اگه netstat -an را تايپ کنم، به اطلاعات زير می‌رسم:
Active Connections

Proto Local Address Foreign Address State
TCP 0.0.0.0:7 0.0.0.0:0 LISTENING
TCP 0.0.0.0:9 0.0.0.0:0 LISTENING
TCP 0.0.0.0:13 0.0.0.0:0 LISTENING
TCP 0.0.0.0:17 0.0.0.0:0 LISTENING
TCP 0.0.0.0:19 0.0.0.0:0 LISTENING
TCP 0.0.0.0:21 0.0.0.0:0 LISTENING
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING
TCP 0.0.0.0:53 0.0.0.0:0 LISTENING
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:119 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:143 0.0.0.0:0 LISTENING
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:515 0.0.0.0:0 LISTENING
TCP 0.0.0.0:563 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1033 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1037 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1040 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1041 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1043 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1755 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1801 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3372 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
TCP 0.0.0.0:6034 0.0.0.0:0 LISTENING
TCP 0.0.0.0:6666 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7007 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7778 0.0.0.0:0 LISTENING
TCP 0.0.0.0:8181 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1039 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1433 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2103 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2105 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2107 0.0.0.0:0 LISTENING
UDP 0.0.0.0:7 *:*
UDP 0.0.0.0:9 *:*
UDP 0.0.0.0:13 *:*
UDP 0.0.0.0:17 *:*
UDP 0.0.0.0:19 *:*
UDP 0.0.0.0:68 *:*
UDP 0.0.0.0:135 *:*
UDP 0.0.0.0:161 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1030 *:*
UDP 0.0.0.0:1036 *:*
UDP 0.0.0.0:1038 *:*
UDP 0.0.0.0:1042 *:*
UDP 0.0.0.0:1075 *:*
UDP 0.0.0.0:1434 *:*
UDP 0.0.0.0:1645 *:*
UDP 0.0.0.0:1646 *:*
UDP 0.0.0.0:1755 *:*
UDP 0.0.0.0:1812 *:*
UDP 0.0.0.0:1813 *:*
UDP 0.0.0.0:3456 *:*
UDP 0.0.0.0:3527 *:*
UDP 127.0.0.1:53 *:*
UDP 127.0.0.1:1028 *:*
UDP 127.0.0.1:1029 *:*
UDP 127.0.0.1:1035 *:*
UDP 127.0.0.1:1044 *:*
UDP 127.0.0.1:1045 *:*
UDP 127.0.0.1:1100 *:*
من دستور را موقعی اجرا کردم که به اينترنت متصل نبودم. اگر همين کار را در زمان اتصال به اينترنت انجام می‌دادم، يک سری سطرهای جديد هم اضافه می‌شد که مربوط به آن اتصال می‌شد. و نيز دقت کنيد که من سويچ an- را استفاده کردم و پورت‌ها به صورت عددی نمايش داده شده است که همين الان - الساعه - براتون توضيح می‌دم:

اولين نکته‌ای که به نظر می‌رسد، نامی است که برای هر ستون نوشته شده است:
  Proto      Local Address       Foreign Address       State
- Proto : يعنی پروتکل، که می‌تواند TCP يا UDP باشد.
- Local Address : نشان‌دهنده ip کامپيوتر خودمان و شماره پورت‌هاست. مثلا سطر اول می‌گويد که ip من 0.0.0.0 است (دقت کنيد که من به اينترنت متصل نيستم) و اولين پورت باز (از نوع TCP با توجه به اول سطر) عدد ۷ است زيرا اين به صورت 0.0.0.0:7 نوشته شده است که قسمت قبل از کاراکتر : ، ip است و بعد از کاراکتر :، پورت است.
- Foreign Address : چون در اين مثال از سويچ a- يا an- استفاده کرده‌ايم، کاربردی ندارد. ولی بعدا خواهيد ديد که اگر از يک سويچ ديگر استفاده کنيم، می‌تواند مهم باشد.
- State : وضعيت اتصال را نشان می‌دهد


حالا اگه پورت‌ها را يکی يکی بررسی کنيد، می‌بينيد که در پروتکل TCP ، پورت‌های ۷، ۹، ۱۳، ۱۷، ۱۹، ۲۱ و... باز است و در پروتکل UDP ، پورت‌های ۷، ۹، ۱۳، ۱۷، ۱۹، ۶۸ و ... باز است.

حالا ممکن است بپرسيد که اين اطلاعات به چه دردی می‌خورد؟
جواب اين است که دانستن اين اطلاعات برای محافظت از خودتان در برابر همکارانتان (هکرها) است. مثلا اگر يک تروجان روی کامپيوتر شما نصب شده باشد، با اين دستور می‌توان آن را کشف کرد.



ادامه مطلب + نوشته شده در  چهارشنبه هفدهم بهمن 1386ساعت 0:23  توسط و.د  | 

مقدمات قبل از شروع يادگيری هک

ترمينولوژی (اصطلاح‌شناسی)

- Hacker کيست ؟
هکر کسی است که با سيستم های کامپيوتری آشناست و می‌تواند با روش‌هايی خاص (بدون اجازه) وارد آنها شود... اين انسان می‌تواند خوب يا بد باشد ( در هر حال هکر است )

- سوال: يک هکر از چه راهی وارد يک سيستم می‌شود؟
از راه شبکه (نه بابا ! )
بايد توجه کنيد که هر سيستم کامپيوتری (به عبارت بهتر هر سيستم عامل) به هر حال محصول کار تعدادی انسان است و حتما دارای تعدادی bug (خطاهايی که بعد از ارائه محصول به بازار به تدريج کشف می‌شوند) خواهد بود. بعد از اينکه يک باگ مشخص شد، شرکت ها نرم‌افزارهايی را به‌سرعت (در عرض چند ساعت ) ايجاد می‌کنند تا مشکل رفع شود اين‌ها را patch می‌گويند. و بعد مديران شبکه (Wbemasters) در عرض چند روز تا چند سال (آين آخری در مورد ايرانه) آنها را download کرده و مشکل را حل می‌کنند. در اين فاصله هکرها دمار از روزگار اين سايت‌ها در می‌اورند...

- تعريف چند اصطلاح:

*** Hacker واقعی = سامورايی :
کسی که هدفش از نفوذ به سيستم‌ها نشان دادن ضعف سيستم‌های کامپيوتری است نه سوءاستفاده ...

*** Wacker (واکر):
کسی که هدفش از نفوذ به سيستم‌ها، استفاده از اطلاعات آن سيستم‌هاست (جرو هکر‌های کلاه‌ سياه )

*** Cracker (کراکر):
کسی که هدفش از نفوذ به سيستم‌ها، خرابکاری و ايجاد اختلال در سيستم‌های کامپيوتری است. (جرو هکر‌های کلاه‌ سياه )

*** Preaker :
از قديمي‌ترين هکرها هستند که برای کارشان نياز (و دسترسی) به کامپيوتر نداشتند و کارشان نفوذ به خطوط تلفن برای تماس مجانی، استراق‌سمع و ... بود. اين جزو آموزش من نيست چون کار خيلی بديه (-;


- زنگ ‌تفريح

- تقسيم بندی من برای هکر ها:

۱- جوجه‌هکرها (احمق کوچولوها):
توانايی‌ها: بلدند از Sub 7 , 187 استفاده کنند و فکر کنند ديگه همه‌چی رو ياد گرفته‌اند !

۲- خروس‌هکر‌ها يا مرغ‌هکرها (احمق‌های بزرگتر):
توانايی‌ها: Mail Box را هم می‌توانند Bomb کنند ... ماشاءالله !

۳- هکرهای قابل‌احترام ( مثل خود شما):
دارند ياد می‌گيرند و هنوز ۲،۳ سال کار دارند.

۴- هکرهای پيش‌کسوت:
ديگه آفتاب لبه بومه ... هکرهای قابل احترام را دوس دارند


- تقسيم‌بندی

- انواع کامپيوتر‌های شبکه:
=> کامپيوترهای Server : کامپيوترهايی که کارشان تامين اطلاعات در شبکه است، مثلآ کامپيوترهايی که سايت‌ها را نگه می‌دارند.
=> کامپبوتر‌های Client : کامپيوترهايی که استفاده کننده هستند مثل همين کامپيوتر خودتان که داريد ازش کار می‌کشيد.


- انواع سيستم‌ عامل‌هايی که Server ها از آن استفاده‌ می‌کنند:

=> سيستم‌های فعلی:
* خانواده Unix (مثل FreeBSD, Linux, Sun Solaris )
* خانواده Windows (مثل WinNT, Win2000 )
* OsMac
=> سيستم‌های قديمی (منقرض شده - آخيش ! ):
AIX, IRIS, DEC10, DEC20 , ...


- سوال: کدام‌ها را بايد ياد گرفت؟
Win2000, Unix(Linux) را بايد ياد بگيريد. پيشنهاد من اين است که Win2000و RedHat Linux را روی کامپيوتر خود همزمان داشته باشيد.


- برای شروع چه چيزی لازم است؟

۱- Win2000 , Linux را روی کامپيوتر خود نصب کرده و شروع به يادگيری کنيد.
۲- شروع به يادگيری زبان C کنيد.
۳- شروع به يادگيری TCP/IP کنيد. (يک کتاب بخريد )
۴- مهمترين چيز علاقه به طی کردن يک را بسييييييار طوووووولانی


- تقسيم‌بندی انواع حملات

اولين نکته‌ای که لازم است بگويم اينه که وقت خود را برای هک کردن کامپيوتر‌های کلاينت هدر ندهيد (اگرچه برای افراد مبتدی کار با نرم‌افزاری مثل Sub7 زياد هم بد نيست ولی نبايد زياده‌روی کرد) علت هم اينه که هربار که به اينترنت وصل می‌شوند ip جديدی به‌ آنها اختصاص پيدا می‌کنه و زحماتتون هدر می‌ره (البته برای جلوگيری از اين امر هم روشهايی هست که در آينده ايشالله ميگم).
حالا تقسيم‌بندی:
۱- حمله به روش Denial of Service Attack) DoS)
۲- حمله به روش Exploit
۳- حمله به روش Info Gathering (تلنت کردن يکی از مثالهای آن است که امروز آموختيد)
۴- حمله به روش Disinformation

در مورد هرکدام به‌زودی توضيح می‌دم.


- 133t Speak چيست؟

گاهی هکرها در هنگام نوشتن به جای تعدادی از حروف انگليسی معادل‌های قراردادی به کار می‌روند که ليست آنها را در زير می‌بينيد:
0    <= O
1 <= L; I
2 <= Z
3 <= E
4 <= A
5 <= S
6 <= G
7 <= T
8 <= B
| <= L; I
@ <= at (duh)
$ <= S
)( <= H
}{ <= H
/\/ <= N
\/\/ <= W
/\/\ <= M
|> <= P; D
|< <= K
ph <= f
z <= s


مثلا he Speaks می‌شود:
}{3 $|>34|< z
توصيه من اينه که از اين معادل‌ها تا جايی که می‌تونيد استفاده نکنيد. فقط ياد بگيريد که کم نياريد.


- ترسيم مسير برای آينده

۱- اولين و مهمترين تصميم انتخاب نوع کامپيوتری است که می‌خواهيد هک کنيد ( کلاينت يا سرور )، زيرا روش‌هک کردن اين‌دو بجز در مراحل ابتدايی کاملا متفاوت است.
۲- دومين گام انتخاب يک کامپيوتر مشخص (مثلا کامپيوتری که فلان سايت را نگه می‌دارد که مثالی برای کامپيوتر سرور است و يا کامپیوتر فلان شخصی که با او چت می‌کنيد که مثالی برای کامپيوتر کلاينت است) و جمع‌آوری اطلاعات در مورد آن است. اين جمع‌آوری اطلاعات از قربانی (Victim) را Footprinting گويند. اولين مشخصه‌ای که بايد کشف شود، ip اوست. يکی ديگر از اطلاعات مهم که معمولا دنبالش هستيم، پيدا کردن نوع سيستم‌عامل و نيز برنامه‌هايی است که کامپيوتر شخص از آنها بهره می‌برد. يکی از مهمترين ( و گاه خطرناک‌ترين) کارها، تست‌کردن پورت‌های آن کامپيوتر برای ديدن اينکه کدام پورت‌ها باز و کدام‌ها بسته هستند.
۳- مرحله بعدی در واقع شروع تلاش برای نفوذ به سيستم است. اين نفوذ سطوح مختلف دارد و بالاترين آن که در کامپيوترهای سرور روی می‌دهد، حالتی است که بتوان username و password مربوط به مدير کامپيوتر (administrator) يا superuser را به‌دست آورده و از طريق اين Shell Account به نهايت نفوذ دست‌ يابيم ولی گاه به‌دلايل مختلف (مربوط به سطح علمی خود و ... ) نمی‌توان به اين سطح دست‌يافت اما به هر حال برای مرحله بعدی می‌تواند استفاده شود. اين مرحله جايی است که هنر شما يه عنوان يک هکر آغاز شده و نيز به پايان می‌رسد.
۴- اين مرحله بعد از نفوذ روی می‌دهد که در آن به يک سطحی از کنترل سيستم رسيده‌ايد. رفتار شما در اين مرحله مشخص می‌کند که چه نوع هکر هستيد(سامورايی، واکر و يا کراکر) و اينکه آيا جنبه ياد گرفتن را داشته‌ايد يا نه، همينجا مشخص خواهد شد.
۵- مرحله آخر پاک کردن ردپاست تا گير نيفتيم (البته بعضی وقتها برای کلاس گذاشتن بايد گير بيفتيم، هه هه ...). بعضی از سيستم‌ها آمار login را نگه می‌دارند که در مورد آنها اين مرحله بسيار مهم است.


ادامه مطلب + نوشته شده در  چهارشنبه هفدهم بهمن 1386ساعت 0:22  توسط و.د  | 

چگونه هکر شویم؟ بخش دوم

موقعیت فرهنگ هکر

مانند بسیاری از فرهنگ‌های برپایه ی روابط غیر اقتصادی، هکرگری نیز با شهرت اداره می گردد، شما سعی می‌کنید که مسئله جالبی را حل کنید اما اینکه آن مسئله چقدر قابل تأمل است یا راه حل شما واقعا چقدر خوب است، چیزی است که تنها استادان شما صلاحیت تأیید آن را دارند.
به همین ترتیب، وقتی وارد بازی هکر ها شدید، مدارجتان را با آنچه سایرین در مورد شما فکر می کنند بدست خواهید آورد (به این علت است که تا هنگامی که دیگران شما را هکر نمی دانند واقعأ هکر نیستید). این حقیقت بوسیله پنداری که هک را یک کار منزوی گرایانه می‌داند، محو شده است؛ هم چنین با وجود این تابوی فرهنگ هکری (که در حال از میان رفتن ولی فعلا همچنان نیرومند است) در برابر پذیرش اینکه تصدیق خود یا دیگری، تنها در گیر انگیزه یک شخص باشد.

به خصوص ، هکرگری نوعی از فرهنگ است که مردم شناسان به آن فرهنگ هدیه می‌گویند. شما شهرت و موقعیت خود را نه با سلطه بر دیگر مردم، نه با زیبایی یا در اختیار داشتن چیزهای مورد نیاز مردم بلکه با دادن هدیه بدست می آورید. به خصوص با دادن وقت خود، خلاقیت و مهارتتان.

پنج چیز وجود دارد که با انجام آن مورد احترام هکرها قرار می‌گیرید:

۱ - برنامه‌های باز- متن بنویسد
اولین (محوری ترین و سنتی ترین) روش، نوشتن برنامه‌هایی است که هکرهای دیگر آن را جالب و مفید می‌دانند و سپس دادن کد منبع برنامه‌ها به دیگران.
(ما قبلا این را "نرم افزار آزاد" می‌نامیدیم ، اما این اصطلاح موجب اشتباه بسیاری از مردم شد که نمی‌دانستند منظور از آزاد دقیقا چیست، امروزه بسیاری از ما حداقل به نسبت ۲ به۱ اصطلاح "بازمتن" (open-source) را ترجیح می دهیم.)
محترم ترین هکر ها [1] افرادی هستند که برنامه‌های بزرگی نوشته اند - برنامه‌های پرقدرتی که احتیاجات گسترده ای را مرتفع می سازد - و آنان را در دسترس همگان قرار داده اند.

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

۳ -اطلاعات خوب را منتشر کنید
کار خوب دیگری که می‌توانید بکنید جمع آوری و دستچین کردن مطالب جالب و مفید در برگه‌های وب یا پرونده‌هایی مانند سؤالات متداول ( FAQ ) و منتشر کردن آن است. گردآورندگان مجموعه سؤالات متداول (FAQ) به اندازه برنامه نویسندگان بازمتن مورد احترام هستند.

۴ -به پایداری شالوده ی کار کمک کنید
فرهنگ هکر (و مهندسی اینترنت بعنوان شاخه‌ای از آن) با داوطلبان به پیش می رود. بسیاری از کارهای کوچک ولی ضروری وجود دارند که باید انجام شوند. مدیریت لیست‌های پستی و گروههای خبری، مرتب کردن آرشیو نرم افزارهای بزرگ، گسترش RFCها و سایر استانداردهای فنی.
مردمی که این کارها را انجام می دهند مورد احترام فراوان هستند. چرا که همه می دانند این نوع مسئولیت چقدر زمانبر است در حالیکه جذابیت زیادی مانند بازی کردن با کد هم ندارد. انجام آنها نشاندهنده ی ایثارگریست.

۵ - به خود فرهنگ هکر کمک کنید
در انتها می توانید به خود فرهنگ کمک کنید و آن را منتشر کنید (مثلأ با نوشتن مقاله ای در مورد اینکه چگونه هکر شویم :-) ). گرچه این کاری نیست که در همان ابتدا انجام دهید تا وقتی که شهرت خوبی در بین هکرها بدست آورید.
فرهنگ هکر، رهبر به معنی دقیق آن ندارد. اما قهرمانان، پیران ، مورخان و سخنگویان زیادی دارد. بعد از این که به اندازه ی کافی در سنگرها مدت زیادی را سپری کنید، می‌توانید یکی از آنها شوید. باید بدانید که هکرها به منیت آشکار پیران خود بدبینند؛ رسیدن به این درجه از شهرت آشکارا خطرناک است. به جای تلاش برای رسیدن به آن موقعیتتان را چنان بسازید که در مسیرشما افتد. سپس در مقامتان فروتن و مهربان باشید.

رابطه ی هکر / نرد “Nerd”
ارتباط هکر و نرد بر خلاف افسانه مشهور، برای هکر بودن اجباری بر نرد بودن نیست (نرد به شخصی گفته می‌شود که تمام زندگی او بر کامپیوتر/تکنولوژی استوار است -مترجم -). اما به هرحال نرد بودن کمکتان می‌کند و بسیاری از هکرها اینگونه‌اند. نرد بودن کمکتان می‌کند که بر مهمترین مسائل مانند فکر کردن و هک کردن تمرکز داشته باشید.
به همین خاطر بسیاری از هکرها صفت نرد بودن و حتی سرسختانه‌تر 'geek' را به عنوان شعار برگزیده‌اند. روشی برای بیان جداییشان از انتظارات عوامانه اجتماع - برای بحث بیشتر به صفحه‌ی geek مراجعه کنید.

اگر شما بتوانید به اندازه کافی روی هک کردن تمرکز کنید در حالیکه به زندگیتان هم برسید، بسیار عالیست. امروزه انجام این کار از ۱۹۷۰ که من تازه کار بودم بسیار ساده تر است؛ جریان غالب فرهنگی با تکنو- نردها بسیار مهربانتر است و تعداد کسانی که می فهمند هکرها عاشقان و همسران بلند مرتبه‌ای هستند هر روز زیادتر می شود.

اگر شما بخاطر نرد بودنتان به هکر بودن علاقه‌مند شده‌اید هم خوب است! حداقل برای متمرکز شدن مشکلی نخواهید داشت. شاید هم در آینده از انزوا درآمدی!

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

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

هر چه موارد بیشتری را قبلأ انجام داده باشید استعداد بیشتری برای هکر شدن دارید. چرا این موارد خاص مهم هستند واقعا معلوم نیست. ولی ارتباط آنها با مهارتهای نیمکره ی چپ و راست مغز مربوط می شود، هردوی این ها اهمیت فراوانی دارند؛ هکرها همانگونه که به منطق استدلالی نیاز دارند به شهود عرفانی نیز محتاجند تا در لحظه ای خاص از شر منطق ناقص مشکلی خلاص شوند.

به همان میزان که بازی می‌کنید، کارکنید و همان قدر که کار می‌کنید، بازی کنید. برای هکر‌های واقعی مرزی میان ” بازی“ ، ” فعالیت“ ، ”دانش“ و ”هنر“ وجود ندارد و این با پدیدار شدن سطح بالایی از سرزندگی سازنده همراه خواهد بود. به هیچ وجه به اطلاعات مهارت‌های محدود اکتفا نکنید. برخلاف آن که بسیاری از هکرها خود را یک برنامه نویس معرفی می کنند، دارای مهارت‌های بسیاری هستند - مدیریت سیستم، طراحی وب و رفع اشکال‌های سخت‌افزاری PC یکی از معمول ترین آن هاست. هکری که مدیر سیستم است، اغلب، یک برنامه نویس حرفه‌ای و یک طراح وب است. هکر هرگز کاری را نیمه انجام شده رها نمی‌کند، اگر به موضوعی بپردازد در رابطه با این موضوع مهارت‌هایش را به اوج کمال می‌رساند.
در پایان چیزهایی هستند که نباید انجام دهید:

-از اسامی ابلهانه و بزرگ نما (قلمبه!) استفاده نکنید.
-در آتش افروزیهای گروه‌های خبری و یا هر بحث بی فایده ی دیگر شرکت نکنید.
-خودتان را "ولگرد سایبر" خطاب نکنید، وقت خود را با چنین افرادی هدر نکنید.
-نامه‌های الکترونیکی پر از غلط املایی و دستور زبانی نفرستید.

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

بر مشکل نام‌های کاربری یا اسامی مستعار باید تاکید کنم. پنهان کردن نام واقعی پشت رموز، کار ابلهانه و بچه گانه کرکر ها(crackers) و warez d00dz ویا دیگر فرم‌های پیش پا افتاده ی زندگیست. اگر نام مستعاری دارید آن را دور بیاندازید. در میان هکرها این حقیقتا باعث می‌شود تا شما را به فراموشی بسپارند. هکران از آنچه که انجام می‌دهند مغرورند و آن را وابسته به نام حقیقی خود می‌خواهند.

منابع دیگر
پیتر سیباج (Peter Seebach) برای مدیران سیستمی که نمی دانند چطور با هکرها سر کنند، یک FAQ مکمل نوشته است که Hacker FAQ نام دارد. اگر سایت Peter پاسخ دهی نمی‌کند، این جستجوی سایت Excite می‌تواند یک کپی خوب برای شما پیدا کند.

این جا یک سند وجود دارد که How To Be A Programmer (چگونه یک برنامه نویس شویم) نام دارد این یکی از بهترین و کامل ترین هاست. ارزش این مستند فقط مربوط به آموزش کد نویسی نیست، در این سند درباره ی کد نویسی به صورت گروهی و چالش‌های یک کد نویسی گروهی صحبت شده است.

من مقاله ای به نام تاریخ اجمالی هکرگری : "A Brief History Of Hackerdom" نیز نوشته‌ام.

برای آشنایی با فرهنگ لینوکس و بازمتن مقاله‌ای با نام "کلیسای فقید و بازار" یا "The Catedral and the Bazaar" نوشته‌ام. ادامه ی این مقاله در مقاله ای به نام Homesteading Noosphere آمده است.

Rick Moen، مقاله‌ای به نام How to Run A Linux User Group نوشته است. (یک گروه کاربران لینوکس چطور به کار می‌افتد؟)

باز هم از Rick Moen و من (اریک ریموند) مقاله‌ای به نام چگونه یک سوال هوشمندانه بپرسیم، How to Ask Smart Questions وجود دارد.

اگر شما به اطلاعات پیش‌نیاز برای کامپیوتر‌های شخصی و شبکه ی اینترنت احتیاج دارید، به مقاله ی The Unix and Internet Fundamentals HOWTO (پایه‌های یونیکس و اینترنت) مراجعه کنید.

اگر شما برنامه‌ای منتشر می‌کنید و یا وصله‌ای برای برنامه‌ای می نویسید، به Software Release Practice HOWTO (راهنمای تمرین انتشار برنامه‌ها) سر بزنید.

اگر شما به اشعار ذن علاقه مند هستید، احتمالا باید از این خوشتان بیاید: Rooties Root: The Unix Koans of Master Foo

سؤالاتی که زیاد پرسیده شده اند

س : به من یاد می دهید چطور هک کنم ؟
ج: از اولین روز انتشار این برگ هر هفته (گاهی هر روز) چندین درخواست از مردم بدستم می‌رسد که: همه چیز هک کردن را به من یاد بدهید! متأسفانه وقت و انرژی کافی برای این کار ندارم. پروژه‌های هکری من و مسافرتهایم بعنوان مدافع بازمتن روزی ۱۱۰٪ وقتم را می‌گیرد.
حتی اگر هم می‌توانستم؛ هک کردن هنر و منشی است که شما خود باید یاد بگیرید. بعدا متوجه خواهید شد که با آنکه هکرها دوست دارند به شما کمک کنند، اما اگر بخواهید همه چیز را حاضر و آماده در دهان شما بگذارند، تحویلتان نمی‌گیرند.
اول خودتان چیزهایی یاد بگیرید. نشان دهید که دارید سعی می کنید، که توانایی یاد گرفتن دارید سپس به سراغ هکرها بروید و پرسشهایتان را مطرح کنید.
اگر می‌خواهید به هکری نامه ی الکترونیکی بفرستید باید از قبل دو چیز را بدانید. اولین چیز این که ما متوجه شدیم که کسانی که در نوشته‌هایشان بی دقت‌اند معمولا تنبل‌تر از آنند که هکرهای خوبی بشوند. بنابراین مواظب غلط‌های املایی و انشایی خودتان باشید و گرنه شما را نادیده می‌گیرند. دوم این که هرگز جواب نامه‌ی الکترونیکی خود را در آدرسی غیر از آدرسی که از آن نامه می‌فرستید نخواهید. ما می‌دانیم که کسانی که این کار را می کنند دزدانی اند که از حساب دزدی استفاده می کنند و هیچ علاقه ای به کمک کردن به دزدها نداریم.

س : خوب پس از کجا شروع کنم ؟
ج‌ : بهترین راه برای شروع رفتن به جلسه یک لاگ (گروه کاربران لینوکس"Linux user group LUG" ) است. این گروهها را می توانید در سایت LDP بیابید. به احتمال قوی می‌توانید یکی از آنها را در حوالی خود بیابید که احتمالأ وابسته به یک دانشگاه یا مؤسسه است. اعضای لاگ احتمالأ به شما یک نسخه از لینوکس می‌دهند و حتمأ کمکتان می‌کنند که آنرا نصب کنید.

س : کی باید شروع کنم ؟ آیا خیلی دیر نشده است ؟
ج : در هر سنی که علاقه‌مند شدید می‌توانید یاد بگیرید. اکثر مردم در سن ۱۵ تا ۲۰ سالگی علاقه‌مند می شوند؛ من استثناهایی را از هر دو طرف می‌شناسم.

س : چقدر طول می کشد تا هکر شوم ؟
ج : بستگی به این دارد که چقدر باهوشید و چقدر پشت کار دارید. اگر مصمم باشید معمولأ ظرف ۱۸ تا ۲۴ ماه می‌توانید مهارتی قابل ملاحظه بدست آورید. اما کار به اینجا ختم نمی‌شود. اگر یک هکر واقعی هستید تمام عمرتان را صرف یادگیری و تکمیل هنرتان خواهید کرد.

س : آیا Visual Basic و #C ( سی شارپ) زبان‌های خوبی برای شروع کارند ؟
ج: اگر شما این پرسش را مطرح می‌کنید یعنی به هک کردن تحت سیستم عامل مایکروسافت ویندوز فکر می‌کنید. به خودی خود تفکر بدی است. یاد گیری کد نویسی تحت پلتفورم ویندوز مانند یاد گیری رقص است وقتی زره به تن کرده‌اید، من چندان خوشم نمی‌آید. به آن جا نروید. آن بخش بی‌نهایت کثیف است و از کثافت باید پرهیز کرد.
زبان‌های Visual Basic و #C مشکلات مخصوص خودشان را دارند؛ در اصل این‌ها غیر قابل انتقال یا not portable هستند. هیچ نسخه‌ی بازمتنی از این زبان‌ها وجود ندارد. استاندارد‌های اجرایی ECMA چیزی بیش از تعدادی رابط برنامه نویسی را پوشش نمی‌دهند. در ویندوز بیشتر کتابخانه‌ها از یک سازنده ی تنها (مایکروسافت ) که مالک آن است پشتیبانی می‌کنند؛ اگر شما بی‌نهایت نسبت به چیزی که استفاده می کنید دقیق نباشید، برای همیشه به پلتفورم مایکروسافت وابسته خواهید شد. برای این که به این باطلاق فرو نروید، کسی که کد نویسی را شروع می کند باید بسیار دقت کند. اگر شما روی یونیکس شروع کنید زبان‌های بهتر و کتابخانه‌های بهتر وجود دارند.
بنابراین به همان سیستم عامل که سازنده زبان انتخاب می کند، میخکوب می‌شوید، این به مذاق هکرها سازگار نیست.
به خصوص Visual Basic بسیار مضر است. مانند همه بیسیک‌ها Visual Basic هم بسیار بد طراحی شده است، نه از من نخواهید که این موضوع را تشریح کنم؛ این موضوع می‌تواند یک کتاب را پوشش دهد. یک زبان را که به خوبی طراحی شده است فرا بگیرید.
یکی از عادت‌های برنامه نویسی بدی که به شما یاد خواهد آموخت وابستگی به کتابخانه ها، widget ها و ابزار برنامه نویسی یک شرکت خاص است. به طور کل هر زبانی که تحت لینوکس یا یکی از نسخه‌های BSD پشتیبانی نگردد و/ یا حداقل توسط سه شرکت مختلف پشتیبانی نگردد، ارزش این را ندارد که برای هک کردن یاد بگیریدش.

س : به من یاد می دهید که چطور یک سیستم را بشکنم؟
ج : نه . کسی که بعد از خواندن این مقاله هنوز این سؤال را بپرسد، احمق تر از آن است که یاد بگیرد ، حتی اگر من وقتش را داشته باشم. هر میلی که چنین درخواستی کند نادیده گرفته می شود یا با خشونت تمام پاسخ داده می‌شود.

س : چطور می توانم رمز عبور شخص دیگری را بدست آورم؟
ج : این شکستن است (crack). گم شو احمق!

س : چطور می توانم پست الکترونیکی شخصی دیگری را بخوانم / واردش شوم / تحت نظر بگیرمش؟
ج : این شکستن است . سریع گم شو ...

س : چطور می توان کانالهای chat را دزدید؟
ج : این شکستن است . مردک احمق!

س : سیستمم را شکسته‌اند! کمک می‌کنید از خودم دفاع کنم؟
ج: نه! هر بار که از من این سؤال را پرسیده‌اند از طرف یک کاربر بیچاره ی ویندوز بوده است. امکان ندارد ویندوز را به طور کامل امن کنید. کد و معماری آن پر از ایراد است و سعی در ایمن کردن آن آب در هاون کوبیدن است. تنها راه پیش‌گیری، رفتن به یک سیستم عامل دیگر مانند لینوکس یا حداقل سیستم عاملی است که توانایی ایمن شدن را داشته باشد.

س : من با ویندوزم مشکل دارم . کمکم می کنید؟
ج : البته! به خط فرمان بروید و بنویسید " :format c "، ظرف چند دقیقه تمام مشکلاتتان حل می‌شود.

س : کجا می توانم با هکرهای واقعی صحبت کنم؟
ج : بهترین جا لاگ‌های محلی خودتان است ( لیست شان را می توانید در سایت LDP بیابید.)
(قبلأ در اینجا می‌گفتم در IRC هیچ هکر واقعی پیدا نمی‌کنید. ولی وضعیت فرق کرده است. به طور مشخص اجتماعاتی از هکرهای واقعی مربوط به GIMP و Perls کانالهای IRC دارند)

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

س : آیا باید در ریاضیات خوب باشم تا بتوانم هکر شوم ؟
ج : نه . البته باید قادر باشید به طور منطقی فکر کنید و رشته درست دلایل را دنبال کنید، هک کردن نیاز بسیار اندکی به ریاضیات رسمی دانشگاهی دارد. به خصوص، شما معمولا به آنالیز و جبر نیاز نخواهید داشت ( این را به مهندسان برق واگذار کنید). داشتن پیش زمینه‌ای در رشته‌هایی از ریاضیات مانند منطق، تئوری مجموعه‌ها ، نظریه اعداد و.... ممکن است مفید باشد.
آنچه بسیار مهم است : شما باید بتوانید منطقی تفکر کنید و رشته ای از دلایل صحیح را گرد هم بیاورید، کاری که ریاضی‌دانان انجام می‌دهند. زمانی که ارتباط با اغلب علوم ریاضی کمکی به شما نکرد، شما به نظم و ذکاوت برای پیش برد آن نیاز خواهید داشت. اگر شما چندان باهوش (با ذکاوت) نی‌ستید، امید چندانی به هکر شدن شما نیست؛ اگر شما نظم فکری نداشته باشید این امید به همان میزان کم خواهد شد.
یک راه خوب برای فهمیدن این موضوع گرفتن و مطالعه یک کپی از کتاب Raymond Smullyan است که اسم آن اکنون یادم نیست. مشابه چیستان‌های منطقی و بامزه Smullyan در روح هکرگری خیلی وجود دارد. توانایی در حل آنها علامت خوبی است و لذت در حل کردن آن علامتی بهتر.

س : چه زبانی را باید اول یاد بگیرم ؟
ج : XHTML (آخرین نسخه ی HTML) اگر هنوز آنرا بلد نیستید. کتابهای بد زیادی هستند با توضیحات خسته کننده بلندبالا و چند کتاب خوب چیزی که من بیشتر از همه دوست دارم HTML: The Definitive Guide است.
البته HTML یک زبان کامل برنامه نویسی نیست. وقتی برای یادگیری آماده شدید، پیشنهاد می‌کنم از پیتون شروع کنید. خیلی‌ها به شما Perl را پیشنهاد می‌کنند و هنوز محبوبیت بیشتری دارد ولی یاد گرفتن آن سخت است و (به نظر من) به خوبی پیتون نیست.
C واقعا مهم است ولی از Perl و پیتون خیلی سخت‌تر است. سعی نکنید اول C را یاد بگیرید.
کاربران ویندوز، به دام VB نیفتند. عادتهای برنامه نویسی بدی به شما یاد می‌دهد و قابل انتقال به هیچ سیستم دیگری غیر از ویندوز نیست. بپرهیزید!

س : چه سخت افزاری نیاز دارم ؟
ج : قبلا کامپیوترهای شخصی سرعت و حافظه کمی داشتند که همین‌ها کافی بودند تا روند یاد گیری هکر رامحدود کنند. این مساله مدتهاست که از بین رفته است ، هر کامپیوتری از Intel 486DX50 بالاتر باشد برای برنامه نویسی کافیست، X ، و ارتباطات اینترنتی ، و کوچکترین دیسک سخت به اندازه کافی بزرگ است.
مهمترین مساله‌ای که در انتخاب سخت افزار وجود دارد این است که آیا با لینوکس همخوانی دارد (یا با BSD همخوانی دارد). البته برای بسیاری از کامپیوترهای جدید این همخوانی وجود دارد مگر در مورد تعدادی از مودم‌ها و چاپگرها که مخصوص ویندوز طراحی شده اند.
یک FAQ درباره ی سازگاری سخت افزار ها وجوددارد؛ آخرین نسخه ی آن اینجاست.

س : باید از مایکرو سافت متنفر باشم ؟
ج : نه! نه اینکه میکروسافت نفرت‌انگیز نیست؛ مساله این است که فرهنگ هکر مدتها قبل از مایکروسافت وجود داشته است و مدتها بعد از آن هم خواهد بود. انرژیی را که برای نفرت از مایکروسافت صرف می‌کنید، برای عشق به هنرتان مصرف کنید. اگر برنامه‌ای خوب بنویسید، مشت محکمی است بر دهان مایکروسافت و خونتان را را کثیف نمی‌کند.

س: ولی بازمتن برنامه نویس‌ها را بیکار نمی‌کند؟
ج : حقیقتا برعکس این است، تا بحال صنعت بازمتن بیشتر اشتغال زایی کرده است تا از بین بردن آن. اگر داشتن یک برنامه آماده اقتصادی تر از نداشتن آن است، در هر حال یک برنامه نویس حقوقش را می گیرد چه برنامه بازمتن باشد یا نباشد و مهم نیست چقدر نرم افزار" آزاد " هست ، به نظر می رسد همیشه تقاضای بیشتری برای نرم افزارهای جدید یا تطبیق داده شده وجود دارد. من در این باره در ورق‌های Open Source بیشتر خواهم نوشت.

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

((فکر نکنم مشکلی باشه اگر بنویسیم برای پیدا کردن این ها می تونید به تکنوتاکس مراجعه کنید ،‌هم ترجمه ی ترکی و هم ترجمهی آلمانیش یه آدرس‌های اضافی دارند))

اریک ریموند نسخه ی اصلاحی (Reversion) شماره ی 1.29.

منبع: http://www.catb.org/~esr/faqs/hacker-howto.html




ادامه مطلب + نوشته شده در  چهارشنبه هفدهم بهمن 1386ساعت 0:19  توسط و.د  | 

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

پيوندها
پيوندها ي روزانه
نويسندگان
آرشيو مطالب

دیکشنری آنلاین
This Template Designe By vahid - All Rights Reseived By absardpnu.Blogfa.Com