Tải bản đầy đủ (.docx) (29 trang)

Báo cáo đồ án cơ sở ngành mạng xây dựng chương trình bắt phím keylogger xây dựng ứng dụng đánh bài cho phép nhiều người chơi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.03 MB, 29 trang )

ĐẠ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 kỹ thuật lập trình Hook. Xây dựng ứng
dụng bắt phím Keylogger
Phần Lập trình mạng

Xây dựng game đánh bài cho phép nhiều người chơi
qua mạng

MỤC LỤC


DANH MỤC HÌNH VẼ................................................................................................4
MỞ ĐẦU.......................................................................................................................4
PHẦN I. NGUYÊN LÝ HỆ ĐIỀU HÀNH..................................................................6
ĐỀ TÀI: TÌM HIỂU KỸ THUẬT LẬP TRÌNH HOOK. XÂY DỰNG ỨNG
DỤNG BẮT PHÍM KEYLOGGER............................................................................6
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT............................................................................6
1. Tổng quan về Hook............................................................................................6
1.1. Các mơ hình Hook......................................................................................................................6
1.2. Thủ tục Hook..............................................................................................................................7
1.3. Các kiểu Hook.............................................................................................................................7



2. Tổng quan về Win32 API...................................................................................8
2.1. Tổng quan về Keylogger.............................................................................................................8
2.2. Phân loại Keylogger....................................................................................................................8
2.3. Cách hoạt động của Keylogger như thế nào?...........................................................................9
2.4. Cách phòng, tránh và phát hiện Keylogger ?.........................................................................10

CHƯƠNG 2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG.......................................11
1. u cầu bài tốn.................................................................................................11
2. Mơ tả bài tốn......................................................................................................11
3. Sơ đồ thuật toán................................................................................................11
4. Thiết kế hệ thống..............................................................................................12
CHƯƠNG 3. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT
TRIỂN.........................................................................................................................14
1. Môi trường triển khai.......................................................................................14
2. Kết quả chạy chương trình..............................................................................14
3. Hướng phát triển..............................................................................................15
PHẦN II. LẬP TRÌNH MẠNG.................................................................................15
ĐỀ TÀI : XÂY DỰNG CHƯƠNG TRÌNH TRỊ CHƠI BÀI TIẾN LÊN
THÔNG QUA SOCKET JAVA................................................................................15
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT..........................................................................15
1. Mạng máy tính....................................................................................................15
1.1. Khái niệm..................................................................................................................................15
1.2. Mơ hình mạng khách chủ (Client-Server)...............................................................................16

2. Giao thức mạng...................................................................................................18
2.1. Định nghĩa bộ giao thức TCP/IP..............................................................................................18


2.2. Định nghĩa giao thức TCP........................................................................................................19


3. Lập trình Socket..................................................................................................19
3.1. Định nghĩa Socket.....................................................................................................................19
3.2. Số hiệu cổng của Socket............................................................................................................20
3.3. Nguyên lý hoạt động của Socket..............................................................................................20
3.4. Socket trong java......................................................................................................................21

CHƯƠNG 2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG.......................................22
1. Phân tích u cầu:............................................................................................22
1.1.

Giới thiệu trị chơi................................................................................................................22

1.2.

Luật chơi...............................................................................................................................22

1.3.

Thiết lập chương trình.........................................................................................................23

CHƯƠNG 3. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT
TRIỂN.........................................................................................................................23
1. Môi trường triển khai:.........................................................................................23
2. Kết quả và hướng phát triển:..............................................................................23
2.1. Kết quả chương trình.......................................................................................24
2.2. Nội dung cải tiến :.............................................................................................26
KẾT LUẬN CHUNG.................................................................................................27
TÀI LIỆU THAM KHẢO..........................................................................................27



DANH MỤC HÌNH
Hình 1. 1. Sơ đồ thuật tốn cho chương trình bắt phím Keylogger...............................12
Hình 1. 2. Xây dựng hệ thống.......................................................................................13
Hình 1. 3. Kết quả chương trình...................................................................................14
Hình 1. 4. Kết quả chương trình...................................................................................15
Y
Hình 2. 1. Mơ phỏng mơ hình Client-Server................................................................16
Hình 2. 2. Mô phỏng các tầng của bộ giao thức TCP/IP...............................................19
Hình 2. 3. Đăng nhập vào chương trình........................................................................22
Hình 2. 4. Mơ phỏng các tầng của bộ giao thức TCP/IP...............................................23
Hình 2. 5. Bắt đầu trị chơi...........................................................................................24
Hình 2. 6. Kết quả chương trình...................................................................................25
Hình 2. 7. Kết thúc trận đấu..........................................................................................25


MỞ ĐẦU
1. Tổng quan về đề tài
Nguyên lý hệ điều hành và Lập trình mạng là những kiến thức căn bản là nền tảng
mà mỗi lập trình viên phải hiểu rõ để phục vụ cho những kiến thức cao hơn.
Hệ điều hành là tập hợp các chương trình phần mềm chạy trên máy tính,
dùng để điều hành, quản lý các thiết bị phần cứng và tài nguyên phần mềm trên
máy tính. Hệ điều hành đóng vai trị trung gian trong việc giao tiếp giữa người sử
dụng và phần cứng máy tính, cung cấp một mơi trường cho phép người sử dụng
phát triển và thực hiện các ứng dụng một cách dễ dàng.
Cùng với sự phát triển của mạng Internet hiện nay, thì việc nghiên cứu nhằm
vững những kiến thức về mạng là rất quan trọng.
Dựa trên những hiểu biết của mình và tìm hiểu tài liệu, em đã nghiên cứu và
thực hiện 2 đề tài: xây dựng chương trình bắt phím Keylogger dựa trên kỹ thuật lập
trình Hook và xây dựng game đánh bài cho phép nhiều người chơi qua mạng.

Em xin chân thành cảm ơn thầy cô khoa Công Nghệ Thông Tin đã tạo điều
kiện để em nghiên cứu kỹ hơn những kiến thức này, và đặc biệt là thầy Nguyễn Tấn
Khơi đã nhiệt tình theo dõi, hướng dẫn em trong quá trình thực hiện đề tài này.
Vì kiến thức cịn hạn chế nên khơng thể tránh khỏi những sai sót trong q
trình làm đề tài, rất mong nhận được sự góp ý của thầy cơ để sản phẩm được hoàn
thiện hơn.
Em xin chân thành cảm ơn.
Người thực hiện

Đặng Phúc Thịnh


Mục đích và ý nghĩa
1.1. Mục đích
 Phần Hệ điều hành
 Tìm hiểu kỹ thuật lập trình Hook và xây dựng chương trình bắt phím
keylogger.
 Chỉ ra được ưu và cách phịng chống malware.
 Phần Lập trình mạng
 Tìm hiểu giao thức TCP/IP.
 Chỉ ra ưu, nhược điểm của giao thức này.
 Xây dựng game đánh bài cho phép nhiều người chơi qua mạng.
1.2. Ý nghĩa
- Cơ hội nghiên cứu và kiểm tra lại các kiến thức đã được học: TCP/IP, lập trình
Socket.
- Rèn luyện kĩ năng lập trình với ngôn ngữ Java.
- Rèn luyện một số kĩ năng mềm: kĩ năng làm việc độc lập, kĩ năng tìm tài liêu, kĩ
năng nghiên cứu, kĩ năng tư duy, kĩ năng giải quyết bài toán, kĩ năng viết báo
cáo và slide thuyết trình, kĩ năng thuyết trình và kĩ năng giao tiếp.
1.3. Bố cục đồ án

Mở đầu
Phần I: Nguyên lý hệ điều hành
Chương 1: trình bày Cơ sở lý thuyết
Chương 2: trình bày Phân tích thiết kế hệ thống
Chương 3: trình bày Triển khai và đánh giá kết quả
Phần II: Lập trình mạng
Chương 1: trình bày Cơ sở lý thuyết
Chương 2: trình bày Phân tích thiết kế hệ thống
Chương 3: trình bày Triển khai và đánh giá kết quả


PHẦN I. NGUYÊN LÝ HỆ ĐIỀU HÀNH
ĐỀ TÀI: TÌM HIỂU KỸ THUẬT LẬP TRÌNH HOOK. XÂY DỰNG ỨNG
DỤNG BẮT PHÍM KEYLOGGER
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1. Tổng quan về Hook
Hook là kỹ thuật điều khiển thông điệp (message-handling) giúp cho ứng dụng
có thể cài đặt một thủ tục để điều khiển luồng thông điệp và tiến hành xử lý các
thông điệp đó trước khi thơng điệp đó đi tới cửa sổ đích.
 Hook có thể xem là tính năng mạnh mẽ nhất của Windows, nó cho phép ta đặt
bẫy đối với các sự kiện. Bằng cách sử dụng hook, ta có thể điều hướng ứng
dụng tới một thủ tục mới bất kể khi nào mà sự kiện được quan tâm xuất hiện và
bất kể sự kiện đó thuộc tiến trình của bạn hay thuộc tiến trình khác
 Để viết được chương trình Hook ta cần nắm bắt cơ chế xử lý thông điệp của
Windows, Thư viện Win32 API và Kỹ thuật Hook.


1.1. Các mơ hình Hook
● Local hook: là kỹ thuật Hook dùng để bẫy sự kiện ngay trong tiến trình cài đặt.
● Remote hook: là kỹ thuật Hook cho phép bẫy các sự kiện thuộc tiến trình của

ứng dụng khác.
● Trong mơ hình này lại tồn tại hai kiểu hook khác :
o Thread-specific : kiểu Hook này sẽ bẫy sự kiện của một luồng cụ thể.
o System-wide : bẫy sự kiện của tất cả các luồng trong tất cả các tiến trình
đang thi hành trong hệ thống.
● Thành phần của Hook
o Chuỗi Hook
o Thủ tục Hook
o Các kiểu Hook
● Hook là một kỹ thuật xử lý thông điệp rất mạnh cho phép chúng ta can thiệp sâu
vào các tiến trình khác nhau, nhưng nó làm ảnh hưởng tới tốc độ của hệ thống,
nhất là hook system-wide, vì tất cả các sự kiện của hệ thống sẽ được định
hướng tới một hàm nào đó, rõ ràng điều này làm hệ thống chậm đi đáng kể. Vì
thế ta chỉ hên hook những thông điệp thật cần thiết và kết thúc việc hook ngay
khi không dùng đến nữa


1.2. Thủ tục Hook
● Thủ tục hook nhận được thông báo và chạy các hoạt động được chỉ định bởi các
lập trình viên. Hầu hết các mã hack được viết bằng thủ tục hook. Khi các tác vụ
kết thúc, hệ điều hành sẽ chuyển tải thông báo đến con trỏ tiếp theo của chuỗi
hook, đó là đơi khi được gọi là một hàm gọi lại.
● Thủ tục hook có dạng như sau:
HookProc( int nCode, WPARAM wParam, LPARAM lParam );
Trong đó :
 HookProc: là tên đại diện của thủ tục hook được cài đặt
 nCode : Đây là mã hook, nó quyết định toàn bộ hoạt động của thủ tục hook, mã
hook phụ thuộc vào kiểu hook và mỗi kiểu hook được gán cho một ký tự để
thiết lập mã hook.
 wParam, lParam: Hai tham số này chứa các thông tin về thơng điệp được

hook và nó phụ thuộc vào mã hook (nCode)
1.3. Các kiểu Hook
● WH_CALLWNDPROC: Cài đặt một thủ tục hook theo dõi message trước khi
hệ thống sẽ gửi chúng đến các thủ tục cửa sổ đích.
● WH_CALLWNDPROCRET: Cài đặt một thủ tục hook theo dõi message sau
khi đã được xử lý bởi các thủ tục cửa sổ đích.
● WH_CBT: Cài đặt một thủ tục hook tiếp nhận thông báo hữu ích để một ứng
dụng CBT.
● WH_DEBUG : Cài đặt một thủ tục hook hữu ích để gỡ lỗi thủ tục hook khác.
● WH_FOREGROUNDIDLE: Cài đặt một thủ tục hook sẽ được gọi khi luồng
của ứng dụng là trở thành nhàn rỗi. Hook này rất hữu dụng cho thực hiện nhiệm
vụ ưu tiên thấp trong thời gian nhàn rỗi.
● WH_GETMESSAGE: Cài đặt một thủ tục hook theo dõi các message được
đưa lên một hàng đợi message.
● WH_JOURNALPLAYBACK: Cài đặt một thủ tục hook gởi message trước
đây được ghi lại bằng một thủ tục hook WH_JOURNALRECORD.
● WH_JOURNALRECORD: Cài đặt một thủ tục hook ghi lại các message đầu
vào được đưa lên hàng đợi thông điệp hệ thống. Hook này rất hữu ích cho các
macro ghi.
● WH_KEYBOARD: Cài đặt một thủ tục móc theo dõi tin nhắn tổ hợp phím
● WH_KEYBOARD_LL: Cài đặt một thủ tục móc theo dõi các sự kiện bàn
phím đầu vào ở mức độ thấp.


● WH_MOUSE: Cài đặt một thủ tục móc theo dõi tin nhắn chuột.
● WH_MOUSE_LL: Cài đặt một thủ tục móc theo dõi các sự kiện chuột đầu vào
ở mức độ thấp.
● WH_MSGFILTER: Cài đặt một thủ tục móc theo dõi tin nhắn được tạo ra như
là kết quả của một sự kiện đầu vào trong hộp thoại, hộp thông báo, menu, hoặc
di chuyển một thanh.

● WH_SHELL: Cài đặt một thủ tục hook tiếp nhận thơng báo hữu ích cho các
ứng dụng shell.
● WH_SYSMSGFILTER: Cài đặt một thủ tục móc theo dõi tin nhắn được tạo ra
như là kết quả của một sự kiện đầu vào trong hộp thoại, hộp thông báo, menu,
hoặc di chuyển một thanh.
2. Tổng quan về Win32 API
2.1. Tổng quan về Keylogger
● Keylogger hay "trình theo dõi thao tác bàn phím" theo cách dịch ra tiếng
Việt là một chương trình máy tính ban đầu được viết nhằm mục đích theo dõi
và ghi lại mọi thao tác thực hiện trên bàn phím vào một tập tin nhật ký (log) để
cho người cài đặt nó sử dụng. Vì chức năng mang tính vi phạm vào riêng tư của
người khác này nên các trình keylogger được xếp vào nhóm các phần mềm gián
điệp.
● Về sau, khi keylogger phát triển cao hơn nó khơng những ghi lại thao tác bàn
phím mà cịn ghi lại cả các hình ảnh hiển thị trên màn hình (screen) bằng cách
chụp (screenshot) hoặc quay phim (screen-capture) thậm chí cịn ghi nhận cách
con trỏ chuột trên máy tính di chuyển.
2.2. Phân loại Keylogger
Keylogger bao gồm hai loại, một loại Keylogger phần cứng và một loại là phần
mềm. Thực tế hiện nay, cách sử dụng và chức năng của Keylogger trên thế giới
thường được sử dụng ở phần mềm nhiều hơn so với Keylogger phần cứng.
Nhưng cách sử dụng khác nhau nên khiến người ta thường hay phân loại
keylogger theo mức độ nguy hiểm bằng các câu hỏi:
● Nhiễm vào máy không qua cài đặt/Cài đặt vào máy cực nhanh (quick
install)?
● Có thuộc tính ẩn/giấu trên trình quản lý tiến trình (process manager) và
trình cài đặt và gỡ bỏ chương trình (Add or Remove Program)?
● Theo dõi khơng thơng báo/PC bị nhiễm khó tự phát hiện?
● Có thêm chức năng Capture screen hoặc ghi lại thao tác chuột?



● Khó tháo gỡ?
● Có khả năng lây nhiễm, chống tắt (kill process)?
● Cứ mỗi câu trả lời "có", cho một điểm. Điểm càng cao, keylogger càng
vượt khỏi mục đích giám sát (monitoring) đến với mục đích do thám
(spying) và tính nguy hiểm nó càng cao. Keylogger có thể được phân
loại theo số điểm:
o Loại số 1
 Không điểm: keylogger loại bình thường; chạy cơng khai, có
thơng báo cho người bị theo dõi, đúng với mục đích giám sát.
o Loại số 2
 Một đến hai điểm: keylogger nguy hiểm; chạy ngầm, hướng
đến mục đích do thám nhiều hơn là giám sát (nguy hại đến các
thông tin cá nhân như là tài khoản cá nhân, mật khẩu, thẻ tín
dụng vì người dùng không biết).
o Loại số 3
 Ba đến năm điểm: keylogger loại rất nguy hiểm; ẩn giấu hoàn
toàn theo dõi trên một phạm vi rộng, mục đích do thám rõ
ràng.
o Loại số 4
 Sáu điểm: keylogger nguy hiểm nghiêm trọng, thường được
mang theo bởi các trojan-virus cực kỳ khó tháo gỡ, là loại
keylogger nguy hiểm nhất. Chính vì vậy (và cũng do đồng thời
là "đồng bọn" của trojan-virus) nó thường hay bị các chương
trình chống virus tìm thấy và tiêu diệt.
2.3. Cách hoạt động của Keylogger như thế nào?
● Các thành phần của Keylogger
● Thơng thường, một chương trình keylogger sẽ gồm có ba phần chính:
○ Chương trình điều khiển (Control Program): dùng để theo điều phối
hoạt động, tinh chỉnh các thiết lập, xem các tập tin nhật ký cho

Keylogger. Phần này là phần được giấu kỹ nhất của keylogger, thơng
thường chỉ có thể gọi ra bằng một tổ hợp phím tắt đặc biệt.
○ Tập tin hook, hoặc là một chương trình monitor dùng để ghi nhận lại
các thao tác bàn phím, capture screen (đây là phần quan trọng nhất)
○ Tập tin nhật ký (log), nơi chứa đựng/ghi lại toàn bộ những gì hook
ghi nhận được.


○ Một loại log file
○ Ngoài ra, tùy theo loại có thể có thêm phần chương trình bảo vệ
(guard, protect), chương trình thơng báo (report)…
● Cách cài đặt của Keylogger
○ Các loại keylogger từ 1 - 3 thông thường khi cài đặt vào máy cũng
giống như mọi chương trình máy tính khác, đều phải qua bước cài
đặt. Đầu tiên nó sẽ cài đặt các tập tin dùng để hoạt động vào một thư
mục đặc biệt (rất phức tạp), sau đó đăng ký cách thức hoạt động rồi
đợi người dùng thiết lập thêm các ứng dụng. Sau đó nó bắt đầu hoạt
động.
○ Loại keylogger số 4 có thể vào thẳng máy của người dùng bỏ qua
bước cài đặt, dùng tính năng autorun để cùng chạy với hệ thống. Một
số loại tự thả (drop) mình vào các chương trình khác, để khi người
dùng sử dụng các chương trình này keylogger sẽ tự động chạy theo.
2.4. Cách phòng, tránh và phát hiện Keylogger ?
● Phòng
○ Keylogger thường bị vào máy qua hai con đường chính: được cài đặt
hoặc bị cài đặt.
● Phịng ngừa "được cài đặt"
○ Phương pháp sau chỉ có tác dụng với chủ máy (người nắm quyền
root/administrator) Cách tốt nhất là khơng cho ai sử dụng chung máy
tính. Bảo mật máy bằng cách khóa lại bằng các chương trình bảo vệ,

hoặc mật khẩu khi đi đâu đó. Nếu phải dùng chung nên thiết lập quyền
của người dùng chung đó thật thấp (guest đối với Windows XP, user
đối với Linux) để kiểm sốt việc cài đặt chương trình của họ.
● Phịng ngừa "bị cài đặt"
○ Bị cài đặt là cách để nói đến các trường hợp keylogger vào máy không
do người nào đó trực tiếp đưa vào trên máy đó mà do trojan, virus,
spyware cài đặt vào máy nạn nhân mà nạn nhân khơng hề hay biết. Các
biện pháp phịng ngừa:
○ Khơng tùy tiện mở các tập tin lạ, không rõ nguồn gốc. Tốt nhất là nên
xóa đi, hoặc kiểm tra (scan) bằng một chương trình antivirus và một
chương trình antispyware, vì nhiều chương trình antivirus chỉ có thể tìm
thấy virus, khơng thể nhận biết spyware.


○ Không vào các trang web lạ, đặc biệt là web "tươi mát" vì có thể các
trang web này ẩn chứa một loại worm, virus, hoặc là mã độc nào đó có
thể âm thầm cài đặt.
○ Khơng click vào các đường link lạ do ai đó cho bạn.
○ Khơng cài đặt các chương trình lạ (vì nó có thể chứa virus, trojan).
○ Khơng download chương trình từ các nguồn khơng tin cậy. Nếu bạn có
thể, xem xét chữ ký điện tử, để chắc chắn chương trình khơng bị sửa đổi.
○ Hạn chế download và sử dụng cracked-program.
○ Luôn luôn tự bảo vệ mình bằng các chương trình chuyên dùng chống
virus, chống spyware (antivirus, antispyware) và dựng tường lửa
(firewall) khi ở trong Internet.
○ Thường xuyên cập nhật đầy đủ các bản cập nhật bảo mật của hệ điều
hành.
○ Hoặc chúng ta có thể download một số phần mềm chống keylog về để
bảo vệ.
● Tránh keylogger

○ Khi nghi ngờ nó có keylogger mà khơng có điều kiện kiểm tra.
○ Diệt tập tin hook, chương trình theo dõi.
○ Sử dụng một chương trình task manager (có thể gọi ra bằng tổ hợp phím
tắt Ctrl+Alt+Del trên Windows) xem các chương trình đang chạy. Nếu
bạn thấy process nào lạ (đặc biệt đối với Windows XP là các tập tin được
chạy dưới Username không phải là System) chưa thấy bao giờ hãy tắt
(end, kill) nó đi. Lưu ý, cách này có thể làm treo hệ thống nếu đó là một
tập tin cần cho nó; vì vậy người dùng cần có kinh nghiệm.

CHƯƠNG 2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
1. Yêu cầu bài toán
Xây dựng một chương trình bắt phím Keylogger dựa trên kỹ thuật lập trình Hook.
2. Mơ tả bài tốn
Với u cầu bài tốn đã đặt ra, chương trình bắt phím Keylogger gồm những chức
năng chính sau:
● Ghi lại thao tác từ bàn phím
● Ghi vào file text
● Gửi file text chứa tác phím được nhấn từ bàn phím vào email
3. Sơ đồ thuật toán


Hình 1. 1. Sơ đồ thuật tốn cho chương trình bắt phím Keylogger

4. Thiết kế hệ thống
Chương trình được xây dựng dựa trên ngôn ngữ python. Trong khoảng thời gian
vừa rồi, em đã thực hiện được các công việc như sau:
 Tìm hiểu Hook.
 Cài đặt Hook và chương trình Keylogger.
 Chương trình bao gồm :
■ Hàm khởi tạo Hook: Cài đặt hook bằng cách sử dụng hàm

SetWindowsHookExA mà user32 DLL cung cấp. Quy trình hook
theo dõi các sự kiện WH_KEYBOARD_LL của tất cả các luồng
đang chạy trên hệ điều hành.
SetWindowsHookExA(
int
idHook,
HOOKPROC lpfn,
HINSTANCE hmod,
DWORD
dwThreadId


);

■ Hàm khởi tạo Hook: Hàm khởi tạo Hook: Cài đặt hook bằng cách
sử dụng hàm SetWindowsHookExA mà user32 DLL cung cấp.
Quy trình hook theo dõi các sự kiện WH_KEYBOARD_LL của
tất cả các luồng đang chạy trên hệ điều hành.
UnhookWindowsHookEx(
HHOOK hhk );

■ Khai báo Hook Procedure : Quy trình hook là chức năng gọi lại
chịu trách nhiệm xử lý các sự kiện ở cấp độ người dùng. Thủ tục
Hook in giá trị của tin nhắn đến tương ứng với WM_KEYDOWN
trên màn hình và khi tin nhắn đến tương ứng với phím CTRLRL,
nó sẽ loại bỏ hook. Khi tất cả q trình xử lý đã được hồn thành,
quy trình Hook chuyển điều khiển sang quy trình hook khác trong
chuỗi hook. (CallNextHookEx)
CallNextHookEx(
HHOOK hhk,

int
nCode,
WPARAM wParam,
LPARAM lParam
);

Hình 1. 2. Xây dựng hệ thống


CHƯƠNG 3. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG
PHÁT TRIỂN
1. Mơi trường triển khai
● Có thể chạy trên mọi môi trường khi ra cài đặt ra file .exe
2. Kết quả chạy chương trình
● Chương trình chạy ổn định, vẫn chưa bắt được các tổ hợp phím.
● Vẫn cịn ký tự lạ trong bản log. Nguyên nhân là do các ký tự Unicode được trả
về từ chương trình Unikey.
● Chưa in ra được thời gian gõ phím

Hình 1. 3. Kết quả chương trình


Hình 1. 4. Kết quả chương trình

3. Hướng phát triển
● Phát triển thành installer để chạy không cần phải cài đặt mơi trường
● Sửa chữa các tổ hợp phím và một vài phím khơng nhận được và ghi thành ký tự
lạ trong file log như phím Backspace...

PHẦN II. LẬP TRÌNH MẠNG

ĐỀ TÀI : XÂY DỰNG CHƯƠNG TRÌNH TRỊ CHƠI BÀI TIẾN LÊN
THÔNG QUA SOCKET JAVA
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1. Mạng máy tính
1.1. Khái niệm
 Mạng máy tính là một hệ thống gồm nhiều máy tính và các thiết bị được kết nối
với nhau bởi đường truyền vật lý theo một kiến trúc (Network Architecture) nào
đó nhằm thu thập, trao đổi dữ liệu và chia sẻ tài nguyên cho nhiều người sử
dụng.
 Mơ hình ứng dụng mạng:
o Mơ hình mạng ngang hàng(Peer to Peer): cho phép mọi nút mạng vừa đóng
vai trị là thực thể u cầu các dịch vụ mạng (Client), vừa là các thực thể
cung cấp các dịch vụ mạng (Server). Trong môi trường này, người dùng trên


từng máy tính chịu trách nhiệm điều hành và chia sẻ tài ngun của máy
tính mình. Mơ hình này chỉ phù hợp với các tổ chức nhỏ và không quan tâm
đến vấn đề bảo mật. Phần mềm mạng peer–to–peer được thiết kế sao cho
các thực thể ngang hàng thực hiện cùng các chức năng tương tự nhau.
o Mơ hình mạng khách chủ (Client-Server): trong mơ hình mạng máy chủ có
một hệ thống máy tính cung cấp các tài nguyên và dịch vụ cho cả hệ thống
mạng gọi là các máy chủ(Server). Một hệ thống máy tính sử dụng tài
nguyên và dịch vụ này được gọi là máy khác (Client).
1.2. Mô hình mạng khách chủ (Client-Server)
 Mơ hình Client-Server là gì?
o Mơ hình Client-Server là mơ mình mà trong đó một số máy đóng vai
trị cung ứng dịch vụ theo u cầu của các máy trạm.
o Hiểu đơn giản, mơ hình Client-Server là mơ hình mạng máy tính gồm
hai thành phần chính là máy chủ(Server) và máy khách(Client)


Hình 2. 1. Mơ phỏng mơ hình Client-Server


 Ngun lý hoạt động của mơ hình Client-Server
o Việc giao tiếp giữa Client và Server phải dựa trên các giao thức chuẩn Một
số giao thức được sử dụng phổ biến hiện nay như: TCP/IP, UDP, OSI…
o Mơ hình này gồm hai thành phần chính: Client và Server
 Client: là nơi gửi các yêu cầu xử lý về máy chủ và tổ chức giao tiếp
với người dùng, với môi trường bên ngoài cũng như với Server. Sau
khi tiếp nhận yêu cầu người dùng, phần phía Client gửi về phía
Server.
 Server: máy chủ xử lý và gửi kết quả về cho Client. Phần phía
Server quản lý giao tiếp với mơi trường bên ngoài tại Server và với
các Client. Sau khi phân tích yêu cầu Client gửi đến, phía Server sẽ
xử lý và gửi trả kết quả về phía Client.
 Ưu điểm của mơ hình Client-Server
o Với mơ hình Client-Server , bạn có thể điều khiển cả tập trung lẫn khơng tập
trung các tài nguyên và bảo mật dữ liệu có thể được điều khiển qua một số
máy chuyên dụng. Phân quyền truy nhập tài nguyên, directory server,
domain controller.
o Client-Server chống quá tải mạng.
o Bạn có thể được đảm bảo tồn vẹn dữ liệu trong trường hợp có sự cố xảy ra
do tập trung quản lý ở Server.
o Tiết kiệm chi phí phát triển các hệ thống ứng dụng phần mềm triển khai trên
mạng.
o Có thể mở rộng (thay đổi) phạm vi mạng dễ dàng.
o Cung cấp một nền tảng lý tưởng cho phép tích hợp các kỹ thuật hiện đại như
mơ hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thơng tin địa lý (GIS)

o Người dùng có thể truy cập dữ liệu từ xa để thao tác như gửi và nhận file,

tìm kiếm thơng tin
 Hạn chế của mơ hình Client-Server
o Địi hỏi q trình bảo trì bảo dưỡng Server.
o Do nguyên lí làm việc phải trao đổi dữ liệu giữa hai máy ở hai khu vực địa
lý khác nhau , mơ hình Client-Server dễ dàng xảy ra hiện tượng thơng tin
truyền trên mạng bị lộ. Tính an tồn và bảo mật thông tin trên mạng là hạn
chế mà mơ hình Client-Server cần khắc phục.


2. Giao thức mạng
2.1. Định nghĩa bộ giao thức TCP/IP
TCP/IP là viết tắt của cụm từ Transmission Control Protocol/Internet Protocol.
TCP/IP là một tập hợp các giao thức (protocol) điều khiển truyền thơng giữa tất cả các
máy tính trên Internet. Cụ thể hơn, TCP/IP chỉ rõ cách thức đóng gói thơng tin (hay
cịn gọi là gói tin ), được gửi và nhận bởi các máy tính có kết nối với nhau. TCP/IP
được phát triển vào năm 1978 bởi Bob Kahn và Vint Cerf.
TCP/IP được chia thành bốn tầng, mỗi tầng bao gồm các giao thức cụ thể.
 Tầng ứng dụng cung cấp các ứng dụng với trao đổi dữ liệu được chuẩn hóa.
Các giao thức của nó bao gồm Giao thức truyền tải siêu văn bản (HTTP),
Giao thức truyền tập tin (File Transfer Protocol - FTP), Giao thức POP3,
Giao thức truyền tải thư tín đơn giản (Simple Mail Transfer Protocol SMTP) và Giao thức quản lý mạng đơn giản (Simple Network Management
Protocol - SNMP).
 Tầng giao vận chịu trách nhiệm duy trì liên lạc đầu cuối trên tồn mạng.
TCP xử lý thông tin liên lạc giữa các máy chủ và cung cấp điều khiển luồng,
ghép kênh và độ tin cậy. Các giao thức giao vận gồm giao thức TCP và giao
thức UDP (User Datagram Protocol), đôi khi được sử dụng thay thế cho
TCP với mục đích đặc biệt.
 Tầng mạng, cịn được gọi là tầng Internet, có nhiệm vụ xử lý các gói và kết
nối các mạng độc lập để vận chuyển các gói dữ liệu qua các ranh giới mạng.
Các giao thức tầng mạng gồm IP và ICMP (Internet Control Message

Protocol), được sử dụng để báo cáo lỗi.
 Tầng vật lý bao gồm các giao thức chỉ hoạt động trên một liên kết - thành
phần mạng kết nối các nút hoặc các máy chủ trong mạng. Các giao thức
trong lớp này bao gồm Ethernet cho mạng cục bộ (LAN) và Giao thức phân
giải địa chỉ (Address Resolution Protocol - ARP).


Hình 2. 2. Mơ phỏng các tầng của bộ giao thức TCP/IP

2.2. Định nghĩa giao thức TCP
TCP (Transmission Control Protocol) là một trong các giao thức cốt lõi của bộ
giao thức TCP/IP. Sử dụng TCP, các ứng dụng trên các máy chủ được nối mạng có thể
tạo các "kết nối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin.
Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và
đúng thứ tự. TCP còn phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ
Web và dịch vụ thư điện tử) đồng thời chạy trên cùng một máy chủ.
Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dưới
và một ứng dụng bên trên. Các ứng dụng thường cần các kết nối đáng tin cậy
kiểu đường ống để liên lạc với nhau, trong khi đó, giao thức IP khơng cung cấp những
dịng kiểu đó, mà chỉ cung cấp dịch vụ chuyển gói tin khơng đáng tin cậy. TCP làm
nhiệm vụ của tầng giao vận trong mơ hình OSI đơn giản của các mạng máy tính.

3. Lập trình Socket
3.1. Định nghĩa Socket
 Socket là một điểm cuối(end-point) của liên kết truyền thơng hai chiều(twoway communication) giữa hai chương trình chạy trên mạng. Các lớp Socket
được sử dụng để biểu diễn kết nối giữa client và server. Gói java.net cung
cấp hai lớp - Socket và ServerSocket - thể hiện kết nối giữa client và server.




×