Xây dựng ứng dụng bắt gói tin cho mạng quản lý (Giang Quốc Minh) - 1 pot - Pdf 21


TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
 MÔN CÔNG NGH PHN MM
GIANG QUC MINH – H PHM THÁI VINH
XÂY DNG NG NG BT GÓI TIN CHO
VIC PHÂN TÍCH THÔNG TIN NG PHC
 QUN LÝ
KHOÁ LUN C NHÂN TIN HC
TP. HCM, M 2005

TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
 MÔN CÔNG NGH PHN MM
GIANG QUC MINH - 0112016
H PHM THÁI VINH - 0112081
XÂY DNG NG NG BT GÓI TIN CHO
VIC PHÂN TÍCH THÔNG TIN NG PHC
 QUN LÝ
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

NHN XÉT A GIÁO VIÊN HNG DN


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

LI CÁM N
Chúng em xin chân thành cám n Ban giám hiu, quý Thy 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 y, trang  cho chúng
em nhng kin thc cn thit, b ích trong sut nhng nm c tp i trng.
Chúng em xin chân thành 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 trong sut thi gian làm lun
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


Các danh c
11
MC C
DANH SÁCH HÌNH 14
DANH SÁCH NG 15
PHN 1: TNG QUAN 16
Chng 1: Gii thiu  tài 17
1.1. t vn  17
1.2. Gii thiu  tài 18
1.3. Yêu cu a  tài 19
PHN 2: TÌM HIU CÁC VN  LP TRÌNH 20
Chng 2 : Th vin lp trình ng libpcap 21
2.1. Gii thiu libpcap 21
2.2. Cài t th vin libpcap 21
3.3. Các bc xây dng chng trình s dng libpcap 22
3.4. Chi tit các bc 23
3.4.1. Chn Interface( card ng) 23
3.4.2. M device  lng nghe( sniff) d liu 24
3.4.3. c traffic 25
Chng 3: H qun tr  s d liu MySQL 34
3.1. Gii thiu 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ã ngun 35
3.3. S dng MySQL 36
3.3.1. Lnh mysql 36
3.3.2. Lnh mysqladmin 36
3.3.3. Lnh mysqlshow 36
3.3.4. Lnh grant 37

4.4. S dng socket trong ng ng minh a 58
PHN 3: XÂY DNG NG NG TH NGHIM PACKETCAP 59
Chng 5: Phân tích và thit k PacketCap 60
5.1. Kho sát hin trng 60
5.2. Phân tích và xác nh yêu cu 61
5.2.1. Phân tích 61
5.2.2. Xác nh yêu cu 61
5.3. Các hng xây dng ng ng PacketCap 63
5.3.1. Phân tích hng phát trin da trên Ethereal 63
5.3.2. Phân tích hng phát trin da trên libcap 64
5.3.3. La chn hng phát trin PacketCap 64
5.4. Các thành phn PacketCap 65
5.5. Xây dng 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.Thit k d liu 72
5.7.1. Phân tích các hng lu tr 72
5.7.2. Thit k  s  liu 75
5.7.2.1. Danh sách các i tng (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 phn a PacketCap 65
Hình 5-2 Mô hình use case 66
Hì nh 5-3 Mô hình lu tr 1 72
Hình 5-4 Mô hình lu tr 2 73
Hình 5-5 Mô hình lu tr 3 74
Hình 5-6 Lu  PCServer 81
Hình 5-7 Lu  PCManager 82
Hình 6-1 Mô hình th nghim 1 88
Hình 6-2 Mô hình th nghim 2 89
Hình 6-3 Mô hình th nghim 3 90

Các danh c
15
DANH SÁCH NG
ng 4-1 Các giá tr ca domain 48
ng 4-2 Các mã li a hàm bind() 51
ng 4-3 Các mã li a domain AF_UNIX 52
ng 4-4 Mã li a hàm connect() 55
ng 5-1 Xác nh yêu cu 62
ng 5-2 Danh sách các i tng 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 thc hin nhng bài toán ln da trên các
 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
ng nhng cha s dng c ht kh nng tính toán ca
chúng.
• 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ì
nh gp nhiu ln 1 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).
i nhng u 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 ng th nghim Grid Computing trong vic phân tích
thông tin ng phc  qun lý” là mt  ln gm 2 nhóm thc hin.
Nhóm th 1  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
ng phc  cho vic theo dõi và phân tích thông tin ng (Phn I).
Nhóm th 2  tìm hiu Grid Computing và xây dng ng ng  phân
tích hin trng ca mng da trên thông tin t  s d liu do nhóm th 1
xây dng (Phn II).

Chng 1: Gii thiu  tài
19
1.3. Yêu cu a  tài
• 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 ng phc  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 d
liu phân tán trên mng theo nhu cu ca ngi qun tr.
•  thng cho phép cu hình ng dng t xa.
• H tr u kt qu bt c theo nh ng a các ng ng bt

Nu không có li gì xy ra thì quá trình cài t ã hoàn tt.

Chng 2: Th vin lp trình ng libpcap
22
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
• c 1: Xác nh interface (card 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_lookupdev() ca th vin libpcap  ly tt c các
inteface.
• c 2: Khi to pcap. Cung cp cho pcap bit interface nào trong
 các interface ã ly v bc trên sc chn  sniff.
• 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 và port 23 …). ta phi to ra filter ri biên ch filter
này  báo cho pcap bit b lc nó s dùng.
• c 4: Pcap thc thi vic sniff frames.
• 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.

Chng 2: Th vin lp trình ng libpcap
23
3.4. Chi tit các bc
3.4.1. Chn Interface( card 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
#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  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 :
pcap_t *pcap_open_lives(
char* device,int snaplen,int promisc,int yo_ms,char *ebuf)
Tham s:
• device là thit bã c nh ngha  trên

Chng 2: Th vin lp trình ng libpcap
25
• snaplen cho bit s byte ln nht mà pcap có th bt frames
• promisc nu t bng 1 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 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.
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 "

Chng 2: Th vin lp trình ng libpcap
27
• Filter theo protocal
Ví d ," tcp "
• Ngoài ra còn có th filter tng hp :
Ví d ," 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;
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 trn frame c mô t bi cu 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)
}

Chng 2: Th vin lp trình ng libpcap
29
Ví d v sniff frame s dng cu 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)


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status