Phan nay giới thiệu các vấn đề lập trình cơ bản nhất để xây dựng 1 ứng dụng có khả năng bắt các gói tin và cho phép người dùng có thể điều khiển từ xa qua môi trường mạng.. Tìm hiểu thư
Trang 1TRUONG DAI HQC KHOA HQC TU NHIEN KHOA CONG NGHE THONG TIN
BO MON CONG NGHE PHAN MEM GIANG QUOC MINH - HO PHAM THAI VINH
XÂY DỰNG ỨNG DỤNG BẮT GỐI TIN CHO
VIEC PHAN TICH THONG TIN MANG PHUC
VU QUAN LY
KHOA LUAN CU NHAN TIN HOC
TP HCM, NĂM 2005
Trang 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN
BO MON CONG NGHE PHAN MEM
GIANG QUOC MINH - 0112016
HO PHAM THAI VINH - 0112081
XAY DUNG UNG DUNG BAT GOI TIN CHO VIỆC PHÂN TÍCH THÔNG.TTN MẠNG PHỤC
VU QUAN bY KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN GVC CAO ĐĂNG TÂN
NIÊN KHÓA 2001 - 2005
Trang 3NHAN XET CUA GIAO VIEN HUONG DAN
Tp.HCM, ngay thang nam 2005
Trang 4NHAN XET CUA GIAO VIEN PHAN BIEN
Tp.HCM, ngay thang nam 2005
Trang 5LOI CAM ON
Chúng em xin chân thành cám ơn Ban giám hiệu, quý Thầy cô của trường Đại Học Khoa Học Tự Nhiên TP Hồ Chí Minh, đặc biệt là các Thầy
cô trong Khoa Công nghệ Thông tin đã tận tình giảng dạy, trang bị cho chúng
em những kiến thức cần thiết, bỗ ích trong suốt những năm.học tập tại trường
Chúng em xin chân thành cảm ơn Thầy Cao Đăng Tân, người Thầy đã
tận tình quan tâm hướng dẫn, giúp đỡ chúng em‹ffong suốt thời gian làm luận văn này
Chúng con xin gửi lòng biết ơn sẩu sắc vầsự kính trọng đến ông bà, cha
mẹ, cùng toàn thể gia đình, những người đã nuôi dạy chúng con trưởng thành như ngày hôm nay
Chúng tôi xin chân thành cám ơn sự giúp đỡ, động viên, nhận xét, đóng góp ý kiến của các-anh chị, bạn bè trong quá trình thực hiện luận văn này
TP Hồ Chí Minh, 7/2005
Nhóm sinh viên thực hiện
Giang Quốc Minh - Hồ Phạm Thái Vinh
Trang 6BO CUC CUA LUAN VAN
Luận văn gồm có 3 phan va 7 chương
PHAN 1: TONG QUAN
Chương 1 Giới thiệu về đề tài
PHAN 2: TIM HIEU CAC VAN DE LAP TRINH Phan nay giới thiệu
các vấn đề lập trình cơ bản nhất để xây dựng 1 ứng dụng có khả năng bắt các gói tin và cho phép người dùng có thể điều khiển từ xa qua môi trường mạng
Chương 2 Tìm hiểu thư viện lập trình mạng cấp thấp libpcap, đây là
“trái tim” của hầu hết các ứng dụng bắt gói tin mã nguồn mở hiện nay Chươngg 3 Giới thiệu MySQL, một hệ đuản trị cơ sở dữ liệu tầm trung được sử dụng phổ biến nhất hiện nay
Chương 4 Tìm hiểu kỹ thuật lập trình soèket để viết các ứng dụng trên môi trường mạng
Phần 3 Xây dụng ứng đụng PacketCap Phần này sẽ sử dụng các kiến
thức đã tìm hiểu ở chương Z, 3, 4 dé xây dựng một ứng dụng bắt gói tin,
lưu các kết quả bắt được vào cơ sở dữ liệu để phân tích các thông tin mạng
Chương 5: Phân tích, thiết kế ứng dụng PacketCap
Chương 6 Cài đặt và thử nghiệm PacketCap
Chương 7 Tông kết Chương này trình bày những kết quả đạt được,
những hạn chế và hướng phát triển PacketCap trong tương lai
Trang 7Cac danh muc
MUC LUC
DANH SACH HINH ccsssessssessssscessseessnseessnecessneeesnecsnneessneessnseesnneessnnses DANH SACH BANG .ssssecssssessssseessseessnseessnecensnecesnseesuneeesneessnteesnnessnnses PHAN 1: TÔNG QUAN 22-222 He
1.2 Giới thiệu đề tài
1.3 Yêu cầu của đề tài we
Chương 2 : Thư viện lập trình mạng libpcap 21 2.1 Giới thiệu libpcap
2.2 Cài đặt thư viện libpcap . -
3.3 Các bước xây dựng chương trình sử dụng libpcap "
3.4 Chỉ tiết các bước -ccrtic nh HH Ề ê
3.4.1 Chọn Interface( card mạng) .¿ sềx¿ «5-5 55+ + sex
3.4.2 Mở device đề lắng nghe( sniff) dữ liệu: se
Chương 3: Hệ quản trị cơ sở dữ liệu MySQLL :¿ 5-5555 <<+<<++
3.1 Giới thiệu về MySQL -
3.3.5 Lệnh Revoke
3.3:6 Ví dụ về tạo một cơ sở dữ liệu -ccccvceeerrrrrrrreee
3.4 Lập trình MySQL trên ngôn ngữ C se
Trang 8Cac danh muc
Chương 4: Lập trình SOCK€( .- 5 << E91 vn ng ng ng ryc 42
4.1 Giới thiệu về lập trình socket - 2 2s x+x+zx+zxrxczxerrecree 42
4.2 Nguyên lý hoạt động của SOCk€( ¿5+5 +++*+svE+vesesereerrers 42
4.3.1 Các thuộc tính của SOCKet eee eeeeeesseeeseeceeeeseesseeeseesseeesseeeaee 44 4.3.1.1 Vùng( Oima1T)) . - c5 << + + SE * re re 44 5.3.1.2 Kiểu socket(type) - đ6
4.3.1.3 Giao thức cua socket( protocol)
4.3.2 Tạo sOCK€( - s-ĂSSssseeee 4.3.3 Định địa chỉ cho socket 4.3.4 Đặt tên cho socket
4.3.5 Tạo hàng đợi cho socke " 4.3.6 Chờ và chấp nhận kết nối -<ẤẾ 2ÌỀ 2.22 25c csccsccxcrccre 4.3.7 Yêu cầu kết nối +
4.3.8 Đóng kết nối
4.3.9 Giao tiếp bằng socket 4.4 Sử dụng socket trong ứng dụng minh họa.`¿ s5 «+ PHẦN 3: XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM PACKETCAP
Chương 5: Phân tích và thiết kế PackefCap . -5- 552552 ©c2+c+zxccxeczz 5.1 Khảo sát hiện trạng .- 34 ng 5.2 Phân tích và xác định yêu cầu 5.2.1 Phân tích
5.2.2 Xác định yêu câu
5.3 Các hướng xây dựng ứng dụng PacketCap
5.3.1 Phân tích hướng phát triển dựa trên Ethereal
5.3.2 Phân tích hướng phát triển dựa trên libcap " 5.3.3 Lựa chọn hướng phát triển PacketCap .- :-2 5+-
5.4 Các thành phần PacketCap 22-©52©2ScSE2EEcEEEcEEEeEErrkrrkerrkee 5.5 Xây dựng mô hình use case "
5.5.1 Xác định Actor và us€ CaS€ - c1 2 3 si sersey 5.5.2 tu he
5.6 Dat ta use case
5.6.1 Connect
5.6.2 StartCapture
5.6.3 StopCapture 5.6.4 GetFilter "
b9 >»”””-” 3
12
Trang 9Cac danh muc
5.7.Thiết kế dữ liệu ¿- 2c 5£ SEE2EE2E122122171217121.21E 1.1 cxe
5.7.1 Phân tích các hướng lưu trữ - - 5+ + c+<£+<£++ces+++
5.7.2 Thiết kế cơ sở đư liệu -2- 2 5£ s¿+x+EE£E£2EC£EEvEEvrErrxerxerree
5.7.2.1 Danh sách các đổi tượng (table) "
5.7.2.2 Table PACKET -. 2- 22 ©+£2EE2EE£EE+EEEEEEEEEEEEErErrkrrree 6.7.24 Table IIP 2-22 ©2<+S<9EEEEEEEE2EE1271127171171211211 21.11 cye 5.7.2.5 Table TCP
5.7.2.9 Table ARP oo cece eeessceeteeseeeeeeeee
5.8 Xây dựng PCServer( server), PCManager(client) see
5.8.1 Lưu đồ PCServer coi HẦM eưeu 81
5.8.2 Luu dé PCManager( Client) c.cccccccccesihesessessesselibesessessseseseeeses 82
5.8.3 Cấu trúc đữ liệu trao đổi giữa PCServe£ vàPCManager .83
5.9.Thiết kế giao diện PCManager( phiên bảñ chạy trên Windows) 85
Chương 6: Cài đặt và thử nghiỆm ‹ss-« - -Ề+ 5 + ngư 87 6.1 Cai dat
7.2 Hướng phát triỂn - 2 2 ++©+++EE2EEeEEEerEvtrxerrrerrrrrrerrree 92
Trang 10Cac danh muc
DANH SACH HINH
Hinh 5-1 Cac thanh phan cita PacketCap scccssccssssseessesssessecssecssecseeseeseese 65 Hình 5-2 Mô hình use Case€ - - - c2 S2 S2 2111 HH ngư Hình 5-3 Mô hình lưu trữ 1 " Hình 5-4 Mô hình lưu trữ 2 . - 5 + 2+2 E321 vn re Hình 5-5 Mô hình lưu trữ 3 .- - - 5 52 2E 121 vn re Hình 5-6 Lưu đồ PCServer
Trang 11Cac danh muc
DANH SACH BANG
Bảng 4-1 Các giá trị của OTa11 - ¿<< + + xen reee Bảng 4-2 Các mã lỗi của hàm bind() ¿- + +5++>x+vextsrxezrterrssrresree Bảng 4-3 Các mã lỗi của domain AF_UNIX
Bảng 5-1 Xác định yêu cầu ¿2-52 52©2+2E+eEE+eExerEzrxerrrerxrerrerree
206W )0I.03.(0 4511
in y)0 0 1 Bang 5-5 Table TCP we Bảng 5-6 Table UDP 5 5S Sex serseeerex
Bang 5-7 Table ICMP 555 SS« Sex
Bảng 5-8 Table IGMP
Bảng 5-9 Table ARP " Bảng 5-10 Mô tả màn hình PCManager ‹ - Ès 5-5 55+ S+ + eecseese+
15
Trang 13Chương 1: Giới thiệu đề tài
Việc Công nghệ thông tin và mạng Intenet phát triển và ngày càng nhiều các thông tin quan trọng được trao đổi trên mạng lầm nảy sinh một số vấn đề quan trọng là bảo mật thông tin trên mạng đê tránh rò rỉ hay ngăn không cho truy cập vào các dữ liệu không cho phếp-gây thiệt hại kinh tế, quản lý băng
thông dé tang khả năng đáp ứng thông tin, giao dịch với khách hàng đồng thời
tránh được tình trạng nghẽn mạch lưu thông trên mạng
Việc phân tích lưu lượng mạng đòi hỏi năng lực tính toán rất lớn, vì vậy muốn làm được việc này cần phải trang bị các siêu máy tính để thực hiện bài toán này Trong'điều kiện kinh tế nước ta thì không thể trang bị những hệ thống này được vì chúng quá đắt đỏ
17
Trang 14Chương 1: Giới thiệu đề tài
Vậy giải pháp nào để giải quyết bài toán này ?
© Grid Computing là hệ thống tính toán song song và phân tán cho phép chúng ta thực hiện những bài toán lớn dựa trên các
hệ thống nhỏ gồm nhiều máy tính được nối mạng với nhau
© Hiện nay chúng ta lại có rất nhiều hệ thống máy tính nối mạng nhưng chưa sử dụng được hết khả năng tính toán của chúng
© Với số lượng các máy tính đủ lớn thì việc triển khai Grid
Computing sẽ cho chúng ta một hệ thống tính toán cực kì mạnh gấp nhiều lần I siêu máy tính ( lúc đó các siêu máy tính
có thể chỉ là một node trong hệ thống Grid Computing) Với những ưu điểm trên chúng tôi chọn để tài “Ứng dụng thử nghiệm Grid Computing trong việc phân tích thông tin mạng phục vụ quản lý”
1.2 Giới thiệu đề tài
Đề tài “Ứng dụng thử nghiệm Grid Computing trong việc phân tích thông tin mạng phục vự quản lý” là một đề lớn gồm 2 nhóm thực hiện
Nhóm thứ 1 sẽ xây dựng ứng dụng phân tán trên mạng cho phép thiết lập từ
xa chế độ lọc và bắt cắc gói tin, trích lọc và lưu vào các cơ sở dữ liệu trên mạng để phục vụ cho việc theo dõi và phân tích thông tin mạng (Phần J) Nhóm thứ 2“sẽ tìm hiểu Grid Computing và xây dựng ứng dụng đề phân tích hiện trạng của mạng dựa trên thông tin từ cơ sở đữ liệu do nhóm thir 1
xây dựng (Phần II)
18
Trang 15Chương 1: Giới thiệu đề tài
1.3 Yêu cầu của đề tài
e XAy dựng ứng dụng phân tán thử nghiệm cho phép bắt các gói tin dùng để phân tích thông tin mạng phục vụ quản lý
© Các gói tin sau khi bắt, được trích thông tin và lưu vào các cơ sở đữ liệu phân tán trên mạng theo nhu cầu của người quản trị
e Hệ thống cho phép cấu hình ứng dụng từ xa
®©_ Hỗ trợ lưu kết quả bắt được theo định dạng của các ứng dụng bắt gói tin khác như Ethereal, TCPDump
19
Trang 16Phần 2: Tìm hiểu các vấn dé lập trình
PHAN 2: TIM HIEU CAC VAN DE LAP TRINH
3+ Chương 2 Thư viện lập trình mạng libpcap
** Chương 3 Hệ quảntrị'cơ sở dữ liệu MySQL
3+ Chương 4 Lập trình socket
20
Trang 17Chương 2: Thư viện lập trình mang libpcap
Chương 2 : Thư viện lập trình mạng libpcap
2.1 Giới thiệu libpcap
Libpcap là một thư viện mã nguồn mở hỗ trợ lập trình mạng cấp thấp, cho phép bắt các gói tin trên đường truyền theo nhiều hướng khác nhau, cho phép phân tích các frame vừa tìm được
Thư viện libcap được sử dụng rộng rãi trong các phần mềm sniffer packet Các phần mềm sử dụng libcap phổ biến là TCPdump, TCPflow
Hiện nay phiên bản mới nhất của libpcap là 0.9.1
2.2 Cài đặt thư viện libpcap
Chương trình nguồn của libpcap có thể download ở địa chỉ www.tcpdump.org , các phiên bản mới nhất của libpcap đều có ở địa chỉ này
Giả sử bạn tải về gói libpcap-0.8.3:fãr.tar; tiến hành cài đặt:
® Giải nén gói tar tar —xzvf libpcap-0.8.3.tar.tar
e Chuyên vào thư mục libpcap cd; libpcap-0.8.3
Trang 18Chương 2: Thư viện lập trình mang libpcap
3.3 Các bước xây dựng chương trình sử dụng libpcap
Có 5 bước chính trong việc sử dụng thư viện libpcap
Bước 1: Xác định interface (card mạng) mà ta muốn bắt frame vào (Trong Linux, interface thường là eth0,eth1 Ta có thê dùng các hàm pcap_lookupdevQ của thư viện libpcap để lấy tất cả các inteface
Bước 2: Khởi tạo pcap Cung cấp cho pcap biết interface nào trong
số các interface đã lấy về ở bước trên sẽ được chọn để sniff
Bước 3: Lọc frame pcap cho chúng ta cơ chế chọn lựa khi lọc các
frame khi bat (vi dụ chỉ bắt framúe TCP/IP`có source IP
192.168.8.8 va port 23 .) ta phai tao ra filter rdi bién dich filter này để báo cho pcap biết bộ lọc nó sẽ dùng
Bước 4: Pcap thực thi việc sniff frames
Bước 5: Đóng phiên làm việc và:kết thúc ứng dụng
Trên đây là qui trinheténg quát cách libpcap bắt gói tin trong đó bước 3
là tùy chọn có thể có hoặc không
22
Trang 19Chương 2: Thư viện lập trình mang libpcap
3.4 Chỉ tiết các bước
3.4.1 Chọn Interface( card mạng)
Có 3 cách thiết lập devices đề sniff các frames dữ liệu
© Cách 1 : Cho người dùng nhập tên thiết bị từ dòng lệnh
Trong đó argv[1] là tham số dòng lệnh đầu tiên
e© Cách 2 : Sử dụng hàm pcap JookupdevQ của libpcap để tim kiếm các interface tồn tại trên máy tính
Trang 20Chương 2: Thư viện lập trình mang libpcap
3.4.2 Mớ device để lắng nghe( sniff) dữ liệu
Khởi tạo phiên làm việc cho các thiết bị sử dụng hàm pcap_open_]ive(Q Cấu trúc hàm này như sau :
Trang 21Chương 2: Thư viện lập trình mang libpcap
¢ snaplen cho biết số byte lớn nhất mà pcap có thé bat frames
® promisc nếu đặt bằng 1 thì interface sẽ hoạt động trong chế độ promiscuos mode Đây là chế độ libpcap sé sniff tat cA cdc frame trên dây dẫn Nếu đặt bằng 0 thì interface sẽ hoạt động ở chế độ non promiscuos mode, trong chế độ này,pcap chỉ sniff những frame gửi đến máy
có cấu trúc nhu sau:
infpcap-compile(pcap_t† *p, struct bpƒ_program *ft, char *str,
int optimize, bpf_u_int32 netmask )
Tham số đầu tiên là handle của phiên làm việc (pcap_t) Tham số thứ hai là tham số chỉ đến nơi lưu compile version của filter str 1a chuỗi mô tả cho filter biết những gói tin cần bắt Kế đến là số nguyên
cho biết str là opyimize hay không (1 là true, 0 là false) Cuối cùng là
netmask của đường mạng
25
Trang 22Chương 2: Thư viện lập trình mang libpcap
int pcap_setfilter(pcap_t *p,struct_bpf_program *fp)
Tham số thứ nhất 14 handle quan lý phiên làm việc Tham số thứ hai
là tham chiếu chỉ đến compile version của filter (đã được định nghĩa trong pcap_compile())
Dinh dang str mé ta cho filter:
e Filter theo source ip Vidu," src net 172.168.8.8 "
e Filter theo dest ip : Vídụ,” dsf net 172.166:8:8:.”
e Filter theo source va dest ip
Trang 23Chương 2: Thư viện lập trình mang libpcap
const u_char *packet;
struct pcap_pkthdr hảr; *pcap.h */
struct bpf_program fp; _/*hold compiled program *⁄ bpf_u_int32 maskp; 7* subnet mask x⁄
Trang 24Chương 2: Thư viện lập trình mang libpcap
Hàm này có cấu trúc sau :
u_char *pcap_next(pcap_t *p,struct pcap_hkthdr *h )
Tham số đầu tiên là:handle quản lý phiên làm việc Tham số thứ
hai 1a pointer chỉ đến câufrúc lưu giữ thông tin chung về frame ( thời gian bắt, chiều dài frame ) pcap_next trả về một con trỏ có dạng u_char tro đến frame<ấẩược mô tả bởi cấu trúc này
struct peap_pkthdr
(
struct timeval ts; time stamp
bpf_u_int32 caplen; length of portion present
bpf_u_int32; lebgth this packet (off wire)
28
Trang 25Chương 2: Thư viện lập trình mang libpcap
const u_char *packet;
struct pcap_pkthdr hảf; /* pcap.h */
struct ether_header *eptr; /* net/ethernet.h */
ug char *ptr; 7* printing out hardware header info */
Trang 26Chương 2: Thư viện lập trình mang libpcap
Chương trình này in ra chiều dài và thời gian bắt gói tin đầu tiên mà
nó bắt được Hầm peap£ close(Q dùng để đóng phiên làm việc
Một kỹ thuật khác phức tạp hơn là dùng hàm pcap_ loopQ của libpcap Cấu trúc hai hàm này như sau :
intpcap_loop(pcap_t *p, int cnt, pcap_handler callback,
u_char *user)
Tham số đầu tiên là handle quản lý phiên làm viêc, tham số thứ hai
là số frame sẽ được sniff trước khi thoát ra Nếu tham số này là số âm
thì sẽ sniff đến khi nào có lỗi xảy ra Tham số thứ ba là tên của hàm
callback Tham số cuối cùng được sử dụnng trong một số ứng dụng, đơn giản hãy dặt là NULL
30
Trang 27Chương 2: Thư viện lập trình mang libpcap
Cấu trúc của ham callback :
void my_callback(u_char *useless,const struct pcap_pkthdr* pkthdr,const u_char* packet)
Tham số đầu tiên là tham số cuối cùng của hàm pcap_loop truyền
vào (thường là NULL) Tham số thứ hai là cấu trúc pcap_pkthdr
fflush(stdout);
count++;
}
31
Trang 28Chương 2: Thư viện lập trình mang libpcap
const u_char *packet;
struct pcap_pkthdr hdr; /* pcap.h */
struct ether_header *eptr; /* net/ethernet.h */
Trang 29Chương 2: Thư viện lập trình mang libpcap
Trang 30Chương 3: Hệ quản trị cơ sở dữ liệu MySQL
Chương 3: Hệ quản trị cơ sở dữ liệu MySQL
3.1 Giới thiệu về MySQL
Công ty Tcx muốn phát triển một ứng dụng web và muốn sử dụng cơ sở
dữ liệu của riêng mình Tcx đã dựa trên tiếp cận lập trình API của mSQL và
ngôn ngữ SQL dé phát trién nén MySQL
MySQL hoat d6ng theo mé hinh client-server, rat đơn giản, không có các tính năng cao cấp như quản lý giao tác, chia sẻ kết nối Được sử dụng rộng rãi trong Linux đối với các ứng dụng cgi hay Perl troný môi trường Web, Internet
Dia chi download MySQL : http://www.MySQL.com
3.2 Cai dat MySQL
3.2.1 Cài Dat MySQL tir cac gói nhị phân