SlideShare a Scribd company logo
1 of 34
บทที่1

                                            บทนํา

1.1 ความเปนมา

          ปจจุบันเทคโนโลยีดานระบบคอมพิวเตอรและเครือขายและอินเตอรเน็ต มีความล้ําหนาไป
เปนอยางมาก ทั้งนี้เพื่อตอบสนองความตองการของหนวยงานองคกรตางๆ จึงมีการนําเทคโนโลยีเขา
มาใชในชีวิตประจําวันอยางแพรหลาย เพราะมีความสอดคลองกันกับผูคนในปจจุบันหรือที่เรียกวา
ยุคไซเบอรโดยการประยุกตนําคอมพิวเตอรมามีสวนในการประกอบธุรกิจทั้งในหลายดาน ทั้งในระบบ
เศรษฐกิจ การศึกษาและใชเพื่อความบันเทิงเชนการติดตอสื่อสาร Instant Messenger เชน MSN, E-
Mail, Video Conference System และ Social Network ซึ่งในการนั้นจําเปนตองมีการเชื่อมตอ
กับระบบเครือขายอินเตอรเน็ตโดยทั้งสิ้น และเห็นไดวาในโลกแหงยุคโลกาภิวัฒนนี้เทคโนโลยีมีความ
จําเปนอยางยิ่งการติดตอสื่อสารระหวางกัน ไมวาจะอยูแหงไหน ที่ใด สามารถแลกเปลียนความคิด
                                                                                      ่
รวมทั้ง คนควาในเรื่องที่สนใจได เมื่อความล้ําสมัยมีประโยชนมากมาย จึงมีขอเสียในดานของ
เทคโนโลยีคอมพิวเตอรและเครือขายอินเตอรเน็ต นําไปสูการใชงานอยางผิดประเภทผิดรูปแบบและ
สรางความเดือดรอนใหแกผูอนโดยไมคํานึงถึง ผูใดเปนสําคัญโดยเขามากอกวนระบบเครือขายของ
                              ื่
องคกร หรือแมกระทั่งอาจจะเปนทั้งบุคลากรภายในขององคกร ที่ใชงานโดยรูเทาไมถึงการณ และ
กอใหเกิดความเสี่ยงที่จะเปดชองโหวใหผูประสงครายเขามาโจมตี และที่แยไปกวานั้นยังกลายเปน
ชองทางในการกอกวนระบบจาก Virus หรือ Trojan ซึ่งจะกอใหเกิดผลเสีย และกระทบไปยังระบบ
เครือขายภายในองคกรและเครือขายใหญในระบบไดแตระบบที่สรางขึ้นดวยระบบอินเตอรเน็ตนั้น
สามารถตรวจสอบ ไอพีและหมายเลขเฉพาะที่ใชอางถึงอุปกรณที่ตอกับเครือขายได และการเขา
เว็บไซตที่มีความเสี่ยงตอการทําใหเครือขาย มีสภาวะเสี่ยงซึ่งทําใหมีความเสถียรลดนอยลง จึงเปน
ที่มาของโปรแกรมดักจับและตรวจสอบขอมูลแพ็คเกจ (Development of Program Packet
Sniffer with Python) เพื่อปองกันระบบความเสียหายของเครื่องคอมพิวเตอรและเครือขายภายใน
องคกร รวมไปถึงสามารถนําขอมูลจากการตรวจจับการกอกวนระบบเครือขายขององคกรนั้นๆ มา
เปนหลักฐาน เพื่อดําเนินคดีตามกฎหมายกับบุคคลไมประสงคดีกับองคกร ตามที่พระราชบัญญัติวา
ดวยการกระทําความผิดเกี่ยวกับคอมพิวเตอร พ.ศ. 2550 มีผลบังคับใชตงแตวันที่ 22 สิงหาคม 2550
                                                                         ั้
ที่วาดวยมีผูกระทําดวยประการใด ๆ ใหระบบ คอมพิวเตอรไมสามารถทํางานตามคําสั่งหรือทําให
การทํางานผิดพลาด หรือใชวิธีการใด ๆ เขาลวงรูขอมูล แกไข หรือทําลายขอมูลของบุคคลอื่นใน
ระบบคอมพิวเตอรโดยมิชอบถือเปนความผิด
2




1.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.4
1.5 ผลที่คาดวาจะไดรับ
       1.5.1 การพัฒนาเพิ่มสวนตอประสานกับผูใชในรูปแบบกราฟก Graphic User Interface
(GUI)ของ libpcap ดวย python ใหใชงานไดงายขึ้นและมีระเบียบในการตรวจสอบการทํางานไดดี
ขึ้น
       1.5.2 เกิดความปลอดภัยกับระบบคอมพิวเตอรและระบบเครือขายมากขึ้น สามารถปองกัน
และลดปญหาการถูกผูไมหวังดีละเมิดสิทธิสวนบุคคล และสรางความเสียหายตอระบบเครือขายหรือ
องคกร
3




1.6 ระยะเวลาดําเนินงาน
           ตารางที่ 1.1 ขั้นตอนการดําเนินงาน
 ระยะเวลาดําเนนงาน
              ิ                                            สัปดาห

       / สัปดาห         1   2   3   4    5    6   7   8     9       10   11   12   13   14   15   16

1.ศึกษาเทคโนโลยีและ
ระบบตางๆที่เกี่ยวของ
และจําเปน

2.กําหนดขอบเขตของ
โครงงาน

3.ออกแบบโครงสราง
ของโครงงาน

4.ออกแบบหนาตาของ
โปรแกรม

5.ทดลองการเขียน
โปรแกรม

6.ปรับปรุงขอผิดพลาด
ตางๆใหมีความถูกตอง
เหมาะสม

7.สรุปและจัดทําเอกสาร
ประกอบการทําโครงงาน
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




         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




          เปนชุดคําสั่งแบบ Opensource ที่ใหการเชื่อมตอทางเครือขายกับระบบตรวจจับแพคเก็จถูก
สรางในป 1994 โดย Mccane, Leres และ Jacobson นักวิจัยที่ Lawrence Berkeley National
National 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 ผูสนใจใชงานสามารถดาวนโหลดมาติดตั้งใชงานไดฟรี เพราะเปน Open
Source Software โดยสามารถโหลดไดที่ http://www.wireshark.org
          ในปจจุบันโปรแกรมประเภทดักจับขอมูลมีหลายประเภท Wireshark เปนโปรแกรมดักจับ
ขอมูลที่มการใชงานโปรแกรมใหมีการรองรับการใชงานในลักษณะที่ยากตอการนําไปใชในทางไมดี จึง
           ี
ไดรับความนิยมในการเผยแพรในวงกวางโดยเฉพาะอยางยิ่งในดานการเรียนการสอน
       2.2.1 เมนูตาง ๆ ของโปรแกรม Wireshark
       สําหรับเมนูของ Wiresharkสามารถแบงเปนหมวดตาง ๆ ไดดังนี้
       จาก 2 หมวดหลักของเมนู Wireshark สามารถใชงานไดในลักษณะของเมนูบารและเมนู
ไอคอน แตละหมวดมีขอมูลเบื้องตนดังตอไปนี้
               2.2.1.1 การปรับแตงการตรวจจับ packet เปดการทํางานโปรแกรม เลือกเมนู
Capture
7




                 รูปที่ 2.1 เริ่มการทํางานโปรแกรม เลือกเมนู Capture
    ในกรณีเลือก interface จะพบกับหนาจอที่ทําการแสดงผล network interface ที่ถูกติดตั้ง
ในเครื่องดังนี้




             รูปที่ 2.2 การปรับแตงการตรวจจับแพคเก็จ (packet capture)




   นอกจากนี้ที่ option คุณยังสามารถเลือกการปรับแตงไดอีกครั้งหนึ่ง




           รูปที่ 2.3 การปรับแตง Interface ethernetการตรวจจับ packet
8




       เราสามารถเลือก รีโมท (remote)ไดก็ตอเมื่อมีการกําหนดการทํางานรองรับเทคนิค Port
   Mirroring




                           รูปที่ 2.4 การปรับแตงรองรับ Port Mirroring
                 2.2.1.2 การปรับแตง คาสถิติตาง ๆ ของขอมูลภายหลังการตรวจจับแพคเก็จ
เมื่อหยุดการทํางานถึงสามารถเลือกขอมูลจาก list คนหาขอมูลที่ดักจับ




                        รูปที่ 2.5 หนาตาง list คนหาขอมูลแพคเก็จที่ดักจับ
9




เราสามารถนําผลที่ไดมาวิเคราะหดวย Protocol Hierarchy (ภายใต statistic)




               รูปที่ 2.6 หนาตางแสดงการวิเคราะห ขอมูลโปรโตคอล


นอกจากนี้สามารถสรุปการสือสารกันในเครือขายดวย การติดตอสื่อสาร (Conversations)
                        ่




    รูปที่ 2.7 หนาตางแสดงการติดตอสื่อสาร Conversations ในระบบทีตรวจจับ
                                                                  ่
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




Python2.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-paradigm
language)โดยจะมองอะไรที่มากกวาการ 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




        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) ของ Free
Software 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




2.4 โปรโตคอล (Protocol)
          การเชื่อมโยงเครือขายที่มีฮารดแวรตางกันจําเปนตองกําหนดขอตกลงรวมเรียกวาโปรโตคอล
(protocol) ซึ่งการกําหนด Protocol มีไวเพื่อใหคอมพิวเตอรสื่อสารกันตามขอกําหนด TCP/IP ( ทีซี
พี/ไอพี ) จัดเปนโปรโตคอลหนึ่งที่ออกแบบมาเพื่อแกปญหาการเชื่อมโยงดังกลาว
          โปรโตคอลในความหมายของระบบเครือขายคือขอกําหนดการสื่อสารคอมพิวเตอรหรือ
อุปกรณเครือขายจะมีซอฟตแวรที่ปฏิบัติงานตามโปรโตคอลที่กําหนดพรอมทั้งมีกรรมวิธีแกไขปญหาที่
เกิดขึ้นเชน หากขอมูลที่ขนถายมีขอผิดพลาดคอมพิวเตอรจะดําเนินการตามแบบแผนในโปรโตคอล
เชนสงขอมูลซ้าใหม
               ํ
          ในระบบเครือขายขนาดใหญ อาจมีเสนทางเชื่อมโยงระหวางกันไดเปนจํานวนมาก ขอมูลที่
สงออกไปอาจไมไดใชเสนทางเดียวกันตลอดขอมูลทีสงออกไปกอนอาจไปถึงปลายทางชากวากรณีนี้
                                                    ่
เครื่องปลายทางจําเปนตองจัดลําดับขอมูลใหม กรณีที่คอมพิวเตอรตนทางสามารถสงขอมูลไดเร็วเกิน
กวาปลายทางจะรับไดทัน โปรโตคอลจะกําหนดกรรมวิธีควบคุมการลําเลียงขอมูลระหวางตนทาง
และปลายทางใหสัมพันธกันขอกําหนดตามโปรโตคอล ที่กลาวถึงนี้จะอธิบายโดยละเอียดในแตละ
หัวขอตอไป
          ARP เปนโปรโตคอล สําหรับการจับคู (map) ระหวาง Internet Protocol address (IP
address) กับตําแหนงของอุปกรณในระบบเครือขาย และใชคนหา 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




         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 คือ อยูที่เลเยอร 4
Transport 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




          TCP เปนการนําเอา UDP มาประยุกตเขาดวยกัน แตเพิ่ม layer ของการ สงและรับ packet
เชน การดาวนโหลดจากอินเทอรเน็ต โปรแกรมเว็บบราวเซอรจะเปด socket หรือสรางการเชื่อมตอ
ดวย TCP เพื่อไปยังเครื่องปลายทาง
          TCP/IP เปนโปรโตคอลที่ใชงานอยางแพรหลายในแทบทุกเครือขายไมวาจะเปนเครือขาย
เฉพาะที่ (LAN) หรือเครือขายในบริเวณกวาง (WAN) TCP/IP ( ทีซีพ/ไอพี ) เชื่อมกลุมเครือขายยอย
                                                                      ี
เขาดวยกันเปนเครือขายขนาดใหญหรืออินเตอรเน็ต (Internet)ผานการออกแบบใหเปนอิสระจาก
ชนิดคอมพิวเตอรฮารดแวรและระบบปฏิบัติการกลไกของโปรโตคอลมีความเชื่อถือไดสูงและทํางานได
แมในบางภาวะที่การสื่อสารมีความผิดปกติรวมทั้งสามารถเลือกเสนทางสงขอมูลตามสภาพเครือขาย
ไดในกรณีที่บางเสนทางชํารุด
          อินเทอรเน็ตมีพัฒนาการมาจากอารพาเน็ต (ARP Anet) ซึงเปนเครือขายคอมพิวเตอรภายใต
                                                                    ่
ความรับผิดชอบของอารพา (Advanced Research Projects Agency) ในสังกัดกระทรวงกลาโหม
ของสหรัฐอเมริกาอารพาเน็ตในขั้นตนเปนเครือขายทดลองที่ตั้งขึ้นเพื่อสนับสนุนงานวิจัยดาน
การทหารอารพาซึ่งตอมาไดเปลี่ยนชื่อเปนดารพา (Defense Advanced Research Projects
Agency) ตองการพัฒนาเครือขายที่สามารถสื่อสารกันได แมวาอุปกรณเครือขายบางจุดจะหยุด
ทํางานหรือเสนทางสื่อสารบางเสนทางถูกตัดขาดดารพาวางแผนการขยายเครือขายและเปดการ
เชื่อมตอเขากับเครือขายกับเครือขายตองการโปรโตคอลที่ทํางานไดกับสายสื่อสารและฮารดแวรหลาย
รูปแบบ และสามารถรองรับ Host จํานวนมากได TCP/IP เปนโปรโตคอลที่มีคุณสมบัติดังกลาว
ครบถวน
          TCP/IP ยังไมไดเปนชื่อที่ใชอยางเปนทางการในชวงเวลานั้นหากแตเรียกวาคาหน – เซอรฟ
โปรโตคอลตามชื่อผูพัฒนาคือโรเบิรตคาหน (Robert Kahn) ซึ่งทํางานอยูที่บริษัทบีบีเอ็น (BBN
:NoltBeranek and Newmann) และวินตันเซอรฟ (Vintom Cerf) แหงสถาบันวิจัยสแตนฟอรดดาร
พาวาจางบีบีเอ็นพัฒนา TCP/IP ภายใตยูนิกซของมหาวิทยาลัยแคลิฟอรเนียแหงเบิรคลียและใหทุน
เผยแพรระบบปฏิบัติการออกไปโดยไมคิดมูลคา
          ยูนิกซที่ผนวก TCP/IP และเผยแพรออกไปเมื่อพ.ศ. 2526 ใชชื่อวา 4.2BSD (4.2 Berkeley
System Distribution) จากจุดนั้นเปนตนมาทีซีพ/ไอพีก็ไดแพรหลายไปในมหาวิทยาลัยและ
                                                    ี
หนวยงานอื่นๆและเปนโปรโตคอลมาตรฐานซึ่งใชเชื่อมโยงคอมพิวเตอรที่ทํางานภายใตยูนิกซใน
ปจจุบันจะพบวาระบบปฏิบัติการสวนใหญทั้งคอมพิวเตอรระดับใหญและไมโครคอมพิวเตอร จะ
สนับสนุนการทํางานตามขอกําหนดของ ที TCP/IP เพื่อเชื่อมเขาสูอินเทอรเน็ตไดโดยงาย
         TCP/IP เปนโปรโตคอลที่ไดรับความนิยมอยางแพรหลายเนื่องมาจากความสามารถในการ
เชื่อมเครือขายที่ใชฮารดแวรตางชนิดกันไดอยางกลมกลืนเนื้อหาในบทนี้จะกลาวถึงแบบอางอิง
โปรโตคอลและบริการของโปรโตคอลยอยโดยสังเขปเพื่อใหผูอานมองเห็นภาพโดยรวมตามหัวขอ
ตอไปนี้
16




                  2.4.2.1แบบอางอิง TCP/IP
                  ระบบการสื่อสารขอมูลในเครือขายคอมพิวเตอรประกอบดวยทั้งฮารดแวรและ
ซอฟตแวร ทีซบซอนการมองภาพของระบบโดยรวมทั้งหมดเปนหนวยใหญยอมยากตอการทําความ
              ่ั
เขาใจการใชแบบอางอิงที่แบงระบบออกเปนสวนยอยจะชวยลดความซับซอนและสรางความเขาใจได
งายกวา
         เครือขายคอมพิวเตอรมีแบบอางอิงที่ใชเปนมาตรฐานคือแบบอางอิงโอเอสไอ (OSI : Open
Systems Interconnection Reference Model) ในขณะที่ที TCP/IP เปนโปรโตคอลที่กําเนิดกอน
OSI และมีแบบอางอิงเฉพาะตามรูป 2.9TCP/IP มีระดับชั้นจากลางขึ้นบนและลักษณะสมบัติประจํา
ชั้นตางๆดังตอไปนี้

       ฟสคัล
          ิ            ชั้นของการกําหนดคุณสมบัตฮารดแวรเชนคุณสมบัติทางกล (หัวตอและ
                                                   ิ
                       ชนิดสาย สื่อสาร) และคุณสมบัติทางไฟฟา (ลักษณะสัญญาณและอัตราเร็ว)
                       กลาวโดยรวมแลวระดับชั้นฟสิคัลกําหนดวิธีการถายโอนขอมูลในระดับบิต
                       ตัวอยางของการเชื่อมตอที่ตรงกับระดับชั้นฟสิคับไดแก RS232 และ X.21
                       เปนตน
       เดทาลิงค       ชั้นของซอฟตแวร (ดีไวซไดรเวอร) และฮารดแวรซึ่งทํางานดานการ
                       เชื่อมโยงเขากับสายสื่อสาร ตัวอยางมาตรฐานในระดับชั้นนี้ไดแก
                       อินเทอรเน็ตและโทเค็นริงเปนตน
       เน็ตเวอรค      ชั้นที่ทําหนาที่เลือกเสนทางเพื่อสงขอมูลระหวางสถานีตนทางและสถานี
                       ปลายทางตัวอยางโปรโตคอลในระดับชั้นนี้ไดแก IP
       ทรานสปอรต ชั้นที่หนาที่จัดเตรีมการสงขอมูลระหวางสถานีตนทางและปลายทางโดย
       สถาปนาการเชื่อมตอและรักษาสภาพการเชื่อมตอ ตลอดจนยกเลิกการเชื่อมตอเมื่อสิ้นสุด
กระบวนการ และอาจมีหนาที่เพิ่มเติมในการับประกันความถูกตองของขอมูลที่จัดสง TCP/IP มี
โปรโตคอลประจําชั้นนี้จํานวนสองโปรโตคอลคือ TCP และ UDP
       แอพลิเคชัน
                ้      ระดับชั้นนี้กําหนดการทํางานของโปรโตคอลประยุกตโปรโตคอลใน
                       ระดับชั้นนี้ไดแก เอฟอีพี (FTP) เอสเอ็มทีพี (SMTP) หรือเทลเน็ต
                       (TELNET) เปนตน
17




                                                                                    :

                                รูปที่ 2.9 แบบอางอิงทีซีพี/ไอพี
        IP ซึ่งอยูในระดับชั้นเน็ตเวอรตามรูปที่ 2.10 เปนแกนสําคัญของโปรโตคอลแสตดเนื่องจากทั้ง
TCP และ UDP ตองใช IP เพื่อเลือกเสนทางสง Packet ในระดับชั้นเน็ตเวอรคยังมี ICMP สนับสนุน
การทํางานของ IP เพื่อรายงานขอผิดปกติที่เกิดขึ้นจากการสงแพ็กเก็ตและมี IGMP ดูแลการจัดกลุม
Host ในเครือขายมัลติคาสต
                2.4.2.2 โปรโตคอลแสตค




                            รูปที่ 2.10โปรโตคอลแสตคของ TCP/IP
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




                  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 (Accessibility
Toolkit) เปนเครื่องมือที่ทําใหเขาถึงโปรแกรมไดงายขึ้น เครื่องมือนี้จะชวยใหคนพิการทางรางกาย
ทํางานกับคอมพิวเตอรไดดีซึ่งเครื่องมือ GTK มีการใช Pango เปนชุดเครื่องมือที่จะใชในการทํางาน
เกี่ยวกับระบบวาดขอความทํางานรวมกับ Cairo ชุดเครื่องมือสําหรับการสรางกราฟกแบบเวกเตอร
2D สวน Glade จะใชในการสราง GUI ที่มการเชื่อมตอกับ XML
                                            ี
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




          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




           2.5.9 gtk.CellRendererText - เครื่องมือแสดงผลขอความลงในเซลลที่เปน gtk.TreeView
          gtk.CellRendererTextจะจัดการแสดงผลของขอความที่ลงในเซลล gtk.TreeViewโดยใช
ขอมูลตัวอักษรสี และสไตลทกําหนดโดยคุณสมบัติของมัน ขอความจะถูกตัด ถามันยาวเกินไปและ
                            ี่
ตามคุณสมบัตที่ "ellipsize" ยอมใหใช
                ิ
          2.5.10 gtk.Window - หนาตางระดับบนสุดที่เก็บเครื่องมือเล็กกลองหนึ่ง
          gtk.Windowสรางเครื่องมือที่ผูใชทั่วไปคิดวาเปนหนาตาง นั่นคือพื้นที่ของจอแสดงผลทีถูก
                                                                                                ่
จัดการโดยผูจัดการหนาตางและการตกแตงมักจะมีแถบชือเรื่องดังกลาว และรายการทีจะอนุญาตให
                                                            ่                            ่
ผูใชปด ปรับขนาด และยายหนาตางได PyGTKจัดใหหนาตางทั้งสองประเภท
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




3.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




        เราสามารถตรวจสอบโปรโตคอลของขอมูลภายใตเฟรมไดจากสวนของ 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




         จากแผนผังจะเห็นวาสวนที่เปน 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 บิตของ IP
address ของ interface หรือไม

3.3 การกําหนดความตองการของระบบ

           ก) สามารถเลือกใช การตรวจจับดวยการ คลิกใชใหเหมาะสมกับการนําไปใช เพื่อเพิ่ม
ความยืดหยุนในการใชงานโปรแกรม Python และ ไลบราลี libpcap
           ข) สรางสวนเชื่อมตอประสานกับผูใชในรูปแบบกราฟก (GUI) เพื่อความสะดวกในการใช
งาน โปรแกรม Python และไลบราลี libpcap
27




3.4 ความตองการดานซอฟตแวร
           ซอฟตแวร
           ก) ระบบปฏิบัติการ Ubuntu Desktop รุน Lucid Lyn เวอรชั่น 10.04
           ข) โปรแกรม Python เวอรชั่น 2.5.0 หรือสูงกวาไมเกิน 2.7.0
           ค) Module libpcap – Python-libpcap
           ง) Module Function for Python

3.5 การทํางานของโปรแกรม

        โปรแกรมจะตรวจสอบและแสดงการดักจับขอมูลของเครื่องที่ใชเครือขายที่จําลองขึ้นกับ
เครื่องคอมพิวเตอรที่มี โปรแกรม Python และไลบราลี libpcap ติดตั้งไว และเมื่อตรวจสอบ
คุณสมบัติการบุกรุกหรือโจมตี วามีพอรท ที่มีความเสียงตอการติดไวรัส ในการเขาเว็บไซต และยังมี
การสราง Logging เพื่อแสดงรายละเอียดการเขาใชเพื่อนําไปอางอิงในการตรวจสอบ




           รูปภาพ แสดงการทํางานตรวจสอบแพ็กเก็จดวยโปรแกรม Python Libpcap
28




3.6 โครงสรางการทํางานของโปรแกรม




                     รูปที่ 3.1 โฟลวชารตผังการทํางานของโปรแกรม
29




3.6.1 โครงสรางการรับคา อากิวเมนตเพื่อเริ่มตนการดักจับ




                        รูปที่ 3.2 โฟลวชารตการเริ่มการทํางานดักจับขอมูล
30




3.6.2 การทํางานแปลงแพ็คเก็ต เพื่อตรวจสอบ Ipv4,6




                   รูป 3.3 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ
31




3.6.3 การทํางาน เรียกฟงกชันแยก ชนิด ของ โปรโตคอล




                 รูปที่ 3.4 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (ตอ)
32




3.6.4 การทํางานเรียกฟงกชัน ถอดรหัสของชนิดแพ็คเกต




                 รูปที่ 3.5 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (ตอ)
33




3.6.5 การทํางานเรียกฟงกชัน ถอดรหัสแม็คแอดเดรสทั้งแสดงผลของการดักจับและสราง Logging




              รูปที่ 3.6 โฟลวชารตเงื่อนไข การถอดรหัสและแสดงผลการตรวจจับ
34




3.7 หนาตาสวนตอประสานกราฟก

More Related Content

What's hot

อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์Thalatchanan Netboot
 
กิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
กิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้องกิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
กิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้องjib603
 
อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์Junjira Karaket
 
แบบทดสอบ
แบบทดสอบแบบทดสอบ
แบบทดสอบkruumawan
 
ความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ต
ความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ตความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ต
ความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ตSamart Phetdee
 
รายงาน1111
รายงาน1111รายงาน1111
รายงาน1111witch_4994
 
อาชญากรรม เบส
อาชญากรรม เบสอาชญากรรม เบส
อาชญากรรม เบสMind Candle Ka
 
อาชญากรรมคอมพิวเตอร์11
อาชญากรรมคอมพิวเตอร์11อาชญากรรมคอมพิวเตอร์11
อาชญากรรมคอมพิวเตอร์11Tidatep Kunprabath
 
เรื่อง อาชญากรรมทางคอมพิวเตอร์
เรื่อง อาชญากรรมทางคอมพิวเตอร์เรื่อง อาชญากรรมทางคอมพิวเตอร์
เรื่อง อาชญากรรมทางคอมพิวเตอร์monly2monly
 
อาชญากรรมคอมพิวเตอร์
อาชญากรรมคอมพิวเตอร์อาชญากรรมคอมพิวเตอร์
อาชญากรรมคอมพิวเตอร์suwinee8390
 
อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้องอาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้องwasan601
 
รายงานอาชญากรรมคอมพิวเตอร์
รายงานอาชญากรรมคอมพิวเตอร์รายงานอาชญากรรมคอมพิวเตอร์
รายงานอาชญากรรมคอมพิวเตอร์Kannaree Jar
 

What's hot (15)

อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์
 
Network security
Network securityNetwork security
Network security
 
Network security
Network securityNetwork security
Network security
 
กิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
กิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้องกิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
กิจกรรมที่ 4 อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
 
อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์อาชญากรรมทางคอมพิวเตอร์
อาชญากรรมทางคอมพิวเตอร์
 
แบบทดสอบ
แบบทดสอบแบบทดสอบ
แบบทดสอบ
 
ความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ต
ความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ตความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ต
ความรู้เบื้องต้นเกี่ยวกับอินเทอร์เน็ต
 
รายงาน1111
รายงาน1111รายงาน1111
รายงาน1111
 
อาชญากรรม เบส
อาชญากรรม เบสอาชญากรรม เบส
อาชญากรรม เบส
 
อาชญากรรมคอมพิวเตอร์11
อาชญากรรมคอมพิวเตอร์11อาชญากรรมคอมพิวเตอร์11
อาชญากรรมคอมพิวเตอร์11
 
Ch8
Ch8Ch8
Ch8
 
เรื่อง อาชญากรรมทางคอมพิวเตอร์
เรื่อง อาชญากรรมทางคอมพิวเตอร์เรื่อง อาชญากรรมทางคอมพิวเตอร์
เรื่อง อาชญากรรมทางคอมพิวเตอร์
 
อาชญากรรมคอมพิวเตอร์
อาชญากรรมคอมพิวเตอร์อาชญากรรมคอมพิวเตอร์
อาชญากรรมคอมพิวเตอร์
 
อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้องอาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
อาชญากรรมคอมพิวเตอร์และกฎหมายที่เกี่ยวข้อง
 
รายงานอาชญากรรมคอมพิวเตอร์
รายงานอาชญากรรมคอมพิวเตอร์รายงานอาชญากรรมคอมพิวเตอร์
รายงานอาชญากรรมคอมพิวเตอร์
 

Similar to บทที่+1 3..

โครงงานคอม 5
โครงงานคอม 5โครงงานคอม 5
โครงงานคอม 5wipawanmmiiww
 
Software 7
Software 7Software 7
Software 7paween
 
Group1 กระบวนการเทคโนโลยีสารสนเทศ2007
Group1 กระบวนการเทคโนโลยีสารสนเทศ2007Group1 กระบวนการเทคโนโลยีสารสนเทศ2007
Group1 กระบวนการเทคโนโลยีสารสนเทศ2007MMp'New Aukkaradet
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ Peem Jirayut
 
5 8-120816125651-phpapp02
5 8-120816125651-phpapp025 8-120816125651-phpapp02
5 8-120816125651-phpapp02Sky Aloha'
 
5 8-120816125651-phpapp02
5 8-120816125651-phpapp025 8-120816125651-phpapp02
5 8-120816125651-phpapp02Sky Aloha'
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ jamiezaa123
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .jamiezaa123
 
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ jamiezaa123
 
องค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศองค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศNpatsa Pany
 
บทที่ 7
บทที่ 7บทที่ 7
บทที่ 7noonnn
 
02 บทที่ 2-เอกสารที่เกี่ยวข้อง
02 บทที่ 2-เอกสารที่เกี่ยวข้อง02 บทที่ 2-เอกสารที่เกี่ยวข้อง
02 บทที่ 2-เอกสารที่เกี่ยวข้องAriya Soparux
 
Network01 12
Network01 12Network01 12
Network01 12paween
 
องค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศองค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศOrapan Chamnan
 
องค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศองค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศOrapan Chamnan
 

Similar to บทที่+1 3.. (20)

โครงงานคอม 5
โครงงานคอม 5โครงงานคอม 5
โครงงานคอม 5
 
Addiction I T
Addiction  I TAddiction  I T
Addiction I T
 
Software 7
Software 7Software 7
Software 7
 
Group1 กระบวนการเทคโนโลยีสารสนเทศ2007
Group1 กระบวนการเทคโนโลยีสารสนเทศ2007Group1 กระบวนการเทคโนโลยีสารสนเทศ2007
Group1 กระบวนการเทคโนโลยีสารสนเทศ2007
 
้html
้html้html
้html
 
Unit1new
Unit1newUnit1new
Unit1new
 
Unit1new (1)
Unit1new (1)Unit1new (1)
Unit1new (1)
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
5 8-120816125651-phpapp02
5 8-120816125651-phpapp025 8-120816125651-phpapp02
5 8-120816125651-phpapp02
 
5 8-120816125651-phpapp02
5 8-120816125651-phpapp025 8-120816125651-phpapp02
5 8-120816125651-phpapp02
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
 
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
 
องค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศองค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศ
 
บทที่ 7
บทที่ 7บทที่ 7
บทที่ 7
 
689 2
689 2689 2
689 2
 
02 บทที่ 2-เอกสารที่เกี่ยวข้อง
02 บทที่ 2-เอกสารที่เกี่ยวข้อง02 บทที่ 2-เอกสารที่เกี่ยวข้อง
02 บทที่ 2-เอกสารที่เกี่ยวข้อง
 
Network01 12
Network01 12Network01 12
Network01 12
 
องค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศองค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศ
 
องค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศองค์ประกอบของระบบสารสนเทศ
องค์ประกอบของระบบสารสนเทศ
 

บทที่+1 3..

  • 1. บทที่1 บทนํา 1.1 ความเปนมา ปจจุบันเทคโนโลยีดานระบบคอมพิวเตอรและเครือขายและอินเตอรเน็ต มีความล้ําหนาไป เปนอยางมาก ทั้งนี้เพื่อตอบสนองความตองการของหนวยงานองคกรตางๆ จึงมีการนําเทคโนโลยีเขา มาใชในชีวิตประจําวันอยางแพรหลาย เพราะมีความสอดคลองกันกับผูคนในปจจุบันหรือที่เรียกวา ยุคไซเบอรโดยการประยุกตนําคอมพิวเตอรมามีสวนในการประกอบธุรกิจทั้งในหลายดาน ทั้งในระบบ เศรษฐกิจ การศึกษาและใชเพื่อความบันเทิงเชนการติดตอสื่อสาร Instant Messenger เชน MSN, E- Mail, Video Conference System และ Social Network ซึ่งในการนั้นจําเปนตองมีการเชื่อมตอ กับระบบเครือขายอินเตอรเน็ตโดยทั้งสิ้น และเห็นไดวาในโลกแหงยุคโลกาภิวัฒนนี้เทคโนโลยีมีความ จําเปนอยางยิ่งการติดตอสื่อสารระหวางกัน ไมวาจะอยูแหงไหน ที่ใด สามารถแลกเปลียนความคิด ่ รวมทั้ง คนควาในเรื่องที่สนใจได เมื่อความล้ําสมัยมีประโยชนมากมาย จึงมีขอเสียในดานของ เทคโนโลยีคอมพิวเตอรและเครือขายอินเตอรเน็ต นําไปสูการใชงานอยางผิดประเภทผิดรูปแบบและ สรางความเดือดรอนใหแกผูอนโดยไมคํานึงถึง ผูใดเปนสําคัญโดยเขามากอกวนระบบเครือขายของ ื่ องคกร หรือแมกระทั่งอาจจะเปนทั้งบุคลากรภายในขององคกร ที่ใชงานโดยรูเทาไมถึงการณ และ กอใหเกิดความเสี่ยงที่จะเปดชองโหวใหผูประสงครายเขามาโจมตี และที่แยไปกวานั้นยังกลายเปน ชองทางในการกอกวนระบบจาก Virus หรือ Trojan ซึ่งจะกอใหเกิดผลเสีย และกระทบไปยังระบบ เครือขายภายในองคกรและเครือขายใหญในระบบไดแตระบบที่สรางขึ้นดวยระบบอินเตอรเน็ตนั้น สามารถตรวจสอบ ไอพีและหมายเลขเฉพาะที่ใชอางถึงอุปกรณที่ตอกับเครือขายได และการเขา เว็บไซตที่มีความเสี่ยงตอการทําใหเครือขาย มีสภาวะเสี่ยงซึ่งทําใหมีความเสถียรลดนอยลง จึงเปน ที่มาของโปรแกรมดักจับและตรวจสอบขอมูลแพ็คเกจ (Development of Program Packet Sniffer with Python) เพื่อปองกันระบบความเสียหายของเครื่องคอมพิวเตอรและเครือขายภายใน องคกร รวมไปถึงสามารถนําขอมูลจากการตรวจจับการกอกวนระบบเครือขายขององคกรนั้นๆ มา เปนหลักฐาน เพื่อดําเนินคดีตามกฎหมายกับบุคคลไมประสงคดีกับองคกร ตามที่พระราชบัญญัติวา ดวยการกระทําความผิดเกี่ยวกับคอมพิวเตอร พ.ศ. 2550 มีผลบังคับใชตงแตวันที่ 22 สิงหาคม 2550 ั้ ที่วาดวยมีผูกระทําดวยประการใด ๆ ใหระบบ คอมพิวเตอรไมสามารถทํางานตามคําสั่งหรือทําให การทํางานผิดพลาด หรือใชวิธีการใด ๆ เขาลวงรูขอมูล แกไข หรือทําลายขอมูลของบุคคลอื่นใน ระบบคอมพิวเตอรโดยมิชอบถือเปนความผิด
  • 2. 2 1.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.4 1.5 ผลที่คาดวาจะไดรับ 1.5.1 การพัฒนาเพิ่มสวนตอประสานกับผูใชในรูปแบบกราฟก Graphic User Interface (GUI)ของ libpcap ดวย python ใหใชงานไดงายขึ้นและมีระเบียบในการตรวจสอบการทํางานไดดี ขึ้น 1.5.2 เกิดความปลอดภัยกับระบบคอมพิวเตอรและระบบเครือขายมากขึ้น สามารถปองกัน และลดปญหาการถูกผูไมหวังดีละเมิดสิทธิสวนบุคคล และสรางความเสียหายตอระบบเครือขายหรือ องคกร
  • 3. 3 1.6 ระยะเวลาดําเนินงาน ตารางที่ 1.1 ขั้นตอนการดําเนินงาน ระยะเวลาดําเนนงาน ิ สัปดาห / สัปดาห 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1.ศึกษาเทคโนโลยีและ ระบบตางๆที่เกี่ยวของ และจําเปน 2.กําหนดขอบเขตของ โครงงาน 3.ออกแบบโครงสราง ของโครงงาน 4.ออกแบบหนาตาของ โปรแกรม 5.ทดลองการเขียน โปรแกรม 6.ปรับปรุงขอผิดพลาด ตางๆใหมีความถูกตอง เหมาะสม 7.สรุปและจัดทําเอกสาร ประกอบการทําโครงงาน
  • 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 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 เปนชุดคําสั่งแบบ Opensource ที่ใหการเชื่อมตอทางเครือขายกับระบบตรวจจับแพคเก็จถูก สรางในป 1994 โดย Mccane, Leres และ Jacobson นักวิจัยที่ Lawrence Berkeley National National 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 ผูสนใจใชงานสามารถดาวนโหลดมาติดตั้งใชงานไดฟรี เพราะเปน Open Source Software โดยสามารถโหลดไดที่ http://www.wireshark.org ในปจจุบันโปรแกรมประเภทดักจับขอมูลมีหลายประเภท Wireshark เปนโปรแกรมดักจับ ขอมูลที่มการใชงานโปรแกรมใหมีการรองรับการใชงานในลักษณะที่ยากตอการนําไปใชในทางไมดี จึง ี ไดรับความนิยมในการเผยแพรในวงกวางโดยเฉพาะอยางยิ่งในดานการเรียนการสอน 2.2.1 เมนูตาง ๆ ของโปรแกรม Wireshark สําหรับเมนูของ Wiresharkสามารถแบงเปนหมวดตาง ๆ ไดดังนี้ จาก 2 หมวดหลักของเมนู Wireshark สามารถใชงานไดในลักษณะของเมนูบารและเมนู ไอคอน แตละหมวดมีขอมูลเบื้องตนดังตอไปนี้ 2.2.1.1 การปรับแตงการตรวจจับ packet เปดการทํางานโปรแกรม เลือกเมนู Capture
  • 7. 7 รูปที่ 2.1 เริ่มการทํางานโปรแกรม เลือกเมนู Capture ในกรณีเลือก interface จะพบกับหนาจอที่ทําการแสดงผล network interface ที่ถูกติดตั้ง ในเครื่องดังนี้ รูปที่ 2.2 การปรับแตงการตรวจจับแพคเก็จ (packet capture) นอกจากนี้ที่ option คุณยังสามารถเลือกการปรับแตงไดอีกครั้งหนึ่ง รูปที่ 2.3 การปรับแตง Interface ethernetการตรวจจับ packet
  • 8. 8 เราสามารถเลือก รีโมท (remote)ไดก็ตอเมื่อมีการกําหนดการทํางานรองรับเทคนิค Port Mirroring รูปที่ 2.4 การปรับแตงรองรับ Port Mirroring 2.2.1.2 การปรับแตง คาสถิติตาง ๆ ของขอมูลภายหลังการตรวจจับแพคเก็จ เมื่อหยุดการทํางานถึงสามารถเลือกขอมูลจาก list คนหาขอมูลที่ดักจับ รูปที่ 2.5 หนาตาง list คนหาขอมูลแพคเก็จที่ดักจับ
  • 9. 9 เราสามารถนําผลที่ไดมาวิเคราะหดวย Protocol Hierarchy (ภายใต statistic) รูปที่ 2.6 หนาตางแสดงการวิเคราะห ขอมูลโปรโตคอล นอกจากนี้สามารถสรุปการสือสารกันในเครือขายดวย การติดตอสื่อสาร (Conversations) ่ รูปที่ 2.7 หนาตางแสดงการติดตอสื่อสาร Conversations ในระบบทีตรวจจับ ่
  • 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 Python2.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-paradigm language)โดยจะมองอะไรที่มากกวาการ 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 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) ของ Free Software 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 2.4 โปรโตคอล (Protocol) การเชื่อมโยงเครือขายที่มีฮารดแวรตางกันจําเปนตองกําหนดขอตกลงรวมเรียกวาโปรโตคอล (protocol) ซึ่งการกําหนด Protocol มีไวเพื่อใหคอมพิวเตอรสื่อสารกันตามขอกําหนด TCP/IP ( ทีซี พี/ไอพี ) จัดเปนโปรโตคอลหนึ่งที่ออกแบบมาเพื่อแกปญหาการเชื่อมโยงดังกลาว โปรโตคอลในความหมายของระบบเครือขายคือขอกําหนดการสื่อสารคอมพิวเตอรหรือ อุปกรณเครือขายจะมีซอฟตแวรที่ปฏิบัติงานตามโปรโตคอลที่กําหนดพรอมทั้งมีกรรมวิธีแกไขปญหาที่ เกิดขึ้นเชน หากขอมูลที่ขนถายมีขอผิดพลาดคอมพิวเตอรจะดําเนินการตามแบบแผนในโปรโตคอล เชนสงขอมูลซ้าใหม ํ ในระบบเครือขายขนาดใหญ อาจมีเสนทางเชื่อมโยงระหวางกันไดเปนจํานวนมาก ขอมูลที่ สงออกไปอาจไมไดใชเสนทางเดียวกันตลอดขอมูลทีสงออกไปกอนอาจไปถึงปลายทางชากวากรณีนี้ ่ เครื่องปลายทางจําเปนตองจัดลําดับขอมูลใหม กรณีที่คอมพิวเตอรตนทางสามารถสงขอมูลไดเร็วเกิน กวาปลายทางจะรับไดทัน โปรโตคอลจะกําหนดกรรมวิธีควบคุมการลําเลียงขอมูลระหวางตนทาง และปลายทางใหสัมพันธกันขอกําหนดตามโปรโตคอล ที่กลาวถึงนี้จะอธิบายโดยละเอียดในแตละ หัวขอตอไป ARP เปนโปรโตคอล สําหรับการจับคู (map) ระหวาง Internet Protocol address (IP address) กับตําแหนงของอุปกรณในระบบเครือขาย และใชคนหา 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 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 คือ อยูที่เลเยอร 4 Transport 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 TCP เปนการนําเอา UDP มาประยุกตเขาดวยกัน แตเพิ่ม layer ของการ สงและรับ packet เชน การดาวนโหลดจากอินเทอรเน็ต โปรแกรมเว็บบราวเซอรจะเปด socket หรือสรางการเชื่อมตอ ดวย TCP เพื่อไปยังเครื่องปลายทาง TCP/IP เปนโปรโตคอลที่ใชงานอยางแพรหลายในแทบทุกเครือขายไมวาจะเปนเครือขาย เฉพาะที่ (LAN) หรือเครือขายในบริเวณกวาง (WAN) TCP/IP ( ทีซีพ/ไอพี ) เชื่อมกลุมเครือขายยอย ี เขาดวยกันเปนเครือขายขนาดใหญหรืออินเตอรเน็ต (Internet)ผานการออกแบบใหเปนอิสระจาก ชนิดคอมพิวเตอรฮารดแวรและระบบปฏิบัติการกลไกของโปรโตคอลมีความเชื่อถือไดสูงและทํางานได แมในบางภาวะที่การสื่อสารมีความผิดปกติรวมทั้งสามารถเลือกเสนทางสงขอมูลตามสภาพเครือขาย ไดในกรณีที่บางเสนทางชํารุด อินเทอรเน็ตมีพัฒนาการมาจากอารพาเน็ต (ARP Anet) ซึงเปนเครือขายคอมพิวเตอรภายใต ่ ความรับผิดชอบของอารพา (Advanced Research Projects Agency) ในสังกัดกระทรวงกลาโหม ของสหรัฐอเมริกาอารพาเน็ตในขั้นตนเปนเครือขายทดลองที่ตั้งขึ้นเพื่อสนับสนุนงานวิจัยดาน การทหารอารพาซึ่งตอมาไดเปลี่ยนชื่อเปนดารพา (Defense Advanced Research Projects Agency) ตองการพัฒนาเครือขายที่สามารถสื่อสารกันได แมวาอุปกรณเครือขายบางจุดจะหยุด ทํางานหรือเสนทางสื่อสารบางเสนทางถูกตัดขาดดารพาวางแผนการขยายเครือขายและเปดการ เชื่อมตอเขากับเครือขายกับเครือขายตองการโปรโตคอลที่ทํางานไดกับสายสื่อสารและฮารดแวรหลาย รูปแบบ และสามารถรองรับ Host จํานวนมากได TCP/IP เปนโปรโตคอลที่มีคุณสมบัติดังกลาว ครบถวน TCP/IP ยังไมไดเปนชื่อที่ใชอยางเปนทางการในชวงเวลานั้นหากแตเรียกวาคาหน – เซอรฟ โปรโตคอลตามชื่อผูพัฒนาคือโรเบิรตคาหน (Robert Kahn) ซึ่งทํางานอยูที่บริษัทบีบีเอ็น (BBN :NoltBeranek and Newmann) และวินตันเซอรฟ (Vintom Cerf) แหงสถาบันวิจัยสแตนฟอรดดาร พาวาจางบีบีเอ็นพัฒนา TCP/IP ภายใตยูนิกซของมหาวิทยาลัยแคลิฟอรเนียแหงเบิรคลียและใหทุน เผยแพรระบบปฏิบัติการออกไปโดยไมคิดมูลคา ยูนิกซที่ผนวก TCP/IP และเผยแพรออกไปเมื่อพ.ศ. 2526 ใชชื่อวา 4.2BSD (4.2 Berkeley System Distribution) จากจุดนั้นเปนตนมาทีซีพ/ไอพีก็ไดแพรหลายไปในมหาวิทยาลัยและ ี หนวยงานอื่นๆและเปนโปรโตคอลมาตรฐานซึ่งใชเชื่อมโยงคอมพิวเตอรที่ทํางานภายใตยูนิกซใน ปจจุบันจะพบวาระบบปฏิบัติการสวนใหญทั้งคอมพิวเตอรระดับใหญและไมโครคอมพิวเตอร จะ สนับสนุนการทํางานตามขอกําหนดของ ที TCP/IP เพื่อเชื่อมเขาสูอินเทอรเน็ตไดโดยงาย TCP/IP เปนโปรโตคอลที่ไดรับความนิยมอยางแพรหลายเนื่องมาจากความสามารถในการ เชื่อมเครือขายที่ใชฮารดแวรตางชนิดกันไดอยางกลมกลืนเนื้อหาในบทนี้จะกลาวถึงแบบอางอิง โปรโตคอลและบริการของโปรโตคอลยอยโดยสังเขปเพื่อใหผูอานมองเห็นภาพโดยรวมตามหัวขอ ตอไปนี้
  • 16. 16 2.4.2.1แบบอางอิง TCP/IP ระบบการสื่อสารขอมูลในเครือขายคอมพิวเตอรประกอบดวยทั้งฮารดแวรและ ซอฟตแวร ทีซบซอนการมองภาพของระบบโดยรวมทั้งหมดเปนหนวยใหญยอมยากตอการทําความ ่ั เขาใจการใชแบบอางอิงที่แบงระบบออกเปนสวนยอยจะชวยลดความซับซอนและสรางความเขาใจได งายกวา เครือขายคอมพิวเตอรมีแบบอางอิงที่ใชเปนมาตรฐานคือแบบอางอิงโอเอสไอ (OSI : Open Systems Interconnection Reference Model) ในขณะที่ที TCP/IP เปนโปรโตคอลที่กําเนิดกอน OSI และมีแบบอางอิงเฉพาะตามรูป 2.9TCP/IP มีระดับชั้นจากลางขึ้นบนและลักษณะสมบัติประจํา ชั้นตางๆดังตอไปนี้ ฟสคัล ิ ชั้นของการกําหนดคุณสมบัตฮารดแวรเชนคุณสมบัติทางกล (หัวตอและ ิ ชนิดสาย สื่อสาร) และคุณสมบัติทางไฟฟา (ลักษณะสัญญาณและอัตราเร็ว) กลาวโดยรวมแลวระดับชั้นฟสิคัลกําหนดวิธีการถายโอนขอมูลในระดับบิต ตัวอยางของการเชื่อมตอที่ตรงกับระดับชั้นฟสิคับไดแก RS232 และ X.21 เปนตน เดทาลิงค ชั้นของซอฟตแวร (ดีไวซไดรเวอร) และฮารดแวรซึ่งทํางานดานการ เชื่อมโยงเขากับสายสื่อสาร ตัวอยางมาตรฐานในระดับชั้นนี้ไดแก อินเทอรเน็ตและโทเค็นริงเปนตน เน็ตเวอรค ชั้นที่ทําหนาที่เลือกเสนทางเพื่อสงขอมูลระหวางสถานีตนทางและสถานี ปลายทางตัวอยางโปรโตคอลในระดับชั้นนี้ไดแก IP ทรานสปอรต ชั้นที่หนาที่จัดเตรีมการสงขอมูลระหวางสถานีตนทางและปลายทางโดย สถาปนาการเชื่อมตอและรักษาสภาพการเชื่อมตอ ตลอดจนยกเลิกการเชื่อมตอเมื่อสิ้นสุด กระบวนการ และอาจมีหนาที่เพิ่มเติมในการับประกันความถูกตองของขอมูลที่จัดสง TCP/IP มี โปรโตคอลประจําชั้นนี้จํานวนสองโปรโตคอลคือ TCP และ UDP แอพลิเคชัน ้ ระดับชั้นนี้กําหนดการทํางานของโปรโตคอลประยุกตโปรโตคอลใน ระดับชั้นนี้ไดแก เอฟอีพี (FTP) เอสเอ็มทีพี (SMTP) หรือเทลเน็ต (TELNET) เปนตน
  • 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 ระดับชั้นทรานสปอรต มีสองโปรโตคอลสําคัญ 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 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 (Accessibility Toolkit) เปนเครื่องมือที่ทําใหเขาถึงโปรแกรมไดงายขึ้น เครื่องมือนี้จะชวยใหคนพิการทางรางกาย ทํางานกับคอมพิวเตอรไดดีซึ่งเครื่องมือ GTK มีการใช Pango เปนชุดเครื่องมือที่จะใชในการทํางาน เกี่ยวกับระบบวาดขอความทํางานรวมกับ Cairo ชุดเครื่องมือสําหรับการสรางกราฟกแบบเวกเตอร 2D สวน Glade จะใชในการสราง GUI ที่มการเชื่อมตอกับ XML ี
  • 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 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 2.5.9 gtk.CellRendererText - เครื่องมือแสดงผลขอความลงในเซลลที่เปน gtk.TreeView gtk.CellRendererTextจะจัดการแสดงผลของขอความที่ลงในเซลล gtk.TreeViewโดยใช ขอมูลตัวอักษรสี และสไตลทกําหนดโดยคุณสมบัติของมัน ขอความจะถูกตัด ถามันยาวเกินไปและ ี่ ตามคุณสมบัตที่ "ellipsize" ยอมใหใช ิ 2.5.10 gtk.Window - หนาตางระดับบนสุดที่เก็บเครื่องมือเล็กกลองหนึ่ง gtk.Windowสรางเครื่องมือที่ผูใชทั่วไปคิดวาเปนหนาตาง นั่นคือพื้นที่ของจอแสดงผลทีถูก ่ จัดการโดยผูจัดการหนาตางและการตกแตงมักจะมีแถบชือเรื่องดังกลาว และรายการทีจะอนุญาตให ่ ่ ผูใชปด ปรับขนาด และยายหนาตางได PyGTKจัดใหหนาตางทั้งสองประเภท
  • 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 3.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 เราสามารถตรวจสอบโปรโตคอลของขอมูลภายใตเฟรมไดจากสวนของ 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 จากแผนผังจะเห็นวาสวนที่เปน 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 บิตของ IP address ของ interface หรือไม 3.3 การกําหนดความตองการของระบบ ก) สามารถเลือกใช การตรวจจับดวยการ คลิกใชใหเหมาะสมกับการนําไปใช เพื่อเพิ่ม ความยืดหยุนในการใชงานโปรแกรม Python และ ไลบราลี libpcap ข) สรางสวนเชื่อมตอประสานกับผูใชในรูปแบบกราฟก (GUI) เพื่อความสะดวกในการใช งาน โปรแกรม Python และไลบราลี libpcap
  • 27. 27 3.4 ความตองการดานซอฟตแวร ซอฟตแวร ก) ระบบปฏิบัติการ Ubuntu Desktop รุน Lucid Lyn เวอรชั่น 10.04 ข) โปรแกรม Python เวอรชั่น 2.5.0 หรือสูงกวาไมเกิน 2.7.0 ค) Module libpcap – Python-libpcap ง) Module Function for Python 3.5 การทํางานของโปรแกรม โปรแกรมจะตรวจสอบและแสดงการดักจับขอมูลของเครื่องที่ใชเครือขายที่จําลองขึ้นกับ เครื่องคอมพิวเตอรที่มี โปรแกรม Python และไลบราลี libpcap ติดตั้งไว และเมื่อตรวจสอบ คุณสมบัติการบุกรุกหรือโจมตี วามีพอรท ที่มีความเสียงตอการติดไวรัส ในการเขาเว็บไซต และยังมี การสราง Logging เพื่อแสดงรายละเอียดการเขาใชเพื่อนําไปอางอิงในการตรวจสอบ รูปภาพ แสดงการทํางานตรวจสอบแพ็กเก็จดวยโปรแกรม Python Libpcap
  • 28. 28 3.6 โครงสรางการทํางานของโปรแกรม รูปที่ 3.1 โฟลวชารตผังการทํางานของโปรแกรม
  • 29. 29 3.6.1 โครงสรางการรับคา อากิวเมนตเพื่อเริ่มตนการดักจับ รูปที่ 3.2 โฟลวชารตการเริ่มการทํางานดักจับขอมูล
  • 30. 30 3.6.2 การทํางานแปลงแพ็คเก็ต เพื่อตรวจสอบ Ipv4,6 รูป 3.3 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ
  • 31. 31 3.6.3 การทํางาน เรียกฟงกชันแยก ชนิด ของ โปรโตคอล รูปที่ 3.4 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (ตอ)
  • 32. 32 3.6.4 การทํางานเรียกฟงกชัน ถอดรหัสของชนิดแพ็คเกต รูปที่ 3.5 โฟลวชารตเงื่อนไขการแตกขอมูลของแพ็คเกจ (ตอ)
  • 33. 33 3.6.5 การทํางานเรียกฟงกชัน ถอดรหัสแม็คแอดเดรสทั้งแสดงผลของการดักจับและสราง Logging รูปที่ 3.6 โฟลวชารตเงื่อนไข การถอดรหัสและแสดงผลการตรวจจับ