SlideShare a Scribd company logo
1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------
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
Giảng viên: Nguyễn Ngọc Điệp
Nhóm sinh viên: Nguyễn Duy Tú Anh – B13DCAT048
Ngô Đức Bắc – B13DCAT003
Phạm Trung Đức – B13DCAT056
Nguyễn Quốc Hoàn – B13DCAT057
Nguyễn Minh Ngọc – B13DCAT034
Tên lớp: Nhóm 2 – học sáng thứ sáu.
Hà nội, ngày 3 tháng 5 năm 2017
2
Mục lục
DANH MỤC CÁC CHỮ VIẾT TẮT........................................................................3
DANH SÁCH CÁC BẢNG........................................................................................4
DANH SÁCH HÌNH VẼ............................................................................................5
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.....................................................................................................12
1.5 Ethernet Header..........................................................................................15
Chương 2 – Tổng quan về kĩ thuật .........................................................................16
2.1 Dẫn chương: ................................................................................................16
2.2 Giới thiệu về Python ...................................................................................16
2.3 Lập trình bắt và phân tích các gói tin.......................................................17
2.3.1 Hàm phân tích gói tin giao thức UDP:...................................................18
2.3.2 Hàm phân tích gói tin giao thức TCP: ...................................................18
2.3.3 Hàm phân tích gói tin giao thức IP: .......................................................18
2.3.4 Hàm phân tích gói tin giao thức Ethernet: .............................................19
Chương 3 – Lập trình việc phân tích và bắt gói tin bằng Python........................20
3.1 Dẫn chương: ................................................................................................20
3.2 Chương trình đầy đủ:.................................................................................20
3.3 Ứng dụng thực tế.........................................................................................26
Danh mục tài liệu tham khảo...................................................................................31
3
DANH MỤC CÁC CHỮ VIẾT TẮT
Viết tắt Ý nghĩa
UDP User Datagram Protocol
TCP Transmision Control Protocol
IP Internet Protocol
URG Urgent Pointer field significant
ACK Acknowledgment field significant
PSH Push Function
RST Reset the connection
SYN Synchronize sequence numbers
4
DANH SÁCH CÁC BẢNG
Trang
Bảng 1.1: Phân tích các thành phần của header trong giao thức
UDP
7
Bảng 1.2: Phân tích các thành phần của header trong giao thức
TCP
9
Bảng 1.3: Phân tích các thành phần của header trong giao thức
IP
12
Bảng 2.1: Các thư viện sử dụng trong chương trình Python. 15
Bảng 2.2: Quy đổi các giá trị trong thư viện Struct của ngôn ngữ
Python
16
5
DANH SÁCH HÌNH VẼ
Trang
Hình 1.1: Các thành phần của header trong gói tin giao thức
UDP
7
Hình 1.2: Các thành phần header trong gói tin giao thức TCP 7
Hình 1.3: Minh họa các thành phần của header giao thức IP. 8
Hình 1.4: Minh họa thành phần header giao thức IP. 9
Hình 2.1: Số thứ tự chỉ định hai thức UDP và TCP. 10
Hình 2.2: Hàm phân tích giao thức UDP 12
Hình 2.3: Hàm phân tích giao thức TCP 16
Hình 2.4: Hàm phân tích giao thức IP 17
Hình 2.5: Hàm phân tích giao thức Ethernet 18
Hình 3.1: Chương trình PacketSniffer.py bắt gói tin UDP 25
Hình 3.2: Chương trình PacketSniffer.py bắt gói tin TCP 26
Hình 3.3: Chương trình PacketSniffer.py bắt gói tin UDP. 27
Hình 3.4: Chương trình PacketSniffer.py bắt gói tin TCP. 28
Hình 3.5: Chương trình PacketSniffer.py bắt gói tin UDP. 29
6
Chương 1 – Tổng quan về lí thuyết giao thức
1.1 Dẫn chương:
Trong chương đầu tiên, chúng ta sẽ tìm hiểu, sơ lược về lí thuyết các
header của gói tin giao thức UDP, TCP, IP và Ethernet. Các kiến thức được
súc tích, gói gọn, nhằm đặt nền tảng vững chắc cho chương hai khi phân tích
cách lập trình bắt nội dung gói tin.
1.2 UDP Header
Giao thức User Datagram Protocol (UDP) là giao thức cung cấp gói tin
datagram cho việc giao tiếp giữa các máy tính chuyển mạch trong môi
trường của một tập hợp các mạng máy tính kết nối. Giao thức này giả định
rằng Internet Protocol (IP) được sử dụng làm giao thức cơ bản.
Giao thức này cung cấp một thủ tục cho các chương trình ứng dụng để
gửi tin nhắn đến các chương trình khác với cơ chế giao thức tối thiểu. Giao
thức có hướng giao dịch, và truyền tin và bảo vệ bản sao không được đảm
bảo. Các ứng dụng đòi hỏi yêu cầu phân phối luồng dữ liệu đáng tin cậy
theo yêu cầu nên sử dụng TCP Control Protocol.
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:
7
STT
Tên thành
phần
Độ dài
thành
phần
Đặc điểm, chức năng
1 Source Port 16 bits
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 giả định là cổng mà một trả lời nên
được giải quyết trong trường hợp không có
bất kỳ thông tin khác. Nếu không được sử
dụng, một giá trị bằng không được chèn vào.
2
Destination
Port
16 bits
Có ý nghĩa trong ngữ cảnh của một địa chỉ
đích đến của Internet cụ thể.
3 Length 16 bits
Chiều dài là độ dài theo octet của gói tin
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).
4 Checksum 16 bits
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
đầ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
1.3 TCP Header
TCP là một giao thức tin cậy định hướng kết nối, đầu cuối được thiết kế
để phù hợp với một hệ thống phân cấp các giao thức có hỗ trợ các ứng dụng
đa mạng.
TCP cung cấp giao tiếp giữa quá trình đáng tin cậy giữa các cặp quy
trình trong các máy chủ lưu trữ gắn với các mạng truyền thông máy tính riêng
biệt nhưng kết nối với nhau. Rất ít giả định được thực hiện đối với độ tin cậy
của các giao thức truyền thông dưới lớp TCP.
TCP giả sử nó có thể có được một dịch vụ datagram đơn giản, không
đáng tin cậy từ các giao thức cấp thấp hơn. Về nguyên tắc, TCP nên có khả
8
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 gửi dưới dạng các gói tin internet. Tiêu đề
Giao thức Internet chứa nhiều trường thông tin, bao gồm cả địa chỉ nguồn và
đích. Một tiêu đề TCP đi theo tiêu đề internet, cung cấp thông tin cụ thể cho
giao thức TCP. Bộ phận này cho phép tồn tại các giao thức mức lưu trữ khác
với TCP.
Hình 1.2: Các thành phần header trong gói tin giao thức TCP
9
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
thành
phần
Đặc điểm chức năng
1 Source Port
16
bits
Số cổng nguồn
2 Destination Port
16
bits
Số cổng đích
3 Sequence number
32
bits
Số thứ tự của octet dữ liệu đầu tiên
trong phân đoạn này (trừ khi có
SYN). Nếu SYN có mặt, số thứ tự
là số thứ tự ban đầu (ISN) và octet
dữ liệu đầu tiên là ISN + 1.
4
Acknowledgment
Number 32
bits
Nếu bit điều khiển ACK được thiết
lập, trường này chứa giá trị của số
thứ tự tiếp theo mà người gửi của
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.
5 Data offset 4 bits
Số lượng các từ 32 bit trong Tiêu
đề TCP, cho biết nơi dữ liệu bắt
đầ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.
10
6 Reserved 6 bits
Mục đích của nó là để sử dụng cho
tương lai, giá trị phải là 0.
7 Control bit 6 bits
Từ trái sang phải:
 URG: Trường con trỏ khẩn
cấp
 ACK: Xác nhận các trường
đáng kể
 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.
8 Window
16
bits
Số lượng octet dữ liệu bắt đầu với
số được chỉ ra trong trường xác
nhận mà người gửi của phân đoạn
này sẵn sàng chấp nhận.
9 Checksum
16
bits
Trường tổng kiểm tra là phần bổ
sung của bit 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 chứa
một số lẻ của phần đầu và phần tử
văn bản được kiểm tra, thì octet
cuối cùng được thêm vào bên phải
bằng số không để tạo thành một từ
16 bit cho các mục đích kiểm tra.
Phần đệm không được truyền đi
như một phần của đoạn. Trong khi
tính tổng kiểm tra, trường kiểm tra
sẽ được thay thế bằng các số
không.
11
Chiều dài TCP là chiều dài tiêu đề
TCP cộng với độ dài dữ liệu trong
octet (đây không phải là số lượng
truyền rõ ràng, nhưng được tính),
và nó không tính 12 octet của tiêu
đề giả.
10 Urgent Pointer
16
bits
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ự
trong đoạn này. Con trỏ khẩn cấp
chỉ ra số thứ tự của octet sau dữ
liệu khẩn cấp. Trường này chỉ
được hiểu trong các phân đoạn với
thiết lập bit điều khiển URG.
11 Padding
Tùy
biến
Phần đệm tiêu đề TCP được sử
dụng để đảm bảo rằng tiêu đề TCP
kết thúc và dữ liệu bắt đầu trên
ranh giới 32 bit. Phần đệm bao
gồm các giá trị 0.
12
1.4 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
Tên thành
phần
Độ dài
thành
phần
Đặc điểm
1 Version 4 bits
Trường Phiên bản chỉ định định dạng
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.
2
IHL
(Internet
Headers
Length)
4 bits
Chiều dài tiêu đề Internet là chiều dài
của tiêu đề internet bằng các từ 32 bit,
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
tiêu đề chính xác là 5
13
3
Type of
Services
8 bits
Loại Dịch vụ cung cấp một chỉ dẫn về
các tham số trừu tượng về chất lượng
dịch vụ mong muốn. Các tham số này
sẽ được sử dụng để hướng dẫn lựa
chọn các tham số dịch vụ thực tế khi
truyền một gói tin thông qua một
mạng lưới cụ thể. Một số mạng cung
cấp dịch vụ ưu tiên, bằng cách nào đó
xử lý lưu lượng truy cập cao quan
trọng hơn các lưu lượng truy cập khác
(thông thường chỉ chấp nhận lưu
lượng truy cập trên một độ ưu tiên
nhất định tại thời điểm tải cao). Sự lựa
chọn chính là sự cân bằng ba chiều
giữa độ trễ thấp, độ tin cậy cao và
thông lượng cao.
4 Total Length 16 bits
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 này cho phép độ dài của một
gói tin có thể lên tới 65.535 octet. Các
datagram dài như vậy là không thực tế
đối với hầu hết các máy chủ và mạng.
5 Identification 16 bits
Một giá trị nhận dạng được chỉ định
bởi người gửi để giúp lắp ráp các
mảnh của một gói tin.
6 Flags 3 bits
Các cờ điều khiển khác nhau.
 Bit 0: dự trữ, phải bằng không
 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.
14
7
Fragment
Offset
13 bits
Trường này cho biết trong datagram
đoạn này thuộc về datagram. Phần bù
đắp được đo bằng đơn vị 8 octet (64
bit). Đoạn đầu tiên đã được bù đắp
bằng không.
8 Time to Live 8 bits
Trường này cho biết thời gian tối đa
cho phép datagram được chấp nhận
trong hệ thống internet. Nếu trường
này chứa giá trị 0, thì gói tin đó phải
bị hủy. Trường này được sửa đổi
trong quá trình xử lý phần đầu
internet. Thời gian được đo bằng đơn
vị giây, nhưng vì mỗi mô-đun xử lý
một gói tin phải giảm TTL xuống ít
nhất một, thậm chí nếu nó xử lý gói
tin trong vòng chưa đầy một giây, thì
TTL phải được coi như là một giới
hạn trên trên Thời gian một datagram
có thể tồn tại. Mục đích là làm cho
các gói tin không gửi đi được sẽ bị
loại bỏ, và để ràng buộc datagram tối
đa.
9 Protocol 8 bits
Trường này cho biết giao thức mức
tiếp theo được sử dụng trong phần dữ
liệu của gói tin internet.
10
Header
Checksum
16 bits
Checksum chỉ trên tiêu đề. Do một số
trường tiêu đề thay đổi (ví dụ: Time to
live), tính năng này được tính lại và
xác minh tại mỗi điểm mà tiêu đề
internet được xử lý.
11
Source
Address
32 bits Địa chỉ nguồn
12
Destination
Address
32 bits Địa chỉ đích
15
13 Options Tùy biến
14 Padding Tùy biến
Phần đệm Internet header được sử
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.
1.5 Ethernet Header
Một khung Ethernet được nối trước bởi một dấu phân cách đầu và khung
bắt đầu frame (SFD), là một phần của gói Ethernet ở lớp vật lý. Mỗi khung
Ethernet bắt đầu với một tiêu đề Ethernet, chứa địa chỉ MAC đích và nguồn
như hai trường đầu tiên. Phần giữa của khung là dữ liệu tải trọng bao gồm các
tiêu đề cho các giao thức khác (ví dụ như Giao thức Internet) được thực hiện
trong khung. Khung kết thúc bằng một chuỗi kiểm tra khung (FCS), là kiểm
tra dự phòng chu kỳ 32 bit được sử dụng để phát hiện bất kỳ sự truyền dữ liệu
nào trong quá trình chuyển.
Hình 1.4: Minh họa thành phần header giao thức IP.
16
Chương 2 – Tổng quan về kĩ thuật
2.1 Dẫn chương:
Trong chương hai của bài tiểu luận, chúng ta sẽ tìm hiểu về việc áp dụng
ngôn ngữ lập trình Python vào việc bắt và phân tích các gói tin.
2.2 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.
STT
Tên thư
viện
Chức năng
1 Struct
Mô-đun này thực hiện 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
các chuỗi Python. Điều này có thể được sử dụng
trong việc xử lý dữ liệu nhị phân được lưu trữ trong
các tệp tin hoặc từ các kết nối mạng, trong số các
nguồn khác. Nó sử dụng định dạng chuỗi như mô tả
gọn gàng của cách bố trí của cấu trúc C và chuyển
đổi dự định đến / từ các giá trị Python.
2 Socket
Mô đun này cung cấp truy cập vào giao diện ổ cắm
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.
3 Binascii
Mô-đun binascii chứa một số phương pháp để
chuyển đổi giữa các tập tin nhị phân và mã hóa
ASCII khác nhau.
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
5 Time
Mô-đun này dùng để dừng màn hình chương trình
trong một thời gian nhất định (Để tiện việc theo dõi
các gói tin)
17
2.3 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
B unsigned char integer 1
? _Bool bool 1
h short integer 2
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
P void * integer
18
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:
19
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
20
Chương 3 – Lập trình việc phân tích và bắt gói
tin bằng Python
3.1 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ế.
3.2 Chương trình đầy đủ:
PacketSniffer.py
## Lap trinh phan tich va bat goi tin tren Python
import struct
import socket
import binascii
import os, sys
import time
def analyze_udp_header(data):
udp_hdr = struct.unpack("!4H", data[:8])
src_port = udp_hdr[0]
dst_port = udp_hdr[1]
length = udp_hdr[2]
chk_sum = udp_hdr[3]
data = data[8:]
print "!___________________UDP HEADER______________________!"
print "|ttSource:tt%hu" % src_port
print "|ttDest:tt%hu" % dst_port
print "|ttLength:tt%hu" % length
print "|ttChecksum:t%hu" % chk_sum
return data
21
def analyze_tcp_header(data):
tcp_hdr = struct.unpack("!2H2I4H", data[:20])
src_port = tcp_hdr[0]
dst_port = tcp_hdr[1]
seq_num = tcp_hdr[2]
ack_num = tcp_hdr[3]
data_offset = tcp_hdr[4] >> 12
reserved = (tcp_hdr[4] >> 6) & 0x03ff
flags = tcp_hdr[4] & 0x003f
urg = flags & 0x0020
ack = flags & 0x0010
psh = flags & 0x0008
rst = flags & 0x0004
syn = flags & 0x0002
fin = flags & 0x0001
window = tcp_hdr[5]
checksum = tcp_hdr[6]
urg_ptr = tcp_hdr[7]
data = data[20:]
print "!___________________TCP HEADER______________________!"
print "|ttSource: t%hu" % src_port
print "|ttDest: tt%hu" % dst_port
print "|ttSeq: tt%u" % seq_num
print "|ttAck: tt%u" % ack_num
print "|ttFlags: "
22
print "|ttt URG:%d" % urg
print "|ttt ACK:%d" % ack
print "|ttt PSH:%d" % psh
print "|ttt RST:%d" % rst
print "|ttt SYN:%d" % syn
print "|ttt FIN:%d" % fin
print "|tt Window:t%hu" % window
print "|tt Checksum:t%hu" % checksum
return data
def analyze_ip_header(data):
ip_hdr = struct.unpack("!6H4s4s", data[:20])
ver = ip_hdr[0] >> 12
ihl = (ip_hdr[0] >> 8) & 0x0f
tos = ip_hdr[0] & 0x00ff
tot_len = ip_hdr[1]
ip_id = ip_hdr[2]
flags = ip_hdr[3] >> 13
frag_offset = ip_hdr[3] & 0x1fff
ip_ttl = ip_hdr[4] >> 8
ip_proto = ip_hdr[4] & 0x00ff
chk_sum = ip_hdr[5]
src_addr = socket.inet_ntoa(ip_hdr[6]) #first 4s
dst_addr = socket.inet_ntoa(ip_hdr[7]) #second 4s
no_frag = flags >> 1
more_frag = flags & 0x1
23
print "!___________________IP HEADER______________________!"
print "|ttVersion:t%hu" % ver
print "|ttIHL:tt%hu" % ihl
print "|ttTOS:tt%hu" % tos
print "|ttLength:tt%hu" % tot_len
print "|ttID:tt%hu" % ip_id
print "|ttFlags:tt%hu" % flags
print "|ttOffset:tt%hu" % frag_offset
print "|ttTTL:tt%hu" % ip_ttl
print "|ttNext Proto:t%hu" % ip_proto
print "|ttChecksum:t%hu" % chk_sum
print "|ttSource IP:t%s" % src_addr
print "|ttDest IP:t%s" % dst_addr
if ip_proto == 6:
next_proto = "TCP"
elif ip_proto == 17:
next_proto = "UDP"
else:
next_proto = "Other"
data = data[20:]
return data, next_proto
def analyze_ether_header(data):
ip_bool = False
eth_hdr = struct.unpack("!6s6sH", data[:14]) #IPv4 = 0x0800
dest_mac = binascii.hexlify(eth_hdr[0]) #Destination Address
24
src_mac = binascii.hexlify(eth_hdr[1]) #Source Address
proto = eth_hdr[2] >> 8 #NextProtocol
print "!___________________ETH HEADER______________________!"
print "|tDestination MAC: t%s:%s:%s:%s:%s:%s " % (dest_mac[0:2],
dest_mac[2:4],
dest_mac[4:6], dest_mac[6:8], dest_mac[8:10], dest_mac[10:12])
print "|tSource MAC: tt%s:%s:%s:%s:%s:%s" %
(src_mac[0:2],src_mac[2:4],src_mac[4:6],
src_mac[6:8], src_mac[8:10], src_mac[10:12])
print "|tProto:tttt%hu" % proto
if proto == 0x08:
ip_bool = True
data = data[14:]
return data, ip_bool
def main():
sniffer_socket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW,
socket.ntohs(0x0003))
recv_data = sniffer_socket.recv(2048)
time.sleep(1)
os.system("clear")
data, ip_bool = analyze_ether_header(recv_data)
if ip_bool:
data, next_proto = analyze_ip_header(data)
else:
return
if next_proto == "TCP":
data = analyze_tcp_header(data)
25
elif next_proto == "UDP":
data = analyze_udp_header(data)
else:
return
while True:
main()
26
3.3 Ứ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.
27
Hình 3.2: Chương trình PacketSniffer.py bắt gói tin TCP.
28
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.
29
Hình 3.5: Chương trình PacketSniffer.py bắt gói tin TCP.
30
Hình 3.6: Chương trình PacketSniffer.py bắt gói tin TCP.
31
Danh mục tài liệu tham khảo
[1].https://docs.python.org/2/library/os.html
[2].https://tools.ietf.org/html/rfc793#page-15
[3].https://www.ietf.org/rfc/rfc768.txt
[4].https://en.wikipedia.org/wiki/Ethernet_frame
[5].https://www.cybrary.it/video/packet-analyzer-part-2/

More Related Content

What's hot

Kỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlareKỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlare
Vietnix Hosting
 
Báo cáo phân tích thiết kế mạng
Báo cáo phân tích thiết kế mạngBáo cáo phân tích thiết kế mạng
Báo cáo phân tích thiết kế mạng
jackjohn45
 
Giáo trình Quản trị mạng
Giáo trình Quản trị mạngGiáo trình Quản trị mạng
Giáo trình Quản trị mạngTran Tien
 
Tấn công ARP Cache Poisoning (Man In The Middle) Attacks
Tấn công ARP Cache Poisoning (Man In The Middle) AttacksTấn công ARP Cache Poisoning (Man In The Middle) Attacks
Tấn công ARP Cache Poisoning (Man In The Middle) Attacks
tiktiktc
 
Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620
Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620
Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạngĐề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
đồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire base
đồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire baseđồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire base
đồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire base
jackjohn45
 
Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...
Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...
Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Subnet
SubnetSubnet
Subnet
Hannie Mia
 
Giáo trình bảo mật thông tin
Giáo trình bảo mật thông tinGiáo trình bảo mật thông tin
Giáo trình bảo mật thông tin
jackjohn45
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Huyen Pham
 
Hướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracerHướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracer
Bình Tân Phú
 
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAYĐề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Thuyet Nguyen
 
Đề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đ
Đề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đĐề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đ
Đề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đ
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort idsKịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
Linh Hoang
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTIT
NguynMinh294
 
Huong dan su dung packet tracer
Huong dan su dung packet tracerHuong dan su dung packet tracer
Huong dan su dung packet tracer
Duc Nguyen
 
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
An Nguyen
 

What's hot (20)

Kỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlareKỹ thuật tìm IP Server nằm sau CloudFlare
Kỹ thuật tìm IP Server nằm sau CloudFlare
 
Báo cáo phân tích thiết kế mạng
Báo cáo phân tích thiết kế mạngBáo cáo phân tích thiết kế mạng
Báo cáo phân tích thiết kế mạng
 
Giáo trình Quản trị mạng
Giáo trình Quản trị mạngGiáo trình Quản trị mạng
Giáo trình Quản trị mạng
 
Tấn công ARP Cache Poisoning (Man In The Middle) Attacks
Tấn công ARP Cache Poisoning (Man In The Middle) AttacksTấn công ARP Cache Poisoning (Man In The Middle) Attacks
Tấn công ARP Cache Poisoning (Man In The Middle) Attacks
 
Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620
Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620
Đề tài: Thiết kế hệ thống mạng máy tính, HAY, 9đ - tải qua zalo=> 0909232620
 
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
 
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạngĐề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
 
đồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire base
đồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire baseđồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire base
đồ áN cơ sở 3 xây dựng ứng dụng trò chuyện trực tuyến android sử dụng fire base
 
Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...
Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...
Đề tài: Tìm hiểu và triển khai quản trị mạng trên Ubuntu Server, 9đ - Gửi miễ...
 
Subnet
SubnetSubnet
Subnet
 
Giáo trình bảo mật thông tin
Giáo trình bảo mật thông tinGiáo trình bảo mật thông tin
Giáo trình bảo mật thông tin
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Hướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracerHướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracer
 
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAYĐề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
 
Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)
 
Đề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đ
Đề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đĐề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đ
Đề tài: Tìm hiểu giải pháp an ninh mạng với firewall, HAY, 9đ
 
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort idsKịch bản demo phát hiện xâm nhập sử dụng snort ids
Kịch bản demo phát hiện xâm nhập sử dụng snort ids
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTIT
 
Huong dan su dung packet tracer
Huong dan su dung packet tracerHuong dan su dung packet tracer
Huong dan su dung packet tracer
 
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
 

Similar to Lập trình phân tích bắt gói tin mạng bằng Python

[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
The Nguyen Manh
 
Sự đóng gói cho quá trình vận chuyện gói thoạI
Sự đóng gói cho quá trình vận chuyện gói thoạISự đóng gói cho quá trình vận chuyện gói thoạI
Sự đóng gói cho quá trình vận chuyện gói thoạI
VNG
 
Tcp Udp
Tcp UdpTcp Udp
Tcp Udpyanhul
 
Câu hỏi trắc nghiệm môn cn internet
Câu hỏi trắc nghiệm môn cn internetCâu hỏi trắc nghiệm môn cn internet
Câu hỏi trắc nghiệm môn cn internet
Tran Nghi
 
Network
NetworkNetwork
Network
hieunv1984
 
thi tốt nghiệp môn chính trị
thi tốt nghiệp môn chính trịthi tốt nghiệp môn chính trị
thi tốt nghiệp môn chính trị
chauminhtricntt
 
Network 1206754309287969-2
Network 1206754309287969-2Network 1206754309287969-2
Network 1206754309287969-2Tiệu Vây
 
BaiBaoCaoTNTSL_bai1.pdf
BaiBaoCaoTNTSL_bai1.pdfBaiBaoCaoTNTSL_bai1.pdf
BaiBaoCaoTNTSL_bai1.pdf
ssuser98b66b1
 
TSL-Chapter4.pdf
TSL-Chapter4.pdfTSL-Chapter4.pdf
TSL-Chapter4.pdf
SnBi41
 
Slide
SlideSlide
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thư Viện Số
 
Quantrimang2
Quantrimang2Quantrimang2
Quantrimang2Thanh Dao
 
chương 4 - TCP/IP - mạng máy tính
chương 4 - TCP/IP - mạng máy tínhchương 4 - TCP/IP - mạng máy tính
chương 4 - TCP/IP - mạng máy tính
Quyên Nguyễn Tố
 
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thuTailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
Trần Đức Anh
 
Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03
Huynh MVT
 
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên AndroidHệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Chapter 3 cac phuong phap cap nhat thong tin tren web
Chapter 3 cac phuong phap cap nhat thong tin tren webChapter 3 cac phuong phap cap nhat thong tin tren web
Chapter 3 cac phuong phap cap nhat thong tin tren webxuandiencntt
 
ch01.ppt
ch01.pptch01.ppt
ch01.ppt
Phong Buinhu
 
Mcsa 2012 mạng căn bản phần 3
Mcsa 2012 mạng căn bản phần 3Mcsa 2012 mạng căn bản phần 3
Mcsa 2012 mạng căn bản phần 3
laonap166
 

Similar to Lập trình phân tích bắt gói tin mạng bằng Python (20)

[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
 
Sự đóng gói cho quá trình vận chuyện gói thoạI
Sự đóng gói cho quá trình vận chuyện gói thoạISự đóng gói cho quá trình vận chuyện gói thoạI
Sự đóng gói cho quá trình vận chuyện gói thoạI
 
Tcp Udp
Tcp UdpTcp Udp
Tcp Udp
 
Câu hỏi trắc nghiệm môn cn internet
Câu hỏi trắc nghiệm môn cn internetCâu hỏi trắc nghiệm môn cn internet
Câu hỏi trắc nghiệm môn cn internet
 
Network
NetworkNetwork
Network
 
thi tốt nghiệp môn chính trị
thi tốt nghiệp môn chính trịthi tốt nghiệp môn chính trị
thi tốt nghiệp môn chính trị
 
Network 1206754309287969-2
Network 1206754309287969-2Network 1206754309287969-2
Network 1206754309287969-2
 
BaiBaoCaoTNTSL_bai1.pdf
BaiBaoCaoTNTSL_bai1.pdfBaiBaoCaoTNTSL_bai1.pdf
BaiBaoCaoTNTSL_bai1.pdf
 
TSL-Chapter4.pdf
TSL-Chapter4.pdfTSL-Chapter4.pdf
TSL-Chapter4.pdf
 
Nam
NamNam
Nam
 
Slide
SlideSlide
Slide
 
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
 
Quantrimang2
Quantrimang2Quantrimang2
Quantrimang2
 
chương 4 - TCP/IP - mạng máy tính
chương 4 - TCP/IP - mạng máy tínhchương 4 - TCP/IP - mạng máy tính
chương 4 - TCP/IP - mạng máy tính
 
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thuTailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
 
Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03
 
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên AndroidHệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
 
Chapter 3 cac phuong phap cap nhat thong tin tren web
Chapter 3 cac phuong phap cap nhat thong tin tren webChapter 3 cac phuong phap cap nhat thong tin tren web
Chapter 3 cac phuong phap cap nhat thong tin tren web
 
ch01.ppt
ch01.pptch01.ppt
ch01.ppt
 
Mcsa 2012 mạng căn bản phần 3
Mcsa 2012 mạng căn bản phần 3Mcsa 2012 mạng căn bản phần 3
Mcsa 2012 mạng căn bản phần 3
 

More from Phạm Trung Đức

Windows Malware Forensic - rà soát gỡ bỏ mã độc
Windows Malware Forensic - rà soát gỡ bỏ mã độcWindows Malware Forensic - rà soát gỡ bỏ mã độc
Windows Malware Forensic - rà soát gỡ bỏ mã độc
Phạm Trung Đức
 
Rà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal SuiteRà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal Suite
Phạm Trung Đức
 
Báo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóaBáo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóa
Phạm Trung Đức
 
An toàn hệ điều hành PTIT
An toàn hệ điều hành PTITAn toàn hệ điều hành PTIT
An toàn hệ điều hành PTIT
Phạm Trung Đức
 
Phap luat chinh sach ATTT - ITSM
Phap luat chinh sach ATTT - ITSMPhap luat chinh sach ATTT - ITSM
Phap luat chinh sach ATTT - ITSM
Phạm Trung Đức
 
Kĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềmKĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềm
Phạm Trung Đức
 
Kĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềmKĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềm
Phạm Trung Đức
 
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mới
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mớiĐường lối của Đảng xây dựng văn hóa thời kì Đổi mới
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mới
Phạm Trung Đức
 
Tấn công Social Engineering
Tấn công Social EngineeringTấn công Social Engineering
Tấn công Social Engineering
Phạm Trung Đức
 

More from Phạm Trung Đức (9)

Windows Malware Forensic - rà soát gỡ bỏ mã độc
Windows Malware Forensic - rà soát gỡ bỏ mã độcWindows Malware Forensic - rà soát gỡ bỏ mã độc
Windows Malware Forensic - rà soát gỡ bỏ mã độc
 
Rà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal SuiteRà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal Suite
 
Báo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóaBáo cáo tốt nghiệp Android RSA mã hóa
Báo cáo tốt nghiệp Android RSA mã hóa
 
An toàn hệ điều hành PTIT
An toàn hệ điều hành PTITAn toàn hệ điều hành PTIT
An toàn hệ điều hành PTIT
 
Phap luat chinh sach ATTT - ITSM
Phap luat chinh sach ATTT - ITSMPhap luat chinh sach ATTT - ITSM
Phap luat chinh sach ATTT - ITSM
 
Kĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềmKĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềm
 
Kĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềmKĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềm
 
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mới
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mớiĐường lối của Đảng xây dựng văn hóa thời kì Đổi mới
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mới
 
Tấn công Social Engineering
Tấn công Social EngineeringTấn công Social Engineering
Tấn công Social Engineering
 

Lập trình phân tích bắt gói tin mạng bằng Python

  • 1. 1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG --------------------------------------- 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 Giảng viên: Nguyễn Ngọc Điệp Nhóm sinh viên: Nguyễn Duy Tú Anh – B13DCAT048 Ngô Đức Bắc – B13DCAT003 Phạm Trung Đức – B13DCAT056 Nguyễn Quốc Hoàn – B13DCAT057 Nguyễn Minh Ngọc – B13DCAT034 Tên lớp: Nhóm 2 – học sáng thứ sáu. Hà nội, ngày 3 tháng 5 năm 2017
  • 2. 2 Mục lục DANH MỤC CÁC CHỮ VIẾT TẮT........................................................................3 DANH SÁCH CÁC BẢNG........................................................................................4 DANH SÁCH HÌNH VẼ............................................................................................5 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.....................................................................................................12 1.5 Ethernet Header..........................................................................................15 Chương 2 – Tổng quan về kĩ thuật .........................................................................16 2.1 Dẫn chương: ................................................................................................16 2.2 Giới thiệu về Python ...................................................................................16 2.3 Lập trình bắt và phân tích các gói tin.......................................................17 2.3.1 Hàm phân tích gói tin giao thức UDP:...................................................18 2.3.2 Hàm phân tích gói tin giao thức TCP: ...................................................18 2.3.3 Hàm phân tích gói tin giao thức IP: .......................................................18 2.3.4 Hàm phân tích gói tin giao thức Ethernet: .............................................19 Chương 3 – Lập trình việc phân tích và bắt gói tin bằng Python........................20 3.1 Dẫn chương: ................................................................................................20 3.2 Chương trình đầy đủ:.................................................................................20 3.3 Ứng dụng thực tế.........................................................................................26 Danh mục tài liệu tham khảo...................................................................................31
  • 3. 3 DANH MỤC CÁC CHỮ VIẾT TẮT Viết tắt Ý nghĩa UDP User Datagram Protocol TCP Transmision Control Protocol IP Internet Protocol URG Urgent Pointer field significant ACK Acknowledgment field significant PSH Push Function RST Reset the connection SYN Synchronize sequence numbers
  • 4. 4 DANH SÁCH CÁC BẢNG Trang Bảng 1.1: Phân tích các thành phần của header trong giao thức UDP 7 Bảng 1.2: Phân tích các thành phần của header trong giao thức TCP 9 Bảng 1.3: Phân tích các thành phần của header trong giao thức IP 12 Bảng 2.1: Các thư viện sử dụng trong chương trình Python. 15 Bảng 2.2: Quy đổi các giá trị trong thư viện Struct của ngôn ngữ Python 16
  • 5. 5 DANH SÁCH HÌNH VẼ Trang Hình 1.1: Các thành phần của header trong gói tin giao thức UDP 7 Hình 1.2: Các thành phần header trong gói tin giao thức TCP 7 Hình 1.3: Minh họa các thành phần của header giao thức IP. 8 Hình 1.4: Minh họa thành phần header giao thức IP. 9 Hình 2.1: Số thứ tự chỉ định hai thức UDP và TCP. 10 Hình 2.2: Hàm phân tích giao thức UDP 12 Hình 2.3: Hàm phân tích giao thức TCP 16 Hình 2.4: Hàm phân tích giao thức IP 17 Hình 2.5: Hàm phân tích giao thức Ethernet 18 Hình 3.1: Chương trình PacketSniffer.py bắt gói tin UDP 25 Hình 3.2: Chương trình PacketSniffer.py bắt gói tin TCP 26 Hình 3.3: Chương trình PacketSniffer.py bắt gói tin UDP. 27 Hình 3.4: Chương trình PacketSniffer.py bắt gói tin TCP. 28 Hình 3.5: Chương trình PacketSniffer.py bắt gói tin UDP. 29
  • 6. 6 Chương 1 – Tổng quan về lí thuyết giao thức 1.1 Dẫn chương: Trong chương đầu tiên, chúng ta sẽ tìm hiểu, sơ lược về lí thuyết các header của gói tin giao thức UDP, TCP, IP và Ethernet. Các kiến thức được súc tích, gói gọn, nhằm đặt nền tảng vững chắc cho chương hai khi phân tích cách lập trình bắt nội dung gói tin. 1.2 UDP Header Giao thức User Datagram Protocol (UDP) là giao thức cung cấp gói tin datagram cho việc giao tiếp giữa các máy tính chuyển mạch trong môi trường của một tập hợp các mạng máy tính kết nối. Giao thức này giả định rằng Internet Protocol (IP) được sử dụng làm giao thức cơ bản. Giao thức này cung cấp một thủ tục cho các chương trình ứng dụng để gửi tin nhắn đến các chương trình khác với cơ chế giao thức tối thiểu. Giao thức có hướng giao dịch, và truyền tin và bảo vệ bản sao không được đảm bảo. Các ứng dụng đòi hỏi yêu cầu phân phối luồng dữ liệu đáng tin cậy theo yêu cầu nên sử dụng TCP Control Protocol. 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:
  • 7. 7 STT Tên thành phần Độ dài thành phần Đặc điểm, chức năng 1 Source Port 16 bits 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 giả định là cổng mà một trả lời nên được giải quyết trong trường hợp không có bất kỳ thông tin khác. Nếu không được sử dụng, một giá trị bằng không được chèn vào. 2 Destination Port 16 bits Có ý nghĩa trong ngữ cảnh của một địa chỉ đích đến của Internet cụ thể. 3 Length 16 bits Chiều dài là độ dài theo octet của gói tin 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). 4 Checksum 16 bits 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 đầ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 1.3 TCP Header TCP là một giao thức tin cậy định hướng kết nối, đầu cuối được thiết kế để phù hợp với một hệ thống phân cấp các giao thức có hỗ trợ các ứng dụng đa mạng. TCP cung cấp giao tiếp giữa quá trình đáng tin cậy giữa các cặp quy trình trong các máy chủ lưu trữ gắn với các mạng truyền thông máy tính riêng biệt nhưng kết nối với nhau. Rất ít giả định được thực hiện đối với độ tin cậy của các giao thức truyền thông dưới lớp TCP. TCP giả sử nó có thể có được một dịch vụ datagram đơn giản, không đáng tin cậy từ các giao thức cấp thấp hơn. Về nguyên tắc, TCP nên có khả
  • 8. 8 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 gửi dưới dạng các gói tin internet. Tiêu đề Giao thức Internet chứa nhiều trường thông tin, bao gồm cả địa chỉ nguồn và đích. Một tiêu đề TCP đi theo tiêu đề internet, cung cấp thông tin cụ thể cho giao thức TCP. Bộ phận này cho phép tồn tại các giao thức mức lưu trữ khác với TCP. Hình 1.2: Các thành phần header trong gói tin giao thức TCP
  • 9. 9 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 thành phần Đặc điểm chức năng 1 Source Port 16 bits Số cổng nguồn 2 Destination Port 16 bits Số cổng đích 3 Sequence number 32 bits Số thứ tự của octet dữ liệu đầu tiên trong phân đoạn này (trừ khi có SYN). Nếu SYN có mặt, số thứ tự là số thứ tự ban đầu (ISN) và octet dữ liệu đầu tiên là ISN + 1. 4 Acknowledgment Number 32 bits Nếu bit điều khiển ACK được thiết lập, trường này chứa giá trị của số thứ tự tiếp theo mà người gửi của 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. 5 Data offset 4 bits Số lượng các từ 32 bit trong Tiêu đề TCP, cho biết nơi dữ liệu bắt đầ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.
  • 10. 10 6 Reserved 6 bits Mục đích của nó là để sử dụng cho tương lai, giá trị phải là 0. 7 Control bit 6 bits Từ trái sang phải:  URG: Trường con trỏ khẩn cấp  ACK: Xác nhận các trường đáng kể  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. 8 Window 16 bits Số lượng octet dữ liệu bắt đầu với số được chỉ ra trong trường xác nhận mà người gửi của phân đoạn này sẵn sàng chấp nhận. 9 Checksum 16 bits Trường tổng kiểm tra là phần bổ sung của bit 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 chứa một số lẻ của phần đầu và phần tử văn bản được kiểm tra, thì octet cuối cùng được thêm vào bên phải bằng số không để tạo thành một từ 16 bit cho các mục đích kiểm tra. Phần đệm không được truyền đi như một phần của đoạn. Trong khi tính tổng kiểm tra, trường kiểm tra sẽ được thay thế bằng các số không.
  • 11. 11 Chiều dài TCP là chiều dài tiêu đề TCP cộng với độ dài dữ liệu trong octet (đây không phải là số lượng truyền rõ ràng, nhưng được tính), và nó không tính 12 octet của tiêu đề giả. 10 Urgent Pointer 16 bits 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ự trong đoạn này. Con trỏ khẩn cấp chỉ ra số thứ tự của octet sau dữ liệu khẩn cấp. Trường này chỉ được hiểu trong các phân đoạn với thiết lập bit điều khiển URG. 11 Padding Tùy biến Phần đệm tiêu đề TCP được sử dụng để đảm bảo rằng tiêu đề TCP kết thúc và dữ liệu bắt đầu trên ranh giới 32 bit. Phần đệm bao gồm các giá trị 0.
  • 12. 12 1.4 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 Tên thành phần Độ dài thành phần Đặc điểm 1 Version 4 bits Trường Phiên bản chỉ định định dạng 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. 2 IHL (Internet Headers Length) 4 bits Chiều dài tiêu đề Internet là chiều dài của tiêu đề internet bằng các từ 32 bit, 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 tiêu đề chính xác là 5
  • 13. 13 3 Type of Services 8 bits Loại Dịch vụ cung cấp một chỉ dẫn về các tham số trừu tượng về chất lượng dịch vụ mong muốn. Các tham số này sẽ được sử dụng để hướng dẫn lựa chọn các tham số dịch vụ thực tế khi truyền một gói tin thông qua một mạng lưới cụ thể. Một số mạng cung cấp dịch vụ ưu tiên, bằng cách nào đó xử lý lưu lượng truy cập cao quan trọng hơn các lưu lượng truy cập khác (thông thường chỉ chấp nhận lưu lượng truy cập trên một độ ưu tiên nhất định tại thời điểm tải cao). Sự lựa chọn chính là sự cân bằng ba chiều giữa độ trễ thấp, độ tin cậy cao và thông lượng cao. 4 Total Length 16 bits 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 này cho phép độ dài của một gói tin có thể lên tới 65.535 octet. Các datagram dài như vậy là không thực tế đối với hầu hết các máy chủ và mạng. 5 Identification 16 bits Một giá trị nhận dạng được chỉ định bởi người gửi để giúp lắp ráp các mảnh của một gói tin. 6 Flags 3 bits Các cờ điều khiển khác nhau.  Bit 0: dự trữ, phải bằng không  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.
  • 14. 14 7 Fragment Offset 13 bits Trường này cho biết trong datagram đoạn này thuộc về datagram. Phần bù đắp được đo bằng đơn vị 8 octet (64 bit). Đoạn đầu tiên đã được bù đắp bằng không. 8 Time to Live 8 bits Trường này cho biết thời gian tối đa cho phép datagram được chấp nhận trong hệ thống internet. Nếu trường này chứa giá trị 0, thì gói tin đó phải bị hủy. Trường này được sửa đổi trong quá trình xử lý phần đầu internet. Thời gian được đo bằng đơn vị giây, nhưng vì mỗi mô-đun xử lý một gói tin phải giảm TTL xuống ít nhất một, thậm chí nếu nó xử lý gói tin trong vòng chưa đầy một giây, thì TTL phải được coi như là một giới hạn trên trên Thời gian một datagram có thể tồn tại. Mục đích là làm cho các gói tin không gửi đi được sẽ bị loại bỏ, và để ràng buộc datagram tối đa. 9 Protocol 8 bits Trường này cho biết giao thức mức tiếp theo được sử dụng trong phần dữ liệu của gói tin internet. 10 Header Checksum 16 bits Checksum chỉ trên tiêu đề. Do một số trường tiêu đề thay đổi (ví dụ: Time to live), tính năng này được tính lại và xác minh tại mỗi điểm mà tiêu đề internet được xử lý. 11 Source Address 32 bits Địa chỉ nguồn 12 Destination Address 32 bits Địa chỉ đích
  • 15. 15 13 Options Tùy biến 14 Padding Tùy biến Phần đệm Internet header được sử 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. 1.5 Ethernet Header Một khung Ethernet được nối trước bởi một dấu phân cách đầu và khung bắt đầu frame (SFD), là một phần của gói Ethernet ở lớp vật lý. Mỗi khung Ethernet bắt đầu với một tiêu đề Ethernet, chứa địa chỉ MAC đích và nguồn như hai trường đầu tiên. Phần giữa của khung là dữ liệu tải trọng bao gồm các tiêu đề cho các giao thức khác (ví dụ như Giao thức Internet) được thực hiện trong khung. Khung kết thúc bằng một chuỗi kiểm tra khung (FCS), là kiểm tra dự phòng chu kỳ 32 bit được sử dụng để phát hiện bất kỳ sự truyền dữ liệu nào trong quá trình chuyển. Hình 1.4: Minh họa thành phần header giao thức IP.
  • 16. 16 Chương 2 – Tổng quan về kĩ thuật 2.1 Dẫn chương: Trong chương hai của bài tiểu luận, chúng ta sẽ tìm hiểu về việc áp dụng ngôn ngữ lập trình Python vào việc bắt và phân tích các gói tin. 2.2 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. STT Tên thư viện Chức năng 1 Struct Mô-đun này thực hiện 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 các chuỗi Python. Điều này có thể được sử dụng trong việc xử lý dữ liệu nhị phân được lưu trữ trong các tệp tin hoặc từ các kết nối mạng, trong số các nguồn khác. Nó sử dụng định dạng chuỗi như mô tả gọn gàng của cách bố trí của cấu trúc C và chuyển đổi dự định đến / từ các giá trị Python. 2 Socket Mô đun này cung cấp truy cập vào giao diện ổ cắm 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. 3 Binascii Mô-đun binascii chứa một số phương pháp để chuyển đổi giữa các tập tin nhị phân và mã hóa ASCII khác nhau. 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 5 Time Mô-đun này dùng để dừng màn hình chương trình trong một thời gian nhất định (Để tiện việc theo dõi các gói tin)
  • 17. 17 2.3 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 B unsigned char integer 1 ? _Bool bool 1 h short integer 2 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 P void * integer
  • 18. 18 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:
  • 19. 19 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
  • 20. 20 Chương 3 – Lập trình việc phân tích và bắt gói tin bằng Python 3.1 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ế. 3.2 Chương trình đầy đủ: PacketSniffer.py ## Lap trinh phan tich va bat goi tin tren Python import struct import socket import binascii import os, sys import time def analyze_udp_header(data): udp_hdr = struct.unpack("!4H", data[:8]) src_port = udp_hdr[0] dst_port = udp_hdr[1] length = udp_hdr[2] chk_sum = udp_hdr[3] data = data[8:] print "!___________________UDP HEADER______________________!" print "|ttSource:tt%hu" % src_port print "|ttDest:tt%hu" % dst_port print "|ttLength:tt%hu" % length print "|ttChecksum:t%hu" % chk_sum return data
  • 21. 21 def analyze_tcp_header(data): tcp_hdr = struct.unpack("!2H2I4H", data[:20]) src_port = tcp_hdr[0] dst_port = tcp_hdr[1] seq_num = tcp_hdr[2] ack_num = tcp_hdr[3] data_offset = tcp_hdr[4] >> 12 reserved = (tcp_hdr[4] >> 6) & 0x03ff flags = tcp_hdr[4] & 0x003f urg = flags & 0x0020 ack = flags & 0x0010 psh = flags & 0x0008 rst = flags & 0x0004 syn = flags & 0x0002 fin = flags & 0x0001 window = tcp_hdr[5] checksum = tcp_hdr[6] urg_ptr = tcp_hdr[7] data = data[20:] print "!___________________TCP HEADER______________________!" print "|ttSource: t%hu" % src_port print "|ttDest: tt%hu" % dst_port print "|ttSeq: tt%u" % seq_num print "|ttAck: tt%u" % ack_num print "|ttFlags: "
  • 22. 22 print "|ttt URG:%d" % urg print "|ttt ACK:%d" % ack print "|ttt PSH:%d" % psh print "|ttt RST:%d" % rst print "|ttt SYN:%d" % syn print "|ttt FIN:%d" % fin print "|tt Window:t%hu" % window print "|tt Checksum:t%hu" % checksum return data def analyze_ip_header(data): ip_hdr = struct.unpack("!6H4s4s", data[:20]) ver = ip_hdr[0] >> 12 ihl = (ip_hdr[0] >> 8) & 0x0f tos = ip_hdr[0] & 0x00ff tot_len = ip_hdr[1] ip_id = ip_hdr[2] flags = ip_hdr[3] >> 13 frag_offset = ip_hdr[3] & 0x1fff ip_ttl = ip_hdr[4] >> 8 ip_proto = ip_hdr[4] & 0x00ff chk_sum = ip_hdr[5] src_addr = socket.inet_ntoa(ip_hdr[6]) #first 4s dst_addr = socket.inet_ntoa(ip_hdr[7]) #second 4s no_frag = flags >> 1 more_frag = flags & 0x1
  • 23. 23 print "!___________________IP HEADER______________________!" print "|ttVersion:t%hu" % ver print "|ttIHL:tt%hu" % ihl print "|ttTOS:tt%hu" % tos print "|ttLength:tt%hu" % tot_len print "|ttID:tt%hu" % ip_id print "|ttFlags:tt%hu" % flags print "|ttOffset:tt%hu" % frag_offset print "|ttTTL:tt%hu" % ip_ttl print "|ttNext Proto:t%hu" % ip_proto print "|ttChecksum:t%hu" % chk_sum print "|ttSource IP:t%s" % src_addr print "|ttDest IP:t%s" % dst_addr if ip_proto == 6: next_proto = "TCP" elif ip_proto == 17: next_proto = "UDP" else: next_proto = "Other" data = data[20:] return data, next_proto def analyze_ether_header(data): ip_bool = False eth_hdr = struct.unpack("!6s6sH", data[:14]) #IPv4 = 0x0800 dest_mac = binascii.hexlify(eth_hdr[0]) #Destination Address
  • 24. 24 src_mac = binascii.hexlify(eth_hdr[1]) #Source Address proto = eth_hdr[2] >> 8 #NextProtocol print "!___________________ETH HEADER______________________!" print "|tDestination MAC: t%s:%s:%s:%s:%s:%s " % (dest_mac[0:2], dest_mac[2:4], dest_mac[4:6], dest_mac[6:8], dest_mac[8:10], dest_mac[10:12]) print "|tSource MAC: tt%s:%s:%s:%s:%s:%s" % (src_mac[0:2],src_mac[2:4],src_mac[4:6], src_mac[6:8], src_mac[8:10], src_mac[10:12]) print "|tProto:tttt%hu" % proto if proto == 0x08: ip_bool = True data = data[14:] return data, ip_bool def main(): sniffer_socket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0003)) recv_data = sniffer_socket.recv(2048) time.sleep(1) os.system("clear") data, ip_bool = analyze_ether_header(recv_data) if ip_bool: data, next_proto = analyze_ip_header(data) else: return if next_proto == "TCP": data = analyze_tcp_header(data)
  • 25. 25 elif next_proto == "UDP": data = analyze_udp_header(data) else: return while True: main()
  • 26. 26 3.3 Ứ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.
  • 27. 27 Hình 3.2: Chương trình PacketSniffer.py bắt gói tin TCP.
  • 28. 28 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.
  • 29. 29 Hình 3.5: Chương trình PacketSniffer.py bắt gói tin TCP.
  • 30. 30 Hình 3.6: Chương trình PacketSniffer.py bắt gói tin TCP.
  • 31. 31 Danh mục tài liệu tham khảo [1].https://docs.python.org/2/library/os.html [2].https://tools.ietf.org/html/rfc793#page-15 [3].https://www.ietf.org/rfc/rfc768.txt [4].https://en.wikipedia.org/wiki/Ethernet_frame [5].https://www.cybrary.it/video/packet-analyzer-part-2/