XÂY DỰNG PHẦN MỀM HỖ TRỢ PHÁT HIỆN VÀ QUẢN LÝ TÀI NGUYÊN MẠNG MÁY TÍNH BỘ CÔNG AN
4.2. Mô hình phân lớp và các sơ đồ chức năng a. Chương trình trên máy trạm (Client application)
Mô hình phân lớp của Client application và các chức năng cụ thể như sau:
Chương trình trên các máy trạm gồm 2 phần chính: Khi chạy lần đầu tiên, bộ phận Register được kích hoạt để thực hiện việc đăng ký license lên máy
Client Application Application
SysInfor
Winsock control Machine
Components
Component Agent
Register
Register winsock
chủ. Sau đó cập nhật lại tham số FirstRun lên registry. Trong những lần chạy sau, phần này không được kích hoạt mà sẽ kích hoạt ngay phần Agent thực hiện các công việc của hệ thống.
Lớp Machine thực hiện việc lấy thông tin hệ thống và truy cập registry lấy thông tin về phần cứng và phần mềm được cài đặt trên máy trạm để lưu trữ vào trong thành phần Components của mình.
Components là một tập (collection) các đối tượng Component, mỗi Component bao gồm nhiều thuộc tính khác nhau.
Lớp SysInfor thực hiện việc theo dừi hệ thống mỏy trạm, phỏt hiện cỏc thay đổi về cấu hình máy trạm để thông báo về máy chủ.
Winsock control thực hiện việc trao đổi thông tin với máy chủ, các thông tin này có thể là một đối tượng Machine chứa đầy đủ thông tin hệ thống, các thông báo sự kiện gửi về máy chủ hay để nhận các lệnh từ máy chủ gửi tới. Một Winsock control khi kết nối đến máy chủ có thể có lỗi trên đường truyền hay từ phía máy chủ, khi đó nó sẽ ở trong trạng thái bận và không thực hiện được kết nối khác khi đường truyền đã thông. Để khắc phục điều này, ta dùng một đối tượng timer sau mỗi khoảng thời gian nhất định sẽ kiểm tra trạng thái của Winsock control, nếu Winsock control ở trạng thái lỗi, không kết nối được thì đóng nó lại và đặt ở chế độ lắng nghe (listern).
Các sơ đồ hoạt động chính của client application:
*36 Sơ đồ thực hiện đăng ký license lên máy chủ:
Yes
No No
No
Yes Yes Start
Kiểm tra tham số FirstRun trong registry
Lần đầu?
Nhập License
Gửi license về máy chủ
Chờ máy chủ xác nhận
Hợp
lệ? L m à
lại?
Cập nhật lại tham số FirstRun
Kích hoạt NMS Agent End
*37 Sơ đồ thực hiện lấy thông tin hệ thống gửi về máy chủ
Lớp Machine xác đinh loại hệ điều hành dùng trên máy trạm và thực hiện lấy thông tin về CPU và RAM bằng các hàm API (xem mã nguồn); thực hiện lấy thông tin về các phần cứng, phần mềm cài đặt trên máy trạm trong Registry của Windows. Tuỳ các hệ điều hành khác nhau mà các thông tin này nằm ở các vị trí khác nhau ở HKEY_LOCAL_MACHINE trong Registry, cụ thể như sau:
Lấy thông tin CPU
Lấy thông tin RAM Truy nhập Registry
Xác định loại hệ điều h nh trên máy à trạm
Đọc thông tin phần cứng trong registry
Đọc thông tin phần mềm trong registry
Đọc thông tin chi tiết về hệ điều h nh trong registryà
Gửi thông tin thu thập được về Server
Application
- Với Windows 9x
+ Các lớp phần cứng lưu trữ trong
System\CurrentControlSet\ Services\Class + Các thuộc tính cụ thể lưu trữ trong
Enum
+ Các thông tin về hệ điều hành lưu trữ trong
SOFTWARE\Microsoft\Windows\CurrentVersion - Với Windows NT, Windows XP
+ Các lớp phần cứng lưu trữ trong
SYSTEM\CurrentControlSet\Control\Class + Các thuộc tính cụ thể lưu trữ trong
SYSTEM\CurrentControlSet\Enum + Thông tin về hệ điều hành lưu trữ trong
SOFTWARE\Microsoft\Windows NT\CurrentVersion - Với Windows 2000
+ Các lớp phần cứng lưu trữ trong
SYSTEM\CurrentControlSet\Control\Class + Các thuộc tính cụ thể lưu trữ trong
SYSTEM\CurrentControlSet\Enum + Thông tin về hệ điều hành lưu trữ trong
SOFTWARE\Microsoft\Windows NT\CurrentVersion
Thông tin về các phần mềm đã được cài đặt trên máy trạm trên tất cả các hệ điều hành windows có thể lấy ở địa chỉ sau:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Uninstall
Đây là các thông tin mà các phần mềm đăng ký trên windows phục vụ việc uninstall, các thông tin này nói chung là không đầy đủ và có thể có nhiều phần mềm không đăng ký vào đây, tuy nhiên ta có thể lấy một danh sách cơ bản các phần mềm lớn đã được cài đặt, trong thời gian có hạn, tôi chưa tìm
được tài liệu chi tiết về thông tin của các phần mềm cài đặt trên máy tính, đồng thời qua tham khảo các phần mềm lớn như SMS (Microsoft), LanDesk (Intel) thì việc lấy thông tin phần mềm trên máy trạm cũng không được đầy đủ.
Việc tìm kiếm trên cấu trúc cây của registry được tiến hành theo thuật toán tìm kiếm theo chiều sâu (Deep First Search) một cách đệ quy.
b. Chương trình trên máy chủ (Server application)
Mô hình phân lớp và các sơ đồ chức năng của chương trình trên máy chủ như hình sau:
Server application
Threading
Winsock control Machines
Machine
Components Commands
Command
Component
Network
NMSDB
Chức năng cụ thể của các lớp:
Lớp Commands là một tập (Collection) các Command, khi người quản trị ra một yêu cầu đến máy trạm thì sẽ tạo ra một đối tượng Command và đưa vào hàng đợi lệnh Commands, lệnh này được thực hiện bằng cách gửi lệnh đến máy trạm qua Winsock và nhận kết quả từ máy trạm gửi về, sau đó giải phóng khỏi hàng đợi. Một Command đối với một trạm sẽ không được tạo ra khi đang có một Command khác đang chờ kết quả từ trạm đó (đang thực hiện), điều này đảm bảo không bị tranh chấp giữa các yêu cầu.
Trong trường hợp yêu cầu gửi đến máy trạm là lệnh Process thì kết quả Command nhận về là các thông tin hệ thống trên máy trạm, khi đó một đối tượng Machine được tạo ra để lấy thông tin cụ thể và chuyển đối tượng này cho lớp NMSDB cập nhật vào cơ sở dữ liệu.
Lớp Machines là một collection các Machine, dùng để đọc danh sách các máy hiện có trên mạng.
Lớp Network thực hiện việc tìm kiếm các máy trạm đang hoạt động trên mạng, kiểm tra trạng thái các máy trạm biết trước. Việc xác định các máy đang hoạt động trên mạng được tiến hành theo hai cơ chế: quét trong một khoảng địa chỉ IP nhất định và tự động dò tìm bằng các hàm API của Windows (cách này hiệu quả hơn đối với Windows trên nền NT), đồng thời có thể thực hiện quét cổng ở một địa chỉ IP nào đó. Việc kiểm tra trạng thái ở đây, do thời gian có hạn nên tôi chỉ tiến hành theo phương pháp gửi một gói tin ICMP_ECHO đến máy trạm và nhận về gói tin ICMP_ECHO_REPLY để xác định trạng thái máy trạm, theo cách này thì với một số thiết bị như Firewall có thể không xác định được, khi đó ta có thể dùng chức năng quét cổng để xác định trạng thái của trạm. Khi xác định được tên hay địa chỉ IP của một trạm hoạt động trên mạng thì tiến hành lấy các thông tin còn lại như MAC address, Computername, Group,...
Lớp Threading kiểm soát các luồng. Chương trình trên server thực hiện các chức năng quét mạng và kiểm tra trạng thái các trạm mất khá nhiều thời gian, hơn nữa việc thường xuyên kiểm tra trạng thái các trạm phải là trong suốt đối với người sử dụng vì vậy những công việc đó đòi hỏi phải tiến hành trên một luồng riêng. Threading cho phép việc khởi tạo, dừng và huỷ bỏ các luồng một cách thuận tiện, đảm bảo các luồng không bị gọi lặp nhiều lần và mỗi luồng được tạo ra sẽ được đóng lại. Nếu các luồng được tạo ra mà không được đóng lại thích hợp thì rất nguy hiểm vì khi đó các luồng vẫn chiếm thời gian thực của máy.
Lớp NMSDB thực hiện việc giao tiếp với cơ sở dữ liệu bao gồm các công việc chính sau: lấy danh sách các máy hiện có trên mạng, đọc cấu hình một máy bất kỳ ở một thời điểm nào đó, cập nhật một Machine vào cơ sở dữ liệu, cập nhật một sự kiện nào đó xảy ra vào cơ sở dữ liệu, kiểm tra tính hợp lệ và cập nhật các license.
Một số sơ đồ hoạt động chính của Server application:
• Sơ đồ thực hiện đăng ký license
License đăng ký
No No
Yes Yes
Kiểm tra tính hợp lệ của License
Hợp lệ?
Thông báo yêu cầu đăng ký
Chờ Server Application xác nhận
Đồng ý?
Gửi thông báo license valid
Cập nhật v o cà ơ sở dữ liệu (trường HaveAgent)
Gửi thông báo ServerReject
• Sơ đồ thực hiện dò tìm các máy trạm trên mạng
No
Yes Yes
No
Yes Còn?
ResTemp:=NetRes.Children(next)
No NetRes l à
Domain hoặc Group?
ResTemp l à Server?
Kiểm tra ResTemp l trà ạm mới hay có thay đổi
Đưa v o danh sáchà
Tìm kiếm với ResTemp Kiểm tra NetRes còn t i nguyên con khôngà
NetRes = Root
Việc dò tìm trên mạng thực hiện theo hai cách, cách thứ nhất là quét một khoảng địa chỉ IP, cách thứ hai là sử dụng các hàm API: WNetOpenEnum, WNetEnumResource, WNetCloseEnum để lấy danh sách các trạm, các hàm này đã được viết trong lớp NetResource và NetResources là một collection của NetResource, mỗi instance của NetResource là một tài nguyên mạng (thuật toán dò tìm theo chiều sâu đối với NetResource trình bày ở hình trên).
Ở đây ta quan niệm một máy là mới xuất hiện trên mạng khi trong cơ sở dữ liệu ta không tìm được trạm nào hiện hành có trùng với trạm tìm được cả MAC address, IP address, Computer name và Host name. Ngược lại, nếu tồn tại một trạm có trùng ít nhất một trong các thuộc tính trên và khác nhau ít nhất một thuộc tính thì không coi là máy mới mà là máy cũ đã thay đổi thuộc tính khác nhau đó.