Báo cáo đồ án cơ sở ngành mạng phần nguyên lý hệ điều hành tìm hiểu về lập trình hook và xây dựng chương trình keylogger đơn giản phần lập trình mạng xây dựng game ai là triệu phú Báo cáo đồ án cơ sở ngành mạng phần nguyên lý hệ điều hành tìm hiểu về lập trình hook và xây dựng chương trình keylogger đơn giản phần lập trình mạng xây dựng game ai là triệu phú
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN -🙞🙞🙞🙞🙞 - BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG Phần Nguyên lý hệ điều hành:Tìm hiểu lập trình Hook Xây dựng chương trình Keylogger đơn giản Phần Lập trình mạng: Xây dựng game Ai triệu phú MỤC LỤC DANH SÁCH HÌNH VẼ DANH SÁCH CÁC TỪ VIẾT TẮT MỞ ĐẦU PHẦN 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH .6 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Thông điệp hàng đợi thông điệp 1.1.1 Giới thiệu thông điệp hàng đợi thông điệp 1.1.2 Sử dụng thông điệp hàng đợi thông điệp 1.2 Kỹ thuật Hook 1.2.1 Tổng quan Hook 1.2.2 Các hàm thường dùng .10 1.2.3 Sử dụng Hook 11 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG 12 2.1 Phân tích yêu cầu .12 2.1.1 Yêu cầu chức .12 2.1.2 Yêu cầu giao diện người dùng 12 2.1.3 Yêu cầu tương thích .12 2.2 Phân tích chức 12 a) Chức chạy ẩn ứng dụng .12 b) Bắt kiện từ bàn phím .13 c) Ghi tệp văn theo ngày tháng, theo ứng dụng 13 CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 14 3.1 Môi trường triển khai .14 3.2 Kết giao diện số chức chương trình 14 3.3 Đánh giá nhận xét .16 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 16 Những kết đạt 16 Những vấn đề tồn lại .16 Hướng phát triển 16 PHẦN 2: LẬP TRÌNH MẠNG .17 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 17 1.1 Giao thức TCP/IP 17 1.2 Socket Port 17 1.3 Mô hình Client/Server .18 1.3.1 Giới thiệu 18 1.3.2 Mơ hình truyền tin Client/Server 19 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 19 2.1 Phân tích yêu cầu .19 2.1.1 Yêu cầu chức .19 2.1.2 Yêu cầu tương thích .19 2.2 Thiết kế hệ thống .20 a) Sơ đồ Use-Case 20 b) Sơ đồ lớp 20 CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 21 3.1 Môi trường triển khai .21 3.2 Kết giao diện số chức chương trình 21 3.3 Đánh giá nhận xét .24 KẾT LUẬN CHUNG 25 DANH SÁCH HÌNH VẼ Hình 1.1: Mơ tả bắt kiện từ bàn phím Hình 1.2: Kết ghi lại mã ASCII phím gõ Hình 1.3: Kết file.txt ghi lại phím gõ Hình 2.1: Mơ hình truyền tin Client/Server Hình 2.2: Sơ đồ Use-Case Hình 2.3: Sơ đồ lớp Hình 2.4: Giao diện chạy Server Hình 2.5: Giao diện chạy Client Hình 2.6: Giao diện Client đăng nhập thành cơng Hình 2.7: Giao diện game Hình 2.8: Giao diện nhấn nút “?”- hướng dẫn chơi game Hình 2.9: Giao diện chơi game DANH SÁCH CÁC TỪ VIẾT TẮT Từ viết tắt TCP/IP MS-DOS DLL IDE Diễn giải Transmission Control Protocol/Internet Protocol Microsoft Disk Operating System Dynamic Link Library Integrated Development Environment MỞ ĐẦU Đồ án Cơ sở ngành Mạng học phần quan trọng trình học tập sinh viên Đồ án giúp sinh viên tiếp cận rèn luyện kiến thức, kỹ liên quan đến Môn học Nguyên lý hệ điều hành Lập trình mạng Trong khn khổ đồ án, hướng dẫn Nguyễn Tấn Khơi, em chọn đề tài Xây dựng chương trình Keylogger đơn giản cho phần nguyên lý hệ điều hành Xây dựng game “Ai triệu phú” chơi qua mạng cho phần lập trình mạng Thơng qua đề tài này, em hiểu rõ phần nguyên lý hoạt động xử lý thông điệp hệ điều hành biết cách lập trình với giao thức TCP/IP theo mơ hình Client/Server Do thời gian kiến thức em cịn hạn chế nên khơng tránh khỏi sai sót định q trình làm đồ án Rất mong nhận góp ý quý thầy cô Em xin chân thành cảm ơn! PHẦN 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH TIÊU ĐỀ: XÂY DỰNG CHƯƠNG TRÌNH KEYLOGGER ĐƠN GIẢN CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Thông điệp hàng đợi thông điệp 1.1.1 Giới thiệu thông điệp hàng đợi thông điệp Không giống ứng dụng MS-DOS, ứng dụng Windows hướng kiện, chúng không thực gọi hàm rõ ràng để lấy đầu vào, thay vào chúng chờ cho hệ thống chuyển đầu vào đến chúng a) Thông điệp windows Hệ thống chuyển đầu vào cho thủ tục cửa sổ dạng thông điệp Thông điệp tạo hệ thống ứng dụng Hệ thống tạo thông điệp kiện đầu Hệ thống tạo thông điệp để đáp ứng với thay đổi hệ thống ứng dụng gây Một ứng dụng tạo thông điệp đến trực tiếp cửa sổ riêng để thực thi tác vụ để giao tiếp với cửa sổ ứng dụng khác Hệ thống gửi thông điệp đến thủ tục cửa sổ với gồm bốn tham số: cửa sổ xử lý, định danh thông điệp, hai giá trị gọi thông số thông điệp b) Các loại thông điệp Thông điệp hệ thống xác định Hệ thống gửi đăng thông điệp hệ thống xác định giao tiếp với ứng dụng Nó sử dụng thơng điệp để kiểm soát hoạt động ứng dụng cung cấp đầu vào thông tin khác cho ứng dụng để xử lý Ứng dụng gửi đăng thông điệp hệ thống xác định Các ứng dụng thường sử dụng thông điệp để kiểm soát hoạt động cửa sổ điều khiển tạo cách sử dụng lớp cửa sổ đăng ký trước Thông điệp ứng dụng xác định Một ứng dụng tạo thông điệp để sử dụng cửa sổ riêng để giao tiếp với cửa sổ tiến trình khác c) Định tuyến thông điệp Hệ thống sử dụng hai phương pháp để định tuyến thông điệp đến thủ tục cửa sổ: đăng thông điệp vào hàng đợi gọi hàng đợi thông điệp, đối tượng nhớ hệ thống xác định lưu trữ thông điệp tạm thời gửi thông điệp trực tiếp đến thủ tục cửa sổ Thông điệp xếp hàng đợi Hệ thống hiển thị cửa số thời điểm Để định tuyến đầu vào chuột bàn phím đến cửa sổ thích hợp, hệ thống sử dụng hàng đợi thông điệp Thông điệp không xếp hàng đợi Các thông điệp không xếp hàng đợi gửi đến thủ tục cửa sổ đích, bỏ qua hàng đợi thơng điệp hệ thống hàng đợi thông điệp luồng Hệ thống thông điệp gửi thông điệp không xếp hàng đợi để báo cho cửa sổ kiện có ảnh hưởng đến d) Xử lý thơng điệp Một ứng dụng phải loại bỏ xử lý thông điệp đăng đến hàng đợi thông điệp luồng Một ứng dụng đơn luồng thơng điệp sử dụng vịng lặp thơng điệp hàm WinMain để loại bỏ gửi thông điệp đến thủ tục cửa sổ thích hợp để xử lý Các ứng dụng có nhiều luồng bao gồm vịng lặp thông điệp luồng tạo cửa sổ Vịng lặp thơng điệp Một vịng lặp thơng điệp đơn giản bao gồm gọi hàm tới ba hàm sau: GetMessage, TranslateMessage DispatchMessage Lưu ý có lỗi, GetMessage trả –1, cần có kiểm tra đặc biệt Hàm GetMessage lấy thông điệp từ hàng đợi chép vào cấu trúc kiểu MSG Nó trả giá trị nonzero, trừ gặp thơng điệp WM_QUIT, trường hợp trả FALSE kết thúc vòng lặp Trong ứng dụng đơn luồng, kết thúc vịng lặp thơng điệp thường bước việc đóng ứng dụng Một ứng dụng kết thúc vịng lặp riêng cách sử dụng hàm PostQuitMessage, thông điệp phản hồi với thông điệp WM_DESTROY thủ tục cửa sổ cửa sổ ứng dụng Một vịng lặp thơng điệp luồng phải bao gồm TranslateMessage luồng dùng để nhận đầu vào ký tự từ bàn phím Hệ thống tạo thơng điệp phím ảo (WM_KEYDOWN WM_KEYUP) lần người dùng nhấn phím Một thơng điệp phím ảo chứa mã phím ảo xác định phím nhấn, khơng có giá trị ký tự Để lấy giá trị này, vịng lặp thơng điệp phải chứa TranslateMessage, thơng dịch thơng điệp phím ảo thành thơng điệp ký tự (WM_CHAR) đặt trở lại hàng đợi thơng điệp ứng dụng Thơng điệp ký tự sau xóa bỏ lần lặp vịng lặp thơng điệp gửi đến thủ tục cửa sổ Chỉ cần vịng lặp thơng điệp cho hàng đợi thông điệp, ứng dụng có chứa nhiều cửa sổ DispatchMessage ln gửi thơng điệp đến cửa sổ thích hợp; điều thơng điệp hàng đợi cấu trúc MSG có chứa xử lý cửa sổ mà thông điệp thuộc Thủ tục cửa sổ Một thủ tục cửa sổ hàm nhận xử lý tất thông điệp gửi đến cửa sổ Mỗi lớp cửa sổ có thủ tục cửa sổ, cửa sổ tạo với lớp sử dụng thủ tục cửa sổ để trả lời thông điệp Hệ thống gửi thông điệp đến thủ tục cửa sổ cách chuyển liệu thông điệp làm đối số cho thủ tục Các thủ tục cửa sổ sau thực hành động thích hợp cho thơng điệp; kiểm tra mã nhận dạng thơng điệp, xử lý thông điệp, sử dụng thông tin quy định tham số thông điệp 1.1.2 Sử dụng thông điệp hàng đợi thông điệp a) Tạo vịng lặp thơng điệp Hệ thống khơng tự động tạo hàng đợi thông điệp cho luồng Thay vào đó, hệ thống tạo hàng đợi thơng điệp cho luồng thực thao tác yêu cầu hàng đợi thông điệp Nếu luồng tạo nhiều cửa sổ, phải cung cấp vòng lặp thơng điệp; vịng lặp thơng điệp lấy thơng điệp từ hàng đợi thông điệp luồng gửi chúng đến thủ tục cửa sổ thích hợp Bởi hệ thống hướng thông điệp đến cửa sổ riêng lẻ ứng dụng, nên luồng phải tạo cửa sổ trước bắt đầu vịng lặp thơng điệp Hầu hết ứng dụng có chứa luồng đơn tạo cửa sổ Một ứng dụng đặc thù đăng ký lớp cửa sổ cho cửa sổ nó, tạo hiển thị cửa sổ chính, sau bắt đầu vịng lặp thơng điệp - tất hàm WinMain b) Kiểm tra hàng đợi thông điệp Thỉnh thoảng, ứng dụng cần kiểm tra nội dung hàng đợi thơng điệp luồng từ bên ngồi vịng lặp thông điệp luồng Trừ ứng dụng định kỳ kiểm tra hàng đợi thơng điệp q trình hoạt động thông điệp chuột bàn phím, khơng phản hồi lại đầu vào người dùng sau thao tác hoàn tất Lý cho điều hàm DispatchMessage vòng lặp thông điệp luồng không trả thủ tục cửa sổ kết thúc xử lý thơng điệp c) Đăng thơng điệp Bạn đăng thông điệp lên hàng đợi thông điệp cách sử dụng hàm PostMessage PostMessage đặt thông điệp cuối hàng đợi thông điệp luồng trả mà không cần đợi luồng xử lý thông điệp d) Gửi thông điệp Hàm SendMessage sử dụng để gửi thông điệp trực tiếp đến thủ tục cửa sổ SendMessage gọi thủ tục cửa sổ đợi thủ tục xử lý thơng điệp trả lại kết 1.2 Kỹ thuật Hook 1.2.1 Tổng quan Hook Một hook chế mà ứng dụng chặn kiện, chẳng hạn thông điệp, hoạt động chuột phím Một hàm chặn loại kiện cụ thể gọi thủ tục hook Một thủ tục hook hành động kiện nhận được, sau sửa đổi loại bỏ kiện a) Chuỗi Hook Hệ thống hỗ trợ nhiều kiểu hook khác nhau; loại cung cấp quyền truy cập vào khía cạnh khác chế xử lý thơng điệp Ví dụ, ứng dụng sử dụng hook WH_MOUSE để theo dõi lưu lượng thông điệp cho thông điệp chuột Hệ thống trì chuỗi hook riêng biệt cho loại hook Một chuỗi hook danh sách trỏ tới hàm gọi lại đặc biệt, ứng dụng định nghĩa gọi thủ tục hook Khi thông điệp xảy liên kết với loại hook cụ thể, hệ thống truyền thông điệp đến thủ tục hook tham chiếu chuỗi hook, sau Tác động thủ tục hook phụ thuộc vào độc phức tạp loại hook Các thủ tục hook cho số loại hook theo dõi thơng điệp; loại khác sửa đổi thơng điệp ngừng tiến trình thơng qua chuỗi, ngăn cản thông điệp tiếp cận thủ tục hook cửa sổ đích b) Thủ tục Hook Thủ tục hook phải có cú pháp sau: LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam ){ // process event… return CallNextHookEx(NULL, nCode, wParam, lParam); } HookProc giữ chỗ cho tên ứng dụng định nghĩa Tham số nCode mã hook mà thủ tục hook sử dụng để xác định hành động để thực Giá trị mã hook phụ thuộc vào loại hook; loại có mã hook đặc trưng riêng Các giá trị tham số wParam lParam phụ thuộc vào mã hook, chúng đặc thù chứa thông tin thông điệp gửi đăng c) Các kiểu Hook Mỗi kiểu Hook cho phép ứng dụng điều khiển thông điệp theo cách khác kỹ thuật điều khiển thông điệp (message-handling mechanism) Dưới kiểu hook khác nhau: WH_KEYBOARD, WH_KEYBOARD_LL, WH_MOUSE, WH_MOUSE_LL…và số kiểu Hook khác 1.2.2 Các hàm thường dùng a) SetWindowsHookEx HHOOK WINAPI SetWindowsHookEx( in int idHook, in HOOKPROC lpfn, in HINSTANCE hMod, in DWORD dwThreadId ); b) UnhookWindowsHookEx BOOL WINAPI UnhookWindowsHookEx( in HHOOK hhk ); c) CallNextHookEx LRESULT WINAPI CallNextHookEx( in_opt HHOOK hhk, in int nCode, in WPARAM wParam, in LPARAM lParam ); d) LowLevelKeyboardProc LRESULT CALLBACK LowLevelKeyboardProc( in int nCode, in WPARAM wParam, in LPARAM lParam ); 1.2.3 Sử dụng Hook Có thể cài đặt thủ tục hook cách gọi hàm SetWindowsHookEx rõ kiểu thủ tục gọi hook, cho dù thủ tục nên liên kết với tất luồng máy tính luồng gọi với luồng cụ thể trỏ đến đầu vào thủ tục Bạn phải đặt thủ tục hook toàn cục DLL riêng biệt từ ứng dụng cài đặt thủ tục hook Ứng dụng cài đặt phải có xử lý cho mơ-đun DLL trước cài đặt thủ tục hook Để lấy xử lý đến module DLL, gọi hàm LoadLibrary với tên DLL Sau có xử lý, gọi hàm GetProcAddress để lấy trỏ đến thủ tục hook Cuối cùng, sử dụng SetWindowsHookEx để cài đặt địa thủ tục hook chuỗi hook thích hợp SetWindowsHookEx chuyển mơ-đun xử lý, trỏ tới điểm nhập thủ tục hook cho luồng định danh, thủ tục hook phải liên kết với tất luồng hình với tư cách luồng gọi Bạn giải phóng luồng thủ tục hook (loại bỏ địa khỏi chuỗi hook) cách gọi hàm UnhookWindowsHookEx, định xử lý cho thủ tục hook để giải phóng Giải phóng thủ tục hook sau ứng dụng bạn khơng cịn cần đến CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG 2.1 Phân tích yêu cầu 2.1.1 Yêu cầu chức Chương trình ghi lại tồn thao tác phím người dùng lưu tập tin văn 2.1.2 Yêu cầu giao diện người dùng 2.1.3 Yêu cầu tương thích Để đảm bảo có tương tác tốt với Windows, chương trình em sử dụng ngơn ngữ C++ mơi trường DevC++ 2.2 Phân tích chức Keylogger có số chức sau: a) Bắt kiện từ bàn phím Cơ chế bắt kiện từ bàn phím mơ tả sau: có kiện nhấn phím từ người dùng, thơng điệp truyền đến chuỗi hook liên kết với thơng điệp đó, thơng điệp xử lý thủ tục hook chuỗi hook Hình 1.1: Mơ tả bắt kiện từ bàn phím b) Ghi tệp văn theo ngày tháng, theo ứng dụng Khi người dùng nhấn phím, ứng dụng đồng thời bắt phím ghi phím tệp Tệp ghi theo ngày tháng cụ thể tương ứng với ứng dụng tương tác CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 3.1 Môi trường triển khai Chương trình triển khai chạy thử nghiệm môi trường Windows 10 3.2 Kết giao diện số chức chương trình Hình 1.2: Kết thị Mã ASCII phím gõ Hình 1.3: Kết file.txt ghi lại phím gõ 3.3 Đánh giá nhận xét Sau triển khai chạy thử ứng dụng, em rút nhận xét đánh giá sau: Chương trình khơng làm tăng đáng kể thời gian hiển thị phím bấm Chương trình ghi lại 100% thao tác phím Các tập tin ghi lại theo ngày tháng ứng dụng mà người dùng gõ xác hồn tồn Chương trình hoạt động khơng xác có ứng dụng hook khác chương trình gõ tiếng việt (Unikey, Vietkey…) KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Những kết đạt Chương trình ghi lại 100% thao tác phím Các tập tin ghi lại theo ngày tên ứng dụng mà người dùng gõ phím thơng tin xác 100% Những vấn đề cịn tồn lại Có tự lạ Log Nguyên nhân ký tự Unicode chương trình Unicode (Unikey, Vietkey) gửi đến Hướng phát triển Cho phép hiển thị Unicode log Mã hóa tập tin log để người sử dụng bị theo dõi Kết hợp gửi thông tin mail Thiết kế bổ sung thêm phần giao diện Vì ứng dụng mang tính đánh cắp thơng tin người khác nên cần chạy ẩn PHẦN 2: LẬP TRÌNH MẠNG TIÊU ĐỀ: XÂY DỰNG GAME “AI LÀ TRIỆU PHÚ” CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Giao thức TCP/IP TCP/IP viết tắt cụm từ Transmission Control Protocol/Internet Protocol TCP/IP tập hợp giao thức (protocol) điều khiển truyền thông tất máy Internet.Cụ thể hơn, TCP/IP rõ cách thức đóng gói thơng tin (hay cịn gọi gói tin), gửi nhận máy tính có kết nối với TCP/IP phát triển năm 1978 Bob Kahn Vint Ceft Ngày TCP/IP sử dụng rộng rãi mạng cục mạng toàn cầu TCP/IP xem giản lược mơ hình tham chiếu OSI với tầng ứng dụng sau: - Tầng liên kết (Datalink Layer) - Tầng mạng (Internet Layer) - Tầng giao vận (Transport Layer) - Tầng ứng dụng (Application Layer) 1.2 Socket Port Socket: gọi ổ kết nối hay điểm kết nối cho ứng dụng thông tin với Đây khái niệm trừu tượng (Không vật lý) lý thuyết mạng, thuộc phần mềm Một điểm kết nối (socket) kết hợp địa ip cổng kết nối (port) Với khái niệm này, ứng dụng thơng tin với máy tính, máy tính khác mạng LAN, mạng internet Một khái niệm thiếu sử dụng socket giao thức (protocol),các ứng dụng thơng thường trao đổi thông tin, liệu qua giao thức Cổng (Port): gọi cổng kết nối cho mạng thơng tin, mạng internet Cổng kết nối cổng thực, vật lý Tuy nhiên lý thuyết mạng cổng kết nối khái niệm trừu tượng, đánh số từ đến 65535, dùng lớp phần mềm (khơng vật lý), ví dụ cổng kết nối 8080 cho web browser, cổng kết nối 80 cho web server v.v Lý người ta phát minh khái niệm trừu tượng có nhiều ứng dụng dùng chung cổng vật lý, ví dụ có nhiều ứng dụng dùng cổng card mạng: email, browser, v.v Để tránh nhầm lẫn với nhau, ứng dụng phải dùng riêng ổ kết nối (socket), dùng riêng giao thức (protocol) 1.3 Mơ hình Client/Server 1.3.1 Giới thiệu Mơ hình phổ biến chấp nhận rộng rãi hệ thống phân tán mơ hình client/server Trong mơ hình có tập tiến trình mà tiến trình đóng vai trị trình quản lý tài nguyên cho tập hợp tài nguyên cho trước tập hợp tiến trình client tiến trình thực tác vụ cần truy xuất tới tài nguyên phần cứng phần mềm dùng chung Bản thân trình quản lý tài nguyên cần phải truy xuất tới tài nguyên dùng chung quản lý tiến trình khác, số tiến trình vừa tiến trình client vừa tiến trình server Các tiến trình phát yêu cầu tới server chúng cần truy xuất tới tài nguyên server Nếu yêu cầu đắn server thực hành động yêu cầu gửi đáp ứng trả lời tới tiến trình client Mơ hình client/server cung cấp cách tiếp cận tổng quát để chia sẻ tài nguyên hệ thống phân tán Mơ hình cài đặt nhiều môi trường phần cứng phần mềm khác Các máy tính sử dụng để chạy tiến trình client/server có nhiều kiểu khác không cần thiết phải phân biệt chúng; tiến trình client tiến trình server chạy máy tính Một tiến trình server sử dụng dịch vụ server khác Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ Quá trình trao đổi liệu bao gồm: Truyền yêu cầu từ tiến trình client tới tiến trình server Yêu cầu server xử lý Truyền đáp ứng cho client 1.3.2 Mơ hình truyền tin Client/Server Server Client Socket() Socket() Bind() Bind() Listen() Connect() Accept() Các ch ức gửi nhận Các chức gửi nhận Close() Close() Hình 2.1: Mơ hình truyền tin Client/Server CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 2.1 Phân tích yêu cầu 2.1.1 Yêu cầu chức Game “Ai triệu phú” cho phép người chơi client đăng nhập vào hệ thống để tham gia chơi trả lời câu hỏi server bật lên 2.1.2 Yêu cầu tương thích Chương trình xây dựng ngơn ngữ lập trình Java môi trường NetBeans IDE8.2 Cơ sở liệu lưu MySQL 2.2 Thiết kế hệ thống a) Sơ đồ Use-Case Hình 2.2: Sơ đồ Use-Case b) Sơ đồ lớp Hình 2.3: Sơ đồ lớp CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 3.1 Môi trường triển khai Chương trình triển khai chạy thử nghiệm mơi trường NetBeans 3.2 Kết giao diện số chức chương trình Hình 2.4: Giao diện chạy Server Hình 2.5: Giao diện chạy Client