TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
MÔN CÔNG NGH PHN MM
GIANG QUC MINH – H PHM THÁI VINH
XÂY DNG NG NG BT GÓI TIN CHO
VIC PHÂN TÍCH THÔNG TIN NG PHC
QUN LÝ
KHOÁ LUN C NHÂN TIN HC
TP. HCM, M 2005
TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
MÔN CÔNG NGH PHN MM
GIANG QUC MINH - 0112016
H PHM THÁI VINH - 0112081
XÂY DNG NG NG BT GÓI TIN CHO
VIC PHÂN TÍCH THÔNG TIN NG PHC
QUN LÝ
KHÓA LUN C NHÂN TIN HC
GIÁO VIÊN HNG DN
GVC CAO NG TÂN
NIÊN KHÓA 2001 – 2005
NHN XÉT A GIÁO VIÊN HNG DN
Tp.HCM, ngày… tháng….nm 2005
LI CÁM N
Chúng em xin chân thành cám n Ban giám hiu, quý Thy cô a
trng i Hc Khoa Hc T Nhiên TP. H Chí Minh, c bit là các Thy
cô trong Khoa Công ngh Thông tin ã tn tình ging y, trang cho chúng
em nhng kin thc cn thit, b ích trong sut nhng nm c tp i trng.
Chúng em xin chân thành m n Thy Cao ng Tân, ngi Thy ã
tn tình quan tâm hng dn, giúp chúng em trong sut thi gian làm lun
n này.
Chúng con xin gi lòng bit n sâu sc và s kính trng n ông bà, cha
Các danh c
11
MC C
DANH SÁCH HÌNH 14
DANH SÁCH NG 15
PHN 1: TNG QUAN 16
Chng 1: Gii thiu tài 17
1.1. t vn 17
1.2. Gii thiu tài 18
1.3. Yêu cu a tài 19
PHN 2: TÌM HIU CÁC VN LP TRÌNH 20
Chng 2 : Th vin lp trình ng libpcap 21
2.1. Gii thiu libpcap 21
2.2. Cài t th vin libpcap 21
3.3. Các bc xây dng chng trình s dng libpcap 22
3.4. Chi tit các bc 23
3.4.1. Chn Interface( card ng) 23
3.4.2. M device lng nghe( sniff) d liu 24
3.4.3. c traffic 25
Chng 3: H qun tr s d liu MySQL 34
3.1. Gii thiu v MySQL 34
3.2. Cài t MySQL 34
3.2.1. Cài t MySQL t các gói nh phân 34
3.2.2. Cài t t mã ngun 35
3.3. S dng MySQL 36
3.3.1. Lnh mysql 36
3.3.2. Lnh mysqladmin 36
3.3.3. Lnh mysqlshow 36
3.3.4. Lnh grant 37
4.4. S dng socket trong ng ng minh a 58
PHN 3: XÂY DNG NG NG TH NGHIM PACKETCAP 59
Chng 5: Phân tích và thit k PacketCap 60
5.1. Kho sát hin trng 60
5.2. Phân tích và xác nh yêu cu 61
5.2.1. Phân tích 61
5.2.2. Xác nh yêu cu 61
5.3. Các hng xây dng ng ng PacketCap 63
5.3.1. Phân tích hng phát trin da trên Ethereal 63
5.3.2. Phân tích hng phát trin da trên libcap 64
5.3.3. La chn hng phát trin PacketCap 64
5.4. Các thành phn PacketCap 65
5.5. Xây dng mô hình use case 66
5.5.1. Xác nh Actor và use case 66
5.5.2. Mô hình use case 66
5.6. t use case 67
5.6.1. Connect 67
5.6.2. StartCapture 68
5.6.3. StopCapture 69
5.6.4. GetFilter 70
5.6.5. Terminate 71
Các danh c
13
5.7.Thit k d liu 72
5.7.1. Phân tích các hng lu tr 72
5.7.2. Thit k s liu 75
5.7.2.1. Danh sách các i tng (table) 75
5.7.2.2 Table PACKET 75
6.7.2.4. Table IP 76
DANH SÁCH HÌNH
Hình 5-1 Các thành phn a PacketCap 65
Hình 5-2 Mô hình use case 66
Hì nh 5-3 Mô hình lu tr 1 72
Hình 5-4 Mô hình lu tr 2 73
Hình 5-5 Mô hình lu tr 3 74
Hình 5-6 Lu PCServer 81
Hình 5-7 Lu PCManager 82
Hình 6-1 Mô hình th nghim 1 88
Hình 6-2 Mô hình th nghim 2 89
Hình 6-3 Mô hình th nghim 3 90
Các danh c
15
DANH SÁCH NG
ng 4-1 Các giá tr ca domain 48
ng 4-2 Các mã li a hàm bind() 51
ng 4-3 Các mã li a domain AF_UNIX 52
ng 4-4 Mã li a hàm connect() 55
ng 5-1 Xác nh yêu cu 62
ng 5-2 Danh sách các i tng 75
ng 5-3 Table PACKET 75
ng 5-4 Table IP 76
ng 5-5 Table TCP 76
ng 5-6 Table UDP 77
ng 5-7 Table ICMP 77
ng 5-8 Table IGMP 78
ng 5-9 Table ARP 80
ng 5-10 Mô màn hình PCManager 86
cho phép chúng ta thc hin nhng bài toán ln da trên các
thng nh gm nhiu máy tính c ni mng vi nhau.
• Hin nay chúng ta li có rt nhiu h thng máy tính ni
ng nhng cha s dng c ht kh nng tính toán ca
chúng.
• i s lng các máy tính ln thì vic trin khai Grid
Computing s cho chúng ta mt h thng tính toán cc kì
nh gp nhiu ln 1 siêu máy tính ( lúc ó các siêu máy tính
có th ch là mt node trong h thng Grid Computing).
i nhng u m trên chúng tôi chn tài “ng dng th nghim
Grid Computing trong vic phân tích thông tin mng phc v qun lý”.
1.2. Gii thiu tài
tài “ng ng th nghim Grid Computing trong vic phân tích
thông tin ng phc qun lý” là mt ln gm 2 nhóm thc hin.
Nhóm th 1 xây dng ng dng phân tán trên mng cho phép thit lp t
xa ch lc và bt các gói tin, trích lc và lu vào các c s d liu trên
ng phc cho vic theo dõi và phân tích thông tin ng (Phn I).
Nhóm th 2 tìm hiu Grid Computing và xây dng ng ng phân
tích hin trng ca mng da trên thông tin t s d liu do nhóm th 1
xây dng (Phn II).
Chng 1: Gii thiu tài
19
1.3. Yêu cu a tài
• Xây dng ng dng phân tán th nghim cho phép bt các gói tin
dùng phân tích thông tin ng phc qun lý.
• Các gói tin sau khi bt, c trích thông tin và lu vào các c s d
liu phân tán trên mng theo nhu cu ca ngi qun tr.
• thng cho phép cu hình ng dng t xa.
• H tr u kt qu bt c theo nh ng a các ng ng bt
Nu không có li gì xy ra thì quá trình cài t ã hoàn tt.
Chng 2: Th vin lp trình ng libpcap
22
3.3. Các bc xây dng chng trình s dng libpcap
Có 5 bc chính trong vic s dng th vin libpcap
• c 1: Xác nh interface (card ng) mà ta mun bt frame vào
(Trong Linux, interface thng là eth0,eth1… Ta có th dùng các
hàm pcap_lookupdev() ca th vin libpcap ly tt c các
inteface.
• c 2: Khi to pcap. Cung cp cho pcap bit interface nào trong
các interface ã ly v bc trên sc chn sniff.
• c 3: Lc frame .pcap cho chúng ta c ch chn la khi lc các
frame khi bt (ví d ch bt frame TCP/IP có source IP
192.168.8.8 và port 23 …). ta phi to ra filter ri biên ch filter
này báo cho pcap bit b lc nó s dùng.
• c 4: Pcap thc thi vic sniff frames.
• c 5: óng phiên làm vic và kt thúc ng dng
Trên ây là qui trình tng quát cách libpcap bt gói tin trong ó bc 3
là tùy chn có th có hoc không.
Chng 2: Th vin lp trình ng libpcap
23
3.4. Chi tit các bc
3.4.1. Chn Interface( card ng)
Có 3 cách thit lp devices sniff các frames d liu
• Cách 1 : Cho ngi dùng nhp tên thit b t dòng lnh
#include <stdio.h>
#include <pcap.h>
int main(int argc , char* argv[])
{
pcap_if_t *devlist;
char devname[10][100];
Char* dev,errbuf[PCAP_ERRBUF_SIZE]
int devcount=0;
retvalue=pcap_findalldevs(&devlist,err);
if(retvalue==-1 || devlist==NULL)
return 0;
for(d=devlist,i=0; d && i<10 ;d=d->next,i++)
sprintf(devname[i],"%s",d->name);
devcount=i;
}
3.4.2. M device lng nghe( sniff) d liu
Khi to phiên làm vic cho các thit b s dng hàm
pcap_open_live(). Cu trúc hàm này nh sau :
pcap_t *pcap_open_lives(
char* device,int snaplen,int promisc,int yo_ms,char *ebuf)
Tham s:
• device là thit bã c nh ngha trên
Chng 2: Th vin lp trình ng libpcap
25
• snaplen cho bit s byte ln nht mà pcap có th bt frames
• promisc nu t bng 1 thì interface s hot ng trong ch
promiscuos mode. ây là ch libpcap s sniff tt c các frame
trên dây dn. Nu t bng 0 thì interface s hot ng ch
non promiscuos mode, trong ch này,pcap ch sniff nhng
frame gi n máy.
Pcap_t *descr
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
Ví d ," src and dst net 172.168.8.8 "
• Filter theo source hay dest ip
Ví d ," src or dst net 172.168.8.8 "
• Filter theo source port :
Ví d ," src port 23 "
• Filter theo dest port :
Ví d ," dst port 23 "
• Filter theo source và dest port
Ví d ," src and dst port 23 "
• Filter theo source hay dest port
Ví d ," src or dst port 172.168.8.8 "
Chng 2: Th vin lp trình ng libpcap
27
• Filter theo protocal
Ví d ," tcp "
• Ngoài ra còn có th filter tng hp :
Ví d ," dst net 172.168.8.8 and src port 23 tcp"
Ví d v filter n gin
#include <pcap.h>
.
char *dev;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t* descr;
const u_char *packet;
struct pcap_pkthdr hdr; /* pcap.h */
struct bpf_program fp; /* hold compiled program */
bpf_u_int32 maskp; /* subnet mask */
bpf_u_int32 netp; /* ip */
dev = pcap_lookupdev(errbuf);
u_char trn frame c mô t bi cu trúc này
struct pcap_pkthdr
{
struct timeval ts; time stamp
bpf_u_int32 caplen; length of portion present
bpf_u_int32; lebgth this packet (off wire)
}
Chng 2: Th vin lp trình ng libpcap
29
Ví d v sniff frame s dng cu trúc này
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <errno.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/if_ether.h>
int main(int argc, char **argv)
{
int i;
char *dev;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t* descr;
const u_char *packet;
struct pcap_pkthdr hdr; /* pcap.h */
struct ether_header *eptr; /* net/ethernet.h */
u_char *ptr; /* printing out hardware header info */
dev = pcap_lookupdev(errbuf);
if(dev == NULL)