1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python

33 8 0

Đ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

Thông tin cơ bản

Tiêu đề Lập trình bắt và phân tích gói tin bằng Python
Tác giả Nguyễn Duy Tú Anh, Ngô Đức Bắc, Phạm Trung Đức, Nguyễn Quốc Hoàn, Nguyễn Minh Ngọc
Người hướng dẫn PTS. Nguyễn Ngọc Điệp
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Giám sát an toàn mạng
Thể loại Bài tập lớn
Năm xuất bản 2017
Thành phố Hà Nội
Định dạng
Số trang 33
Dung lượng 591,42 KB

Cấu trúc

  • Chương 1 Tổng quan về lí thuyết giao thức (6)
    • 1.1 Dẫn chương (6)
    • 1.2 UDP Header (6)
    • 1.3 TCP Header (7)
    • 1.4 IP Header (16)
    • 1.5 Ethernet Header (21)
  • Chương 2 Tổng quan về kĩ thuật (22)
    • 2.1 Dẫn chương (22)
    • 2.2 Giới thiệu về Python (22)
    • 2.3 Lập trình bắt và phân tích các gói tin (24)
      • 2.3.1 Hàm phân tích gói tin giao thức UDP (25)
      • 2.3.2 Hàm phân tích gói tin giao thức TCP (25)
      • 2.3.3 Hàm phân tích gói tin giao thức IP (25)
      • 2.3.4 Hàm phân tích gói tin giao thức Ethernet (26)
  • Chương 3 Lập trình việc phân tích và bắt gói tin bằng Python (27)
    • 3.1 Dẫn chương (27)
    • 3.2 Chương trình đầy đủ (27)
    • 3.3 Ứng dụng thực tế (33)

Nội dung

Tổng quan về lí thuyết giao thức

Dẫn chương

Trong chương đầu tiên, chúng ta sẽ khám phá lý thuyết về các header của gói tin trong các giao thức UDP, TCP, IP và Ethernet Những kiến thức này được trình bày một cách súc tích và rõ ràng, tạo nền tảng vững chắc cho việc phân tích lập trình nội dung gói tin trong chương hai.

UDP Header

Giao thức User Datagram Protocol (UDP) cung cấp gói tin datagram cho giao tiếp giữa các máy tính trong môi trường mạng kết nối UDP hoạt động dựa trên giao thức Internet Protocol (IP) như một giao thức cơ bản.

Giao thức này cho phép các chương trình ứng dụng gửi tin nhắn đến nhau với cơ chế tối thiểu Nó có tính chất giao dịch, nhưng không đảm bảo việc truyền tin và bảo vệ bản sao Đối với các ứng dụng cần phân phối luồng dữ liệu đáng tin cậy, nên sử dụng Giao thức Điều khiển TCP.

Hình 1.1: Các thành phần của header trong gói tin giao thức UDP

Dựa trên hình minh họa 1.1, header của gói tin trong giao thức UDP được phân tích như sau:

STT thành Đặc điểm, chức năng phần phần

Là một trường tùy chọn, khi có ý nghĩa, nó cho biết cổng của quá trình gửi, và có thể

Cổng nguồn 16 bit được giả định là cổng mà một phản hồi sẽ được gửi đến nếu không có thông tin nào khác Trong trường hợp không sử dụng, giá trị bằng không sẽ được chèn vào.

16 bits Có ý nghĩa trong ngữ cảnh của một địa chỉ

Port đích đến của Internet cụ thể.

Chiều dài là độ dài theo octet của gói tin

3 Length 16 bits người dùng này bao gồm tiêu đề và dữ liệu này (Điều này có nghĩa là giá trị tối thiểu của chiều dài là tám).

Checksum là phần bổ sung của một phần của tiêu đề giả của thông tin từ tiêu đề IP, phần

4 Checksum 16 bits đầu UDP và dữ liệu, đệm với octet không ở cuối (nếu cần) để tạo ra một bội số của hai octet

Bảng 1.1: Phân tích các thành phần của header trong giao thức UDP

TCP Header

TCP là giao thức tin cậy, định hướng kết nối, được thiết kế để tương thích với hệ thống phân cấp các giao thức hỗ trợ ứng dụng đa mạng.

TCP đảm bảo giao tiếp đáng tin cậy giữa các quy trình trên các máy chủ khác nhau trong mạng máy tính riêng biệt nhưng liên kết với nhau Các giao thức truyền thông dưới lớp TCP thường không có nhiều giả định về độ tin cậy.

TCP giả định rằng nó có thể nhận được một dịch vụ datagram đơn giản và không đáng tin cậy từ các giao thức cấp thấp hơn Nguyên tắc cơ bản của TCP là đảm bảo khả năng truyền tải dữ liệu một cách đáng tin cậy và có kiểm soát.

7 năng hoạt động trên nhiều hệ thống truyền thông khác nhau, từ các kết nối cứng đến các mạng chuyển mạch gói hoặc mạng chuyển mạch.

Các phân đoạn TCP được truyền tải dưới dạng gói tin internet, trong đó tiêu đề Giao thức Internet chứa nhiều trường thông tin quan trọng như địa chỉ nguồn và đích Tiêu đề TCP, đi kèm với tiêu đề internet, cung cấp thông tin cụ thể cho giao thức TCP, cho phép sự tồn tại của các giao thức lưu trữ khác nhau bên cạnh TCP.

Hình 1.2: Các thành phần header trong gói tin giao thức TCP

Dựa trên hình minh họa, header của gói tin trong giao thức TCP được phân tích như sau:

Bảng 1.2: Phân tích các thành phần của header trong giao thức TCP Độ

STT Tên thành phần dài Đặc điểm chức năng thành phần

1 Source Port 16 Số cổng nguồn bits

2 Destination Port 16 Số cổng đích bits

Số thứ tự của octet dữ liệu đầu tiên trong phân đoạn này (trừ khi có

3 Sequence number 32 SYN) Nếu SYN có mặt, số thứ tự là số thứ tự ban đầu (ISN) và octet bits dữ liệu đầu tiên là ISN + 1.

Nếu bit điều khiển ACK được thiết

Acknowledgment lập, trường này chứa giá trị của số

32 thứ tự tiếp theo mà người gửi của

4 Number bits phân đoạn này mong đợi nhận.

Một khi kết nối được thiết lập, điều này luôn được gửi.

Số lượng các từ 32 bit trong Tiêu đề TCP, cho biết nơi dữ liệu bắt

5 Data offset 4 bits đầu Tiêu đề TCP (ngay cả một bao gồm các tùy chọn) là một số không tách rời dài 32 bit.

6 Reserved 6 bits Mục đích của nó là để sử dụng cho tương lai, giá trị phải là 0.

URG: Trường con trỏ khẩn cấp

ACK: Xác nhận các trường đáng kể

7 Control bit 6 bits PSH: Chức năng đẩy

RST: Đặt lại kết nối SYN: Đồng bộ hóa số thứ tự

FIN: Không có thêm dữ liệu từ người gửi.

Số lượng octet dữ liệu bắt đầu với

8 Window 16 số được chỉ ra trong trường xác bits nhận mà người gửi của phân đoạn này sẵn sàng chấp nhận.

Trường tổng kiểm tra là một bổ sung 16 bit cho tổng số tất cả các từ 16 bit trong tiêu đề và văn bản Nếu một phân đoạn có số lượng từ lẻ trong phần đầu và phần tử văn bản được kiểm tra, thì octet sẽ được tính toán để đảm bảo tính toàn vẹn của dữ liệu.

9 Checksum 16 cuối cùng được thêm vào bên phải bits bằng số không để tạo thành một từ

Để thực hiện kiểm tra, sử dụng 16 bit cho các mục đích này Lưu ý rằng phần đệm không được truyền đi kèm với đoạn dữ liệu Trong quá trình tính tổng kiểm tra, trường kiểm tra sẽ được thay thế bằng các số không.

Chiều dài TCP bao gồm chiều dài tiêu đề TCP cộng với độ dài dữ liệu tính theo đơn vị octet, không bao gồm 12 octet của tiêu đề giả.

Trường này truyền tải giá trị hiện tại của con trỏ khẩn cấp như là một số dương bù đắp từ số thứ tự

10 điểm khẩn cấp trong TCP chỉ ra thứ tự của octet sau dữ liệu khẩn cấp Trường con trỏ khẩn cấp chỉ có ý nghĩa trong các phân đoạn có bit điều khiển URG được thiết lập Phần đệm tiêu đề TCP được sử dụng để đảm bảo dữ liệu khẩn cấp được xử lý đúng cách.

Tùy dụng để đảm bảo rằng tiêu đề TCP

11 Padding kết thúc và dữ liệu bắt đầu trên biến ranh giới 32 bit Phần đệm bao gồm các giá trị 0.

IP Header

Hình 1.3: Minh họa các thành phần của header giao thức IP.

Dựa trên hình minh họa, header của gói tin trong giao thức IP được phân tích như sau:

Bảng 1.3: Phân tích các thành phần của header trong giao thức IP

STT thành Đặc điểm phần phần

Trường Phiên bản chỉ định định dạng

1 Version 4 bits của tiêu đề internet Ví dụ như hiển thị 6 thì giao thức của nó là TCP, hiển thị 17 thì là UDP.

IHL Chiều dài tiêu đề Internet là chiều dài

4 bits của tiêu đề internet bằng các từ 32 bit,

2 và do đó chỉ ra sự bắt đầu của dữ liệu.

Lưu ý rằng giá trị tối thiểu cho một

Length) tiêu đề chính xác là 5

Dịch vụ này cung cấp chỉ dẫn về các tham số trừu tượng liên quan đến chất lượng dịch vụ mong muốn Những tham số này sẽ được sử dụng để hướng dẫn việc lựa chọn các tham số dịch vụ thực tế khi truyền tải gói tin qua một mạng lưới cụ thể Một số mạng cung cấp những khả năng này để đảm bảo hiệu suất và độ tin cậy trong quá trình truyền thông.

Type of cấp dịch vụ ưu tiên, bằng cách nào đó

3 8 bits xử lý lưu lượng truy cập cao quan

Services trọng hơn các lưu lượng truy cập khác

Trong điều kiện tải cao, hệ thống thường chỉ chấp nhận lưu lượng truy cập ở một mức độ ưu tiên nhất định Việc lựa chọn tối ưu yêu cầu đạt được sự cân bằng ba chiều giữa độ trễ thấp, độ tin cậy cao và thông lượng lớn.

Tổng chiều dài là độ dài của datagram, được đo bằng octet, bao gồm tiêu đề internet và dữ liệu.

Trường độ dài 16 bits cho phép gói tin có kích thước tối đa lên tới 65.535 octet Tuy nhiên, việc sử dụng datagram dài như vậy thường không thực tế cho hầu hết các máy chủ và mạng.

Một giá trị nhận dạng được chỉ định

5 Identification 16 bits bởi người gửi để giúp lắp ráp các mảnh của một gói tin.

Các cờ điều khiển khác nhau.

Bit 0: dự trữ, phải bằng không

6 Flags 3 bits Bit 1: (DF) 0 = Có thể phân mảnh, 1 = Không phân mảnh. Bit 2: (MF) 0 = Đoạn cuối, 1 Các phân đoạn khác.

Trường này cho biết trong datagram

Fragment đoạn này thuộc về datagram Phần bù

7 13 bits đắp được đo bằng đơn vị 8 octet (64

Offset bit) Đoạn đầu tiên đã được bù đắp bằng không.

Trường này xác định thời gian tối đa mà datagram có thể được chấp nhận trong hệ thống internet Nếu giá trị của trường này là 0, gói tin sẽ bị hủy Trường này được điều chỉnh trong quá trình xử lý phần đầu internet, và thời gian được đo bằng giây, tuy nhiên, mỗi mô-đun xử lý có thể ảnh hưởng đến thời gian này.

TTL (Thời gian sống) của một gói tin 8 bits phải giảm xuống ít nhất một, ngay cả khi gói tin được xử lý trong vòng chưa đầy một giây TTL được coi là giới hạn tối đa cho thời gian tồn tại của một datagram, nhằm mục đích loại bỏ các gói tin không gửi đi được và ràng buộc thời gian tối đa mà datagram có thể tồn tại trong mạng.

Trường này cho biết giao thức mức

9 Protocol 8 bits tiếp theo được sử dụng trong phần dữ liệu của gói tin internet.

Checksum chỉ trên tiêu đề Do một số

Header trường tiêu đề thay đổi (ví dụ: Time to

10 16 bits live), tính năng này được tính lại và

Checksum xác minh tại mỗi điểm mà tiêu đề internet được xử lý.

Phần đệm Internet header được sử

14 Padding Tùy biến dụng để đảm bảo đầu cuối của internet header kết thúc trên ranh giới

32 bit Phần đệm có giá trị 0.

Ethernet Header

Khung Ethernet bắt đầu với dấu phân cách đầu và khung bắt đầu frame (SFD), thuộc lớp vật lý của gói Ethernet Tiêu đề Ethernet chứa địa chỉ MAC đích và nguồn, là hai trường đầu tiên trong khung Phần giữa của khung chứa dữ liệu tải trọng, bao gồm các tiêu đề cho các giao thức khác như Giao thức Internet Cuối cùng, khung kết thúc bằng chuỗi kiểm tra khung (FCS), một kiểm tra dự phòng 32 bit dùng để phát hiện lỗi trong quá trình truyền dữ liệu.

Hình 1.4: Minh họa thành phần header giao thức IP.

Tổng quan về kĩ thuật

Dẫn chương

Trong chương hai của bài tiểu luận, chúng ta sẽ khám phá cách sử dụng ngôn ngữ lập trình Python để bắt và phân tích các gói tin, từ đó nắm bắt những kỹ thuật và công cụ hữu ích cho việc xử lý dữ liệu mạng.

Giới thiệu về Python

Phiên bản Python: Python 2.7.12+ [GCC 6.2.0 20160822] on linux2

Bảng 2.1: Các thư viện sử dụng trong chương trình Python.

Mô-đun này cho phép chuyển đổi giữa các giá trị Python và các cấu trúc C, được biểu diễn dưới dạng chuỗi Python, mang lại khả năng tương tác giữa hai ngôn ngữ lập trình.

Struct là công cụ quan trọng trong việc xử lý dữ liệu nhị phân từ các tệp tin hoặc kết nối mạng Nó sử dụng định dạng chuỗi để mô tả cách bố trí của cấu trúc C, đồng thời chuyển đổi giữa các giá trị C và Python một cách hiệu quả.

Mô đun này cung cấp truy cập vào giao diện ổ cắm

2 Socket BSD Nó có sẵn trên tất cả các hệ thống Unix hiện đại, Windows, Mac OS X, BeOS, OS / 2, và có lẽ các nền tảng bổ sung.

Mô-đun binascii chứa một số phương pháp để

3 Binascii chuyển đổi giữa các tập tin nhị phân và mã hóa

4 OS, SYS Mô-đun này cung cấp cách sử dụng chức năng hệ điều hành phụ thuộc

Mô-đun này dùng để dừng màn hình chương trình

5 Time trong một thời gian nhất định (Để tiện việc theo dõi các gói tin)

Lập trình bắt và phân tích các gói tin

Hình 2.1: Số thứ tự chỉ định hai thức UDP và TCP.

Bảng 2.2: Quy đổi các giá trị trong thư viện Struct của ngôn ngữ Python

Format C Type Python type Standard size x pad byte no value c char string of length 1 1 b signed char integer 1

H unsigned short integer 2 i int integer 4

I unsigned int integer 4 l long integer 4

L unsigned long integer 4 q long long integer 8

Q unsigned long long integer 8 f float float 4 d double float 8 s char[] string p char[] string

Lưu ý: Header field luôn sử dụng hàm giá trị unsign có giá trị dương. 2.3.1 Hàm phân tích gói tin giao thức UDP:

Hình 2.2: Hàm phân tích gói tin UDP 2.3.2 Hàm phân tích gói tin giao thức TCP:

Hình 2.3: Hàm phân tích giao thức TCP

2.3.3 Hàm phân tích gói tin giao thức IP:

Hình 2.4: Hàm phân tích giao thức IP

2.3.4 Hàm phân tích gói tin giao thức Ethernet:

Hình 2.5: Hàm phân tích giao thức Ethernet

Lập trình việc phân tích và bắt gói tin bằng Python

Dẫn chương

Trong chương số ba của bài tiểu luận, chúng ta ứng dụng thực tế script Python PacketSniffer.py vào thực tế.

Chương trình đầy đủ

The provided Python code demonstrates how to analyze a UDP header using the struct and socket libraries It imports necessary modules, defines a function `analyze_udp_header`, and unpacks the UDP header data into source port, destination port, length, and checksum The function then prints these details in a structured format, allowing for easy interpretation of the UDP packet's header information.

The `analyze_tcp_header` function processes a TCP header from the provided data It unpacks the first 20 bytes to extract key components such as source and destination ports, sequence and acknowledgment numbers, and flags The flags indicate various control bits, including urgent, acknowledgment, push, reset, synchronization, and finish The function also retrieves the window size, checksum, and urgent pointer, followed by printing a formatted output of the TCP header details for analysis.

The code snippet provided displays various TCP segment flags, including URG, ACK, PSH, RST, SYN, and FIN, along with the window size and checksum values It defines a function to analyze IP headers by unpacking the first 20 bytes of data into relevant fields such as version, header length, type of service, total length, identification, flags, fragment offset, time to live, protocol, checksum, source address, and destination address The function extracts and processes these elements to facilitate further network analysis.

The code snippet displays the structure of an IP header, printing key fields such as Version, IHL, TOS, Length, ID, Flags, Offset, TTL, Next Protocol, Checksum, Source IP, and Destination IP It identifies the next protocol based on the IP protocol number, categorizing it as TCP, UDP, or Other Additionally, the function `analyze_ether_header` unpacks the Ethernet header, extracting the destination MAC address from the data.

The code snippet processes an Ethernet header to extract key information It converts the source MAC address into a hexadecimal format using `binascii.hexlify`, while the next protocol is determined by shifting the second element of the Ethernet header The output displays the destination MAC address in a formatted string, showcasing each pair of hexadecimal digits Additionally, the source MAC address is presented in a similar format, ensuring clarity in the representation of network addresses.

The provided code snippet demonstrates a network packet analysis process using Python It begins by extracting segments of the source MAC address from the received data The protocol is printed if it matches a specific value, indicating an IP packet The main function sets up a raw socket to capture network packets and processes the incoming data After a brief pause, it clears the terminal and analyzes the Ethernet header If the packet contains IP data, it further inspects the IP header and checks for the TCP protocol, allowing for deeper analysis of the TCP header This structured approach enables efficient network traffic monitoring and protocol analysis.

24 elif next_proto == "UDP": data = analyze_udp_header(data) else: return while True: main()

Ứng dụng thực tế

Thử chạy script PacketSniffer.py trên máy ảo Linux, ta được kết quả như sau:

Hình 3.1: Chương trình PacketSniffer.py bắt gói tin UDP.

Hình 3.2: Chương trình PacketSniffer.py bắt gói tin TCP.

Hình 3.3: Chương trình PacketSniffer.py bắt gói tin UDP.

Hình 3.4: Chương trình PacketSniffer.py bắt gói tin TCP.

Hình 3.5: Chương trình PacketSniffer.py bắt gói tin TCP.

Hình 3.6: Chương trình PacketSniffer.py bắt gói tin TCP.

Ngày đăng: 30/11/2022, 14:06

HÌNH ẢNH LIÊN QUAN

Bảng 1.1: Phân tích các thành phần của header trong giao thức UDP - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Bảng 1.1 Phân tích các thành phần của header trong giao thức UDP (Trang 7)
Hình 1.2: Các thành phần header trong gói tin giao thức TCP - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 1.2 Các thành phần header trong gói tin giao thức TCP (Trang 8)
Dựa trên hình minh họa, header của gói tin trong giao thức TCP được phân tích như sau: - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
a trên hình minh họa, header của gói tin trong giao thức TCP được phân tích như sau: (Trang 9)
Hình 1.4: Mô hình mạng hình sao hình lưới kết hợp - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 1.4 Mô hình mạng hình sao hình lưới kết hợp (Trang 10)
Hình 1.3: Minh họa các thành phần của header giao thức IP. - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 1.3 Minh họa các thành phần của header giao thức IP (Trang 13)
Dựa trên hình minh họa, header của gói tin trong giao thức IP được phân tích như sau: - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
a trên hình minh họa, header của gói tin trong giao thức IP được phân tích như sau: (Trang 13)
1.5 Ethernet Header - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
1.5 Ethernet Header (Trang 16)
Hình 1.4: Minh họa thành phần header giao thức IP. - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 1.4 Minh họa thành phần header giao thức IP (Trang 16)
Bảng 2.1: Các thư viện sử dụng trong chương trình Python. - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Bảng 2.1 Các thư viện sử dụng trong chương trình Python (Trang 18)
Chương 2– Tổng quan về kĩ thuật - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
h ương 2– Tổng quan về kĩ thuật (Trang 18)
Hình 2.1: Số thứ tự chỉ định hai thức UDP và TCP. - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 2.1 Số thứ tự chỉ định hai thức UDP và TCP (Trang 19)
Bảng 2.2: Quy đổi các giá trị trong thư viện Struct của ngôn ngữ Python - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Bảng 2.2 Quy đổi các giá trị trong thư viện Struct của ngôn ngữ Python (Trang 19)
Hình 2.3: Hàm phân tích giao thức TCP - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 2.3 Hàm phân tích giao thức TCP (Trang 20)
Hình 3.1: Chương trình PacketSniffer.py bắt gói tin UDP. - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 3.1 Chương trình PacketSniffer.py bắt gói tin UDP (Trang 28)
Hình 3.2: Chương trình PacketSniffer.py bắt gói tin TCP. - (TIỂU LUẬN) bài tập lớn giám sát an toàn mạng lập trình bắt và phân tích gói tin bằng python
Hình 3.2 Chương trình PacketSniffer.py bắt gói tin TCP (Trang 29)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w