Các danh cDANH SÁCH HÌNH.... Các thành ph n PacketCap .... Xây d ng mô hình use case.... Xác nh Actor và use case ..... Xây d ng PCServer server, PCManagerclient.... PCManager trên môi t
Trang 1TR 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
QU N LÝ
KHOÁ LU N C NHÂN TIN H C
TP HCM, M 2005
Trang 2TR 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
Trang 3NH N XÉT A GIÁO VIÊN H NG D N
Tp.HCM, ngày… tháng….n m 2005
Trang 4NH N XÉT A GIÁO VIÊN PH N BI N
Tp.HCM, ngày… tháng….n m 2005
Trang 5L 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ùng toàn th gia ình, nh ng ng i ã nuôi 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, ónggóp ý ki n c a các anh ch , n bè trong quá trình th c hi n lu n v n này
TP H Chí Minh, 7/2005Nhóm sinh viên th c hi nGiang Qu c Minh – H Ph m Thái Vinh
Trang 6tr ng 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” a h u h t các ng ng b t gói tin mã ngu n m hi n nay
Ch ngg 3 Gi i thi u MySQL, m t h qu n tr 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 thu t l p trình socket vi t các ng ng trênmôi tr ng ng
Ph n 3 Xây ng ng ng PacketCap Ph n này 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 ng b t gói tin,
u các k t qu b t c vào c s d li u phân tích các thông tinng
Ch ng 5 Phân tích, thi t k ng 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 n ch và h ng phát tri n PacketCap trong t ng lai
Trang 7Các danh 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
3.3.5 L nh Revoke 38
3.3.6 Ví d v t o m t c s d li u 38
3.4 L p trình MySQL trên ngôn ng C 38
4.4.1 mysql_init 38
3.4.2 mysql_real_connection 39
3.4.3 mysql_query 40
3.4.4 mysql_affected_rows 40
3.4.5 mysql_store_result 40
3.4.6 mysql_fetch_row 40
3.4.7 mysql_row_seek 41
3.4.8 mysql_free_result 41
Trang 8Các danh c
Ch ng 4: L p trình socket 42
4.1 Gi i thi u v l p trình socket 42
4.2 Nguyên lý ho t ng a socket 42
4.3 L p trình v i socket 44
4.3.1 Các thu c tính a socket 44
4.3.1.1 Vùng( domain) 44
5.3.1.2 Ki u socket(type) 46
4.3.1.3 Giao th c a socket( protocol) 47
4.3.2 o socket 48
4.3.3 nh a ch cho socket 49
4.3.4 t tên cho socket 51
4.3.5 o hàng i cho socket 52
4.3.6 Ch và ch p nh n k t n i 53
4.3.7 Yêu c u k t n i 54
4.3.8 óng k t n i 55
4.3.9 Giao ti p b ng socket 56
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
Trang 9Các danh c
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
5.7.2.5 Table TCP 76
5.7.2.6 Table UDP 77
5.7.2.7 Table ICMP 77
5.7.2.8 Table IGMP 78
5.7.2.9 Table ARP 80
5.8 Xây d ng PCServer( server), PCManager(client) 81
5.8.1 L u PCServer 81
5.8.2 L u PCManager( Client) 82
5.8.3 C u trúc d li u trao i gi a PCServer và PCManager 83
5.9.Thi t k giao di n PCManager( phiên n ch y trên Windows) 85
Ch ng 6: Cài t và th nghi m 87
6.1 Cài t 87
6.2 Th nghi m 88
6.2.1 Mô hình th nghi m 1 88
6.2.2 Mô hình th nghi m 2 89
6.2.3 Mô hình th nghi m 3 90
Ch ng 7: T ng k t 91
7.1 K t lu n 91
7.1.1 K t qu t c 91
7.1.2 n ch 91
7.2 H ng phát tri n 92
PH L C H ng d n s d ng PacketCap 93
1.Ch ng trình PCServer 93
2 Ch ng trình PCManager 93
2.1 PCManager trên môi tr ng Linux 93
2.2 PCManager trên môi tr ng Windows 94
TÀI LI U THAM KH O 95
Trang 10Các danh c
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
Trang 11Các danh c
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
Trang 12Ph n 1: T ng quan
PH N 1: T NG QUAN
Ch ng 1 Gi i thi u tài
Trang 13Ch ng 1: Gi i thi u tài
Ch ng 1: Gi i thi u tài
1.1 t v nNgày nay công ngh thông tin nói chung và Intenet nói riêng ngày càngphát tri n nh 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 acác doanh nghi p, các t ch c và công ty trong n n kinh t th tr ng hômnay, s l ng các doanh nghi p thi t l p các h th ng m ng và k t n i Intenetngà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 ucá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 chotruy 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 ngthông t ng kh n ng áp ng thông tin, giao d ch v i khách hàng ng th itrá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àitoán này Trong 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 14Ch ng 1: Gi i thi u tài
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áncho 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 achúng
• i s l ng các máy tính l n thì vi c tri n khai GridComputing 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 mGrid 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íchthô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ântí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 1xây d ng (Ph n II)
Trang 15Ch ng 1: Gi i thi u tài
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 tindù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 tgói tin khác nh Ethereal, TCPDump
Trang 17Ch ng 2: Th vi n l p trình ng libpcap
Ch ng 2 : Th vi n l p trình ng libpcap
2.1 Gi i thi u libpcapLibpcap là m t th vi n mã ngu n m tr l p trình 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, chophé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 snifferpacket Các ph n m m s d ng libcap ph bi n là TCPdump, TCPflow
Hi n nay phiên n m i nh t 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 n m i nh t a libpcap u có a ch này
Gi s b n i v gói libpcap-0.8.3.tar.tar, ti n hành cài t:
Trang 18• 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ácframe 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 filternà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 ngTrê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
Trang 19Ch ng 2: Th vi n l p trình ng libpcap
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[]) {
Char * dev = argv[1]
Printf( Devices : %s \n ,dev);
printf("%s\n",errbuf);
exit(1);
} printf("DEV: %s\n",dev);
Trang 20for(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àmpcap_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)
Trang 21Ch ng 2: Th vi n l p trình ng libpcap
• 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 chpromiscuos mode ây là ch libpcap s sniff t t c các frametrên dây d n N u t b ng 0 thì interface s ho t ng chnon promiscuos mode, trong ch này,pcap ch sniff nh ngframe g i n máy
Pcap_t *descr descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
if(descr == NULL) {
int pcap_compile(pcap_t *p, struct bpf_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 làchu i mô t cho filter bi t nh ng gói tin c n b t K n là s nguyêncho bi t str là opyimize hay không (1 là true, 0 là false) Cu i cùng là
Trang 22Ch ng 2: Th vi n l p trình ng libpcap
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 atrong pcap_compile())
nh d ng str mô t cho filter:
• Filter theo source ip
Trang 23char 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);
if(dev == NULL) {
fprintf(stderr,"%s\n",errbuf);
exit(1);
} descr = pcap_open_live(dev,BUFSIZ,1,-1,errbuf);
if(descr == NULL) {
printf("pcap_open_live(): %s\n",errbuf);
exit(1);
Trang 24Quá trình b t frame th t s :
ây ta nh ngh a m t thi t b m t thi t b chu n b sniff frame(thi t l p filter n u c n) Có 2 k thu t chính c dùng trong vi c sniffframe Chúng ta có th b t frame và a vào vòng l p ch x lý utiê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 pcap_hkthdr *h )
Tham s u tiên là handle qu n lý phiên làm vi c Tham s thhai là pointer ch n c u trúc l u gi thông tin chung v frame ( th igian b t, chi u dài frame …) pcap_next tr v m t con tr có d ngu_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)
}
Trang 25const 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) {
printf("%s\n",errbuf);
exit(1);
} printf("DEV: %s\n",dev);
Trang 26Ch ng 2: Th vi n l p trình ng libpcap
if(descr == NULL) {
printf("pcap_open_live(): %s\n",errbuf);
exit(1);
} packet = pcap_next(descr,&hdr);
if(packet == NULL) {
printf("Didn't grab packet\n");
exit(1);
} printf("Grabbed packet of length %d\n",hdr.len);
printf("Recieved at %s\n",ctime((const time_t*)&hdr.ts.tv_sec));
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 âmthì s sniff n khi nào có l i x y ra Tham s th ba là tên c a hàm
Trang 27tatic int count = 1;
fflush(stdout);
count++;
}