1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng ứng dụng bắt gói tin cho việc phân tích thông tin mạng phục vụ quản lý.pdf

91 564 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Xây Dựng Ứng Dụng Bắt Gói Tin Cho Việc Phân Tích Thông Tin Mạng Phục Vụ Quản Lý
Tác giả Giang Quốc Minh, Hồ Phạm Thái Vinh
Người hướng dẫn GVC. Cao Đăng Tân
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Công Nghệ Thông Tin
Thể loại Khóa Luận
Năm xuất bản 2005
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 91
Dung lượng 869,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xây dựng ứng dụng bắt gói tin cho việc phân tích thông tin mạng phục vụ quản lý.pdf.

Trang 1

BỘ MÔN CÔNG NGHỆ PHẢN MEM

GIANG QUOC MINH - HÒ PHẠM THÁI VINH

XÂY DỰNG ỨNG DỤNG BẮT GÓI TI N CHO

VI ỆC PHÂN TÍ CH THÔNG TIN MẠNG PHỤC

VU QUAN LY

KHOA LUAN CU NHAN TIN HOC

TP HCM, NAM 2005

Trang 2

BỘ MÔN CÔNG NGHỆ PHẢN MEM

GIANG QUOC MINH _ - 0112016

HO PHAM THAI VINH - 0112081

XAY DUNG UNG DUNG BAT GOI TIN CHO

VIEC PHAN TiCH THONG TIN MANG PHUC

VU QUAN LY

KHOA LUAN GU NHAN TIN HOC

GIAO VIEN HUONG DAN GVC CAO DANG TAN

NIÊN KHÓA 2001 — 2005

Trang 3

Tp.HCM, ngày tháng năm 2005

Trang 4

Tp.HCM, ngày tháng năm 2005

Trang 5

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 Thay

cô trong Khoa Công nghệ Thông tin đã tận tình giảng day, 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 cam on Thay Cao Đăng Tân, người Thầy đã tận tình quan tâm hướng dẫn, giúp đỡ chúng em frong 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 6

Luận văn gồm có 3 phan và 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 này 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 tiĩ mã nguồn mở hiện nay

Chươngg 3 Giới thiệu MySQL, một hệ quản trị eơ 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 soeket để 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 2, 3, 4 để 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ở đữ 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 7

MUC LUC

DANH SÁCH HÌNH - 5 E2 E221 3212521515151 51511 1101010111111 re 14

Mi ÿ(eï07 0c 15

PHAN 1: TONG QUAN ooececccccsescsssscssscscsesesececscssscscscsescscscsscecseacecscscseseseeeees 16 Chương I: Giới thiệu để tài << tk SE S3 3E 1 1 111 111151111111 1c 17 1.1 Đặt vẫn đỀ -. c-cc S201 011111212 112121211010101010 112g rg 17 1.2 Giới thiệu để tài 5c S1 111 1115121115121211 0111011111110 120110 18 1.3 YOu aU Cla dé tai ccc cccccccccesesscscscscsescscscscscsesesesscscscscscscseeseeeeees 19 PHAN 2: TIM HIEU CÁC VẦN ĐÉ LẬP TRÌNH . - 5-5: 20 Chương 2 : Thư viện lập trình mạng libpcap . - - -s<<<<<<<<<s3 21 "G0030 8000) 1 21

"0.0000.810 21

3.3 Các bước xây dựng chương trình sử dụng libpcap 22

Noo a a0 1n 4dAHŒHH)L ố 23

3.4.1 Chọn Interface( card mạng) .c 55c c3 sxsssrses 23 3.4.2 Mé device dé lang nghe( sniff) dữ liệu : - se sec 24 3.4.3 LOC 0 ae r.AÁ ằ hố 25

Chương 3: Hệ quản trị cơ sở dữ liệu MySQ(L -+ +<<52 34 3.1 Giới thiệu về MySQL .- cTẾÒ Sen E1 Ex S1 41515111111 1.1 cxrkg 34 S00 8/90 34

3.2.1 Cài Đặt MySQL từ các gói nhị phân . ‹ << << <<<<<<52 34 3.2.2 Cài đặt từ mã nguÖN :¿¿¿ ¿5e SE E11SESESE4E5151 E1 811151311111 ce 35 3.3 SU dung MYSQL cece ae 36

SN ni 6 na 36

3.3.2 Lệnh mysqÏadmIn 5 2+2 *****‡ *+*++++sssssssseeeeses 36 Noo 0/0027 36

SEN 0i na 37

3.3.5 Lệnh RevOkke - - - + + c2 S 1113211111111 cv ch nen 38 3.3:6 Ví dụ về tạo một cơ sở dữ liệu - ¿55 +52 +2 £2+s2Esezzzzzse2 38 3.4 Lập trình MySQL trên ngôn ngữ C Í - 5+ s+ssxseses 36 “nhà 8n .Ô 36 3.4.2 mysq]l_real_ COnn€CtIOII + scss +31 2333333311111 eerses 39 S nha, in oan e 40

SA), (0ì 0.v 0n 40

SG so, 8i 8i 40

SN 0ì, (08-302 40

3.4.7 MYSQ]_TOW_SCEK 744ŨỤ 41

SN 00), 0) 000(-8ì:- lì 41

Trang 8

Ô0)000ï156.020000ìi0e2 (01 42

4.1 Giới thiệu về lập trình sOcket ¿<2 +22 £+E+E+E+E+EE+E+EzkzEererecxez 42

4.2 Nguyên lý hoạt động của socket -<+++c++++++ssssssssses 42

4.3.1 Các thuộc tính của socket - << << c c1 ss s1 ca 44

4.3.2 TẠO SOCK€K - cQ Q9 TH TH HH HH nu ch ca 48 4.3.3 Định địa chỉ cho soCK€LV - c 55c {1111 1111 1115 E1 sa 49 4.3.4 Đặt tên cho sOCK€( - cc C22119 211111 HH nh cv ca 51 4.3.5 Tao hang doi cho socket .ccsecssessseesseessesadpesesssesssesssesseeesseees 52

4.3.6 Cho va chap nhan két nO cece ceceseeddlelbecesesesesseeseesesesen 53

4.3.7 Yêu cầu kết nối ee eeceeeecceeseeseeseeseseeseeseeseeadbeceeceesseesedbnesessesteeeeeneeess 54

4.3.8 Đóng kết nối 5+ St HIẾU CN TH HH1 10101 co 55

4.3.9 Giao tiếp bằng socket 2Ö sac 5Ö ch HH 111g gưyi 56 4.4 Su dung socket trong ting dụng minh họa - - - 58

PHAN 3: XAY DUNG UNG DUNG THU NGHIEM PACKETCAP 59

Chương 5: Phân tích và thiết ké PacketCap 0tueccccceeeessessseseseseseeeeeeen 60

5.2 Phân tích và xác định yêu cầu .:¿¿szz£ ¿5e SE SESESEcESEEsrerrrkd 61

5.2.2 Xác định yêu câu c- 102 Ăn ST SE1 1111111111515 111111 1tr 61

5.3 Các hướng xây dựng ứng dụng Packetap <<<<<<<<<<+ 63 5.3.1 Phân tích hướng phát triển dựa trên Ethereal - s5: 63 5.3.2 Phân tích hướng phát triển dựa trên libcap - - «s5: 64 5.3.3 Lựa chọn hướng phát triển PacketCap . 5 2 +c+s+s+szsc: 64 5.4 Các thành phân PacketCap ¿+ + 1+1 SE E5 1E krrrkrered 65 5.5 Xây dựng mô hình use CaSe - c2 11111111 1111111 1 ra 66

5.5.1 Xác định Actor Va USC CASE .eccccecescssecccesecceccceussccsesseceeesseeeecsenes 66

5.6 Đặt fẢ US€ CS€ - c- QC Q9 HH TH TH HH KH TH ng rr 67

h2 r6 68 h9 09) 69

hô on 70

12

Trang 9

sinh 72

5.7.1 Phân tích các hướng Ìưu trữ . -ccssssSSSSss*eeeses 72

5.7.2 Thiết kế cơ sở dư liỆu ¿- ¿52252 +c2Et2tEx2EEEEE2EE.rrrrrrre 75

5.7.2.1 Danh sách các đổi tượng (fabl) -cccccssse2 75

ZZÄ F00 z0 901 75 ZZZ XU hi aO 76

hy Y0 (9 76 0š Y0) 090) 4 77 5.7.2.7 Table ICMP 77 5.7.2.8 Table 6), 78 5Š IYU Si 4 80 5.8 Xây dựng PCServer( server), PCManager(client) z - 81

5.8.1 Luu dG PCServer cccceceecessesesessssesseseesessnsbiesetlaeessessesseseeteeneeess 81

5.8.3 Cấu trúc dit liéu trao déi gitta PCServer va PCManager 83 5.9.Thiết kế giao diện PCManager( phiên bản chạy trên Windows) S5 Chương 6: Cài đặt và thử nghiỆm ‹¿¿¿ 2225 55-55551125 3555555555555 xx2 87

524900830 0 88 6.2.1 Mô hình thử nghiệm 1.0.0 seeeeeseseeeeeceeceeaeaeesseeeeeeeseeeeeaaaeeas 88

6.2.3 Mô hình thử nghiỆm 3 - 25-32111111 3 13111 sk2 90 Chương 7: Tổng KẾT s62 s TÖt 1 xxx 11 111111 11011111111 11110111111 e0 9]

7.1 KẾT luận ốc -c218x: c1 c+cc2t x1111112112112121111111111112111111111111111111 1k 91

7.1.1 Kết quả đạt ƯỢC 5 - St 1111151111111 11 111151511111 1101 re 91

I5 na 91

7.2 Huong phat (61 oie eccccceccccsesescscscececscescscecscscecesesesvavscesacesesesessanes 92

PHỤ LỤC Hướng dẫn sử dụng PacketCap - 5c 55c 2x2 £zEreczed 93

I9, 5006009 1oa 201 ““ 93

II 0ì 003 1500§00)00x0)/ìì 1.0 93 2.1 PCManager trên môi trường LJnuX . 555555 << << s+<ssssss2 93

TÀI LIỆU THAM KHẢO 5:55 2221222122121221121212111221 111.2 95

Trang 10

DANH SÁCH HÌNH

Hình 5-1 Các thành phần của PacketCap 5-5 52+s+E+s+E£szE£z£zczczc: 65

Hình 5-2 Mô hình use C€aS€ - c5 - cc 1229 SH SH vn chư sen 66 Hình 5-3 Mô hình lưu trữ l - - c << + E <5 S111 Ỳ vs ca 72 Hình 5-4 Mô hình lưu trữ 2 - + << c 5c S113 113 2110 1111 111 cv ca 73 Hình 5-5 Mô hình lưu trữ 3 - - - - << c 5c C11111 2110 1111 11k hy ca 74 Hình 5-6 Lưu đồ PCSerVer - - it t Sa 10128113153 151 1551515511381 13 1511555525 81

Hình 5-7 Luu dé PCManager c.cccccecceccsecescsesescecesescsescesscececcesescetssaueseseeas 82

Hình 6-1 Mô hình thử nghiệm Ì - << 5< + +++++++++++esseeessessseess S8 Hình 6-2 Mô hình thử nghiệm 2 << << << << + +++++++++++++eeeseeesseseseees 89 Hình 6-3 Mô hình thử nghiệm 3 - << << {5< + E2 +xsssseesseesseees 90

14

Trang 11

DANH SÁCH BÁNG

Bảng 4-1 Các giá trỊ Của OTTA1T - << 5< << + ++++++++++++++++eeeeeseesssess 48

Bang 4-2 Các mã lỗi của hàm bind() - 5< S2 2s £+E£z£2E£zE££zeczezered 51

Bang 4-3 Các mã lỗi của domain AF_UNIX 5 5252 £2< 2 <cz£csczs2 52

Bang 4-4 Mã lỗi của hàm connect(() ¿+ 52 2222 E+E£+E£EE£zE£EEzE£ztzxczeree 55

Bảng 5-1 Xác định yêu cầu ¿- - < E1 S 111111 1 5111111111111 xk 62

Bảng 5-2 Danh sách các đối tượng - c5 k+Se S111 5151111111 1c 75 Bang 5-3 Table PACKET 75 Bang 5-4 Table IP 1 76 Dinh) 0 76 D0 no) 1009) 1 4 77

in.) i6) ¬ 78 Bang 5-9 Table ARP .ố 80 Bảng 5-10 Mô tả màn hình PCManager ‹⁄ - «2x - s5 <5 << S2 SỐ

Trang 12

PHAN 1: TONG QUAN

+ Chương 1 Gidi thiéu dé tai

16

Trang 13

Chương 1: Giới thiệu đề tài 1.1 Dat van dé

Ngày nay công nghệ thông tin nói chung và Intenet nói riêng ngày càng phát triên mạnh mẽ và trở thành không thể thiếu trong cuộc sống chúng ta

Xuất phát từ nhu câu trao đổi thông tin ngày càng nhanh và nhiều giữa các doanh nghiệp, các tổ chức và công ty trong nền kinh tế thị trường hôm nay, số lượng các doanh nghiệp thiết lập các hệ thống mạng và kết nối Intenet ngày càng nhiêu

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 để tăng 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 đỏ

Trang 14

Vậy giải pháp nào để giải quyết bài toán này 2

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

e 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 ki

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 phan 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 dé phục vụ cho việc theo dõi và phân tích thông tin mạng (Phần I)

Nhóm thứ 2-sẽ tìm hiểu Grid Computing và xây dựng ứng dụng dé phan

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 tht 1

xây dựng (Phần II)

18

Trang 15

1.3 Yêu câu của đề tài

e Xây 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ý

se 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ị

© _ 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

g6i tin khac nhu Ethereal, TCPDump

Trang 16

PHAN 2: TIM HIEU CAC VAN DE LAP TRINH

% Chương 2 Thư viện lập trình mạng libpcap s- Chương 3 Hệ quản trị cơ sở dữ liệu MySQL

%- Chương 4 Lập trình socket

20

Trang 17

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

2.2 Cài đặt thư viện libpcap

www.(cpdump.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:tar.tar, tiễn hành cài đặt:

e Gia nén g6i tar tar —xzvf libpcap-0.8.3.tar.tar

e Chuyén vao thu muc libpcap

Trang 18

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 I: Xác định interface (card mạng) mà ta muốn bắt frame vào (Trong Linux, interface thường là eth0,eth1l Ta có thể dùng các hàm pcap_lookupdev() 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 đã lay về ở bước trên sẽ được chon dé 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 bắt (ví dụ chỉ bắt frame TCP/IP có source IP 192.168.8.8 va port 23 .) ta phải tạo ra filter rồi biên dịch 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 trình tổ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 19

3.4 Chi 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 đữ liệu

s® Cách I : Cho người dùng nhập tên thiết bị từ dòng lệnh

Trong d6 argv[1] là tham số dòng lệnh đầu tiên

kiếm các interface tồn tại trên máy tính

Trang 20

Trong trường hợp này, pcap tự tìm ra thiết bị errbuf là chuỗi chứa

thông báo lỗi nếu có

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_live() Cầu trúc hàm này như sau :

Trang 21

®©_ snaplen cho biết số byte lớn nhất mà pcap có thê bắt frames

® promisc nếu đặt băng l thì interface sẽ hoạt động trong chế độ promiscuos mode Đây là chế độ libpcap sẽ sniff tất cả các frame

trên dây dẫn Nếu đặt bằng 0 thi 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 như sau:

in pcaD-compIle(pcap_t *p, struct PDƒ program * f1, char *str,

int optimize, bpf_u_int32 netmask )

Tham sé dau tién 14 handle ctia phién lam viéc (pcap_t) Tham số thứ hai là tham số chỉ đến noi luu compile version cua 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

Trang 22

int pcap_setfilter(pcap_t *p,struct_bpf_program *fp)

Tham số thứ nhất là handle quản 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 m6 ta cho filter:

e Filter theo source ip

Vidu,” src net 172.168.8.8 "

e Filter theo dest ip:

Vidu,” dst net 172.168.8:8)"

e Filter theo source va dest ip

Vidu,” src and dst.net 172.168.8.8 "

e Filter theo source hay dest ip

Vi du.” srceor dst net 172.168.8.8 "

e Filter theo source port : Viduy” src port 23 "

e Filter theo dest port : Vidu,” dst port 23"

e Filter theo source va dest port Vidu,” src and dst port 23 "

e Filter theo source hay dest port Vidu,” src or dst port 172.168.8.8 "

26

Trang 23

e Filter theo protocal Vidu,” tcp "

® Ngoài ra còn cé thé filter tng hop : Vidu,” dst net 172.168.8.8 and src port 23 tcp"

Ví dụ về filter đơn giản

#include <pcap.h>

char *dev;

char errbuf[PCAP_ERRBUF_SIZE];

pcap_t* descr;

const u_char *packet;

bpf_u_int32 maskp; /* subnet mask */

Trang 24

if(pcap_compile(descr, &fp,” port 23 ”,0,netp) == -1)

Qua trinh bat frame that su :

O day ta dinh nghia mot thiết bị một thiết bị để chuan bi sniff frame

(thiết lập filter nếu cần) Có 2 kĩ thuật chính được dùng trong việc sniff

frame Chúng ta có thể bắt frame và đưa vào vòng lặp chờ xử lý Đầu tiên ta xem cách bắt frame sử dụng hàm pcap_ next của libpcap

Hàm này có cấu trúc sau :

u_char *pcap_next(pcap_t *p,struct peap_hkthdr *h )

Tham số đâu tiên là handle quản lý phiên làm việc Tham số thứ hai là pointer chỉ đến câu trú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 trỏ đế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

}

28

Trang 25

Vi du vé sniff frame su dung cau tric nay

const u_char *packet;

struct ether_header *eptr; /* net/ethernet.h */

u_char *ptr; /* printing out hardware header info */

Trang 26

Chuong trinh nay 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 pcap“ 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_ loop() cua

libpcap Câu trúc hai hàm này như sau :

int pcap_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, don gian hay dat la NULL

30

Trang 27

Câu trúc của hàm callback :

void my_callback(u_char *useless,const struct pcap_pkthdr*

pkthdr,const u_char* packet)

Tham sô đâu tiên 1a tham s6 cudi ctng cua ham pcap_loop truyén vào (thường là NULL) Tham số thứ hai là câu trúc pcap_pkthdr

fflush(stdout);

count++;

}

Trang 28

int main(int argc,char **argv)

const u_char *packet;

struct pcap_pkthdr hdr; = /* pceap.h */

struct ether_header *eptr; /* net/ethernet.h */

Trang 29

pcap_loop(descr,atoi(argv[1]),my_callback, NULL);

fprintf(stdout, "\nDone processing packets wheew!\n");

return 0;

Trang 30

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 trinh API cua mSQL va

ngôn ngữ SQL để phát triển nên MySQL

MySQL hoạt động theo mô hình client-server, rất đơ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 trong môi trường Web,

Internet

Dia chi download MySQL : http://www.MySQL.com

3.2 Cai dat MySQL

3.2.1 Cài Đặt MySQL từ các gói nhị phân

Ta cài từng gói băng lệnh

rpm —Ivh <tên góI>

34

Trang 31

Trình cài đặt script sẽ tự động tạo:

¢ Mot CSDL database mau

kiểm soat database cla MySQL

cho biết vị trí cdc file CSDL cla MySQL:

bindir=/usr/bin datadir=/var/lib/mysql pid_file=/var/lib/mysql/mysqld.pid mysql_daemon_user=mysql # Run mysq] as this user

e User mang tén mysql ding để đăng nhập và khởi động dịch

vu daemon cua trinh chu

3.2.2 Cai dat tir m4 nguén

® Giải nén file chứa mã nguồn

© _ Thực hiện cài đặt băng tổ hợp lệnh sau :

Trang 32

Là công cụ chính của người quản trị cơ sở đữ liệu với 2 tham số -u,-

D- Với mysqladmin có một số lệnh quan tri sau

e create databasename >tao csdl

e drop database name :x6a co so dt ligu

© password newpassword : d6i mat khau

® s7/z/us: thông tin về trạng thái hiện hành của trình chủ

® yérsion cho biết thông tin về phiên bản của trình chủ my sdl 3.3.3 Lệnh mysqlshow

Lệnh này cho biết thông tin về database Nếu không có tham số sẽ

hiển thị toàn bộ database, ngược lại nếu có tham số là tên database thì

hién thi tat cd cdc bang trong database

Nếu tham số là tên database và tên bảng thì toàn bộ tên các cột

trong bảng sẽ được hiển thị

Nếu tham số là tên đatabase,tên bảng,tên cột thì thông tin của cột sẽ được liệt kê

36

Trang 33

3.3.4 Lénh grant

Cấp quyền cho người dùng database

Cú pháp :

grant privilege on object to user[user-password] [opt]

e privilege 14 quyén cap cho tai khoan ngudi ding bao gém:

§ Alter : quyên thay đối bảng và file chỉ mục

Lưu ý: mysql cho phép cấp quyên trên database chưa có cho một người dùng sau này sẽ tạo

e User : username.host

Ví dụ rick@”%”

e Password : néu grant tao méi user ta dat password bang

cach thém identyfied by password

e Vi du: tao mdi user khtn véi password cntt toan quyén trén database tén packet(packet có thể chưa có)

mysql>grant all on packet.* to khtn@”%” indentified by cntt

Trang 34

3.3.5 Lệnh Revoke

Lệnh này dùng để tước quyền người dùng

Cú pháp:

revoke privilege on object from user

3.3.6 Ví dụ về tạo một cơ sở dữ liệu

Tạo cơ sở đữ liệu packet với username là khtn và password la cntt :

#mysal >*grant all on packet * to khtn@ ”%⁄” tdenHfied by cnH; Lệnh trên được thực hiện với tư cách quản tri root cua MySQL (Thoát về dâu nhắc lệnh $zmysgl >guit )

Rồi gõ tiếp các lệnh sau:

$mysql —u khtn —p cntt

$ mysql>create database packet;

$mysql>use packet (st dung database tén packet) Bây gid moi truy van sql déu lic dong lén database packet

3.4 Lập trình MySQL trên ngôn ngữ C

Một số hàm thường dùng khi lập trình với MySQL

Trang 35

unsigned port_num ,const char * unit_socket_name ,

unsigned int flag )

flag: kiéu giao thitc sé két néi

Trang 36

®_ Băng 0 nếu thực thi thành công

e Bang l nếu thất bại

Lấy giá trị trả về sau khi gọi ham mysql_query đưa vào cấu trúc MYSQL RES

Cu phap :

MYSQL_ROW mysgql_fetch_row(MYSQL_RES *result)

40

Trang 38

Chương 4: Lập trình socket

4.1 Giới thiệu về lập trình socket

Khi viết ứng dụng và có nhu cầu tương tác với một ứng dụng khác, chúng ta thường dựa vào mô hình khách/ chủ (client/server) Theo mô hình này, ứng dụng có khả năng phục vụ hoặc cung cấp những thông tin gì đó gọi

là ứng dụng chủ (trình chủ hay server) Ứng dụng gửi yêu cầu đến trình chủ được gọi là ứng dụng khách (trình khách hay client) Mở rộng hơn nữa, server

có thể là một máy tính với câu hình mạnh còn client là rất nhiều máy con khác nối vào máy chủ

Như vậy, trước khi yêu cầu một dịch vụ của trình chủ thực hiện điều gi

đó, trình khách (client) phải có khả năng kết nối được với trình chủ Quá trình

kết nối này được thực hiện thông qua một cơ chế trừu tượng hóa gọi là socket (tạm dịch là “cơ chế ổ căm”) Kết nối giữa trình khách và trình chủ tương tự

như việc cắm phích điện vào ô căm điện: Trình khách thường được coi như

phích căm điện, còn trình chủ được coi như ỗ căm điện, một ô cắm có thể cắm

vào đó nhiều phích điện khác nhau cũng như một máy chủ có thê kết nối và

phục vụ cho rất nhiều máy khách

Nếu kết nối thành công thì trình khách và trình chủ có thể trao đổi dữ

liệu với nhau, thực hiện các yêu câu vê trao đôi dữ liệu

4.2 Nguyên lý hoạt động của socket

Đầu tiên server mở một ổ căm socket Đây chỉ là quá trình hệ điều hành phân bố tài nguyên để chuẩn bị kết nỗi Ding ham socket() dé tao “6 cam” cho trình chủ server

Tiếp đến, để ứng dụng khách biết đến ổ căm socket của trình chủ, bạn

phải đặt cho server chủ một cái tên Nếu trên máy cục bộ và dựa vào hệ thống file của UNIX hay Linux, bạn có thê đặt tên cho socket như là một tên file

42

Trang 39

(với đây đủ đường dẫn) Bạn chỉ cần đặt tên còn đường dẫn thường đặt trong

thư mục /tmp hay /usr/tmp Đối với giao tiếp mạng thông qua giao thức TCP/IP tên của socket được thay thế băng khái niệm công (port Công là một

số nguyên 2 bytes (khoảng 65000 công bạn có thê chon dat cho socket) thay thế cho tên tập tin Nếu trình khách và trình chủ năm trên hai máy khách nhau, giao thức TCP/IP còn yêu cầu xác định thêm địa chỉ IP để kết nối đến máy chủ ở xa

Sau khi đã chỉ định tên hoặc số hiệu port cho socket, ban goi ham bind()

để ràng buộc hay đặt tên chính thức cho socket của trình chủ Tiếp đến là chờ

kết nối từ phía trình khách, trình chủ sẽ gọi hàm listen() để tạo hàng đợi nhận

các kết nối do trình khách đưa đến Nếu có yêu câu kết nối từ phía trình khách, trình chủ gọi hàm acceptQ để tiếp nhận yêu cầu của trình khách

accep(Q sẽ tạo một socket vô danh khác (unnamed socket), cắm kết nối của

trình khách vào socket vô danh này và thực hiện quá trình chuyền dữ liệu trao

đôi giữa khách chủ Socket được đặt tên trước đó vẫn tiếp tục hoạt động dé

chờ nhận yêu câu từ trình khách Khác

Mọi giao tiếp đọc ghi thông qua socket cũng đơn giản như việc dùng lệnh read/write để đọc ehi trên file Nếu file dựa vào số mô tả (file descriptor)

dé x4c dinh socket can doc ghi cho ham read/write

Phía trình khách chỉ cầm tạo một socket vô danh, chỉ định tên và vị trí

socket của trình chủ Yêu cầu kết nỗi băng hàm connectQ và đọc ghi, truy

xuất dữ liệu của socket băng lệnh read/ write hoặc lệnh send[/ recv

Trang 40

4.3 Lập trình với socket

4.3.1 Các thuộc tính của socket

Socket được định nghĩa dựa trên 3 thành phân thuộc tính( attribute)

đó là: vùng( domain), kiểu( type) và giao thức( protocol) Socket còn căn

cứ vào một địa chỉ kết hợp với nó Địa chỉ này phụ thuộc vào vùng của

socket và thường được gọi là dòng giao thức (protocol family) Ví dụ như dòng giao thức theo hệ thống file của Sun thường lấy tên file làm đường dẫn địa chỉ, trong khi giao thức TCP/IP lại lấy địa chỉ IP (32 bits)

để tham chiếu và thực hiện kết nói vật lý

4.3.1.1 Vùng( domain)

Vùng dùng xác định hạ tầng mạng nơi giao tiếp của Socket diễn ra Vùng giao tiếp Socket thông dụng nhất hiện nay là AF_INET hay gia tiếp socket theo chuân mang Internet Chuan này

sử dụng địa chỉ IP để xác định nút kết nối vật lý trên mạng Ngoài

ra, nếu bạn chỉ cần gỉao tiếp cục bộ, bạn có thê dùng vùng giao tiếp

theo chuẩn của Sun AF_UNIX, đó là dùng đường dẫn và hệ thống

file để đặt tên và xác định kết nối giữa hai hay nhiều ứng dụng

Chang hạn như ví dụ trên, chúng ta đã thực hiện băng cách đặt tên cho socket la server_socket, va Linux da tao ra file server_socket

ngay trên thư mục hiện hành (hay trong thư mục tạm /tmp tùy theo phiên bản của Linux và UNIX) Tuy nhiên vùng giao tiếp AF_UNEX lại ít được sử dụng trong thực tế Ngày nay hầu hết các ứng dụng mạng sử dụng socket đều theo vùng AE_INET là chủ yếu Chúng ta sẽ bàn sâu về phân vùng này ngay sau đây

Vùng AF_INET như đã nêu sử dụng dic chi IP (Internet Protocol) là một chủ nghĩa số 32 bits để xác định kết nỗi vật lý Số này thường được viết ở dạng nhòm như 192.168.1.1, 203.162.42.I

44

Ngày đăng: 08/11/2012, 15:30

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w