I. SnifferFox คืออะไร
II. SnifferFox ทำงานอย่างไร
III. โครงสร้างไดเร็กทอรี SnifferFox
IV คำอธิบายฟังก์ชัน SnifferFox
คุณสมบัติ V. SnifferFox
VI. ขยาย SnifferFox
ปกเกล้าเจ้าอยู่หัว
8. บทสรุป
I. SnifferFox คืออะไร
SnifferFox เป็นตัวดมกลิ่น (Sniffer) ที่ทำงานบนแพลตฟอร์ม Windows ใช้เพื่อสกัดกั้นแพ็กเก็ตข้อมูลทั้งหมดที่ส่งผ่านการ์ดเครือข่ายที่ระบุของคอมพิวเตอร์ในระบบ และวิเคราะห์และรวบรวมสถิติบนแพ็กเก็ตเหล่านี้
SnifferFox ได้รับการพัฒนาโดยใช้ Winpcap ซึ่งเป็นโครงการโอเพ่นซอร์ส เราจึงเลือกมันเพื่อให้ได้แพ็กเก็ตข้อมูลดั้งเดิม (เนื่องจาก Socket ทำงานที่เลเยอร์ IP และไม่สามารถรับแพ็กเก็ต ARP และ RARP ได้ ดังนั้นเราจึงไม่ได้ใช้มัน) ดังนั้น โปรดติดตั้ง Winpcap ก่อนที่จะติดตั้ง SnifferFox ไม่เช่นนั้นระบบจะแจ้งว่าไม่พบการ์ดเครือข่าย
เราเลือก Borland C++ Builder เพื่อพัฒนา Sniffer นี้ หลังจากทำงานหนักมาเกือบ 2 เดือน เราก็เขียนโค้ดไปเกือบ 6,000 บรรทัด (ไฟล์ docs/codestat.txt มีสถิติโดยละเอียด) และในที่สุดซอฟต์แวร์ก็ได้รับการพัฒนาโดยพื้นฐานแล้ว ตอนนี้เราสามารถเปิดตัวเวอร์ชันอัลฟ่าได้แล้ว อย่างไรก็ตาม อาจยังมีข้อผิดพลาดมากมายที่เรายังไม่ค้นพบ และอาจได้รับการแก้ไขในเวอร์ชันต่อๆ ไป
SnifferFox เป็นซอฟต์แวร์ฟรีและเป็นมิตรต่อสิ่งแวดล้อมที่ไม่จำเป็นต้องติดตั้งหรือลงทะเบียน เราสัญญาว่าเราจะไม่แก้ไขรีจิสทรีของคอมพิวเตอร์ของคุณ และสามารถทำงานได้โดยตรง (แน่นอนว่า เพื่อความสะดวกของคุณ เราได้จัดทำแพ็คเกจการติดตั้ง)
II. หลักการทำงานของ SnifferFox ซอฟต์แวร์จะตั้งค่าการ์ดเครือข่ายเป็นโหมดที่หลากหลาย จากนั้นรับข้อมูลที่ได้รับจากการ์ดเครือข่าย วิเคราะห์แพ็กเก็ตข้อมูลตามโปรโตคอล TCP/IP กรองแพ็กเก็ตบางส่วนออกตามความต้องการของผู้ใช้ และ จากนั้นกรองแพ็กเก็ตที่เหลือออกไป แพ็กเก็ตข้อมูลจะถูกเขียนลงในบัฟเฟอร์ (บล็อกหน่วยความจำที่มีขนาดที่ระบุซึ่งสามารถตั้งค่าได้ด้วยตนเองตามขนาดหน่วยความจำของคอมพิวเตอร์ของผู้ใช้) และจะแสดงบนอินเทอร์เฟซผู้ใช้ บัฟเฟอร์เต็ม ระบบจะเขียนข้อมูลลงในบัฟเฟอร์โดยอัตโนมัติ
ภาพด้านล่างเป็นภาพประกอบง่ายๆ
SnifferFox เป็นระบบมัลติเธรด ซึ่งสามารถแบ่งคร่าวๆ ออกเป็น 3 เธรด (มีเพียง 2 เธรดที่ใช้งานจริงระหว่างการใช้งาน), เธรดการจับแพ็กเก็ต (Sniffer Thread), การวิเคราะห์โปรโตคอลและเธรดการกรอง และอินเทอร์เฟซผู้ใช้ เมื่อทำงานที่ดาต้าลิงก์เลเยอร์ สามารถรับเฟรมข้อมูลดั้งเดิมได้ ดังนั้น SnifferFox จึงสามารถรองรับโปรโตคอลพื้นฐาน เช่น ARP และ RARP ได้
เนื่องจากปริมาณข้อมูลในแพ็กเก็ตที่ Sniffer ดักจับนั้นมีค่อนข้างมาก จึงไม่สมจริงที่จะเก็บแพ็กเก็ตเหล่านี้ไว้ในหน่วยความจำ ดังนั้นที่นี่เราขอแนะนำสองแนวคิดในระบบปฏิบัติการ นั่นคือ Cache และ Buffer แคชคือรายการเชื่อมโยงที่จัดเก็บแพ็กเก็ตข้อมูลชั่วคราว เพื่อไม่ให้คอมพิวเตอร์ของผู้ใช้เป็นภาระมากเกินไป เราจึงจำกัดความยาวสูงสุดของรายการที่เชื่อมโยงนี้ไว้ที่ 5,000 รายการ เมื่อความยาวของรายการที่เชื่อมโยงนี้ถึงขีดจำกัดบนที่ผู้ใช้กำหนด ระบบจะเขียนข้อมูลในรายการที่เชื่อมโยงไปยังบัฟเฟอร์โดยอัตโนมัติ จากนั้นจึงล้างแคช
บัฟเฟอร์เป็นไฟล์ไบนารีซึ่งประกอบด้วยแพ็กเก็ตข้อมูลทีละชุด เราอาจเรียกแต่ละแพ็คเกจว่าบันทึกเช่นกัน ความยาวไม่คงที่ เนื่องจากไม่มีวิธีกำหนดขนาดของแพ็กเก็ตข้อมูล
ประกอบด้วย 4 ส่วน ได้แก่ ID (4 ไบต์) ส่วนชดเชย (4 ไบต์) ข้อมูลที่เกี่ยวข้องกับเฟรมข้อมูล (16 ไบต์) ข้อมูล (ความยาวแปรผันได้ แต่สามารถคำนวณได้ตามสูตรการคำนวณในรูป) ส่วนชดเชยคือความยาวบันทึก ซึ่งส่วนใหญ่จะใช้เพื่อกำหนดตำแหน่งสิ้นสุดของบันทึกและตำแหน่งเริ่มต้นของบันทึกถัดไป
III. โครงสร้างไดเร็กทอรี SnifferFox แน่นอนว่าสิ่งที่เราต้องอธิบายที่นี่คือโครงสร้างไดเร็กทอรีของเวอร์ชันรีลีสและเวอร์ชันการพัฒนานั้นแตกต่างกัน มีไดเร็กทอรีในเวอร์ชันพัฒนามากกว่าและซับซ้อนกว่า ทั้งหมดในเวอร์ชันวางจำหน่าย ดังนั้นที่นี่เราจะแนะนำเฉพาะไดเร็กทอรีของเวอร์ชันการพัฒนา ซึ่งสามารถเปรียบเทียบกับเวอร์ชันวางจำหน่ายได้ (อ้างอิงถึง docs/dir.txt)
+สนิฟเฟอร์ฟ็อกซ์
+Bin ไฟล์ไบนารีที่คอมไพล์โดยคอมไพเลอร์มีไฟล์ไลบรารีลิงก์แบบไดนามิก
+ กำหนดค่าไฟล์การกำหนดค่า
+ รูปภาพรูปภาพ
+Obj ไฟล์ระดับกลางที่สร้างโดยคอมไพเลอร์
+ไดเรกทอรีเอกสารเอกสาร
+ไดเร็กทอรีโครงการโครงการ
+โค้ดคอร์หลัก ซึ่งส่วนใหญ่เป็นโครงสร้างข้อมูลที่กำหนดด้วยตนเองและการนำไปปฏิบัติ
+รหัส Gui สำหรับการนำส่วนต่อประสานกราฟิกไปใช้
+ รองรับหลายภาษา
+แคชไดเร็กทอรีแคช ใช้เพื่อจัดเก็บไฟล์ชั่วคราว
+การควบคุมของบุคคลที่สามที่ใช้ในระบบ 3Com
+ บันทึกไดเร็กทอรีผู้ใช้ ใช้เพื่อบันทึกไฟล์ผู้ใช้
IV คำอธิบายฟังก์ชัน SnifferFox
1. การสกัดกั้นแพ็กเก็ตข้อมูล ผู้ใช้สามารถระบุการ์ดเครือข่ายของคอมพิวเตอร์ จากนั้นใช้ SnifferFox เพื่อสกัดกั้นแพ็กเก็ตข้อมูลทั้งหมดที่ส่งผ่านการ์ดเครือข่ายนี้ หลังจากดักจับพัสดุเหล่านี้แล้ว ระบบจะแสดงข้อมูลสรุปของพัสดุในรูปแบบรายการและข้อมูลเฉพาะของพัสดุในรูปแบบแผงตามที่ต้องการ
2. การกรองแพ็กเก็ต: หลังจากที่เราได้รับแพ็กเก็ตที่ตรงตามข้อกำหนดของเราแล้ว เราก็สามารถกรองแพ็กเก็ตที่ดักจับได้ ตามความต้องการที่แตกต่างกัน เราสามารถกำหนดตัวกรองที่แตกต่างกัน 2 แบบ: ตัวกรองโปรโตคอลและตัวกรองที่อยู่ IP ตัวกรองทั้งสองนี้ทำงานพร้อมกัน เฉพาะแพ็กเก็ตที่ตรงตามข้อกำหนดทั้งสองนี้เท่านั้นที่จะยังคงอยู่ และแพ็กเก็ตอื่น ๆ ที่ไม่ตรงตามข้อกำหนดจะถูกละทิ้ง
3. สถิติแพ็กเก็ต เพื่ออำนวยความสะดวกให้ผู้ใช้เข้าใจการกระจายแพ็กเก็ตที่ถูกดัก เรามีฟังก์ชันสถิติแพ็กเก็ตข้อมูล ซึ่งจะนับเปอร์เซ็นต์และจำนวนแพ็กเก็ตตามระดับโปรโตคอลที่แตกต่างกัน แสดงเป็นแผนภาพ
4. การวิเคราะห์โปรโตคอล ตามประเภทของแพ็คเก็ต เราจะวิเคราะห์และแสดงข้อมูลแพ็คเก็ตตามสถานการณ์ต่างๆ SnifferFox รองรับประเภทโปรโตคอลจำนวนมาก ตั้งแต่ชั้นลิงก์ข้อมูลไปจนถึงชั้นแอปพลิเคชัน
โปรโตคอลที่อยู่ด้านล่างเลเยอร์แอปพลิเคชันได้รับการวิเคราะห์โดยละเอียด และทุกฟิลด์ในแพ็กเก็ตข้อมูลถูกนำออกไป สำหรับเลเยอร์แอปพลิเคชันนั้น มีการระบุโปรโตคอลเพียง 112 รายการในขณะนี้ อย่างไรก็ตาม เนื่องจากมีโปรโตคอลเลเยอร์แอปพลิเคชันจำนวนมากและแต่ละโปรโตคอลค่อนข้างซับซ้อน เราจึงไม่ได้ดำเนินการวิเคราะห์เชิงลึก
5. การเรียงลำดับอัจฉริยะ เพื่ออำนวยความสะดวกให้ผู้ใช้สามารถค้นหาแพ็คเกจที่ระบุได้อย่างรวดเร็ว เรามีฟังก์ชันการเรียงลำดับอัจฉริยะ เมื่อผู้ใช้หยุดดักจับแพ็กเก็ตข้อมูล เขาเพียงคลิกที่ฟิลด์ใดฟิลด์หนึ่งในรายการ และระบบจะเรียงลำดับโดยอัตโนมัติ ข้อมูลในรายการ หากต้องการเรียงลำดับจากน้อยไปมาก ให้คลิกอีกครั้งเพื่อเปลี่ยนวิธีการเรียงลำดับ
6. ตรวจจับข้อมูลการ์ดเครือข่าย ระบบสามารถตรวจจับจำนวนการ์ดเครือข่ายในระบบได้โดยอัตโนมัติ (รวมถึงการ์ดเครือข่ายเสมือน) และแสดงแบบไดนามิกในรายการเมนู ในขณะเดียวกันก็สามารถตรวจจับข้อมูลที่เกี่ยวข้องของการ์ดเครือข่ายได้
7. หลังจากทดสอบเป็นกระบวนการ daemon สำหรับการสกัดกั้นแพ็กเก็ตแล้ว SnifferFox สามารถทำงานบนคอมพิวเตอร์ได้หลายวันโดยไม่ขัดข้อง ดังนั้นเราจึงสามารถใช้เป็นโปรแกรมสกัดกั้นแพ็กเก็ตเฉพาะและเรียกใช้เหมือนกระบวนการ daemon (แน่นอนว่าสิ่งนี้มีบางอย่าง ข้อจำกัด เมื่อมีแพ็กเก็ตที่ถูกดักจับมากเกินไป เช่น หลายกิกะไบต์ จะยากสักหน่อย เพราะในเวอร์ชันนี้เราไม่ได้แบ่งไฟล์บัฟเฟอร์ออกเป็นชิ้นๆ ฟีเจอร์นี้อาจจะเพิ่มในเวอร์ชันต่อๆ ไป)
8. การแสดงสถานะแบบไดนามิก เพื่อไม่ให้กระทบต่องานอื่นของผู้ใช้เมื่อสกัดกั้นแพ็คเกจ เราสามารถย่อขนาด SnifferFox จากนั้นมันจะหายไปบนทาสก์บาร์โดยอัตโนมัติและแสดงเฉพาะไอคอนถาดเล็ก ๆ ในขณะที่ทำงาน ไอคอนจะกะพริบ แบบไดนามิกและหยุดเมื่อหยุด นอกจากนี้เรายังสร้างหน้าต่างลอยขนาดเล็กเพื่อแสดงสถานะของระบบซึ่งจะถูกวางไว้ที่ด้านบนของหน้าต่างตามค่าเริ่มต้น
9. การบันทึกและการโหลดแพ็กเก็ตข้อมูล ผู้ใช้สามารถบันทึกแพ็กเก็ตข้อมูลที่ถูกดักไว้ในไฟล์ที่ระบุ (นามสกุล *.sni) จากนั้นโหลดแพ็กเก็ตเหล่านั้นผ่าน SnifferFox เมื่อจำเป็น ด้วยวิธีนี้ แพ็กเก็ตข้อมูลและแพ็กเก็ตที่ดักฟังจึงสามารถดูได้ที่นั่น ก็ไม่แตกต่างกันเลยและคุณยังสามารถตัดสินใจแบบไดนามิกที่จะดูเพจได้ (ระบบมีฟังก์ชันเพจอยู่แล้วและเป็นไดนามิกเพจ เราสามารถกำหนดจำนวนเรคคอร์ดในแต่ละเพจได้เอง)
10. เนื้อหาของตัวเลือกผู้ใช้ที่เก็บไว้และตัวเลือกระบบจะถูกบันทึกไว้ใน config/config.ini ซึ่งเป็นไฟล์ใน เมื่อการตั้งค่าผู้ใช้ (เช่น อินเทอร์เฟซ ภาษา ฯลฯ) มีการเปลี่ยนแปลง การเปลี่ยนแปลงจะถูกบันทึกไว้ใน และจะถูกใช้ในครั้งถัดไปที่ระบบทำงาน โดยจะตอบสนองโดยอัตโนมัติตามการตั้งค่าเหล่านี้
คุณสมบัติ V. SnifferFox
1. เรียบง่ายและใช้งานได้จริง ความเรียบง่ายคือเป้าหมายของเรา แม้ว่าการออกแบบและการใช้งานระบบจะค่อนข้างซับซ้อน แต่เราต้องการให้ผู้ใช้เห็นระบบที่เรียบง่ายและใช้งานได้จริง
2. อินเทอร์เฟซที่สวยงาม
ไม่มีอะไรจะพูดเกี่ยวกับอินเทอร์เฟซของ SnifferFox ระบบประกอบด้วยอินเทอร์เฟซมาตรฐาน 5 ชุด (Winxp, MacOS, Protein, DeepBlue, BlueGrass) สามารถเปลี่ยนอินเทอร์เฟซระบบได้ทันเวลาโดยไม่ต้องรีสตาร์ทระบบและเป็นการทดแทนที่สมบูรณ์ (แน่นอนว่านี่ต้องขอบคุณการควบคุมของบุคคลที่สามของเรา)
3. การสนับสนุนหลายภาษา เราคำนึงถึงปัญหานี้เมื่อออกแบบระบบ ดังนั้น SnifferFox จึงรองรับหลายภาษา เราสามารถขยายได้อย่างง่ายดาย เราเพียงแปลภาษา Lang/ภาษาอังกฤษเป็นภาษาที่เกี่ยวข้องเท่านั้น ไม่จำเป็นต้องทำการเปลี่ยนแปลงโปรแกรมใดๆ . ระบบรองรับภาษาจีนและอังกฤษแล้วซึ่งสามารถสลับเปลี่ยนได้อย่างง่ายดาย
4. มีความสามารถในการปรับขนาดได้ค่อนข้างดี เราได้พิจารณาความสามารถในการปรับขนาดได้อย่างสมบูรณ์ในแง่ของภาษา อินเทอร์เฟซ และโปรโตคอล ดังนั้นจึงค่อนข้างง่ายในการพัฒนาเวอร์ชันใหม่โดยใช้เวอร์ชันนี้ สิ่งนี้ช่วยให้คุณนำโค้ดที่มีอยู่กลับมาใช้ใหม่ได้เป็นอย่างดี
5. ความสะดวกในการใช้งาน นี่เป็นปัญหาที่เราพิจารณาเป็นอย่างมาก เราพยายามอย่างเต็มที่เพื่อทำให้วิธีการทำงานของระบบสอดคล้องกับพฤติกรรมของผู้คน เพื่อให้ผู้ใช้พบว่าสะดวกและใช้งานง่าย
6. รองรับโปรโตคอลจำนวนมาก ในอีเทอร์เน็ต SnifferFox ได้วิเคราะห์โปรโตคอลเกือบทั้งหมดที่อยู่ต่ำกว่าเลเยอร์แอปพลิเคชันของตระกูล TCP/IP และสามารถจดจำโปรโตคอลเลเยอร์แอปพลิเคชันได้ 112 โปรโตคอล
VI. ขยาย SnifferFox
การขยาย SnifferFox ไม่ใช่เรื่องง่าย เว้นแต่คุณจะรู้โครงสร้างของมันเป็นอย่างดี แน่นอนว่า แค่อ่านเอกสารนี้ตอนนี้ก็เป็นเรื่องยาก เราสามารถขยายออกไปได้เป็น 3 ด้าน คือ
1. การขยายโปรโตคอล
SnifferFox ใช้วิธีการเชิงวัตถุเพื่อวิเคราะห์การออกแบบและการนำไปใช้งาน ดังนั้นหากต้องการขยายออกไป คุณจะต้องเขียนคลาสการวิเคราะห์โปรโตคอลที่เกี่ยวข้องเพื่อแก้ไขปัญหา จากนั้นจึงเชื่อมต่อเข้ากับโปรแกรมหลัก ซึ่งจำเป็นต้องมีความเข้าใจโดยละเอียดเกี่ยวกับโครงสร้างระบบปัจจุบัน
2. การขยายอินเทอร์เฟซทำได้โดยการเปลี่ยนการควบคุมของบุคคลที่สาม SUIPack (ไดเร็กทอรี 3com) สำหรับรายละเอียด โปรดดูเอกสารที่เกี่ยวข้องของ SUIPack
3. การขยายภาษา นี่เป็นส่วนที่ง่ายที่สุดของฟังก์ชันการขยายใน SnifferFox เพียงแปลไฟล์ Lang/english โดยตรง
ปกเกล้าเจ้าอยู่หัว
ทีม FoxBackBone: zhengsh, gourf
VIII. บทสรุป แม้ว่า SnifferFox จะเป็นเพียงซอฟต์แวร์ขนาดเล็ก แต่เราสามารถเข้าใจได้เพียงส่วนเล็กๆ เท่านั้นผ่านเอกสารนี้ ดังนั้น หากคุณต้องการเข้าใจโดยละเอียด แค่ผ่านเอกสารนี้เท่านั้นยังไม่พอ อ่านเพิ่มเติมเป็นเพียงซอร์สโค้ดเท่านั้น เนื่องจากเราไม่มีเวลามากพอที่จะเขียนรายละเอียดการออกแบบระบบ
หากคุณมีข้อเสนอแนะหรือความคิดเห็นเกี่ยวกับ SnifferFox หลังจากใช้งาน ไม่ว่าจะเป็นคำชม คำวิจารณ์ หรือด้านอื่น ๆ โปรดส่งข้อเสนอแนะไปที่อีเมลของเรา: shaohui_1983#163.com, gouruifeng_529#sohu.com ขอบคุณสำหรับการสนับสนุน
นอกจากนี้โปรแกรมยังใช้ส่วนประกอบ Suipack และ WinPcap โปรดดาวน์โหลดจากเว็บไซต์นี้