báo cáo thực tập cơ sở bài 15 lập trình client server để trao đổi thông tin an toàn

20 0 0
báo cáo thực tập cơ sở bài 15 lập trình client server để trao đổi thông tin an toàn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trao đổi thông điệp giữa client và server và đảm bảo tính toàn vẹn của thông điệp khi trao đổi...9 III... Tìm hiểu lý thuyết:– Socket là một cấu trúc phần mềm trong một nút mạng của mạng

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CHUYÊN NGÀNH: AN TOÀN THÔNG TIN

BÁO CÁO THỰC TẬP CƠ SỞ

Bài 15: Lập trình client/server để trao đổi thông tin an toàn

Giảng viên: Đỗ Xuân Chợ Sinh viên: Trần Hải Long Mã sinh viên: B18DCAT149

Hà Nội, tháng 5 năm 2022

Trang 2

Mục lục

I Tìm hiểu lý thuyết 2 II Mô tả cài đặt & kết quả 3 1 Lập trình client và server với TCP socket 3 2 Trao đổi thông điệp giữa client và server và đảm bảo tính toàn vẹn của thông điệp khi trao đổi 9 III Tài liệu tham khảo 19

Trang 3

2 I Tìm hiểu lý thuyết:

– Socket là một cấu trúc phần mềm trong một nút mạng của mạng máy tính, đóng vai trò như một điểm cuối để gửi và nhận dữ liệu trên toàn mạng.

– Sockets chỉ được tạo trong thời gian tồn tại của một tiến trình của một ứng dụng đang chạy.

– Socket được chia chủ yếu thành 2 loại:

 Socket hướng kết nối: Dựa trên giao thức TCP, chỉ thực hiện trên 2 tiến trình đã thiết lập kết nối Giao thức này đảm bảo dữ liệu truyền đến nơi nhận 1 cách tin cậy và đúng tuần tự.

 Socket hướng không kết nối: Dựa trên giao thức UDP, không yêu cầu thiết lập kết nối Giao thức này không đảm bảo dữ liệu truyền đến nơi nhận 1 cách tin cậy và toàn vẹn.

– Phương thức hoạt động:

 Trước hết, Server tạo một socket mới, sau đó gắn nó với một cổng mạng đang mở trên Server Tại thời điểm này, Server chưa chấp nhận kết nối từ client.

 Tiếp theo, Server chuyển sang trạng thái listen để chờ các kết nối từ Client Nếu có một Client kết nối đến, Server có thể chọn accept hay không accept kết nối này.

 Ở phía Client, trước hết Client cũng tạo một socket mới Sau khi tạo, Client thử kết nối (connect) tới địa chỉ IP và cổng của Server.

 Nếu được chấp nhận, Server và Client bắt đầu gửi thông điệp cho nhau.

 Khi muốn kết thúc phiên trao đổi, Client gửi thông điệp đóng phiên cho Server Server thực hiện đóng phiên và ngắt kết nối với Client.

Trang 4

3 II Mô tả cài đặt & kết quả:

1 Lập trình client và server với TCP socket:

– Ý tưởng: Sinh viên thực hiện code client và server Server là Ubuntu victim với địa chỉ IP 192.168.100.147 Client là Kali internal với địa chỉ IP 192.168.100.3 Sau khi tạo kết nối, client sẽ gửi thông điệp cho server Server có thể đáp trả bằng một thông điệp của họ Client điền "End" nếu muốn kết thúc phiên.

– Sinh viên thực hiện code bằng ngôn ngữ Java Sinh viên không sử dụng IDE mà code trên text editor rồi dùng javac để compile chương trình.

Trang 5

4 – Code Client ở hình dưới:

Trang 6

5– Code Server ở hình dưới:

– Sinh viên chạy Server.class trên Ubuntu victim, sau khi đã mở cổng 18149.

Trang 7

– Sinh viên chạy Client.class trên Kali internal:

Trang 8

– Sinh viên sử dụng Wireshark bắt các gói tin gửi từ Client và Server Server là Ubuntu victim với địa chỉ IP 192.168.100.147 Client là Kali internal với địa chỉ IP 192.168.100.3.

Trang 9

8

Trang 10

2 Trao đổi thông điệp giữa client và server và đảm bảo tính toàn vẹn của thông điệp khi trao đổi:

– Ý tưởng: Trước khi Client gửi bản tin cho Server, Client sẽ ghép string nội dung thông điệp với key để tạo thành 1 string mới (terminalText + key), sau đó tính MD5 checksum (32 kí tự) của string mới này Client sau đó gửi một bản tin string bao gồm thông điệp và hash (terminalText + hash) Khi Server nhận bản tin, Server tách bản tin thành 2 phần là receivedText và receivedHash Server gộp receivedText với key để tạo thành string receivedText + key Server tính MD5 checksum của string này và so sánh với receivedHash Nếu trùng, hiển thị bản tin Nếu không trùng, hiển thị "The received message has lost its integrity." Khi Server gửi thông điệp cho Client cũng thao tác tương tự.

– Sinh viên sử dụng thư viện DigestUtils của Apache để tính MD5 checksum thay vì tự viết hàm tính MD5 Trong code bên

dưới, hàm DigestUtils.md5Hex(string) là hàm tính MD5

checksum, đến từ thư viện này.

Trang 11

10 – Code Client:

Trang 12

11 – Code Server (2 ảnh):

Trang 13

– Sinh viên chạy Server trên Ubuntu victim Đây là trường hợp key của Server và Client giống nhau:

Trang 14

– Sinh viên chạy Client trên Kali internal:

Trang 15

– Sinh viên sử dụng Wireshark bắt được bản tin chứa thông điệp và mã MD5.

Trang 16

15

Trang 17

– Hình bên dưới là ví dụ của Client và Server sau khi sinh viên sửa key Client để không khớp với key Server.

Trang 18

17

Trang 20

III Tài liệu tham khảo:

– Computer Networking - A Top Down Approach, Ross Kurose – DigestUtils:

https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html

Ngày đăng: 25/04/2024, 15:06

Tài liệu cùng người dùng

Tài liệu liên quan