Unhidden Content - Enjoy The View!
จะเป็นแฮ็กเกอร์ต้องมีทั้งทัศนคติและฝีมือ และจะต้องฝึกฝน เรียนรู้สิ่งใหม่ๆ อยู่ตลอดเวลา เพราะเทคโนโลยีเปลี่ยนเร็ว เครื่องไม้เครื่องมือก็เปลี่ยนไปด้วย ผมว่าหลายคนมีพื้นฐานประมาณนึงแล้ว จึงไม่ใช่เรื่องยากนักที่จะพัฒนาทักษะเพื่อเป็นแฮ็กเกอร์
# เรียนรู้การเขียนโปรแกรม
การเขียนโปรแกรมเป็นรากฐานของการแฮ็ก ถ้ายังไม่เคยรู้ภาษาไหนมาก่อนเลย ESR แนะนำให้หัดภาษา Python เพราะออกแบบมาอย่างเรียบง่าย ประสิทธิภาพสูง เอกสารคู่มือที่มีอยู่ก็มีคุณภาพดี และค่อนข้างเหมาะกับมือใหม่ Java ก็ถือว่าน่าสนใจ อาจจะเรียนรู้ได้ยากกว่า Python แต่ก็ทำงานได้เร็วกว่า และใช้งานได้กว้างกว่า
ถ้าจะเขียนโปรแกรมเป็นเรื่องเป็นราว ก็ยังจำเป็นต้องใช้ C อยู่เหมือนเดิม.. อย่างไรก็ตาม C จะแสดงความสามารถของมันออกมาเมื่อได้ใช้การจัดการระดับต่ำ เช่นเรื่องของหน่วยความจำ I/O ซึ่งมีความซับซ้อน และเกิดบักได้ง่าย การใช้ C จึงต้องแม่นประมาณนึง .. ข้างล่างนี้เป็นตัวอย่าง code C ที่เขียนกันแบบสุดขีดเลย ใครคิดว่างตัวเองเก่ง C ลองอ่าน แล้วลองบอกว่ามันทำอะไรและหาผลลัพธ์ได้ยังไง ? ลองเขียนให้มันสั้นกว่านี้ เร็วกว่านี้ ถ้าทำได้นั่นล่ะคือ \"การแฮ็ก\"
Code:
int a=10000,b,c=2800,d,e,f[2801],g;
main(){for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf(\"%.4d\",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=B);}
ภาษาอื่นๆ ที่น่าสนใจคือ Perl และ LISP ... ภาษา Perl เหมาะจะใช้ในทางปฏิบัติเพราะเขียนได้สั้น พัฒนาได้เร็ว (source code โปรแกรม descramble DVD เขียนด้วย Perl ยาวแค่ 4xx bytes) แม้ Python จะมาแทนที่ Perl ได้ในบางเรื่อง แต่อย่างน้อยก็ควรจะอ่านภาษา Perl รู้เรื่อง ภาษา LISP มีความน่าสนใจด้วยเหตุผลที่ต่างออกไป LISP เป็น functional programming language จึงมีแนวคิดในการเขียนโปรแกรมที่ต่างจากภาษาที่กล่าวมาก่อนหน้านี้ทั้งหมด เรื่องนี้อธิบายยาว และเข้าใจได้ยากสำหรับคนที่ชินกับ procedural programming language .. อย่างไรก็ตามหากเขียน LISP หรือ functional programming language อื่นๆ เป็น ก็จะเข้าใจแก่นของคำว่า \"โปรแกรม\" ได้ดีขึ้น เข้าใจการทำงานของมันบนเครื่องจักรคำนวณ เขียนโปรแกรมได้มีระเบียบ ตรงกับปัญหาที่ต้องการแก้ไขมากขึ้น
ผมอยากให้จำไว้ว่าภาษาเป็นแค่เครื่องมือเท่านั้น การเขียนโปรแกรมคือการเรียนรู้ \"วิธีแก้ปัญหาโดยเครื่องมือที่มีอยู่\" ไม่ใช่ \"วิธีใช้เครื่องมือ\" ใช้เครื่องมือเก่งแค่ไหนก็ไม่มีประโยชน์ถ้าแก้ปัญหาไม่เป็น .. และถ้าเขียนโปรแกรมเป็นจริงๆ การเรียนรู้ภาษาใหม่ๆ ก็ไม่ใช่เรื่องยาก แฮ็กเกอร์ที่เก่งๆ สามารถเรียนรู้ภาษาใหม่ๆ ได้ในเวลาไม่กี่วันด้วยการเทียบกับภาษาที่รู้อยู่แล้ว
# ใช้โอเพ่นซอร์สยูนิกซ์
เช่นลีนุกซ์ หรือ *บีเอสดี เหตุผลคือ เข้าถึงซอร์สโค้ดได้ง่าย จะดู หรือแก้ไขก็เป็นไปได้ และยูนิกซ์เป็นระบบปฏิบัติการสำหรับอินเทอร์เน็ต จริงอยู่ว่าเราใช้โอเอสอื่นได้หากเราต้องการใช้อินเทอร์เน็ต แต่เป็นไปไม่ได้เลยที่จะเป็นอินเทอร์เน็ตแฮ็กเกอร์โดยไม่รู้ยูนิกซ์ ข้อดีของโอเพ่นซอร์สอีกอย่างคือมีเครื่องมือพัฒนาซอฟต์แวร์ประสิทธิภาพสูงให้ใช้ (ทั้ง C, Python, Perl, LISP)
# หัดใช้เว็บ และเขียน HTML
อันนี้คงไม่ใช่เรื่องยากเท่าไหร่ แต่อยากจะเน้นในเรื่องการ \"ใช้\" เว็บ .. เป็นเรื่องแปลกที่ทุกวันนี้คนจำนวนมากใช้คำว่า \"เล่นเน็ต\" หรือ \"เล่นเว็บ\" มากกว่าจะเป็นคำว่า \"ใช้\" ผมว่ามันแสดงให้เห็นวัฒนธรรมอะไรบางอย่างในบ้านเรา (หรือแม้แต่ในภาควิชาฯ) .. ถ้ายังเล่นอยู่ ผมว่าได้เวลาหัดใช้ให้เป็นแล้วนะครับ คุณหาข้อมูลที่ต้องการจากเว็บได้หรือเปล่า ใช้ search engine แล้วเจอเว็บที่ต้องการหรือไม่ เขียนเว็บเพจที่ดีเป็นหรือยัง ?
# ภาษาอังกฤษ
เหอะๆๆ .. เป็นเรื่องที่ช่วยไม่ได้ ถ้าจะเป็นแฮ็กเกอร์ ภาษาอังกฤษควรจะแข็งแรงประมาณนึง อย่าลืมว่าคุณต้องสื่อสารกับคนทั่วโลก เอกสารส่วนใหญ่ก็เป็นภาษาอังกฤษ เอกสารที่คุณจะเผยแพร่ก็ควรจะมีทั้งภาษาหลักและภาษาอังกฤษ .. เรียนซะเถอะครับ