89/8/9
2:52 ع
اریک ریموند (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
ترجمه: آرش بیژنزاده
ویرایش و اصلاحات: نوید عبدی، آلن باغومیان