บทที่1                                            บทนํา1.1 ความเปนมา          ปจจุบันเทคโนโลยีดานระบบคอมพิวเตอรและเครื...
21.2 วัตถุประสงค       1.2.1เพื่อศึกษาและพัฒนาการปรับแตงคาของการตรวจจับไดงาย และเอื้อประโยชนในการศึกษาพัฒนาตอ      ...
31.6 ระยะเวลาดําเนินงาน           ตารางที่ 1.1 ขั้นตอนการดําเนินงาน ระยะเวลาดําเนนงาน              ิ                      ...
4                                             บทที่ 2                                หลักการและทฤษฎีที่เกี่ยวของ2.1 กลไกก...
5         2.1.1 บริหารจัดการระบบ         2.1.2 วิศวกรระบบเครือขาย         2.1.3 วิศวกรผูดูแลระบบรักษาความปลอดภัยเครือขา...
6          เปนชุดคําสั่งแบบ Opensource ที่ใหการเชื่อมตอทางเครือขายกับระบบตรวจจับแพคเก็จถูกสรางในป 1994 โดย Mccane, L...
7                 รูปที่ 2.1 เริ่มการทํางานโปรแกรม เลือกเมนู Capture    ในกรณีเลือก interface จะพบกับหนาจอที่ทําการแสดงผล...
8       เราสามารถเลือก รีโมท (remote)ไดก็ตอเมื่อมีการกําหนดการทํางานรองรับเทคนิค Port   Mirroring                       ...
9เราสามารถนําผลที่ไดมาวิเคราะหดวย Protocol Hierarchy (ภายใต statistic)               รูปที่ 2.6 หนาตางแสดงการวิเคราะ...
10        สวนติดตอผูใชกับขอมูลแพคเก็จที่ดักจับได                        รูปที่ 2.8 หนาตางแสดงสวนติดตอผูใช แพคเ...
11Python2.x คือ 2.7.1 และ Python3.x คือ 3.1.3 คําแนะนํานี้ถูกเขียนไวใน Python2.x Python ถูกพัฒนา เก็บรักษาโดยอาสาสมัครผู...
12        2.3.4 ขอเดนของภาษาไพธอน                   2.3.4.1 งายตอการเรียนรูโดยภาษาไพธอนมีโครงสรางของภาษาไมซับซอนเข...
132.4 โปรโตคอล (Protocol)          การเชื่อมโยงเครือขายที่มีฮารดแวรตางกันจําเปนตองกําหนดขอตกลงรวมเรียกวาโปรโตคอล(...
14         2.4.1 โปรโตคอลยูดีพี (UDP Protocol)         UDP ยอมาจาก (UDP : Unix Datagram Protocol) เปนโปรโตคอลหลักในชุดโป...
15          TCP เปนการนําเอา UDP มาประยุกตเขาดวยกัน แตเพิ่ม layer ของการ สงและรับ packetเชน การดาวนโหลดจากอินเทอร...
16                  2.4.2.1แบบอางอิง TCP/IP                  ระบบการสื่อสารขอมูลในเครือขายคอมพิวเตอรประกอบดวยทั้งฮาร...
17                                                                                    :                                รูป...
18         ระดับชั้นทรานสปอรต มีสองโปรโตคอลสําคัญ TCP และ UDP แอพลิเคชั้นจะเลือกใช TCPหรือ UDP ตามลักษณะงาน         เมื่...
19                  2.4.3.1 การจัดการคลาสเครือขาย (Class)                  ไอพีแอดเดรสมีการจัดแบงออกเปนกลุมหรือคลาส(cl...
20         GTK + เปนชุดเครื่องมือสําหรับการสรางสวนเชื่อมตอประสานกราฟกกับผูใช กลองเครื่องมือนี้ถูกพัฒนาจากโปรแกรมภา...
21          2.5.4 gtk.ScrolledWindow - เพิ่มแถบเลื่อนไปที่เครื่องมือลูก          gtk.ScrolledWindowเปน classลูก ของ gtk.B...
22           2.5.9 gtk.CellRendererText - เครื่องมือแสดงผลขอความลงในเซลลที่เปน gtk.TreeView          gtk.CellRendererTe...
23                                     บทที่ 3                                วิธีการดําเนินงาน3.1 ขั้นตอนการดําเนินงาน   ...
243.2 การศึกษาเบื้องตน                 3.2.1 โครงสรางการทํางานของโปรแกรม Python และ ไลบราลี libpcap        libpcap เปน ...
25        เราสามารถตรวจสอบโปรโตคอลของขอมูลภายใตเฟรมไดจากสวนของ header ของ frameซึ่งในกรณีของโปรโตคอล Ethernet ที่นิยมใ...
26         จากแผนผังจะเห็นวาสวนที่เปน source IP address นั้นมีความยาว 4 ไบต เริ่มตนที่ไบตที่12 จนถึงไบตที่ 15 และ ส...
273.4 ความตองการดานซอฟตแวร           ซอฟตแวร           ก) ระบบปฏิบัติการ Ubuntu Desktop รุน Lucid Lyn เวอรชั่น 10....
283.6 โครงสรางการทํางานของโปรแกรม                     รูปที่ 3.1 โฟลวชารตผังการทํางานของโปรแกรม
293.6.1 โครงสรางการรับคา อากิวเมนตเพื่อเริ่มตนการดักจับ                        รูปที่ 3.2 โฟลวชารตการเริ่มการทํางาน...
303.6.2 การทํางานแปลงแพ็คเก็ต เพื่อตรวจสอบ Ipv4,6                   รูป 3.3 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ
313.6.3 การทํางาน เรียกฟงกชันแยก ชนิด ของ โปรโตคอล                 รูปที่ 3.4 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (...
323.6.4 การทํางานเรียกฟงกชัน ถอดรหัสของชนิดแพ็คเกต                 รูปที่ 3.5 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (...
333.6.5 การทํางานเรียกฟงกชัน ถอà
บทที่+1 3..
Upcoming SlideShare
Loading in …5
×

บทที่+1 3..

1,232 views

Published on

Libpcap python gui

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,232
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

บทที่+1 3..

  1. 1. บทที่1 บทนํา1.1 ความเปนมา ปจจุบันเทคโนโลยีดานระบบคอมพิวเตอรและเครือขายและอินเตอรเน็ต มีความล้ําหนาไปเปนอยางมาก ทั้งนี้เพื่อตอบสนองความตองการของหนวยงานองคกรตางๆ จึงมีการนําเทคโนโลยีเขามาใชในชีวิตประจําวันอยางแพรหลาย เพราะมีความสอดคลองกันกับผูคนในปจจุบันหรือที่เรียกวายุคไซเบอรโดยการประยุกตนําคอมพิวเตอรมามีสวนในการประกอบธุรกิจทั้งในหลายดาน ทั้งในระบบเศรษฐกิจ การศึกษาและใชเพื่อความบันเทิงเชนการติดตอสื่อสาร Instant Messenger เชน MSN, E-Mail, Video Conference System และ Social Network ซึ่งในการนั้นจําเปนตองมีการเชื่อมตอกับระบบเครือขายอินเตอรเน็ตโดยทั้งสิ้น และเห็นไดวาในโลกแหงยุคโลกาภิวัฒนนี้เทคโนโลยีมีความจําเปนอยางยิ่งการติดตอสื่อสารระหวางกัน ไมวาจะอยูแหงไหน ที่ใด สามารถแลกเปลียนความคิด ่รวมทั้ง คนควาในเรื่องที่สนใจได เมื่อความล้ําสมัยมีประโยชนมากมาย จึงมีขอเสียในดานของเทคโนโลยีคอมพิวเตอรและเครือขายอินเตอรเน็ต นําไปสูการใชงานอยางผิดประเภทผิดรูปแบบและสรางความเดือดรอนใหแกผูอนโดยไมคํานึงถึง ผูใดเปนสําคัญโดยเขามากอกวนระบบเครือขายของ ื่องคกร หรือแมกระทั่งอาจจะเปนทั้งบุคลากรภายในขององคกร ที่ใชงานโดยรูเทาไมถึงการณ และกอใหเกิดความเสี่ยงที่จะเปดชองโหวใหผูประสงครายเขามาโจมตี และที่แยไปกวานั้นยังกลายเปนชองทางในการกอกวนระบบจาก Virus หรือ Trojan ซึ่งจะกอใหเกิดผลเสีย และกระทบไปยังระบบเครือขายภายในองคกรและเครือขายใหญในระบบไดแตระบบที่สรางขึ้นดวยระบบอินเตอรเน็ตนั้นสามารถตรวจสอบ ไอพีและหมายเลขเฉพาะที่ใชอางถึงอุปกรณที่ตอกับเครือขายได และการเขาเว็บไซตที่มีความเสี่ยงตอการทําใหเครือขาย มีสภาวะเสี่ยงซึ่งทําใหมีความเสถียรลดนอยลง จึงเปนที่มาของโปรแกรมดักจับและตรวจสอบขอมูลแพ็คเกจ (Development of Program PacketSniffer with Python) เพื่อปองกันระบบความเสียหายของเครื่องคอมพิวเตอรและเครือขายภายในองคกร รวมไปถึงสามารถนําขอมูลจากการตรวจจับการกอกวนระบบเครือขายขององคกรนั้นๆ มาเปนหลักฐาน เพื่อดําเนินคดีตามกฎหมายกับบุคคลไมประสงคดีกับองคกร ตามที่พระราชบัญญัติวาดวยการกระทําความผิดเกี่ยวกับคอมพิวเตอร พ.ศ. 2550 มีผลบังคับใชตงแตวันที่ 22 สิงหาคม 2550 ั้ที่วาดวยมีผูกระทําดวยประการใด ๆ ใหระบบ คอมพิวเตอรไมสามารถทํางานตามคําสั่งหรือทําใหการทํางานผิดพลาด หรือใชวิธีการใด ๆ เขาลวงรูขอมูล แกไข หรือทําลายขอมูลของบุคคลอื่นในระบบคอมพิวเตอรโดยมิชอบถือเปนความผิด
  2. 2. 21.2 วัตถุประสงค 1.2.1เพื่อศึกษาและพัฒนาการปรับแตงคาของการตรวจจับไดงาย และเอื้อประโยชนในการศึกษาพัฒนาตอ 1.2.2 เพือใหมีการนํา ไลบราลี libpcap มาเขียนใชงานกับ โปรแกรม Python อยาง ่แพรหลาย1.3 ประโยชนที่คาดวาจะไดรับ 1.3.1 เปนประโยชนตอบุคคลทั่วไปที่ตองการนําโปรแกรมไปใชเพื่อตรวจสอบความปลอดภัยของคอมพิวเตอรหรือระบบเครือขายคอมพิวเตอรใหมีความนาเชื่อถือ มีความถูกตอง และความพรอมใชงาน 1.3.2ไลบราลี libpcap ที่เขียนดวยภาษา Python มีการเก็บ Logging สามารถนําไปใชอางอิงกับพระราชบัญญัติวาดวยการกระทําผิดทางคอมพิวเตอร ป 2550 หากมีผูบุกรุกหรือผูไมหวังดีเขามากระทําการที่ไมประสงคดีตอระบบเครือขาย 1.3.3การตรวจจับแพ็คเกจดวย libpcap สามารถนําไปใชอางอิง พระราชบัญญัติวาดวยการกระทําความผิดทางคอมพิวเตอร ป 2550 เพราะมีการจับแค Header, Content ของขอมูล1.4 ขอบเขตของโครงงาน 1.4.1 ผูใชสามารถแยกประเภทการตรวจจับแพ็คเกจได  1.4.2 สรางสวนเชื่อมตอประสานกับผูใชในรูปแบบกราฟก (GUI) เพื่อความสะดวกในการใชงานโปรแกรม Libpcap ดวย Python 1.4.3จัดทํารายงานเบื้องตนจากขอมูลของการตรวจจับเพื่อสามารถใชอางอิงได 1.4.41.5 ผลที่คาดวาจะไดรับ 1.5.1 การพัฒนาเพิ่มสวนตอประสานกับผูใชในรูปแบบกราฟก Graphic User Interface(GUI)ของ libpcap ดวย python ใหใชงานไดงายขึ้นและมีระเบียบในการตรวจสอบการทํางานไดดีขึ้น 1.5.2 เกิดความปลอดภัยกับระบบคอมพิวเตอรและระบบเครือขายมากขึ้น สามารถปองกันและลดปญหาการถูกผูไมหวังดีละเมิดสิทธิสวนบุคคล และสรางความเสียหายตอระบบเครือขายหรือองคกร
  3. 3. 31.6 ระยะเวลาดําเนินงาน ตารางที่ 1.1 ขั้นตอนการดําเนินงาน ระยะเวลาดําเนนงาน ิ สัปดาห / สัปดาห 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161.ศึกษาเทคโนโลยีและระบบตางๆที่เกี่ยวของและจําเปน2.กําหนดขอบเขตของโครงงาน3.ออกแบบโครงสรางของโครงงาน4.ออกแบบหนาตาของโปรแกรม5.ทดลองการเขียนโปรแกรม6.ปรับปรุงขอผิดพลาดตางๆใหมีความถูกตองเหมาะสม7.สรุปและจัดทําเอกสารประกอบการทําโครงงาน
  4. 4. 4 บทที่ 2 หลักการและทฤษฎีที่เกี่ยวของ2.1 กลไกการทํางานของการดักจับขอมูล การดักจับขอมูลเปนรูปแบบของการตรวจสอบขอมูลบนเครือขายซึ่งมีความหมายทั้งดีและไมดี หากนําไปใชอยางถูกตองจะเปนการดูแลขอมูลในเครือขายไดอยางมีประสิทธิภาพ หากนําไปใชอยางไมถูกตองจะเปนการโจรกรรมขอมูลทีมีความสําคัญตาง ๆ หรือใชในการสํารวจเปาหมายเพื่อ ่ดําเนินการขโมยขอมูลตอไป Sniffer เปนโปรแกรมประยุกตหรือฮารดแวรที่เฝาดูการติดตอสื่อสารผานภายในเครือขายโดยสามารถอานขอมูลตาง ๆ ไดตางกับเครื่องมือเฝาดูเน็ตเวิรคทั่วไปที่จะเฝาดูเพียงการติดตอสื่อสารที่สงไปมากับเน็ตเวิรคอยางชัดแจงเทานั้น Sniffer จะใชเทคนิค เปลี่ยน network interface ใหอยูในpromiscuous mode ซึ่งจะทําใหมันดักจับการสื่อสารทั้งหมดในเน็ตเวิรคทั้งหมดไมเพียงแตการสื่อสารที่มีปลายทางที่เครื่องนั้นเทานั้น ในปจจุบันเมื่อมีการพัฒนาอุปกรณเครือขายจาก Hub เปน Switch ทําใหการแพรกระจายขอมูลในเครือขายลดลง กลาวคือจากเดิมขอมูลของเครื่องคอมพิวเตอรภายในเครือขายทั้งหมดจะถูกสงมายังเครื่องคอมพิวเตอรของเรา แตดวย network interface(การดแลน) ของเรานั้นทําการกรองขอมูลเฉพาะของคอมพิวเตอรเครื่องเราเองเทานั้น ทําให Sniffer ที่ใชโหมด promiscuous modeสามารถรับขอมูลทั้งหมด แตดวยการทํางานของ switch ที่สงขอมูลเฉพาะเครื่องคอมพิวเตอรนั้น ๆมายังปลายทางทําใหไมสามารถดักจับขอมูลทั้งหมดเหมือนเดิม นอกจากนี้ยังรวมถึงการเขารหัสในสวนตาง ๆ อาจมีผลใหขอมูลที่ดักจับนั้นไมสามารถอานไดโดยงาย ทั้งนี้หากตองการดักจับขอมูลภายในเครือขายทั้งหมด เราจําเปนตองทําการดักจับขอมูลที่Gateway ที่เปนจุดการสื่อสารไหลเขาออกเครือขาย ถึงจะสามารถดักจับขอมูลไดทั้งหมด นอกจากนี้อุปกรณใหม ๆ ไดรองรับเทคนิค Port Mirroring เสียกอน (สําหรับ Cisco เรียกวา SPAN) ใครบางที่ควรใชโปรแกรมวิเคราะหเครือขายหรือ Sniffer โปรแกรมประเภทนี้เหมาะสําหรับบุคคลตาง ๆ ที่เกี่ยวของในวงการเครือขายไอทีดังนี้
  5. 5. 5 2.1.1 บริหารจัดการระบบ 2.1.2 วิศวกรระบบเครือขาย 2.1.3 วิศวกรผูดูแลระบบรักษาความปลอดภัยเครือขาย 2.1.4 ผูดูแลและปฏิบัติงานในระบบ (System Operator) 2.1.5 โปรแกรมเมอร สวนขอดีของโปรแกรมมีดังนี้ 2.1.6 Sniffer สามารถแปลงขอมูลขาวสารในรูปแบบของเลขไบนารีหรือฐาน 16 ไปเปนรูปแบบที่สามารถอานและเขาใจไดโดยงาย 2.1.7 Sniffer จะชวยใหทานสามารถตรวจซอมหาจุดเสียตาง ๆ บนเครือขายไดดี 2.1.8 สามารถตรวจจับผูบุกรุกเขามาในเครือขายไดระดับหนึ่ง 2.1.9 สามารถบันทึก Traffic ของเครือขายไวเพื่อนํามาวิเคราะหตรวจสอบหารองรอยของปญหาตาง ๆ 2.1.10 สามารถตรวจสอบสถานการณทํางานของแอพพลิเคชันตาง ๆ บนเครือขาย 2.1.11 สามารถตรวจสอบพบขอผิดพลาดของอุปกรณเครือขาย เชน การด LAN เปนตน 2.1.12 สามารถนํามาใชเพื่อการตรวจสอบประสิทธิภาพการทํางานของเครือขาย เชนเครือขายทํางานชาลง2.2 ลิปพีแคป(Libpcap) libpcapเปน ไลบราลีสําหรับการดักจับ แพคเก็จ (packet) ที่ไดรับความนิยมอยางสูง ถูกนําไปใชงานอยางแพรหลาย ในปจจุบันมีซอฟทแวรสําเร็จรูปมากมายที่พัฒนาดวย libpcapที่รจักกัน ูดี ไดแก Ethereal, tcpdump, Snort NMap, Ntopฯลฯ จุดเดนของ libpcapคือ มีรูปแบบ API ที่ใชงานงาย แตมีประสิทธิภาพสูง สามารถจับแพคเก็จไดลึกถึงระดับ ดาตาลิงคทั้งในโหมดปกติ และโหมด promiscuous อีกทั้งยังมีความสามารถในการเลือกจับเฉพาะบาง ชนิดของแพคเก็จผูใชที่สนใจและที่สําคัญ libpcap เปน open-source library ที่สามารถใหนํามาใชงานไดฟรี
  6. 6. 6 เปนชุดคําสั่งแบบ Opensource ที่ใหการเชื่อมตอทางเครือขายกับระบบตรวจจับแพคเก็จถูกสรางในป 1994 โดย Mccane, Leres และ Jacobson นักวิจัยที่ Lawrence Berkeley NationalNational Laboratory จาก university of California ที่ Berkeley ซึ่งเปนสวนหนึ่งของงานวิจัยสืบหาและเพิ่มประสิทธิภาพใหแก TCP และ internet gateway Libpcap API ถูกออกแบบมาจากภาษา C และ C++ อยางไรก็ตามยังสามารถนําไปใชกับภาษาตางๆไดเชน Perl, PHP, JAVA, C#, Ruby Libpcap ทํางานในระบบปฏิบัติการที่คลายUnix(Linux, Solaris, HPUX, BSD) ถาทํางานในระบบปฏิบัติการ Windows จะใชชื่อวา Winpcapปจจุบัน Libpcap ถูกจัดการโดย Tcpdump Group ขอมูลและ Source Code สามารถหาอานไดที่TCPDUMP/LIBPCAP public repository และ WinPcap - Home สําหรับ windows Wireshark โปรแกรมที่ทํางานโดยใช ไลบราลี พีแคป (librarypcap) เปนโปรแกรมชนิดหนึ่งในจําพวก Packet sniffer ประกอบไปดวยสวนของ Packet Capture และ Packet Analyzer และมีสวนติดตอกับผูใชในรูปแบบกราฟกโดยโปรแกรมสามารถติดตั้งและใชงานไดหลายระบบปฏิบัติการเชน Linux, window ผูสนใจใชงานสามารถดาวนโหลดมาติดตั้งใชงานไดฟรี เพราะเปน OpenSource Software โดยสามารถโหลดไดที่ http://www.wireshark.org ในปจจุบันโปรแกรมประเภทดักจับขอมูลมีหลายประเภท Wireshark เปนโปรแกรมดักจับขอมูลที่มการใชงานโปรแกรมใหมีการรองรับการใชงานในลักษณะที่ยากตอการนําไปใชในทางไมดี จึง ีไดรับความนิยมในการเผยแพรในวงกวางโดยเฉพาะอยางยิ่งในดานการเรียนการสอน 2.2.1 เมนูตาง ๆ ของโปรแกรม Wireshark สําหรับเมนูของ Wiresharkสามารถแบงเปนหมวดตาง ๆ ไดดังนี้ จาก 2 หมวดหลักของเมนู Wireshark สามารถใชงานไดในลักษณะของเมนูบารและเมนูไอคอน แตละหมวดมีขอมูลเบื้องตนดังตอไปนี้ 2.2.1.1 การปรับแตงการตรวจจับ packet เปดการทํางานโปรแกรม เลือกเมนูCapture
  7. 7. 7 รูปที่ 2.1 เริ่มการทํางานโปรแกรม เลือกเมนู Capture ในกรณีเลือก interface จะพบกับหนาจอที่ทําการแสดงผล network interface ที่ถูกติดตั้งในเครื่องดังนี้ รูปที่ 2.2 การปรับแตงการตรวจจับแพคเก็จ (packet capture) นอกจากนี้ที่ option คุณยังสามารถเลือกการปรับแตงไดอีกครั้งหนึ่ง รูปที่ 2.3 การปรับแตง Interface ethernetการตรวจจับ packet
  8. 8. 8 เราสามารถเลือก รีโมท (remote)ไดก็ตอเมื่อมีการกําหนดการทํางานรองรับเทคนิค Port Mirroring รูปที่ 2.4 การปรับแตงรองรับ Port Mirroring 2.2.1.2 การปรับแตง คาสถิติตาง ๆ ของขอมูลภายหลังการตรวจจับแพคเก็จเมื่อหยุดการทํางานถึงสามารถเลือกขอมูลจาก list คนหาขอมูลที่ดักจับ รูปที่ 2.5 หนาตาง list คนหาขอมูลแพคเก็จที่ดักจับ
  9. 9. 9เราสามารถนําผลที่ไดมาวิเคราะหดวย Protocol Hierarchy (ภายใต statistic) รูปที่ 2.6 หนาตางแสดงการวิเคราะห ขอมูลโปรโตคอลนอกจากนี้สามารถสรุปการสือสารกันในเครือขายดวย การติดตอสื่อสาร (Conversations) ่ รูปที่ 2.7 หนาตางแสดงการติดตอสื่อสาร Conversations ในระบบทีตรวจจับ ่
  10. 10. 10 สวนติดตอผูใชกับขอมูลแพคเก็จที่ดักจับได รูปที่ 2.8 หนาตางแสดงสวนติดตอผูใช แพคเก็จที่ดักจับ2.3ไพธอน(Python) Python เปนภาษาโปรแกรมการเขียนแบบเชิงวัตถุ มีจุดประสงคทั่วไปในการเขียนโปรแกรมทางภาษาทั่วไป ที่ใชสําหรับการพัฒนาซอฟตแวรหลายชนิด วัตถุประสงคในการออกแบบการเขียนภาษาของ Python เนนใหนกออกแบบพัฒนาโปรแกรม และมีความสามารถในการถอดรหัส ไดรับ ัการพัฒนาครั้งแรก โดย Guido van Rossum มีการเปดตัวครั้งแรกในป ค.ศ.1991 Python ไดรับแรงบันดาลใจจากการเขียนโปรแกรมภาษาเชน ABC, Haskell, Java, Lisp, icon และ Perl ซึ่งPython เปนโปรแกรมระดับสูง,มีวัตถุประสงคทั่วไป,มีความหลากหลาย,แปลไวหลายภาษา Pythonเปนภาษาที่เรียบงายและหนึ่งในคุณสมบัตที่เห็นไดชัดที่สุดก็คือ ไมมีการใชเครื่องหมายอัฒภาคหรือ ิวงเล็บ แตจะใชการเยื้องแทน ปจจุบัน Python มีสองรุน คือ Python 2.x และ Python3.x. ซึ่งPython3.x สามารถนํากลับไปใชรวมกันไดกับรุนกอนหนาของ Python ถูกสรางขึ้นเพื่อแกไขขอบกพรองของการออกแบบบางสวนของภาษา และทําใหภาษาที่ใชชัดเจนมากขึ้น รุนลาสุดของ
  11. 11. 11Python2.x คือ 2.7.1 และ Python3.x คือ 3.1.3 คําแนะนํานี้ถูกเขียนไวใน Python2.x Python ถูกพัฒนา เก็บรักษาโดยอาสาสมัครผูพัฒนากลุมใหญทั่วโลก 2.3.1 ภาษาโปรแกรมมิ่งไพธอน ไพธอน (Pyhton) เปนภาษาโปรแกรมในลักษณะภาษาอินเตอรพรีเตอรโปรแกรมมิ่ง(Interpreted Programming Language) ผูคิดคนคือ Guido van Rossumในป 1990 ซึ่งไพธอนเปนการจัดการชนิดของตัวแปรผันตามขอมูลที่บรรจุอยู (Fully Dynamically Typed) และใชการจัดการหนวยความจําเปนอัตโนมัติ (Automatic Memory Management) โดยไดเปนการพัฒนาผสมผสานของภาษาอื่นๆ ไดแก ABC , Modula-3 , Icon , ANSI C , Perl , Lisp , Tclภาษาไพธอนยังเปนแนวคิดที่ทําใหเกิดภาษาใหมๆ ไดแก Ruby และ Boo เปนตน ไพธอนนั้นพัฒนาเปนโครงการOpen sourceโดยมีการจัดการแบบไมหวังผลกําไรโดย Python Software Foundation และสามารถหาขอมูลและตัวแปรภาษาไดจากเว็บไซตของไพธอนเองที่ http://www.python.org/ 2.3.2 หลักปรัชญาของภาษาไพธอน ไพธอนเปนภาษาที่สามารถสรางงานไดหลากหลายกระบวนทัศน (Multi-paradigmlanguage)โดยจะมองอะไรที่มากกวาการ Coding เพื่อนํามาใชงานตามรูปแบบเดิมๆ แตจะเปนการนําเอาหลักการของกระบวนทัศน (Paradigm) แบบ Object oriented programming ,Structured programming , Functional programming และ Aspect-oriented programmingนําเอามาใชทั้งแบบเดี่ยวๆและนํามาใชรวมกัน ซึ่งไพธอนนั้นเปนภาษาที่มีการตรวจสอบชนิดตัวแปรแบบยืดหยุน(dynamically type-checked) และใช Garbage collection ในการจัดการหนวยความจํา 2.3.3 Language EvaluationCriteria ดวยความที่ไพธอนนั้นผสมผสานการสรางภาษาที่สวยงาม ทําใหการอานหรือเขาใจโคด(Readability) ตางๆนั้นทําไดงายรวมถึงการเขียนโคด (Writability) ที่กระชับและสั้นในการเขียนรวมถึงมีประสิทธิภาพทําใหมีเสถียรภาพ (Reliability) สูงขึ้นและมีความรวดเร็วในการทํางานอีกดวยและในดานคาใชจาย (Cost)ในการพัฒนาซอฟตแวรจากไพธอนนั้นในประเทศไทยนั้นยังตองใชคาใชจายคอนขางสูงเพื่อใหไดมาซึ่งซอฟตแวรที่ดีเพราะผูเชี่ยวชาญที่เขียนไพธอนไดมีเสถียรภาพนั้นยังมีนอย ทําใหคาตัวสําหรับผูพัฒนานั้นสูงตามไปดวยถึงแมวาเครื่องมือในการพัฒนานั้นจะฟรีและเปน Opensourceก็ตามแตคาใชจายในดานบุคลากรนั้นมีมากกวาคาเครื่องมือพัฒนา
  12. 12. 12 2.3.4 ขอเดนของภาษาไพธอน 2.3.4.1 งายตอการเรียนรูโดยภาษาไพธอนมีโครงสรางของภาษาไมซับซอนเขาใจงายซึ่งโครงสรางภาษาไพธอนจะคลายกับภาษาซีมาก เพราะภาษาไพธอนสรางขึ้นมาโดยใชภาษาซีทําให ผูที่คุนเคยภาษาซีอยูแลวใชงานภาษาไพธอนไดไมยาก นอกจากนี้โดยตัวภาษาเองมีความยืดหยุน สูงทําใหการจัดการกับงานดานขอความและ Text File ไดเปนอยางดี 2.3.4.2 ไมตองเสียคาใชจายใดๆทั้งสิ้น เพราะตัวแปรภาษาไพธอนอยูภายใตลิขสิทธิ์Python Software Foundation License (PSFL) ซึ่งเปนของ Python Software Foundation(PSF) ซึ่งมีลักษณะคลายกับลิขสิทธิ์แมแบบอยาง General Public License (GPL) ของ FreeSoftware Foundation (FSF) 2.3.4.3ใชไดหลายแพลตฟอรม ในชวงแรกภาษาไพธอนถูกออกแบบใชงานกับระบบUnixอยูก็จริงแตในปจจุบันไดมีการพัฒนาตัวแปลภาษาไพธอนใหสามารถใชกับระบบปฏิบัติการอื่นๆอาทิ เชน Linux Platform , Windows Platform , OS/2 , Amiga , Mac OSX และรวมไปถึงระบบปฎิบัติการที่ .NET Framework , Java virtual machine ทํางานไดซึ่งใน Nokia Series 60ก็สามารถทํางานไดเชนกัน 2.3.4.4 ภาษาไพธอนถูกสรางขึ้นโดยไดรวบรวมเอาสวนดีของภาษาตางๆเขามาไวดวยกันอาทิเชน ภาษา ABC , Modula-3 , Icon , ANSI C , Perl , Lisp , Smalltalk และ Tcl 2.3.4.5 ไพธอนสามารถรวมการพัฒนาของระบบเขากับ COM , .NET และCORBA- objects 2.3.4.6 สําหรับ Java libraries แลวสามารถใช Jythonเพื่อทําการพัฒนาซอฟตแวรจากภาษาไพธอนสําหรับ Java Virtual Machine 2.3.4.7 สําหรับ .NET Platform สามารถใช Iron Python ซึ่งเปนการพัฒนาของMicrosoft เพื่อจะทําใหไพธอนสามารถทํางานไดบน .Net Framework ซึ่งใชชื่อวา Python for.NET 2.3.4.8 ไพธอนนั้นสนับสนุน Internet Communications Engine (ICE) และการรวมกันของเทคโนโลยีอื่นๆอีกมากมายในอนาคต 2.3.4.9 บางครั้งนักพัฒนาอาจจะพบวาไพธอนไมสามารถทํางานบางอยางได แตนักพัฒนาตองการใหมันทํางานไดก็สามารถพัฒนาเพิ่มไดในรูปแบบของ extension modules ซึ่งอยูในรูปแบบของโคด C หรือ C++ หรือใช SWIG หรือ Boost.Python 2.3.4.10 ภาษาไพธอนเปนสามารถพัฒนาเปนภาษาประเภท Server side Scriptคือการทํางานของภาษาไพธอนจะทํางานดานฝงเซิรฟเวอรแลวสงผลลัพธกลับมายังไคลเอนตทําใหมีความปลอดภัยสูงและยังใชภาษาไพธอนนํามาพัฒนาเว็บเซอรวิสไดอีกดวย 2.3.4.11 ใชพฒนาระบบบริหารการสรางเว็บไซตสําเร็จรูปที่เรียกวาContent ัManagement- Systems(CMS)ซึ่ง CMS ที่มีชื่อเสียงและทํางานดวยไพธอน คือ Plone
  13. 13. 132.4 โปรโตคอล (Protocol) การเชื่อมโยงเครือขายที่มีฮารดแวรตางกันจําเปนตองกําหนดขอตกลงรวมเรียกวาโปรโตคอล(protocol) ซึ่งการกําหนด Protocol มีไวเพื่อใหคอมพิวเตอรสื่อสารกันตามขอกําหนด TCP/IP ( ทีซีพี/ไอพี ) จัดเปนโปรโตคอลหนึ่งที่ออกแบบมาเพื่อแกปญหาการเชื่อมโยงดังกลาว โปรโตคอลในความหมายของระบบเครือขายคือขอกําหนดการสื่อสารคอมพิวเตอรหรืออุปกรณเครือขายจะมีซอฟตแวรที่ปฏิบัติงานตามโปรโตคอลที่กําหนดพรอมทั้งมีกรรมวิธีแกไขปญหาที่เกิดขึ้นเชน หากขอมูลที่ขนถายมีขอผิดพลาดคอมพิวเตอรจะดําเนินการตามแบบแผนในโปรโตคอลเชนสงขอมูลซ้าใหม ํ ในระบบเครือขายขนาดใหญ อาจมีเสนทางเชื่อมโยงระหวางกันไดเปนจํานวนมาก ขอมูลที่สงออกไปอาจไมไดใชเสนทางเดียวกันตลอดขอมูลทีสงออกไปกอนอาจไปถึงปลายทางชากวากรณีนี้ ่เครื่องปลายทางจําเปนตองจัดลําดับขอมูลใหม กรณีที่คอมพิวเตอรตนทางสามารถสงขอมูลไดเร็วเกินกวาปลายทางจะรับไดทัน โปรโตคอลจะกําหนดกรรมวิธีควบคุมการลําเลียงขอมูลระหวางตนทางและปลายทางใหสัมพันธกันขอกําหนดตามโปรโตคอล ที่กลาวถึงนี้จะอธิบายโดยละเอียดในแตละหัวขอตอไป ARP เปนโปรโตคอล สําหรับการจับคู (map) ระหวาง Internet Protocol address (IPaddress) กับตําแหนงของอุปกรณในระบบเครือขาย และใชคนหา mac address ของหมายเลขไอพี RARP เปนโปรโตคอลใชคนหาหมายเลขไอพี จาก mac address โปรโตคอลระดับลางถัดจาก IP ไดแก โปรโตคอลระดับเดทาลิงคซึ่งกําหนดการทํางานตามเทคโนโลยีเครือขายที่ใชงานเชนโปรโตคอล CSMA/CD ตามมาตรฐาน Ethernet ใสระดับชั้นนี้มีโปรโตคอลในชุดของ TCP/IP ทําหนาที่สนับสนุนการทํางานอยูสองโปรโตคอลคือ ARP และ RARPทั้งสองโปรโตคอลทําหนาที่แปลงคาระหวาง IP Address กับ Hardware Address Protocol ในโลกนี้มีมาก 500 Protocol และมีการพัฒนาอยางตอเนื่อง Protocol แตละชนิดก็มีคุณสมบัติเดน แตกตางกันไปควรที่จะเลือกใชใหเหมาะสม Protocol ที่นิยมใชในระบบNetwork มีดังนี้ โปรแกรมประยุกตสวนใหญจะใชโปรโตคอล UDP หรือ TCP เพื่อควบคุม IP โปรโตคอล ซึ่งโปรโตคอล UDP ยอมาจาก Unix Datagram Protocol และ โปรโตคอล TCP ยอมาจากTransmission Control Protocol.
  14. 14. 14 2.4.1 โปรโตคอลยูดีพี (UDP Protocol) UDP ยอมาจาก (UDP : Unix Datagram Protocol) เปนโปรโตคอลหลักในชุดโปรโตคอลอินเทอรเน็ต การสงขอมูลผาน UDP นั้น คอมพิวเตอรจะสงขอมูลขนาดเล็กที่เรียกวา เดตาแกรม(datagram) ผานเครือขายไปยังเครื่องปลายทาง โดย UDP จะไมรับประกันความนาเชื่อถือและลําดับของเดตาแกรม ซึ่งสวนใหญจะถูกใชสําหรับเปน DNS, streaming content เปนตน User Datagram Protocol (UDP) เปนวิธีการสื่อสารหรือโปรโตคอลที่จํากัดจํานวนการบริการ เมื่อขาวสารมีการแลกเปลี่ยน ระหวางคอมพิวเตอรในเครือขายที่ใช Internet Protocol (IP)โดย UDP เปนตัวเลือกหนึ่งของ TransmissionControl Protocol (TCP) และใชรวมกับ IP บางครั้งเรียกวา UDP/IP ซึ่ง UDP เหมือนกับ TCP ในการใช IP ในการดึงหนวยขอมูล (เรียกวา datagram)จากคอมพิวเตอรหนึ่งไปยังอีกเครื่องหนึ่ง แตตางจาก TCP โดย UDP ไมใหการบริการสําหรับการแบงขาวสารเปนแพ็คเกต(datagram) และประกอบขึ้นใหมเมื่อถึงปลายหนึ่ง UDP ไมใหชุดของแพ็คเกตที่ขอมูลมาถึงหมายความวา โปรแกรมประยุกตที่ใช UDP ตองมีความสามารถในการสรางมั่นใจวาขาวสารที่มาถึงอยูในลําดับที่ถกตอง การประยุกตเครือขายที่ตองการประหยัดเวลาในการประมวลผล เพราะมีหนวย ูขอมูลในการแลกเปลี่ยน (ดังนั้น จึงมีขาวสารนอยมากในการประกอบขึ้นใหม) จะชอบ UDP มากกวาTCP ซึ่ง Trivial File Transfer Protocol (TFTP) ใช UDP แทนที่ TCP UDP ให 2 บริการที่ไมมีใน TCP โดยเลเยอรของ IP คือ Port number เพื่อชวยแยกแยะการขอของผูใช และความสามารถ checksum เพื่อตรวจสอบการมาถึงขอมูล ในแบบจําลองการสื่อสาร Open System Interconnection (OSI) UDP เหมือนกับ TCP คือ อยูที่เลเยอร 4Transport Layer 2.4.2 โปรโตคอลทีซีพ/ไอพี (TCP/IP Protocol) ี TCP/IP มีที่มาจากโปรโตคอลคือทีซีพี (TCP : Transmission Control Protocol) และไอพี(IP : Internet Protocol) IP ทําหนาที่กําหนดแอดเดรสจัดแบงขนาดขอมูลใหพอเหมาะและเลือกเสนทางสงขอมูลสวน TCP มีหนาที่รับประกันความถูกตองในการลําเลียงขอมูล TCP และ IP ไมไดเปนเพียงสองโปรโตคอลที่มีอยูเทานั้น หากแตยังมีโปรโตคอลสนับสนุนอีกเปนจํานวนมากจัดรวมกันเปนชุดโปรโตคอล ทีซีพี/ไอพี (TCP/IP protocol suite) TCP เปนหนึ่งในโปรโตคอลหลักในเครือขายอินเทอรเน็ต หนาที่หลักของทีซีพี คือ ควบคุมการรับสงขอมูลระหวางโฮส ถึง โฮส ในเครือขาย เพื่อใชแลกเปลี่ยนขอมูลระหวางกัน โดยตัวโปรโตคอลจะรับประกันความถูกตอง และลําดับของขอมูลที่สงผานระบบเครือขาย นอกจากนั้นทีซีพียังชวยจําแนกขอมูลใหสงผานไปยังแอปพลิเคชัน ที่ทํางานอยูบนโฮสเดียวกันใหถูกตองดวย ซึ่งสวนใหญจะถูกใชสาหรับเปน http, https, and ssh. เพราะวาระบบปฏิบัตการทํางานดวยโปรโตคอลนี้ ํ ิไดดีกวา มีความนาเชื่อถือ แตความเร็วจะชากวา UDP
  15. 15. 15 TCP เปนการนําเอา UDP มาประยุกตเขาดวยกัน แตเพิ่ม layer ของการ สงและรับ packetเชน การดาวนโหลดจากอินเทอรเน็ต โปรแกรมเว็บบราวเซอรจะเปด socket หรือสรางการเชื่อมตอดวย TCP เพื่อไปยังเครื่องปลายทาง TCP/IP เปนโปรโตคอลที่ใชงานอยางแพรหลายในแทบทุกเครือขายไมวาจะเปนเครือขายเฉพาะที่ (LAN) หรือเครือขายในบริเวณกวาง (WAN) TCP/IP ( ทีซีพ/ไอพี ) เชื่อมกลุมเครือขายยอย ีเขาดวยกันเปนเครือขายขนาดใหญหรืออินเตอรเน็ต (Internet)ผานการออกแบบใหเปนอิสระจากชนิดคอมพิวเตอรฮารดแวรและระบบปฏิบัติการกลไกของโปรโตคอลมีความเชื่อถือไดสูงและทํางานไดแมในบางภาวะที่การสื่อสารมีความผิดปกติรวมทั้งสามารถเลือกเสนทางสงขอมูลตามสภาพเครือขายไดในกรณีที่บางเสนทางชํารุด อินเทอรเน็ตมีพัฒนาการมาจากอารพาเน็ต (ARP Anet) ซึงเปนเครือขายคอมพิวเตอรภายใต ่ความรับผิดชอบของอารพา (Advanced Research Projects Agency) ในสังกัดกระทรวงกลาโหมของสหรัฐอเมริกาอารพาเน็ตในขั้นตนเปนเครือขายทดลองที่ตั้งขึ้นเพื่อสนับสนุนงานวิจัยดานการทหารอารพาซึ่งตอมาไดเปลี่ยนชื่อเปนดารพา (Defense Advanced Research ProjectsAgency) ตองการพัฒนาเครือขายที่สามารถสื่อสารกันได แมวาอุปกรณเครือขายบางจุดจะหยุดทํางานหรือเสนทางสื่อสารบางเสนทางถูกตัดขาดดารพาวางแผนการขยายเครือขายและเปดการเชื่อมตอเขากับเครือขายกับเครือขายตองการโปรโตคอลที่ทํางานไดกับสายสื่อสารและฮารดแวรหลายรูปแบบ และสามารถรองรับ Host จํานวนมากได TCP/IP เปนโปรโตคอลที่มีคุณสมบัติดังกลาวครบถวน TCP/IP ยังไมไดเปนชื่อที่ใชอยางเปนทางการในชวงเวลานั้นหากแตเรียกวาคาหน – เซอรฟโปรโตคอลตามชื่อผูพัฒนาคือโรเบิรตคาหน (Robert Kahn) ซึ่งทํางานอยูที่บริษัทบีบีเอ็น (BBN:NoltBeranek and Newmann) และวินตันเซอรฟ (Vintom Cerf) แหงสถาบันวิจัยสแตนฟอรดดารพาวาจางบีบีเอ็นพัฒนา TCP/IP ภายใตยูนิกซของมหาวิทยาลัยแคลิฟอรเนียแหงเบิรคลียและใหทุนเผยแพรระบบปฏิบัติการออกไปโดยไมคิดมูลคา ยูนิกซที่ผนวก TCP/IP และเผยแพรออกไปเมื่อพ.ศ. 2526 ใชชื่อวา 4.2BSD (4.2 BerkeleySystem Distribution) จากจุดนั้นเปนตนมาทีซีพ/ไอพีก็ไดแพรหลายไปในมหาวิทยาลัยและ ีหนวยงานอื่นๆและเปนโปรโตคอลมาตรฐานซึ่งใชเชื่อมโยงคอมพิวเตอรที่ทํางานภายใตยูนิกซในปจจุบันจะพบวาระบบปฏิบัติการสวนใหญทั้งคอมพิวเตอรระดับใหญและไมโครคอมพิวเตอร จะสนับสนุนการทํางานตามขอกําหนดของ ที TCP/IP เพื่อเชื่อมเขาสูอินเทอรเน็ตไดโดยงาย TCP/IP เปนโปรโตคอลที่ไดรับความนิยมอยางแพรหลายเนื่องมาจากความสามารถในการเชื่อมเครือขายที่ใชฮารดแวรตางชนิดกันไดอยางกลมกลืนเนื้อหาในบทนี้จะกลาวถึงแบบอางอิงโปรโตคอลและบริการของโปรโตคอลยอยโดยสังเขปเพื่อใหผูอานมองเห็นภาพโดยรวมตามหัวขอตอไปนี้
  16. 16. 16 2.4.2.1แบบอางอิง TCP/IP ระบบการสื่อสารขอมูลในเครือขายคอมพิวเตอรประกอบดวยทั้งฮารดแวรและซอฟตแวร ทีซบซอนการมองภาพของระบบโดยรวมทั้งหมดเปนหนวยใหญยอมยากตอการทําความ ่ัเขาใจการใชแบบอางอิงที่แบงระบบออกเปนสวนยอยจะชวยลดความซับซอนและสรางความเขาใจไดงายกวา เครือขายคอมพิวเตอรมีแบบอางอิงที่ใชเปนมาตรฐานคือแบบอางอิงโอเอสไอ (OSI : OpenSystems Interconnection Reference Model) ในขณะที่ที TCP/IP เปนโปรโตคอลที่กําเนิดกอนOSI และมีแบบอางอิงเฉพาะตามรูป 2.9TCP/IP มีระดับชั้นจากลางขึ้นบนและลักษณะสมบัติประจําชั้นตางๆดังตอไปนี้ ฟสคัล ิ ชั้นของการกําหนดคุณสมบัตฮารดแวรเชนคุณสมบัติทางกล (หัวตอและ ิ ชนิดสาย สื่อสาร) และคุณสมบัติทางไฟฟา (ลักษณะสัญญาณและอัตราเร็ว) กลาวโดยรวมแลวระดับชั้นฟสิคัลกําหนดวิธีการถายโอนขอมูลในระดับบิต ตัวอยางของการเชื่อมตอที่ตรงกับระดับชั้นฟสิคับไดแก RS232 และ X.21 เปนตน เดทาลิงค ชั้นของซอฟตแวร (ดีไวซไดรเวอร) และฮารดแวรซึ่งทํางานดานการ เชื่อมโยงเขากับสายสื่อสาร ตัวอยางมาตรฐานในระดับชั้นนี้ไดแก อินเทอรเน็ตและโทเค็นริงเปนตน เน็ตเวอรค ชั้นที่ทําหนาที่เลือกเสนทางเพื่อสงขอมูลระหวางสถานีตนทางและสถานี ปลายทางตัวอยางโปรโตคอลในระดับชั้นนี้ไดแก IP ทรานสปอรต ชั้นที่หนาที่จัดเตรีมการสงขอมูลระหวางสถานีตนทางและปลายทางโดย สถาปนาการเชื่อมตอและรักษาสภาพการเชื่อมตอ ตลอดจนยกเลิกการเชื่อมตอเมื่อสิ้นสุดกระบวนการ และอาจมีหนาที่เพิ่มเติมในการับประกันความถูกตองของขอมูลที่จัดสง TCP/IP มีโปรโตคอลประจําชั้นนี้จํานวนสองโปรโตคอลคือ TCP และ UDP แอพลิเคชัน ้ ระดับชั้นนี้กําหนดการทํางานของโปรโตคอลประยุกตโปรโตคอลใน ระดับชั้นนี้ไดแก เอฟอีพี (FTP) เอสเอ็มทีพี (SMTP) หรือเทลเน็ต (TELNET) เปนตน
  17. 17. 17 : รูปที่ 2.9 แบบอางอิงทีซีพี/ไอพี IP ซึ่งอยูในระดับชั้นเน็ตเวอรตามรูปที่ 2.10 เปนแกนสําคัญของโปรโตคอลแสตดเนื่องจากทั้งTCP และ UDP ตองใช IP เพื่อเลือกเสนทางสง Packet ในระดับชั้นเน็ตเวอรคยังมี ICMP สนับสนุนการทํางานของ IP เพื่อรายงานขอผิดปกติที่เกิดขึ้นจากการสงแพ็กเก็ตและมี IGMP ดูแลการจัดกลุมHost ในเครือขายมัลติคาสต 2.4.2.2 โปรโตคอลแสตค รูปที่ 2.10โปรโตคอลแสตคของ TCP/IP
  18. 18. 18 ระดับชั้นทรานสปอรต มีสองโปรโตคอลสําคัญ TCP และ UDP แอพลิเคชั้นจะเลือกใช TCPหรือ UDP ตามลักษณะงาน เมื่อขอมูลผานแตละระดับชั้นโปรโตคอลในชั้นนั้นจะผนวกขาวสารกํากับการทํางานประจําโปรโตคอลซึ่งเรียกวาโปรโตคอลเฮดเดอร (protocol header) เขากับขอมูลเฮดเดอรและตัวขอมูลจากระดับบนจะถูกสงผานไปยังระดับลางโปรโตคอลระดับลางจะมองเฮดเดอรหุมเปนชั้นๆกระบวนการนี้เรียกวาการเอ็นแคปซูเลตตัวอยางในรูปที่2.11แสดงการเอ็นแคปซูเลตแพ็กเก็ต TCP/IPในอีเทอรเน็ต เมื่อสถานีปลายทางไดรับแพ็กเก็ตก็จะดําเนินการสงไปตามลําดับชั้นโปรโตคอลประจําชั้นจะถอดเฮดเดอรออกและสงสวนที่เหลือไปยังชั้นถัดไปเฮดเดอรจะถูกถอดออกเหลือเฉพาะขอมูลเมื่อถึงชั้นบนสุดกระบวนการนี้เรียกวาการดีแคบซูเลต (decapsulation) รูปที่2.11การหอหุมขอมูลตามลําดับโปรโตคอลแสตด 2.4.3 ไอพีแอดเดรส( IP Address ) อินเทอรเน็ตแยกแยะเครื่องโดยใช IP Address ประจําฮารดแวรอินเทอรเฟสที่เชื่อมเขาเครือขายตัวอยางของฮารดแวรอินเทอรเฟสไดแกการดเครือขายคอมพิวเตอรที่มีมากกวาหนึ่งอินเทอรเฟสสามารถมี IP Address ไดตามจํานวนอินเทอรเฟสแตคอมพิวเตอรโดยทั่วไปมักมีเพียงอินเทอรเฟสเดียว จึงมักเรียกวาไอพีแอดเดรสเปนแอดเดรสประจําเครื่อง สวนอุปกรณฮารดแวร เชนเรามักมีอินเทอรเฟสจํานวนมากเพื่อใชโยงเครือขายเราเตอร(Router) จึงมี IP Address หลายคาตามจํานวนอินเทอรเฟส
  19. 19. 19 2.4.3.1 การจัดการคลาสเครือขาย (Class) ไอพีแอดเดรสมีการจัดแบงออกเปนกลุมหรือคลาส(class)เครือขายที่ใชงานในปจจุบันมักสังกัดอยูใน class ใด class หนึ่งคือคลาส A, B หรือ C การแบง class อาศัยจํานวนพรีฟกซเครือขายที่แตกตางกันตามรูป 2.12 แตละ class จึงมีจํานวนเครือขายในสังกัดและจํานวนโฮสตตอเครือขายไมเทากัน Class Range A 0.0.0.0 - 127.255.255.255 B 128.0.0.0 - 191.255.255.255 C 192.0.0.0 - 223.255.255.255 D 244.0.0.0 - 239.255.255.255 E 240.0.0.0 - 255.255.255.255 รูปที่ 2.12แสดงชวงของ IP Address แตละคลาส2.5 ไพจีทีเค (Pygtk) PyGTKเปนชุดของโมดูล Python ที่พัฒนาเพื่อใชทํางานรวมกับเครื่องมือ GTK+ และ GUIโดยมีชุดครอบคลุมองคประกอบกราฟกและสิ่งอํานวยความสะดวกในการเขียนโปรแกรมที่มีประโยชนสําหรับการสรางโปรแกรมเดสกทอปอื่น ๆ เปนสวนหนึ่งของโครงการ GNOME PyGTKเปนซอฟตแวรฟรีและไดรับใบอนุญาตภายใตLGPLผูเขียนตนฉบับPyGTKคือ James Henstridge.PyGTKถูกออกแบบใหงายตอการใช เหมาะสําหรับสรางตนแบบอยางรวดเร็ว ปจจุบันPyGTKเปนหนึ่งในโปรแกรมที่นิยมใชกันมากที่สดในการใช GTK + ุ GObject เปนคุณสมบัติพื้นฐานของฟงกชั่นสําหรับ PyGTK และ ATK (AccessibilityToolkit) เปนเครื่องมือที่ทําใหเขาถึงโปรแกรมไดงายขึ้น เครื่องมือนี้จะชวยใหคนพิการทางรางกายทํางานกับคอมพิวเตอรไดดีซึ่งเครื่องมือ GTK มีการใช Pango เปนชุดเครื่องมือที่จะใชในการทํางานเกี่ยวกับระบบวาดขอความทํางานรวมกับ Cairo ชุดเครื่องมือสําหรับการสรางกราฟกแบบเวกเตอร2D สวน Glade จะใชในการสราง GUI ที่มการเชื่อมตอกับ XML ี
  20. 20. 20 GTK + เปนชุดเครื่องมือสําหรับการสรางสวนเชื่อมตอประสานกราฟกกับผูใช กลองเครื่องมือนี้ถูกพัฒนาจากโปรแกรมภาษา C ชุดเครื่องมือ GTK + มาจาก GIMPToolkit เดิมทีถูกสรางขึ้นเพื่อพัฒนาแกไขโปรแกรมการจัดการภาพ GIMP ตั้งแตนั้นมา กลายเปนหนึ่งในชุดเครื่องมือที่นิยมมากที่สุดภายใตโปรแกรม Linux และ BSD Unix ปจจุบัน ซอฟตแวรสวนใหญแบบ GUI จะถูกสรางขึ้นในรูป Qtหรือ GTK + GTK +เปนโปรแกรมเชื่อมตอประยุกตจากการเขียนโปรแกรมเชิงวัตถุ ซึ่งถูกสรางขึ้นดวยฟงชั่นที่เปนมาตรฐาน สําหรับชุดเครื่องมือ GTK +ในขณะที่ GObject ก็สามารพัฒนาเพื่อรองรับการเชื่อมตอกับโปรแกรมภาษาอื่น ๆ ทีมีอยูสําหรับ C+, Python, Perl, Java, C# และโปรแกรมภาษา ่อื่น ๆ Gnome และXFceเปนหนากากที่ ไดรับการสรางขึ้นโดยใชชุดเครื่องมือ GTK +SWT และwxWidgets ทีรูจักกันดีในการเขียนโปรแกรม ซอฟตแวรทประยุกตใชไดโดดเดนดวยชุดเครื่องมือ ่ ี่GTK + คือ Firefox และ Inkscape 2.5.1 gtk.Button - เครื่องมือปุมกดเพื่อสงสัญญาณเมื่อมีการคลิก เครื่องมือปุมกด gtk.Buttonจะแสดงเมื่อมีการกดปุมที่ปายขอความ (gtk.Label) แมวาจะมี ความสามารถหลายอยางก็ตาม แตโดยทั่วไป gtk.Buttonจะใชในการเรียกฟงกชันกลับหรือถูกเรียกเมื่อมีการคลิกปุม ปุมสรางสัญญาณทั่วไปที่บงบอกถึง : "Clicked" - ผูใชทําการกดและปลอยปุมเมาสเหนือปุม"คลิก" "Pressed" - ผูใชกดปุมเมาสเหนือปุม "Released" - ผูใชที่ถูกปลอยออกปุมเมาสเหนือปุม"ปลอย" "Enter" - ชี้ที่ปอนปุม "Leave" - ชี้ซายที่ปุม สัญญาณ "คลิก" โดยปกติจะเปนสัญญาณเฉพาะที่โปรแกรมตองทําการตั่งคาหรือกําหนดไวในการใชงาน 2.5.2 gtk.VBox - กรอบแนวตั้ง gtk.VBoxเปนกรอบยอย จาก gtk.Boxที่จัดระเบียบเครื่องมือลูกในคอลัมนเดียว gtk.Boxใชในการจัดการระยะหางความสูงและการจัดตําแหนงของเครื่องมือขนาดเล็กของ gtk.VBoxแตทั้งหมดมีการจัดสรรความกวางเทากัน 2.5.3 gtk.ListStore - รูปแบบฟงกชันที่ใชรวมกับ gtk.TreeView gtk.ListStoreเปนรูปแบบรายการสําหรับใชกับเครื่องมือ gtk.TreeViewจะทําการการเชื่อมตอ gtk.TreeModelgtk.TreeSortableโดยการลากเมาสมาวางและ หยุดการเชื่อมตอจุดมุงหมายเพื่อสนับสนุนการทําแผนผัง Python และทบทวนขอกําหนดในการเชื่อมตอสงผานขอมูลเพื่อแสดงผล
  21. 21. 21 2.5.4 gtk.ScrolledWindow - เพิ่มแถบเลื่อนไปที่เครื่องมือลูก gtk.ScrolledWindowเปน classลูก ของ gtk.Binที่เพิ่มแถบเลื่อนไปที่เครื่องมือลูก และเลือกที่จะวาดกรอบรอบ ๆ เครื่องมือลูก หนาตางนี้จะสามารถทํางานในสองวิธี • เครื่องมือบางตัวจะมีการใชตัวเลื่อนภาพมาตรฐาน "slot" สําหรับสงขอมูลไปยังgtk.Adjustmentเครื่องมือสําหรับเลื่อนภาพมาตรฐานเหลานี้ยังใชไดกับgtk.TreeView,gtk.TextViewและ gtk.Layout • เครื่องมือที่ไมมีตัวเลื่อนภาพมาตรฐาน gtk.Viewportจะทําหนาที่เปนตัวแปลง ดําเนินการเลื่อนภาพสําหรับเครื่องมือลูกที่ไมสามารถเลื่อนภาพของตัวเอง จึงมีการใช gtk.Viewportเพื่อเลื่อนเครื่องมือลูก เชน gtk.Table, gtk.Boxและอื่น ๆ ถาเครื่องมือมีคุณสมบัติในการเลื่อนภาพมาตรฐาน ก็จะถูกเพิ่มเขาไปในgtk.ScrolledWindowกับวิธีการ gtk.Container.addหากเครื่องมือไมมี กอนอื่นคุณตองเพิ่มเครื่องมือ gtk.Viewportจากนั้นใหเพิ่ม gtk.Viewportไปที่หนาตางเลื่อน วิธีการที่สะดวกสบาย คือใหใช add_with_viewport () ดังนั้นคุณสามารถยกเลิกการใช viewport ไดเลย 2.5.5 gtk.TreeModelSort - ตารางสามเหลี่ยมเปนการเรียงลําดับรุนของ gtk.TreeModelลูก gtk.TreeModelSortเปนรูปแบบการจัดเรียงลําดับของแบบจําลองลูกgtk.TreeModelSortใชในการติดตอ gtk.TreeModelและเชื่อมตอกับ gtk.TreeSortableเพื่อจัดการเรียงลําดับขอมูลฟงกชัน"model" คุณสมบัติ อานเขียน – การสรางแบบจําลองสําหรับ gtk.TreeModelSortในการเรียงลําดับขอมูล 2.5.6 gtk.TreeView - เครื่องมือสําหรับการแสดงทั้งผังแบบตารางและแบบรายการ เครื่องมือ gtk.TreeViewจะใชในการแสดงผลของรูปแบบโดยการใช gtk.TreeModelในการเชื่อมตอ gtk.TreeViewจะมีคอลัมนและเซลล แสดงขอมูลรูปแบบอยู ใน GTK + และ PyGTK 2.5.7 gtk.TreeViewColumn - คอลัมนทมองเห็นไดในเครื่องมือ gtk.TreeView ี่ gtk.TreeViewColumnเปนคอลัมนที่มองเห็นไดในเครื่องมือgtk.TreeViewgtk.TreeViewColumnจัดแสดงผลของสวนหัวและเซลลที่ใช gtk.CellRenderer 2.5.8 gtk.Label - เครื่องมือที่แสดงจํานวน จํากัด ของขอความที่อานอยางเดียว gtk.Labelเปนเครื่องมือที่แสดงจํานวนจํากัด ของขอความที่อานอยางเดียว ปายชื่อจะถูกใชโดยเครื่องมือตางๆ (เชน gtk.Buttonและ เครื่องมือยอย, gtk.MenuItem, ฯลฯ ) เพื่อ แสดงขอความตลอดจนการประยุกตใชแสดงขอความ, ฯลฯ ใหกับผูใช สวนใหญของการทํางานของ gtk.Labelมีการ ปรับเปลี่ยนสไตลและรูปแบบของขอความที่อยูภายในการจัดสรรเครื่องมือโดยตรง gtk.Labelเปน"หนาตาง" ซึ่งหมายความวามันไมสามารถรับเหตุการณโดยตรง ถาจําเปน gtk.EventBoxสามารถนํามาใชเพื่อ จัดการเหตุการณใหกับเครื่องมือ gtk.Labelได
  22. 22. 22 2.5.9 gtk.CellRendererText - เครื่องมือแสดงผลขอความลงในเซลลที่เปน gtk.TreeView gtk.CellRendererTextจะจัดการแสดงผลของขอความที่ลงในเซลล gtk.TreeViewโดยใชขอมูลตัวอักษรสี และสไตลทกําหนดโดยคุณสมบัติของมัน ขอความจะถูกตัด ถามันยาวเกินไปและ ี่ตามคุณสมบัตที่ "ellipsize" ยอมใหใช ิ 2.5.10 gtk.Window - หนาตางระดับบนสุดที่เก็บเครื่องมือเล็กกลองหนึ่ง gtk.Windowสรางเครื่องมือที่ผูใชทั่วไปคิดวาเปนหนาตาง นั่นคือพื้นที่ของจอแสดงผลทีถูก ่จัดการโดยผูจัดการหนาตางและการตกแตงมักจะมีแถบชือเรื่องดังกลาว และรายการทีจะอนุญาตให ่ ่ผูใชปด ปรับขนาด และยายหนาตางได PyGTKจัดใหหนาตางทั้งสองประเภท
  23. 23. 23 บทที่ 3 วิธีการดําเนินงาน3.1 ขั้นตอนการดําเนินงาน 3.1.1 หาขอมูลและศึกษาการทํางานของ โปรแกรม Python และ ไลบราลี libpcap 3.1.1.1 ศึกษาการทํางานของโปรแกรม Python และ ไลบราลี libpcap 3.1.1.2 ศึกษาโครงสรางของโปรแกรม Python และ ไลบราลี libpcap 3.1.1.3 ศึกษาหลักการโครงสรางของ Python และ ไลบราลี libpcap 3.1.1.4 ทดลองสรางสถานการณใหตรงกับ Python และ libpcap ตรวจสอบผล 3.1.2 หาขอมลและศึกษา ภาษา Python และ libpcap เพื่อใชในการเขียนโปรแกรม ู 3.1.3 ศึกษาการเขียนโปรแกรมและตรวจสอบคาการทํางาน ก) ออกแบบโครงสรางโปรแกรมจากการศึกษา ข) ทําการเขียนโปรแกรมตามโครงสรางที่ไดออกแบบไว ค) ทําการทดสอบโปรแกรมที่เขียนขึ้น ง) ทําการแกไขปญหาที่เกิดขึ้นของโปรแกรม จ) ทําการทดสอบโปรแกรมที่แกไขแลว ฉ) ทําการบันทึกผลการทดลอง ช) ทําการสรปผลการทดลอง ุ
  24. 24. 243.2 การศึกษาเบื้องตน 3.2.1 โครงสรางการทํางานของโปรแกรม Python และ ไลบราลี libpcap libpcap เปน library สําหรับการดักจับ packet ที่ไดรับความนิยมอยางสูง ถูกนําไป ใชงานอยางแพรหลาย ในปจจุบันมีซอฟทแวรสําเร็จรูปมากมายที่พัฒนาดวย libpcap ที่รู จักกันดี ไดแก Ethereal, tcpdump, Snort, NMap, Ntop ฯลฯ จุดเดนของ libpcap คือ มีรูปแบบ API ที่ใชงานงาย แตมีประสิทธิภาพสูง สามารถจับ packet ไดลึกถึงระดับ datalink ทั้งในโหมดปกติ และโหมด promiscuous อีกทั้งยังมีความสามารถในการเลือกจับ เฉพาะบาง ชนิดของ packet ผใชที่สนใจ และที่สําคัญ libpcap เปน open-source library ู ที่สามารถใหนํามาใชงานไดฟรี ตัวอยางการประยุกตใชงาน libpcap เพื่อใหเห็นภาพการทํางานที่ชัดเจนขึ้น จึงขอยกตัวอยางการเขียนโปรแกรมใช libpcap เพื่อตรวจวัดอัตราการอัพ โหลด/ดาวนโหลดขอมูลแบบงายๆ หลักการพื้นฐานของ โปรแกรมนี้จะใชวิธีการจับทุก packet ทีผานเขามาใน interface และคัดเลือกเอาเฉพาะ ่ IPv4 packet มาตรวจสอบ header หากพบวามี source IP address ตรงกับ IP address ของ interface ก็แปลวา packet นั้นเปนขอมูลอัพโหลดของ interface จึงจะทําการบวก ขนาดของขอมูลชุด นั้นทบเขาไปในขนาดรวมเพื่อรอการคํานวณคาเฉลี่ยของอัตราการอัพ โหลดตอไป ในขณะเดียวกันก็ทําการคํานวณอัตรา การดาวนโหลดในในลักษณะเดียวกัน ดวย ในการตรวจสอบรายละเอียดตางๆของขอมูล จําเปนตองอาศัยการตีความจากขอ มูลดิบของ packet ที่เราดักจับ มาได โดยทั่วไปโครงสรางของ packet ที่รับเขามาจะมี ลักษณะของ header หุมเปนชั้นๆ จากระดับชั้น datalink ไป จนถึงชั้น application ดัง แสดงในภาพ รูปที่ 3.1 โครงสรางแพคเก็จที่ไดจากการ Dumpfile
  25. 25. 25 เราสามารถตรวจสอบโปรโตคอลของขอมูลภายใตเฟรมไดจากสวนของ header ของ frameซึ่งในกรณีของโปรโตคอล Ethernet ที่นิยมใชกันใน Local Area Network นั้น โครงสรางของframe จะเปนดังนี้ รูปที่ 3.2 แสดงโครงสราง Ethernet Frame Header Header ของ Ethernet frame เริ่มตนดวย Destination address และ Source addressขนาด 6 ไบต บอกใหเรา ทราบวา frame นี้สงออกมาจากที่ใด และจะสงไปยังที่ใด แตสิ่งที่เราสนใจจริงๆจะเปนสวนที่อยูถัดมา ซึ่งจะบงบอกชนิด โปรโตคอลของ payload ของ frame นั้น ตัวอยางเชนหากคานี้เปน 0x0800 ก็จะหมายถึง IPv4, 0x0806 จะ หมายถึง ARP ฯลฯ ดังนั้นเราจึงสามารถตรวจสอบโปรโตคอล layer 3 โดยอานคาจากไบตที่ 12 และ 13 นับจากสวน หัวของ libpcap packet (ซึ่งเริ่มจากไบตที่ 0) ซึ่งหากมีคาเปน 0x08 และ 0x00ตามลําดับก็หมายความวาขอมูล ภายใต frame นั้นเปน IPv4 datagram สําหรับ Source และ Destination IP address ที่เราตองการนํามาตรวจสอบนั้น ตองดึงออกมาจาก Header ของ IP ซึ่งจะมีโครงสรางดังนี้ รูปที่ 3.3 แสดงโครงสราง Header IP
  26. 26. 26 จากแผนผังจะเห็นวาสวนที่เปน source IP address นั้นมีความยาว 4 ไบต เริ่มตนที่ไบตที่12 จนถึงไบตที่ 15 และ สวนที่เปน destination IP address จะเริ่มจากไบตที่ 16 จนถึงไบตที่ 19ดังนั้นหากนับตั้งแตสวนหัวของ frame ตําแหนงเริ่มตนของ source และ destination IP จะอยูที่ไบตที่ 26 และ 30 ตามลําดับ รูปที่ 3.4 กลาวโดยสรุปก็คือ ในการตรวจสอบวา pcap_packet ที่จับมาไดนั้นเปนขอมูลที่เปนการdownload ของ interface นี้หรือไม ก็เพียงแตตรวจสอบวา 1. pcap_packet[12] == 0x08 และ pcap_packet[13] == 0x00 ใชหรือไม 2. และเลข 32 บิตที่ตําแหนงที่ 30 ของ pcap_packet มีคาเทากับเลข 32 บิตของ IPaddress ของ interface หรือไม3.3 การกําหนดความตองการของระบบ ก) สามารถเลือกใช การตรวจจับดวยการ คลิกใชใหเหมาะสมกับการนําไปใช เพื่อเพิ่มความยืดหยุนในการใชงานโปรแกรม Python และ ไลบราลี libpcap ข) สรางสวนเชื่อมตอประสานกับผูใชในรูปแบบกราฟก (GUI) เพื่อความสะดวกในการใชงาน โปรแกรม Python และไลบราลี libpcap
  27. 27. 273.4 ความตองการดานซอฟตแวร ซอฟตแวร ก) ระบบปฏิบัติการ Ubuntu Desktop รุน Lucid Lyn เวอรชั่น 10.04 ข) โปรแกรม Python เวอรชั่น 2.5.0 หรือสูงกวาไมเกิน 2.7.0 ค) Module libpcap – Python-libpcap ง) Module Function for Python3.5 การทํางานของโปรแกรม โปรแกรมจะตรวจสอบและแสดงการดักจับขอมูลของเครื่องที่ใชเครือขายที่จําลองขึ้นกับเครื่องคอมพิวเตอรที่มี โปรแกรม Python และไลบราลี libpcap ติดตั้งไว และเมื่อตรวจสอบคุณสมบัติการบุกรุกหรือโจมตี วามีพอรท ที่มีความเสียงตอการติดไวรัส ในการเขาเว็บไซต และยังมีการสราง Logging เพื่อแสดงรายละเอียดการเขาใชเพื่อนําไปอางอิงในการตรวจสอบ รูปภาพ แสดงการทํางานตรวจสอบแพ็กเก็จดวยโปรแกรม Python Libpcap
  28. 28. 283.6 โครงสรางการทํางานของโปรแกรม รูปที่ 3.1 โฟลวชารตผังการทํางานของโปรแกรม
  29. 29. 293.6.1 โครงสรางการรับคา อากิวเมนตเพื่อเริ่มตนการดักจับ รูปที่ 3.2 โฟลวชารตการเริ่มการทํางานดักจับขอมูล
  30. 30. 303.6.2 การทํางานแปลงแพ็คเก็ต เพื่อตรวจสอบ Ipv4,6 รูป 3.3 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ
  31. 31. 313.6.3 การทํางาน เรียกฟงกชันแยก ชนิด ของ โปรโตคอล รูปที่ 3.4 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (ตอ)
  32. 32. 323.6.4 การทํางานเรียกฟงกชัน ถอดรหัสของชนิดแพ็คเกต รูปที่ 3.5 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (ตอ)
  33. 33. 333.6.5 การทํางานเรียกฟงกชัน ถอà

×