Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
585 KB
Nội dung
1 Bộ môn Mạng Truyền Thông NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN …………………………………………………………………………………… … ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIP ……………………………………………………………………………………… …………………………………………………………………………………… MỤC LỤC CHƯƠNG I: I CƠ SỞ LÝ THUYẾT Giới thiệu TCP/IP Các lớp mơ hình TCP/IP .4 Các bước đóng gói liệu mơ hình TCP/IP .5 Một số giaothức mô hình TCP/IP II GiaothứcICMP 11 Giới thiệu ICMP 11 Cấu trúc 12 Danh sách thông điệp điều khiển giaothứcICMP 12 CHƯƠNG II: THIẾT KẾ VÀ XÂYDỰNGCHƯƠNGTRÌNH 16 I Phân tích u cầu 16 II Phân tích chức 16 Phương thức hoạt động ứng dụng: .16 Xâydựng chức năng: 16 III Xâydựng chức 17 CHƯƠNG III: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 19 I Môi trường triển khai 19 Hệ thống .19 Phần mềm 19 II Kết chức chương trình: 19 Giao diện chương trình: .19 Chức quét địa chương trình: 20 Võ Duy Dũng – Lớp 07T4 – Nhóm 09B Bộ mơn Mạng Truyền Thơng DANH MỤC HÌNH VẼ Hình 1.1 Mơ hình TCP/IP Hình 1.2 Các bước đóng gói mơ hình TCP/IP Hình 1.3 Các giaothức khác TCP/IP Hình 1.4 ARP Header Hình 1.5 IP Header Hình 1.6 Vị trí ICMP message Hình 1.7 ICMP Header Hình 1.8 IGMP Header .8 Hình 1.9 UDP Header Hình 1.10 Cách thiết lập kết nối giaothức 10 Hình 1.11 Truyền, nhận gói tin TCP 10 Hình 2.1 Cấu trúc gói tin ICMP 12 Hình 3.1 Chươngtrình trước quét 19 Hình 3.2 Quét dãy địa mà người dùng nhập vào 20 Hình 3.3 Chức quét theo lớp .20 Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIPCHƯƠNG I: CƠ SỞ LÝ THUYẾT I Giới thiệu TCP/IP Các lớp mô hình TCP/IP Hình 1.1 Mơ hình TCP/IP Mơ hình tham chiếu TCP/IP tương tự kiến trúc OSI, sau số tính chất lớp mơ hình tham chiếu TCP/IP: Lớp Application: quản lý giao thức, hỗ trợ việc trình bày, mã hóa quản lý gọi Lớp Application hỗ trợ nhiều ứng dụng, : FTP (File Transfer Protocol), HTTP (Hypertext Transfer Protocol), SMTP (Simple Mail Transfer Protocol), DNS (Domain Name System), TFTP (Trivial File Transfer Protocol) Lớp Transport: đảm nhiệm việc vận chuyển từ nguồn đến đích Tầng Transport đảm nhiệm việc truyền liệu thông qua hai nghi thức: TCP (Transmission Control Protocol) UDP (User Datagram Protocol) Lớp Internet: đảm nhiệm việc lựa chọn đường tốt cho gói tin Nghi thức sử dụng tầng nghi thứcIP (Internet Protocol) Lớp Network Interface: có tính chất tương tự như hai lớp Data Link Physical kiến trúc OSI Võ Duy Dũng – Lớp 07T4 – Nhóm 09B Bộ mơn Mạng Truyền Thơng Các bước đóng gói liệu mơ hình TCP/IP Hình 1.2 Các bước đóng gói mơ hình TCP/IP Một số giaothức mơ hình TCP/IP Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIP Hình 1.3 Các giaothức khác TCP/IP a Giaothức ARP (Address Resolution Protocol) giaothức RARP (Reverse Address Resolution Protocol) Trên mạng cục hai trạm liên lạc với chúng biết địa MAC Như vấn đề đặt phải thực ánh xạ địa IP (32 bit) địa MAC (48 bit) trạm Giaothức ARP xâydựngđể chuyển đổi từ địa IP sang địa MAC cần thiết.Khn dạng gói tin ARP hình đây: Hình 1.4 ARP Header Võ Duy Dũng – Lớp 07T4 – Nhóm 09B Bộ môn Mạng Truyền Thông Ngược lại, giaothức RARP dùngđể chuyển đổi từ địa MAC sang địa IP Khn dạng gói tin RARP tương tự khn dạng gói tin ARP hình Chỉ khác trường Operation có giá trị cho gói tin RARP request giá trị cho gói tin RARP reply Các giaothức ARP RARP phận IP mà IPdùng đến chúng cần b GiaothứcIP (Internet Protocol) GiaothứcIPgiaothức quan trọng giaothức TCP/IP Mục đích giaothứcIP cung cấp khả kết nối mạng thành liên mạng để truyền liệu IPgiaothức cung cấp dịch vụ phân phát datagram theo kiểu không liên kết khơng tin cậy nghĩa khơng cần có giai đoạn thiết lập liên kết trước truyền liệu, không đảm bảo IP datagram tới đích khơng trì thơng tin datagram gửi Khuôn dạng đơn vị liệu dùngIP mơ tả sau: Hình 1.5 IP Header c GiaothứcICMP (Internet Control Message Protocol) - ICMPgiaothức thông điệp, thường xem phần lớp IP, dùngđể trao đổi thơng tin điều khiển dòng số liệu, thông báo lỗi thông tin trạng thái khác giaothức TCP/IP - Khuôn dạng thơng điệp ICMP mối quan hệ với IP datagram minh họa qua hình Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIP Hình 1.6 Vị trí ICMP message Có nhiều loại thơng điệp ICMP, thơng điệp ICMP có khn dạng riêng nó, chúng ln bắt đầu với trường giống nhau: Hình 1.7 ICMP Header Type (8 bit) Code (8 bit) Checksum (16 bit) Có 15 giá trị khác cho trường type, để định nghĩa thông điệp ICMP cụ thể Một vài loại thông điệp ICMP sử dụng thêm giá trị khác trường code để định nghĩa cho d Giaothức IGMP (Internet Group Management Protocol) IGMP giaothức sử dụng host router mà hỗ trợ kỹ thuật multicasting Giống ICMP, IGMP thường xem phần lớp IP Tuy nhiên, IGMP không giống giaothức khác, giaothức thơng điệp có kích thước cố định khơng có phần liệu Hình vẽ sau khn dạng thơng điệp IGMP phiên 2: Hình 1.8 IGMP Header Võ Duy Dũng – Lớp 07T4 – Nhóm 09B Bộ môn Mạng Truyền Thông Ý nghĩa tham số: Type (8 bit): định nghĩa loại thông điệp IGMP Respond time (8 bit): giá trị thời gian tối đa mà host phải trả lời truy vấn Checksum (16 bit): kiểm soát lỗi Group address (32 bit): dùngđể định nhóm cụ thể hay thiết lập giá trị 0.0.0.0 để tất nhóm e Giaothức UDP (User Datagram Protocol) UDP giaothức không liên kết, cung cấp dịch vụ giao vận không tin cậy, sử dụng thay cho TCP tầng giao vận Khác với TCP, UDP khơng có chức thiết lập giải phóng liên kết, khơng có chế báo nhận (ACK), không xếp đơn vị liệu (datagram) đến dẫn đến tình trạng trùng liệu mà khơng có thơng báo lỗi cho người gửi Khuôn dạng UDP datagram mơ tả sau: Hình 1.9 UDP Header Ý nghĩa tham số: Số hiệu cổng nguồn (Source Port - 16 bit): số hiệu cổng nơi gửi datagram Số hiệu cổng đích (Destination Port - 16 bit): số hiệu cổng nơi datagram chuyển tới Độ dài UDP (Length - 16 bit): độ dài tổng cộng kể phần header gói UDP datagram Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIP 10 UDP Checksum (16 bit): dùngđể kiểm soát lỗi, phát lỗi UDP datagram bị loại bỏ mà khơng có thơng báo trả lại cho trạm gửi UDP có chế độ gán quản lý số hiệu cổng (port number) để định danh cho ứngdụng chạy trạm mạng Do có chức phức tạp nên UDP có xu hoạt động nhanh so với TCP Nó thường dùng cho ứngdụng khơng đòi hỏi có độ tin cậy cao giao vận f Giaothức TCP (Transmission Control Protocol) TCP cung cấp kết nối tin cậy hai máy tính, kết nối thiết lập trước liệu bắt đầu truyền TCP gọi nghi thức hướng kết nối, với nghi thức TCP trình hoạt động trải qua ba bước sau: Thiết lập kết nối (Connection establishment) Truyền liệu (Data transfer) Kết thúc kết nối (Connection termination) TCP phân chia thông điệp thành segment, sau ráp segment lại bên nhận truyền lại gói liệu bị Với TCP liệu đến đích thứ tự, TCP cung cấp Vitual Circuit ứngdụng bên gửi bên nhận Giaothức TCP thiết lập kết nối phương pháp “Bắt tay lần” (threeway handshake) Hình 1.10 Cách thiết lập kết nối giaothức Hình vẽ ví dụ cách thức truyền, nhận gói tin giaothức TCP Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIP - Redirect Message Chuyển Datagram cho mạng Chuyển Datagram cho Host Chuyển Datagram cho TOS mạng Chuyển Datagram cho TOS host Thay địa host Dành riêng - Echo Request Lặp lại yêu cầu – Router Advertisement Router quảng bá 10 - Router Solicitation Router khám phá/lựa chọn TTL hết trình truyền Xác nhận phân mảnh hết hạn Con trỏ lỗi Thiếu lựa chọn cần thiết Tình trạng chiều dài 13 - Timestamp Dấu thời gian 14 - Timestamp Reply Trả lời dấu thời gian 15 - Information Request Yêu cầu thông tin 16 - Information Reply Phản hồi thông tin 17 - Address Mask Request Yêu cầu địa mặt nạ 18 - Address Mask Reply Trả lời địa mặt nạ 11 - Time Exceeded 12 - Parameter Problem: Bad IP header 19 Dành riêng cho bảo mật 20 tới 29 Dành cho thử nghiệm độ bền 30 - Traceroute 31 14 Yêu cầu thông tin Chuyển đổi Datagram bị lỗi Võ Duy Dũng – Lớp 07T4 – Nhóm 09B 15 Bộ môn Mạng Truyền Thông 32 Chuyển host di động 33 Where-Are-You (ban đầu cho IPv6) 34 Here-I-Am (ban đầu cho IPv6) 35 Yêu cầu đăng kí di động 36 Trả lời đăng kí di động 37 Yêu cầu tên miền 38 Trả lời tên miền 39 40 41 42 tới 255 Thuật toán SKIP Discovery Protocol, Simple Key – Quản lý giaothức Internet Photuris, bảo mật thất bại Các giaothứcICMP cho thử nghiệm di động Seamoby [RFC4065] Dành riêng Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIPCHƯƠNG II: I 16 THIẾT KẾ VÀ XÂYDỰNGCHƯƠNGTRÌNH Phân tích yêu cầu Ứngdụng phải đảm bảo thực yêu cầu sau: Gửi gói tin ICMP đến tất máy đến dải địa mạng LAN Bắt gói tin IP gửi tách gói tin ICMP từ gói tin IPđể xử lý Có thể quét theo lớp địa Private II Phân tích chức Phương thức hoạt động ứng dụng: Ứngdụng hoạt động cách gửi gói tin ICMP tới tất máy mạng LAN cần quét Dãy địa IPđể gửi gói tin ICMP người dùng nhập vào hay chọn lựa việc gửi theo lớp (lớp A, lớp B, lớp C ) Trong gửi gói tin ứngdụng bắt gói tin phản hồi từ địa IPđể tiến hành xử lý Và dựa vào thơng tin phản hồi mà biết địa IP có tồn mạng hay khơng Để gửi gói tin tới tất địa chi ta dùng vòng lặp for lồng tương ứng với octet địa IPv4 for (byte i = ipf1; i 16); return (UInt16)(~chcksm); } } } Lớp Kiemtra.cs: Kiểm tra thơng tin trả gói tin ICMP using using using using System; System.Net; System.Net.Sockets; System.Text; namespace LTM_Scan_IP { class Kiemtra { public static bool Check(string st) { Võ Duy Dũng – Lớp 07T4 – Nhóm 09B 23 Bộ môn Mạng Truyền Thông byte[] data = new byte[1024]; int recv; Socket host = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); IPEndPoint iep = new IPEndPoint(IPAddress.Parse(st), 0); EndPoint ep = (EndPoint)iep; ICMP packet = new ICMP(); packet.Type = 0x08; packet.Code = 0x00; packet.Checksum = 0; Buffer.BlockCopy(BitConverter.GetBytes((short)1), 0, packet.Message, 0, 2); Buffer.BlockCopy(BitConverter.GetBytes((short)1), 0, packet.Message, 2, 2); data = Encoding.ASCII.GetBytes("test packet"); Buffer.BlockCopy(data, 0, packet.Message, 4, data.Length); packet.Messagesize = data.Length + 4; int packetsize = packet.Messagesize + 4; UInt16 chcksum = packet.getChecksum(); packet.Checksum = chcksum; host.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100); host.SendTo(packet.getByte(), packetsize, SocketFlags.None, iep); try { data = new byte[1024]; recv = host.ReceiveFrom(data, ref ep); ICMP response = new ICMP(data, recv); int Indentifier = BitConverter.ToInt16(response.Message, 0); int Sequence = BitConverter.ToUInt16(response.Message, 2); System.Console.WriteLine("response from: {0}", ep.ToString()); System.Console.WriteLine("Type {0}", response.Type); System.Console.WriteLine("Code: {0}", response.Code); System.Console.WriteLine("Indentifier: {0}", Indentifier); System.Console.WriteLine("Sequence: {0}", Sequence); string stringData = Encoding.ASCII.GetString(response.Message, 4, response.Messagesize 4); System.Console.WriteLine("data: {0}", stringData); host.Close(); if (response.Type == && response.Code == && Indentifier == && Sequence == 1) return true; else return false; } catch (SocketException) Võ Duy Dũng – Lớp 07T4 – Nhóm 09B ỨngdụnggiaothứcICMPđểxâydựngchươngtrìnhScanIP 24 { System.Console.WriteLine("No response from remote host"); host.Close(); return false; } } } } Form1.cs: Xử lý kiện Winform using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; System.Net; System.Threading; namespace LTM_Scan_IP { public partial class frMain : Form { int stt; byte ipf1, ipf2, ipf3, ipf4, ipt1, ipt2, ipt3, ipt4; public frMain() { InitializeComponent(); stt = 1; } delegate void DlgThreadCode(); public void ThreadCode() { if (this.prgressBar.InvokeRequired) { this.Invoke(new DlgThreadCode(ThreadCode)); } else { for (byte i = ipf1; i