XD ung dung bat goi tin cho mang quan ly

XD ung dung bat goi tin cho mang quan ly - TR NG I H C KHOA...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 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 TP. HCM, NHÂN TIN H C 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 GVC CAO NG D N 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 NH N XÉT A GIÁO VIÊN PH N BI N ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... Tp.HCM, ngày…..tháng….n m 2005 L I CÁM Chúng em xin chân thành cám tr ng N n Ban giám hi u, quý Th y cô i H c Khoa H c T Nhiên TP. H Chí Minh, cô trong Khoa Công ngh Thông tin ã t n tình gi ng c bi t là các Th y y, trang em nh ng ki n th c c n thi t, b ích trong su t nh ng n m Chúng em xin chân thành t n tình quan tâm h m n Th y Cao ng d n, giúp a cho chúng c t p i tr ng Tân, ng ng. i Th y ã 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 , cùng toàn th gia ình, nh ng ng i ã nuôi n ông bà, cha 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 góp ý ki n c a các anh ch , , ng viên, nh n xét, óng 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 B CC A LU N V N Lu n v n g m có 3 ph n và 7 ch ng PH N 1: T NG QUAN Ch ng 1 G i i thi u v tài PH N 2: TÌM HI U CÁC V N các v n l p trình c n nh t các gói tin và cho phép ng tr ng Ch L P TRÌNH. Ph n này gi i thi u xây d ng 1 ng i dùng có th ng có kh ng b t i u khi n t xa qua môi ng. 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” Ch a h u h t các ng ng b t gói tin mã ngu n m hi n nay. 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 môi tr ng thu t l p trình socket vi t các ng ng trên ng Ph n 3 Xây ng ng th c ã tìm hi u ch u các k t qu b t ng PacketCap. Ph n này ng 2, 3, 4 s d ng các ki n xây d ng m t ng c vào c s d li u ng b t gói tin, phân tích các thông tin ng. Ch ng 5. Phân tích, thi t k Ch ng 6. Cài Ch ng 7. T ng k t. Ch nh ng ng ng PacketCap t và th nghi m PacketCap n ch và h ng này trình bày nh ng k t qu ng phát tri n PacketCap trong t t ng lai. c, Các danh c MC 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 q u 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 p hâ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 11 Cá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 12 Cá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 13 Cá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 14 Các danh c 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 15 Ph n 1: T ng quan PH N 1: T NG QUAN Ch ng 1. Gi i thi u 16 tài Ch ng 1: Gi i thi u tài Ch 1.1. ng 1: Gi i thi u tài tv n N gà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 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 a các doanh nghi p, các t ch c và công ty trong n n kinh t th tr nay, s l ng hôm 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 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 mu n làm th ng này ng m ng òi h i n ng l c tính toán r t l n, vì v y c vi c này c n ph i trang b các siêu máy tính toán này. Trong ng th i u ki n kinh t n c vì chúng quá t th c hi n bài c ta thì không th trang b nh ng h . 17 Ch ng 1: Gi i thi u tài y gi i p há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 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. • is 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 thông tin ng ph c Nhóm th 1 xa ch ng ng th nghi m G rid Computing trong vi c phân tích qu n lý” là m t l n g m 2 nhóm th c hi n. xây d ng ng d ng phân tán trên m ng cho phép thi t l p t 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 ph c cho vi c theo dõi và phân tích thông tin Nhóm th 2 ng (Ph n I). tìm hi u Grid Computing và xây d ng ng tích hi n tr ng c a m ng d a trên thông tin t xây d ng (Ph n II). 18 ng phân s d li u do nhóm th 1 Ch ng 1: Gi i thi u 1.3. Yêu c u a tài 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 • Các gói tin sau khi b t, ng ph c qu n lý. 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 q u 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 gói tin khác nh Ethereal, TCPDump... 19 ng a các ng ng b t Ph n 2 : Tìm hi u các v n l p trình PH N 2: TÌM HI U CÁC V N Ch ng 2. Th vi n l p trình Ch ng 3. H qu n tr Ch ng 4. L p trình socket 20 L P TRÌNH ng libpcap s d li u MySQL Ch ng 2: Th vi n l p trình Ch ng libpcap ng 2 : Th vi n l p trình ng libpcap 2.1. Gi i thi u libpcap Libpcap là m t th vi n mã ngu n m cho phép b t các gói tin trên ng truy n theo nhi u h phép phân tích các frame v a tìm Th vi n libcap tr l p trình ng c p th p, ng khác nhau, cho c. 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 2.2. Cài Ch n m i nh t a libpcap là 0.9.1. t th vi n libpcap ng trình ngu n c a libpcap có th www.tcpdump.org , các phiên n m i nh t download a libpcap u có Gi s b n i v gói libpcap-0.8.3.tar.tar, ti n hành cài t: • Gi i nén gói tar tar –xzvf libpcap-0.8.3.tar.tar • Chuy n vào th m c libpcap cd libpcap-0.8.3 • gõ l nh ./configure • Gõ l nh make • Gõ l nh make install N u không có l i gì x y ra thì quá trình cài 21 t ã hoàn t t. a ch a ch này. Ch ng 2: Th vi n l p trình 3.3. Các b c xây d ng ch Có 5 b ng libpcap ng trình s d ng libpcap c chính trong vi c s d ng th vi n libpcap • c 1: Xác nh interface (card (Trong Linux, interface th ng) mà ta mu n b t frame vào 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 b iên này ch filter 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 là tùy ch n có th có ho c không. 22 c3 Ch ng 2: Th vi n l p trình 3.4. Chi ti t các b ng libpcap c 3.4.1. Ch n Interface( card ng) Có 3 cách thi t l p devices • Cách 1 : Cho ng sniff các frames d li u 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); } Trong ó argv[1] là tham s dòng l nh • Cách 2 : S u tiên d ng hàm pcap_lookupdev() c a libpcap ki m các interface t n i trên máy tính. #include <stdio.h> #include <pcap.h> int main(int argc , char* argv) { Char* dev,errbuf[PCAP_ERRBUF_SIZE] dev = pcap_lookupdev(errbuf); if(dev == NULL) { printf("%s\n",errbuf); exit(1); } printf("DEV: %s\n",dev); } 23 tìm Ch ng 2: Th vi n l p trình Trong tr ng libpcap 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ó. • Cách 3 : Dùng hàm pcap_findalldevs tìm t t c thi t b sau ó a vào m t m ng #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 24 nh ngh a trên Ch 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 promiscuos mode. ây là ch trên dây d n. N u libpcap s sniff t t c các frame t b ng 0 thì interface s ho t non promiscuos mode, trong ch frame g i ng trong ch ng ch này,pcap ch sniff nh ng n máy. Pcap_t *descr descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf); if(descr == NULL) { printf("pcap_open_live(): %s\n",errbuf); exit(1); } Dev là 3.4.3. nh danh thi t b . c traffic Trong tr ng h p không b t t t c các gói tin mà ch b t các gói tin theo m t yêu c u nào ó ta thì s d ng pcap_compile() pcap_setfilter() có c u trúc nh sau: 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ê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 Ch 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 ( ã trong pcap_compile()) nh d ng str mô t cho filter: • Filter theo source ip Ví d ," src net 172.168.8.8 " • Filter theo dest ip : Ví d ," dst net 172.168.8.8 " • Filter theo source và dest ip 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 " 26 c nh ngh a Ch ng 2: Th vi n l p trình ng libpcap • 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); 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); } 27 */ Ch ng 2: Th vi n l p trình ng libpcap if(pcap_compile(descr,&fp, port 23 ,0,netp) == -1) { fprintf(stderr,"Error calling pcap_compile\n"); exit(1); } pcap_setfilter(descr,&fp) Quá trình b t frame th t s : ây ta nh ngh a m t thi t b m t thi t b (thi t l p filter n u c n). Có 2 k thu t chính frame. Chúng ta có th b t frame và chu n b sniff frame c dùng trong vi c sniff 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 pcap_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 pcap_pkthdr { struct timeval ts; time stamp bpf_u_int32 caplen; length of portion present bpf_u_int32; lebgth this packet (off wire) } 28 Ch ng 2: Th vi n l p trình ng libpcap 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) { printf("%s\n",errbuf); exit(1); } printf("DEV: %s\n",dev); descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf); 29 Ch 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)); pcap_close(descr); } Ch nó b t ng trình này in ra chi u dài và th i gian b t gói tin c. Hàm pcap_close() dùng u tiên mà óng phiên làm vi c. t k thu t khác ph c t p h n là dùng hàm pcap_loop() c a 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 là s frame s thì s sniff u tiên là handle qu n lý phiên làm viêc, tham s th hai c sniff tr c khi thoát ra. N u tham s này là s âm 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 n gi n hãy d t là NULL. 30 ng d ng, Ch ng 2: Th vi n l p trình ng libpcap 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 vào (th u tiên là tham s cu i cùng c a hàm pcap_loop truy n ng là NULL). Tham s th hai là c u trúc pcap_pkthdr. Ví d v cách s d ng pcap_loop : #include <pcap.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> void my_callback(u_char *useless,const struct pcap_pkthdr* pkthdr,const u_char*packet) { tatic int count = 1; fprintf(stdout,"%d, ",count); if(count == 4) fprintf(stdout,"Come on baby sayyy you love me!!! "); if(count == 7) fprintf (stdout,"Tiiimmmeesss!! "); fflush(stdout); count++; } 31 Ch ng 2: Th vi n l p trình ng libpcap 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 */ if(argc != 2) { fprintf(stdout,"Usage: %s numpackets\n",argv[0]); return 0; } dev = pcap_lookupdev(errbuf); if(dev == NULL) { printf("%s\n",errbuf); exit(1); } descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf); if(descr == NULL) { printf("pcap_open_live(): %s\n",errbuf); exit(1); } 32 Ch ng 2: Th vi n l p trình ng libpcap pcap_loop(descr,atoi(argv[1]),my_callback,NULL); fprintf(stdout,"\nDone processing packets... wheew!\n"); return 0; } 33 Ch ng 3: H qu n tr c s d li u MySQL Ch ng 3: H qu n tr s d li u MySQL 3.1. Gi i thi u v MySQL Công ty Tcx mu n p hát tri n m t ng d ng web và mu n s d ng c s 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 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 Internet. a ch download MySQL : http://www.MySQL.com 3.2. Cài t MySQL 3.2.1. Cài t MySQL t các gói nh phân Các gói c n thi t: • Gói trình ch (server package): MySQL-version-architecture.rpm • Gói trình khách (client package): MySQL-client-version-architecture.rpm • tr th vi n cho trình khách: MySQL-shared-version-architecture.rpm • Gói phát tri n ng d ng trên MySQL: MySQL-devel-version-architecture.rpm Ta cài t ng gói b ng l nh rpm –ivh <tên gói> 34 ng Web, Ch ng 3: H qu n tr c s d li u MySQL Trình cài • t script s t ng t o: t CSDL database m u • Script init.d và mysql kh i ng và d ng d ch v ki m soát database c a MySQL. • Script mysql ch a các khai báo bi n môi tr ng cho CSDL cho bi t v trí các file CSDL c a MySQL: bindir=/usr/bin datadir=/var/lib/mysql pid_file=/var/lib/mysql/mysqld.pid mysql_daemon_user=mysql # Run mysql as this user • User mang tên mysql dùng ng nh p và kh i daemon c a trình ch . Kh i • ng trình ch b ng tay: ng nh p q uy n user mysql: $ su mysql • Kh i ng trình ch : # /etc/rc.d/init.d/mysql start 3.2.2. Cài t t mã ngu n • G i nén file ch a mã ngu n • Th c hi n cài t b ng t h p l nh sau : $ ./configure $ make $ su $ make intall $scripts/mysql_intal.db 35 ng d ch Ch ng 3: H qu n tr c s d li u MySQL 3.3. S d ng MySQL 3.3.1. L nh mysql ây là l nh thâm nh p trình qu n lý c s d li u và a ra các nh qu n tr khác . Cú pháp mysql u username p password databasename Ví d Truy xu t c s d li u packet voi username la “pac” va password la “ket”. $ mysql –I pac –p ket packet 3.3.2. L nh mysqladmin Là công c chính c a ng i q u n tr c s d li u v i 2 tham s -u,- p . V i mysqladmin có m t s l nh qu n tr sau • create databasename : t o csdl • drop database name :xóa c s d li u • password newpassword : i m t kh u • status: thông tin v tr ng thái hi n hành c a trình ch • version cho bi t thông tin v phiên b n c a trình ch my sql 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 i n u có tham s là tên database thì hi n th t t c các b ng trong database. 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 u tham s là tên database,tên b ng,tên c t thì thông tin c a c t s c li t kê. 36 Ch ng 3: H qu n tr c s d li u MySQL 3.3.4. L nh grant p quy n cho ng i dùng database Cú pháp : grant privilege on object to user[user-password] [opt] • privilege là quy n c p cho tài kho n ng i dùng bao g m: § Alter : quy n thay § Creat : quy n t o b ng vàdatabase § Delete : quy n xoá d li u trong database § Drop : quy n xoá database § Index : quy n qu n lý ch m c index § Insert : quy n chèn d li u m i vào i b ng và file ch m c § Select : quy n xem d li u § Update : quy n c p nh t d li u § All : t t c các quy n • Object : databasename.table Có th dùng databasename.* s tác ng n m i b ng trên databasename. 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 • User : username.host Ví d rick@”%” • Password : n u grant ta m i user ta t password b ng cách thêm identyfied by password • Ví d : t o m i user khtn v i password cntt toàn quy n trên database tên packet(packet có th ch a có) mysql>grant all on packet.* to khtn@”%” indentified by cntt 37 Ch ng 3: H qu n tr c s d li u MySQL 3.3.5. L nh Revoke L nh này dùng 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 o c s d li u packet v i username là khtn và password la cntt : $mysql>grant all on packet.* to khtn@ nh trên identified by cntt; c th c hi n v i t cách qu n tr root c a MySQL. (Thoát v d u nh c l nh $mysql>quit ) R i gõ ti p các l nh sau: $mysql u khtn p cntt $ mysql>create database packet; $mysql>use packet (s d ng database tên packet) Bây gi m i truy v n sql u lác ng 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 4.4.1 mysql_init Kh i t o c u trúc x lý k t n i Cú pháp : MYSQL *mysql_init (MYSQL *old_connect) Tham s : • old_connect =NULL :t o k t n i m i • old_connect khác NULL :tái k t n i v i con tr o ld_connect 38 Ch ng 3: H qu n tr c s d li u MySQL 3.4.2 mysql_real_connection Th c hi n k t n i v t lý n máy ch n i Mysql sever ang ch y Cú pháp : MYSQL *mysql_real_connect(MYSQL *connection , const char* server_host, const char * sql_username, const char *sql_pass, const char* db_name, unsigned port_num ,const char * unit_socket_name , unsigned int flag ) Tham s : • Connection : tr n c u trúc MYSQL c kh i t o b i hàm mysqlconnect. • Server_host : a ch IP c a máy ch n i d ch vu mysql server ang ch y. • sql_username,sql_pass : là i s ch ng th c q uy n nh p h th ng • db_name : tên c a database • port_num : s hi u c ng mysql dùng (m c • unit_socket_name ki u socket (m c • flag : ki u giao th c s k t n i 39 nh b ng 0) nh NULL) ng Ch ng 3: H qu n tr c s d li u MySQL 3.4.3 mysql_query Th c thi câu l nh sql query. Cú pháp: int mysql_query(MYSQL *connect,const char* query) Tham s : • query : câu l nh sql c n th c hi n K t qu tr v • B ng 0 n u th c thi thành công • B ng 1 n u th t b i 3.4.4. mysql_affected_rows Cho bi t s dòng b nh h ng sau l nh query Cú pháp : my_ulonglong mysql_affected_rows(MYSQL *connection) Khi s d ng hàm này ph i ép ki u giá tr tr v là unsigned long 3.4.5. mysql_store_result y giá tr tr v sau khi g i hàm mysql_query a vào c u trúc MYSQL_RES Cú pháp : MYSQL_RES *mysql_store_result(MYSQL -*connection) 3.4.6. mysql_fetch_row y ra m t dònh d li u t MYSQL_RES . B n c ng có th di chuy n n 1 dòng d li u b t kì nh hai hàm mysql_row_seek và mysql_row_tell. Cú pháp : MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) 40 Ch ng 3: H qu n tr c s d li u MySQL 3.4.7. mysql_row_seek Di chuy n n v trí offset và tr v v trí con tr tr có Cú pháp : MYSQL_ROW_OFFSET myql_row_seek( MYSQL_RES *result MYSQL_ROW_OFFSET offset) 3.4.8. mysql_free_result Gi i phóng tài nguyên. Cú pháp: void mysql_free_result (MYSQL_RES *result) 41 Ch ng 4: L p trình socket Ch ng 4: L p trình socket 4.1. Gi i thi u v l p trình socket Khi vi t ng chúng ta th này, ng là ng c ng và có nhu c u t ng tác v i m t ng ng khác, ng d a vào mô hình khách/ ch (client/server). Theo mô hình ng có kh ng ph c ho c cung c p nh ng thông tin gì ó g i ng ch (trình ch hay server). i là ng ng ng g i yêu c u n trình ch 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 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 ó, trình khách (client) ph i có kh k t n i này (m c a trình ch th c hi n i u gì ng k t n i c v i trình ch . Quá trình c th c hi n thông qua m t c ch tr u t ch là “c ch ng hóa i là socket c m”). K t n i gi a trình khách và trình ch nh vi c c m phích i n vào c m i n. Trình khách th phích c m i n, còn trình ch c coi nh vào ó nhi u phích i n khác nhau ph c ch ng ng t c coi nh c m i n, m t c m có th c m ng nh m t máy ch có th k t n i 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 li u v i nhau, th c hi n các yêu c u v trao 4.2. Nguyên lý ho t ng i d li u. a socket u tiên server m m t phân b tài nguyên id chu n c m socket. ây ch là quá trình h k t n i. Dùng hàm socket() i u hành t o “ c m” cho trình ch server. Ti p ph i file n, ng ng khách bi t n c m socket t cho server ch m t cái tên. N u trên máy a UNIX hay Linux, n có th a trình ch , n c b và d a vào h th ng t tên cho socket nh là m t tên file 42 Ch ng 4: L p trình socket (v i y ng d n). th c /tmp hay /usr/tmp. TCP/IP tên a socket n ch c n t tên còn ng d n th i v i giao ti p ng t trong ng thông qua giao th c 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 n có th ch n t 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 máy ch nh thêm a ch IP k tn i n xa. Sau khi ã ch ràng bu c hay nh tên ho c s hi u port cho socket, t tên chính th c cho socket a n là ch t o hàng i nh n 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 accept() accept() i hàm bind() a trình ch . Ti p k t n i t phía trình khách, trình ch s g i hàm listen() các k t n i do trình khách n ti p nh n yêu c u a trình khách. t o m t socket vô danh khác (unnamed socket), c m k t n i 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 c ho t ng ch nh n yêu c u t trình khách khác. i giao ti p l nh read/write xác c ghi thông qua socket n gi n nh vi c dùng c ghi trên file. N u file d a vào s mô nh socket c n (file descriptor) c ghi cho hàm read/write. Phía trình khách ch c m socket ng o m t socket vô danh, ch nh tên và v trí a trình ch . Yêu c u k t n i b ng hàm connect() và xu t d li u a socket b ng l nh read/ write ho c l nh send/ recv. 43 c ghi, truy Ch ng 4: L p trình socket 4.3. L p trình v i socket 4.3.1. Các thu c tính Socket c a socket 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ó. socket và th ng c a ch này ph thu c vào vùng i là dòng giao th c (protocol family). Ví d nh dòng giao th c theo h th ng file ng d n a a Sun th ng l y tên file làm a ch , trong khi giao th c TCP/IP 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 t ng ng n i giao ti p a Socket di n ra. Vùng giao ti p Socket thông ng nh t hi n nay là AF_INET hay gia ti p socket theo chu n ng Internet. Chu n này s d ng a ch IP ra, n u xác nh nút k t n i v t lý trên n ch c n giao ti p theo chu n cb , ng. Ngoài n có th dùng vùng giao ti p 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 Ch ng n nh ví d trên, chúng ta ã th c hi n b ng cách ng. t tên cho socket là server_socket, và Linux ã t o ra file server_socket ngay trên th phiên n c hi n hành (hay trong th ng Chúng ta c s d ng trong th c t . Ngày nay h u h t các ng s d ng socket u theo vùng AF_INET là ch y u. bàn sâu v phân vùng này ngay sau ây. Vùng AF_INET nh ã nêu s Protocol) là m t ch ngh a s 32 bits này th ng m /tmp tùy theo a Linux và UNIX). Tuy nhiên vùng giao ti p AF_UNIX l i ít ng c c vi t d ng xác c ch IP (Internet nh k t n i v t lý. S d ng nhòm nh 192.168.1.1, 203.162.42.1 44 Ch ng 4: L p trình socket hay 127.0.0.1 là các thành mt tên a ch IP h p l . d nh n www.microsoft.com, chúng Vi c ánh c a ch IP có th nh www.yahoo.com a ch IP thành tên vùng th tên vùng ngay trên mày hay i là tên vùng (domain name). ng do máy ch DNS (Domain Name Server) th c hi n. Tuy nhiên, ánh c ánh n ng có th t c b b ng cách s d ng t p tin d li u /etc/hosts. Socket theo dòng giao th c IP s d ng port (s hi u c ng) t tên cho m t socket. C ng dùng chuy n cho ng xác nh c ng là c n. ng nào. p hân bi t d li u g i n hình dung n u c máy hay n i k t n i v t lý a ch p h dùng n a ch IP dùng a d li u g i chính xác d li u i u này do trên m t máy có th có nhi u ng n n i ng n thì ng ng cùng ch y và cùng s d ng trùng s c ng. Do c ng là m t giá tr nguyên 2 bytes nân t do t cho socket. Tr các s hi u c ng n ti ng nh FTP, Web ã nêu ph n trên n có th s d ng kho ng 65000 c ng n không nên s d ng, còn thì b n có th ch n s c ng l n n 1024 m cho socket a ung ng. M socket theo AF_INET không khác m y so v i AF_UNIX ngoài vi c t tên và ch nh s hi u c ng. Ví d : /* M socket theo k t n i IP */ server_sockfd = socket (AF_INET, SOCK_STREAM, 0); server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_addr(“127.0.0.1”); server_address.sin_port = 1234; 45 Ch ng 4: L p trình socket Ngoài vùng giao ti p AF_UNIX và AF_INET, g p AF_ISO dành cho chu n giao th c dành cho h th ng ng th n còn có th ng theo ISO hay AF_NS ng Xerox, tuy nhiên chúng không ng xuyên, cho nên ta không cp cs n chi ti t. 5.3.1.2. Ki u socket(type) V i m i vùng domain a socket, n có th có nhi u cách giao ti p. Có hai ki u giao ti p ki u giao ti p i n hình s là giao ti p m t chi u (SOCK_DGRAM) và giao ti p (SOCK_STREAM). D li u khi chuy n i gói (data package SOCK_DGRAM qui hay datagram). o m hai chi u c ó ng thành t ng SOCK_STREAM và nh cách chuy n gói d li u theo hai cách nh sau: SOCK_STREAM luôn gi k t n i và b o gi i c chuy n li u, n i nh n ch n ích và nh n y m gói thông tin . Sau khi nh n xong d g i thông tin ph n h i cho n i g i và quá trình g i c xác nh n hoàn t t khi nh n c y th ng tin g i nh n c hai phía khách ch . Ki u truy n d li socket này trong vùng giao th c ng Internet AF_INET TCP. Khi k t h p v i c ch c nh tuy n theo là giao th c truy n a ch IP chúng i t t là TCP/IP. K t n i và truy n d li u theo cách này tuy m nh ng t n nhi u tài nguyên trì và theo dõi th c o a h th ng do k t n i ph i duy ng xuyên. SOCK_DGRAM cách g i nh n d li u này ch d i n ra m t chi u. Trình khách, n i g i d li u i không c n bi t trình ch (n i nh n) có nh n nh n c d li u c gói d li u y h ay không. Trình ch khi ng không c n thông báo hay xác nh n v i trình khách là d li u ã nh n xong. Cách g i này có v không an toàn 46 Ch ng 4: L p trình socket nh ng bù l i th c hi n nhanh và không tiêu t n nhi u tài nguyên duy trì k t n i và ki m tra d li u nh n g i. Ki u truy n d li u socket này trong vùng giao th c ng Internet AF_INET c i là giao th c truy n UDP (User Datagram Protocol). Khi k t h p v i ch nh tuy n theo tính ch t không m c ch IP chúng o nên UDP ng. Nó ít khi i t t là UDP/IP. Do c dùng nhi u trong c ích thông báo hay g i tin tin trong c ng v i n m t nhóm máy tính nào ó c dùng trong các ch c n s chính xác cao nh g i nh n file hay k t nói c s d li u. 4.3.1.3. Giao th c a socket( protocol) Giao th c là cách qui c g i nh n d li u gii a hai hay nhi u máy tính trong m ng. Tùy theo m i ki u g i nh n d li u mà ta có các giao th c khác nhau. Hi n nay ki u g i nh n theo giao th c TCP và UDP là s d ng nhi u nh t. Tuy nhiên i u này không b t bu c, TCP và UDP ch là cách cài t cho vùng socket AF_INET theo giao ti p Internet mà thôi. Ví d , ban có th cài th c khác thay cho UDP áp o m. Mõi ki u socket nó. Trong t t yêu c u t m t giao ng cho cách chuy n d li u không u có giao th c m c nh áp ng cho các hàm socket sau này, tùy ch n protocol n u có n có th t giá tr 0 yêu c u s d ng giao th c m c nh. Trong các ví d socket AF_INET và AF_INET i ng ph n sau ta ch t p trung nghiên c u v vùng a ch IP thay cho vùng AF_UNIX. V i ng ng a n u có th giao ti p v i nhau b t k chúng ang ch y trên Windows, Linux hay UNIX. 47 c Ch ng 4: L p trình socket 4.3.2. T o socket H th ng cung c p cho n hàm socket() t o m i m t socket. Hàm socket() tr v s nguyên int cho bi t s mô hay nh danh dùng truy c p socket sau này. #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); Tham s domain ch nh vùng hay a ch áp t cho socket. domain có th nh n m t trong các giá tr sau: AF_UNIX M socket k t n i theo giao th c file (xu t nh p socket d a trên xu t nh p (file) AF_INET a UNIX/Linux M socket theo giao th c Internet (s d ng a ch IP kt n i) AF_IPX Vùng giao th c IPX ( ng Novell) AF_IS Chu n g iao th c ISO AF_NS Giao th c Xerox Network System ng 4-1 Các giá tr c a domain H u nh n ch s d ng AF_UNIX và AF_INET là chính. Các vùng giao th c khác ã l i th i và hi n nay ít còn Tham s type trong hàm socket() dùng ch truy n d li u a socket. dùng cho truy n d li u không o n có th ch o c s d ng. nh ki u giao tiép hay nh b ng SOCK_STREAM m ho c SOCK_GRAM dùng cho truy n m. 48 Ch ng 4: L p trình socket Tham s protocol dùng trong tr nhiên ch n giao th c áp ng h p có nhi u giao th c áp n ch c n ng cho ki u socket( ng cho m t ki u truy n). Tuy t giá tr 0 (l y giao th c m c nh). AF_INET ch cài t m t giao th cduy nh t cho các ki u truy n SOCK_STREAM và SOCK_DGRAM ó là TCP và UDP. Nu o socket thành công, hàm descriptor). n s d ng s tr v s nh danh này trong t t xu t socket khác nh read/write. S này t mà b n th ng dùng nh danh socket( c và ghi file. các l i n g t nh s i truy nh danh file c/ ghi vào socket ng ng ngh a v i g i và nh n d li u gi a trình khách và trình ch . 4.3.3. nh a ch cho socket Khi socket ã c o ra, socket. M t socket c n ph i có tham chi u n ch c n ch a ch và tên nh a ch và tên cho các trình khách có th n. Tùy m i vùng giao th c mà cách ánh a ch có th khác nhau. Ví d khi tin, n dùng vùng giao th c AF_UNIX d a trên h th ng t p a ch socket c nh ngh a trong c u trúc sockaddr_un include sys/un.h nh sau: struct sockaddr_un{ sa_family_t sun_family; /* AF_UNIX */ char sun_path ; /* }; 49 ng d n */ a file Ch ng 4: L p trình socket Trong Linux sa_family_t ng d n nh ngh a là ki u short. sun_path là t o t p tin socket. Vùng AF_UNIX trên c c s d ng nhi u trong các ng t máy vì nó ph thu c vào ng cb i ah ng d n t p tin tuy t i u hành. Th c t b n trong sockadd_in dùng AF_INET v i c u trúc a ch c nh ngh a a file include netinet/in.h nh sau: struct sockadd_in{ short in sin_family; /* AF_INET */ unsigned short int sin_port; /* s c ng */ struct in_addr sin_addr; /* a ch IP */ }; C u trúc in_addr mô a ch IP c nh ngh a nh sau: struct in_addr{ unsigned long int s_addr; }; Nh n th y a ch IP là m t s long (4 bytes hay 32 bits). ây ng chính là c u trúc qua a ch cho m t ch ng trình giao ti p v i nhau ng Internet. Trên quan i m a l p trình ng ng, cho dù socket có ch theo vùng nào i ch ng n a m t khi ã m c socket, nh a n ch c n xem socket nh m t t p tin và th c hi n thao tác read/write trên ó( ng ng v i send và receive trên Winsock 50 a Microsoft). Ch ng 4: L p trình socket 4.3.4. t tên cho socket Sau khi ã AF_UNIX socket. nh a ch , n ch c n c ch chính là t tên cho socket. ivi ng d n, còn tên chính là tên t p tin i v i vùng giao th c AF_INET to a ch chính là s IP còn tên chính là s hi u c ng (sin_port) trong c u trúc sockaddr_in. Khi ã gán thông tin y cho socket nc n i hàm bind() thông tin này cho socket ã m ra tr rabgd bu c nh ng c ó. #include <sys/socket.h> int byte (int socket, const struct sockaddr *address, size_t address_len); Hàm h th ng bind() s d ng các thông tin trong c u trúc address gán cho socket s nh danh socketd tr v b i hàm socket() tr Tham s address_len cho bi t chièu dài truy n vào hàm. c ó. a c u trúc (struct sockaddr*) n l u ý sockaddr là c u trúc t ng quát cho sockaddr_un và sockaddr_in Khi ràng bu c thành công bind() -1 và errno tr v tr 0. N u không hàm tr v ch a m t trong các l i sau: Mã l i Mô EBADF S mô file không h p l ENOTSOCK S mô file không dành cho socket EINVAL S mô file tham chi u n m t socket ã có. EADDRNOTAVAIL a ch không xác EADDRINUSE a ch và c ng ràng bu c ã b m t socket khác chi m nh ng ng 4-2 Các mã l i 51 a hàm bind() Ch ng 4: L p trình socket Nu n m socket thu c vùng AF_UNIX errno có th nh n thêm các l i sau: Mã l i Mô EACCESS Không th t o file cho socket do không có quy n ENOTDIR, o file Tên file không h p l ENAMETOOLONG ng 4-3 Các mã l i Ràng bu c tên socket là b kh c quan tr ng nh t ng nhìn th y và truy xu t M t socket n u ch a a domain AF_UNIX c c t các ng t tên socket a n có ng bên ngoài. i là socket vô danh ( unnamed socket). 4.3.5. o hàng i cho socket ón nh n các k t n i chuy n m t hàng i (queue). c ích n, socket trình ch ph i a hành i là c trình ch x lý k p . Hàm h th ng listen() u o ra i các k t n i ch a th c hi n công vi c này. #include <sys/socket.h> int listen(int socketd, int backlog); Tham s socketd cho bi t s mô là s k t n i t i a c phép socket c n o hàng a vào hàng trình ch trong khi ã có backlog k t n i tr này b th t i. Lý do hàng iã nh n thêm k t n i n a. Thông th bình kh thi nh t. 52 i. backlog i. N u m t k t n i n c ó ch a x lý thì k t n i y, trình ch server không mu n ng backlog mang giá tr 5 là s trung Ch ng 4: L p trình socket Hàm listen() tr v s tr v 0 n u o hàng là -1 và bi n errno i thành công, n u th t i tr ch a tr EBADF, EINVAL, ho c ENOTSOCK. 4.3.6. Ch và ch p nh n k t n i M t khi ã t o i c socket, t tên cho nó và chu n xong hàng ti p nh n k t n i, công vi c sau cùng là ch k t n i khách g i n. n i hàm accept() a trình th c hi n công vi c này. #include <sys/socket.h> int accept(int socketd, struct sockaddr *address, size_t *address_len); Hàm h th ng accept() n iv i tr c m socket ch cht c trong hàng nh s mô t vào hàng i, nó s t socket a ch c a máy khách c a c u trúc a ch tr cho socket vô danh, t vào c u trúc v trong bi n n có th s d ng s này c v i trình khách. Socket vô danh m i này có cùng ki u v i t tên ang l ng nghe trên hàng Do c u trúc struct sockaddr không có kích th cv a ti p nh n khách dài h n không gian ct a trình khách n accept() o ra m t socket vô danh. K t qu tr v a accept() là s mô liên socketd. K t n i i. Khi accept() phát hi n ra có socket ng l y address, chi u dài th t s address_len. Ti p tr v khi có m t trình khách mu n k t i. nh cho nên n c n thi t l p a ch trình khách. N u a ch trình n dành cho c u trúc sockaddr, ph n d ra . 53 Ch ng 4: L p trình socket N u ch a có k t n i nào trong hàng i, accept() d ng block( trình ch s không th c thi các l nh k ti p ) cho ni a client g i n. Bàn có th thay i ch – n khi có k t i c ch ch này b ng cách i hàm fcntl() i u ch nh và thêm vào c O_NONBLOCK cho socket nh sau: int flags=fcntl(socketd, F_GETFL, 0); fcntl(socketd, F_SETFL, O_NONBLOCK | flags); Sau khi khi n t c này cho socket, hàm accept() i nó. accept() trong hàng tr v ngay s mô không d ng i ch cho socket n u có k t n i i, n u không nó s tr v -1 và th c thi dòng l nh k ti p . 4.3.7. Yêu c u k t n i Trình ch c a n th ng th c hi n ch ac n ng o , t tên, ch k t n i b nh các hàm socket(), bind(), và accept(). Tuy nhiên phía trình khách n gi n h n, n ch c n v i trình ch . connect() i hàm connect() yêu c u k t n i c khai báo nh sau: #include <sys/socket.h> int connnect(int socketd, const struct sockaddr *address, size_t address_len); Tham s socketd là s mô trúc a ch tr n socket tr v b i hàm socket(). address là c u a trình ch . address_len là chi u dài a bi n c u trúc address. K t qu tr v c a hàm là 0 n u thành công và ng c i là -1. Trong tr ng h p -1, bi n errno tr sau: 54 ch a m t trong nh ng Ch ng 4: L p trình socket Mã l i Mô EBADF S mô EALREADY Kêt n i ã ETIMEOUT Quá th i gian ch k t n i socket truy n cho hàm không h p l c thi t l p tr có ECONNREFUSED Trình ch server t ch i k t n i ng 4-4 Mã l i a hàm connect() N u k t n i không thành công hàm connect() có g ng ch k t n i i. N u sau m t s l n k t n i không thành công connect() tr v l i ETIMEOUT. ng t accept() b ng cách i fcntl() n i không thành công i k t n i. Hàm n có th t i ch ch c a hàm connect() i c ENONBLOCK. B ng cách này, khi k t ln u tiên, hàm connect() không ch lp k t thúc và tr v mã l i ngay l p t c. 4.3.8. óng k t n i ng t nh x lý trên file. n có trách nhi m óng các k t n i ã t o ra b ng cách g hàm close(). nguyên và b o m d li u ã chuy n ó ng k t nói gi i phóng tài i hoàn t t c hai u g i và hai phía trình khách và trình ch , n nên i close() nh n. #include <sys/socket.h> int close(int sockd); iv i óng socket khi l nh read tr v tr 0 (không còn d 55 li u c). Ch ng 4: L p trình socket Th ng thì close() tr v ngay t c kh c, tuy nhiên có th close() vào tr ng thái ch (block) n u scoket a i n thi t l p ki u k t n i hai chi u (SOCK_STREAM) cùng v i tùy ch n SOCK_LINGER và d li u ang tr nh thái ch a chuy n h t. Tùy ch n SOCK_LINER c c p sau. 4.3.9. Giao ti p b ng socket Chúng ta v a xem qua các hàm h th ng dùng gi o và x lý socket, ây ta có th tr l i nh ng ví d v s d ng socket Nh ã nêu, th n. n nên s d ng socket theo vùng AF_INET thay cho AF_UNIX. Socket d a trên h th ng file th ng g p ph i m t s v n nh th ng file ch chúng ch c truy xu t trên h UNIX/Linux. Vi c phân quy n cho phép Th ng file socket o ra trong th c ghi file nh ng là m t v n c hi n hành ho c th c /tmp và b n ph i cho phép h u nh toàn quy n truy c p các th socket ho t ng. V i AF_INET thì v n AF_INET d a vào c ng và Linux s a ch IP d ng AF_INET d . m c này này không phát sinh, k t n i. chuy n a ng ng a n trên i sang Windows h n là AF_UNIX. Trong AF_INET, khi ch n m t s hi u c ng tr nh ng c ng ã o m i m t socket trên trình ch , t cho socket. Vi c ch n s hi u c ng ph i lo i c các ng ng khác s d ng. kh o t p tin /etc/services, ây là t p tin v n ch và c ng ã trùng v i nh ng s ng các c ng nh Giao ti p n ph i c n li t kê danh sách các dành s d ng, s c ng ã có trong danh sách này. Ban n 1024, chúng dành cho các ng không òi th t s . N gay trên m t máy, n có th tham ch a n không nên ng không th s c a h th ng. i ph i k t n i v i m t h th ng n có th s d ng giao ti p 56 ng ng liên Ch ng 4: L p trình socket c gi a các ti n trình ang ch y. N u c n s ng s 127.0.0.1, ây là cho các ng a ch b an tính ch t ng a ch IP, n có th s a ch IP “h i qui” (loop back) th cb .V i a ch này, d li u g i i u, có ngh a là máy g i và máy nh n c bi t này, n u trình khách trên máy quay v ng xin m t n hòa ng, úng c xem là m t. Do c b g i d li u trình ch theo IP 127.0.0.1 thì trình ch c ng trên máy này d li u và h i âm i. N u máy ng dùng n nên nh n i ng n c i qu n tr a ch IP thích h p. a ch m ng IP th ng khó nh , n có th yêu c u socket ti p nh n m t tên g i nh khách thay cho s IP. Ch ng n localhost hay my.computer.home thay cho 127.0.0.1. T p tin v n n /etc/hosts ch a các danh sách chuy n i này. Ví d , n có th dùng trình so n th o vi hay gnotepad s a n i dung t p tin này nh sau: 127.0.0.1 localhost 127.0.0.1 my.computer.home 207.46.131.91 www.microsoft.com Nh n th y, m t nhau ( a ch IP và tên th Th ng ng i n u a ch IP có th ánh ng cách nhau b ng kho ng tr ng hay tab). a ch IP 127.0.0.1 nd nh my.computer.home. Các b ng nhi u tên khác c i là localhost và không có gì tr t cho nó m t cái tên khác ch ng a ch Web mà b n th www.yahoo.com hay www.microsoft.com là các qu n lý b i t ch c qu c t InterNIC. a ch IP có t n i hay không, ng th y nh a ch toàn c u bi t m t tên c i ng v i m t n có th g i l nh ping nh sau: 57 n nh Ch ng 4: L p trình socket $ ping localhost PING (127.0.0.1) from 127.0.0.1 : 56 (84) bytes of data. 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=67 usec 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=48 usec 64 bytes from (127.0.0.1) : icmp_seq=0 ttl=255 time=51 usec 4.4. S d ng socket trong ng ng minh Ph n l p trình socket này a c s d ng th c hi n vi c trao thông tin gi a thành ph n client và server trong ph n ng i ng minh a. th thành ph n client dùng socket k t n i server. Sau khi k t n i thành công client Capture, Stop Capture, Get Filter... n thành ph n g i các l nh nh Start n server, server nh n các l nh này, th c hi n xong nó s tr l i k t qu th c hi n là thành công hay th t cho client. 58 i Ph n 3 : Xây d ng ng d ng th nghi m PacketCap PH N 3: XÂY D N G NG NG TH N GHI M PACKETCAP Ch ng 5. Phân tích và thi t k PacketCap Ch ng 6. Cài Ch ng 7. T ng k t t và th nghi m 59 Ch ng 5: Phân tích và thi t k PacketCap Ch ng 5: Phân tích và thi t k PacketCap 5.1. Kh o sát hi n t ng Hi n nay có r t nhi u ph m m m b t gói tin nh Tcpdump, Microsoft Network Monitor, Ethereal...Trong ó ph n m m ngu n m Ethereal n i b t v i nhi u u i m nh ch y trên nhi u h i u hành, h tr b t gói tin theo nhi u giao th c khác nhau... Các ph n m m này có h n ch chung là khi chúng ang b t các gói tin thì chúng ta không th c, phân tích các thông tin b t c, hay nói cách khác khi k t thúc quá trình b t các gói tin r i thì m i phân tích các thông tin này c. Nh ng ph n m m này không h tr vi c ghi k t qu vào c s d li u, mà ch u vào các file có c u trúc theo này có kích th nh ng riêng a chúng. N u file c l n thì vi c tìm ki m, x lý các thông tin phân tích rt ch m. Nh ng ph n m m này ch ch y trên môi tr không cho phép c u hình t xa (ví d : ng desktop là ch y u do ó u ch nh b l c , thi t l p u tr trên m ng ….t xa. Hi n nay các ph n m m này ang ng d n c phát tri n sang mô hình client/server). Trong khi ó thì nhu c u ng • n có thông tin v l u l ng m ng u ch nh b ng thông theo yêu c u c a khách hàng c ng nh phát hi n tr c các s c n u c. • Theo dõi hành pháp. • i q u n tr m ng r t a d ng: ng truy c p và xâm nh p m ng b t h p t c hành ng trên nên là online (phân tích và khi n) n u c. 60 u Ch ng 5: Phân tích và thi t k PacketCap 5.2. Phân tích và xác nh yêu c u 5.2.1. Phân tích Vi c trao i thông tin trên m ng ngày càng nhi u, nhu c u c a các nhà qu n tr m ng òi h i ngày càng a d ng, c n thi t có m t ch ng trình có th b t gói tin cho phép phân tích, trích l c thông tin ngay trong khi b t (các ph n m m b t gói tin hi n nay không cho phép các nhà qu n tr s d ng thông tin thu th p hi n). ng ng này Trên c s vào c s d khuy t c khi quá trình b t gói tin ang th c l y tên là PacketCap. ó, m t h th ng phân tán b t gói tin, trích l c và luu tr li u trên m ng c xây d ng kh c ph c ph n nào m trên. H th ng cho phép nhà qu n tr s d ng thông tin ngay trong khi b t, tùy ch n v trí l u thông tin và cho phép c u hình t xa vi c filter các gói tin.Các nhà qu n tr m ng c ng có th dùng h thông này làm c s 5.2.2. Xác nh yêu c u c tiêu tin, ng này phát tri n ti p các ng d ng v qu n tr m ng. a tài là m t xây d ng ng ng phân tán b t các gói cung c p cho qu n tr m ng nh ng thông tin ph c vi c theo dõi và phân tích thông tin ng, d a trên nh ng thông tin cung c p này cho phép qu n tr m ng có th x ác toàn b h th ng ng. 61 nh c tình tr ng cho c a Ch ng 5: Phân tích và thi t k PacketCap ng ng PacketCap này bao g m các ch c n ng: STT 1 Ch c n ng B t và phân tích c các gói tin a nh ng protocol thông ng nh TCP, UDP, ICMP, ARP... 2 Cho phép l u tr thông tin b t ch n h q u n tr 3 s d li u cd i ng c s d li u và u tr . Cho phép l u tr thông tin b t theo c u trúc file các ph n m m b t gói tin khác. i u khi n t xa vi c b t các gói tin, bao g m: • Kh i 4 ng b t gói tin • D ng b t gói tin • L y b l c hi n th i • K t thúc ch ng trình b t gói tin ng 5-1 Xác 62 nh yêu c u a Ethereal ho c Ch ng 5: Phân tích và thi t k PacketCap 5.3. Các h ng xây d ng ng ng PacketCap Hi n nay có r t nhi u ph n m m b t gói tin có mã ngu n m nh TCPTrace, TcpDump, WinDump, Ethereal,..trong s này thì Ethereal là ph n m m t t nh t. Nó h tr r t nhi u protocol, h tr các nh d ng l tr c a các ph n m m b t gói tin khác, tích h p thêm ph n p hân tích thông tin b t c. Các ph n m m ngu n m này winpcap(tên a phiên u s d ng th vi n l p trình libcap ho c n libpcap ch y trên h i u hành Windows). Do có r t nhi u ph n m m ngu n m h tr b t gói tin nên h ng l a ch n ØH phát tri n ng có 2 ng PacketCap: ng 1: Tìm hi u c u trúc a p h n m m Ethereal, tích h p thêm ch c n ng l u các gói tin vào c s d li u và c u hình t xa vào ph n m m Ethereal. Ø óng 2: S d ng th vi n l p trình ng libpcap vi t l i toàn b ng d ng. 5.3.1. Phân tích h ng phát tri n d a trên Ethereal • Thu n l i o Source code c a Ethereal m có th d d àng download trên nhi u trang web. (www.ethereal.com) o Không c n xây d ng l i các module b t gói tin và filter cho ng d ng. • Khó kh n o Mã ngu n Ethereal r t nhi u và khó hi u rõ c do ó vi c tích h p thêm ch c n ng vào Ethereal là r t ph c t p. o Ethereal ch cung c p free user guide không cung c p developer guide do ó mu n tìm hi u v ethereal ph i t c source code. 63 c Ch ng 5: Phân tích và thi t k PacketCap 5.3.2. Phân tích h ng phát tri n d a trên libcap • Thu n l i : o Th vi n mã ngu n m libpcap download mi n phí, nhi u nhà phát tri n s c d ng. Ph n m m b t gói tin Tcpdump là m t i n hình. o Có nhi u tài li u h ng d n l p trình o Có th d dàng xây d ng ch ng trình theo ý mu n • Khó kh n o Ph i vi t l i t t c các module capture và filtering tr c khi thêm vào các yêu c u c a lu n v n. 5.3.3. L a ch n h ng phát tri n PacketCap T nh ng phân tích khó kh n và thu n l i ng h ng PacketCap, chúng em quy t ng th 2, ngh a là s xây d ng t d a trên th vi n libpcap. 64 a2h ng phát tri n nh l a phát tri n PacketCap theo u ng ng b t gói tin PacketCap Ch ng 5: Phân tích và thi t k PacketCap 5.4. Các thành ph n PacketCap PacketCap có h ch c n ng i u khi n xa nên nó s mô hình ng c xây d ng theo ng Client/ Server. PacketCap g m 3 thành ph n: • Thành ph n th c hi n vi c l ng nghe yêu c u t phía client và b t gói tin: PCServer( PacketCap Server) • Thành ph n i u khi n t xa: PCManager. • Thành ph n l u tr : PCStore, thành ph n này ch là d li u b t qu n tr i l u tr c. PCStore th là m t máy tính b t kì có ch y h s d li u MySQL. Trong mô hình client/ server thì PCServer là thành ph n server, còn PCManager là client. PCServer m c ng 8088 và ch k t n i, nh n yêu c u và th c hi n yêu c u khi ã có client k t n i vào. PCManager ktn i n PCServer và i u khi n PCServer. Hình 5-1 Các thành ph n 65 a PacketCap i ho t ng a Ch ng 5: Phân tích và thi t k PacketCap 5.5. Xây d ng mô hình use case 5.5.1. Xác nh Actor và use case • Actor là ng i dùng ch ng trình PCManager (client) • Use case o Connect: Dùng PCManager k t n i vào PCServer o StartCapture: Yêu c u PCServer b t u th c hi n vi c b t gói tin. o StopCapture: Yêu c u PCServer d ng vi c b t gói tin o GetFilter: l y b l c hi n i o Terminate: yêu c u PCServer k t thúc. 5.5.2. Mô hình use case Hình 5-2 Mô hình use case 66 Ch 5.6. ng 5: Phân tích và thi t k PacketCap t use case 5.6.1. Connect • Tên use case: Connect • Mô Use-case này mô t PCManager(client) k t n i quá trình qu n tr viên yêu c u qu n tr vi c b t gói tin máy server. • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client xin k t i. Máy client g i yêu c u n máy server. Sau khi máy server nh n c yêu c u, n u ch p nh n yêu c u máy server s g i v s port giao ti p, k t n i thanh công. u máy sever không nh n yêu c u ho c có sai sót thì client thông báo l i. o Dòng s ki n ph K hông có o Các dòng s ki n khác • Các yêu c u c bi t. o Không có. • u ki n tiên quy t. o Ph i ng nh p quy n qu n tr m i Case này. o Máy sever c n k t n i ph i s n sàng. • m m r ng o Không có. 67 c th c hi n Use- Ch ng 5: Phân tích và thi t k PacketCap 5.6.2. StartCapture • Tên use case: StartCapture • Mô Use-case này mô t q uá trình qu n tr viên yêu c u máy client g i l nh y u c u server b t u vi c b t gói tin. • Dòng s ki n o Dòng s ki n chính Use-case b t g i yêu c u u khi có yêu c u t máy client. Máy client n máy server. Sau khi máy server nh n trình b t gói tin ã c yêu c u s ki m tra ti n c th c thi ch a. u ti n trình ch a th c thi thì th c thi vi c b t gói tin u vào c s d li u, thông báo v máy client yêu c u ã c áp ng. u ti n trình ã c th c thi thì g i thông báo l i v . o Dòng s ki n ph Ki m tra CSDL ngày ó ã có ch a. N u có r i thì m s d li u l u. N u ch a có thì t o c s d li u i. Qu n tr viên ch nh s a các thông tin liên quan phòng ban, r i c p nh t l u l i. Use-case k t thúc. Máy client yêu c u qu n tr nh p c u trúc filter gói tin. Ki m tra tính h p l c a c u trúc filter. 68 n Ch ng 5: Phân tích và thi t k PacketCap o Các dòng s ki n khác Không có • Các yêu c u c bi t o Không có. • u ki n tiên quy t o Ph i ng nh p quy n qu n tr m i c th c hi n Use- Case này. • m m r ng o Không có. 5.6.3. StopCapture • Tên use case: StopCapture • Mô : Use-case này mô t quá trình qu n tr viên yêu c u máy client g i n server yêu c u k t thúc b t gói tin. • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client. Máy client g i yêu c u ng ng b t gói tin n máy server. Sau khi máy server nh n ti n trình b t gói tin ã c yêu c u s ki m tra c th c thi ch a. u ti n trình ch a th c thi thì th c thi thì ng ng t gói tin, thông báo v máy client yêu c u ã c áp ng. u ti n trình ch a iv . 69 c th c thi thì g i thông báo Ch ng 5: Phân tích và thi t k PacketCap o Dòng s ki n ph óng c s d li u • Các dòng s ki n khác o Không có. • Các yêu c u c bi t o Không có. • u ki n tiên quy t Ph i ng nh p quy n qu n tr m i c th c hi n Use-Case này. • m m r ng o Không có. 5.6.4. GetFilter • Tên use case: GetFilter • Mô Use-case này mô t quá trình qu n tr viên yêu c u máy client g i yêu c u cho server tr l i b l c hi n th i. • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client yêu u thay l y filter hi n i ang dùng Sau khi máy server nh n ti n trình b t gói tin ã b t gói tin. c yêu c u s ki m tra c th c thi ch a. u ti n trình ã th c thi thì nó s g i tr l i cho client u ti n trình ch a i v cho client. 70 c th c thi thì g i thông báo Ch ng 5: Phân tích và thi t k PacketCap o Dòng s ki n ph óng c s d li u o Các dòng s ki n khác • Các yêu c u c bi t o Không có. • u ki n tiên quy t: o Không có • m m r ng: o Không có. 5.6.5. Terminate • Tên use case: Terminate • Mô : Use-case này mô t quá trình qu n tr viên yêu c u máy client g i n server yêu c u server k t thúc( thoát). • Dòng s ki n o Dòng s ki n chính Use-case b t u khi có yêu c u t máy client. Máy client g i yêu c u k t thúc ch Sau khi máy server nh n ng trình server. c yêu c u s ki m tra n u quá trình b t gói tin ang ch y thì nó s ch m d t. Thoát ra kh i ch o Dòng s ki n ph óng c s d li u • Các dòng s ki n khác o Không có. 71 ng trình. (ch m d t) Ch ng 5: Phân tích và thi t k PacketCap • Các yêu c u c bi t o Không có. • u ki n tiên quy t Ph i ng nh p quy n qu n tr m i c th c hi n Use-Case này. • m m r ng o Không có. 5.7.Thi t k d li u 5.7.1. Phân tích các h Có 3 h • ng l u tr ng ng 1: Các máy client b t gói tin trên các m ng khác nhau và li u c truy n v l u tr trên m t máy server. Hình 5-3 Mô hình l u tr 1 72 Ch ng 5: Phân tích và thi t k PacketCap o u m: li u o Khuy t c l u t p trung d dàng cho vi c x lý sau này. m Khi s l ng các gói tin b t c quá nhi u vi c truy n d li u v m áy server có th làm b n òi h i dung l • ng truy n c a m ng. ng l u tr r t l n ng 2 : Gi ng nh h máy server. ng 1 nh ng thi t l p thêm m t m ng LAN gi a các máy client và sever truy n d li u. Hình 5-4 Mô hình l u tr 2 o u m: Kh c ph c o Khuy t c khuy t mc ah ng 1 m T n kém trong vi c thi t l p m ng LAN. Vi c thi t l p m ng LAN có th g p khó kh n trong tr p các máy client quá xa nhau. ò i h i dung l ng l u tr r t l n 73 m áy server. ng Ch ng 5: Phân tích và thi t k PacketCap • ng 3 : L u phân tán trên các máy client và ch truy n d li u theo yêu c u c a client. Hình 5-5 Mô hình l u tr 3 u o m: Ch truy n nh ng d li u nào kh c ph c c khuy t c client yêu c u nên ph n mc ah ng 1. Vi c l u tr phân tán s không òi h i dung l n m t máy. Vi c xây d ng ch ng trình th c hi n l u tr phân tán s dàng h n. o Khuy t i m ng ng l u tr ng PacketCap cho phép l u tr theo 74 3 h óng trên. Ch ng 5: Phân tích và thi t k PacketCap 5.7.2. Thi t k s li u 5.7.2.1. Danh sách các STT Tên it it ng ng (table) Mô 1 PACKET Thông tin chung t t c các gói tin b t 2 IP Thông tin v IP header c a gói tin 3 TCP Thông tin chi ti t v gói tin TCP 4 UDP Thông tin chi ti t v gói tin UDP 5 ICMP Thông tin chi ti t v gói tin ICMP 6 IGMP Thông tin chi ti t v gói tin IGMP 7 ARP Thông tin chi ti t v gói tin ARP ng 5-2 Danh sách các Sau ây là mô t chi ti t m t s l p it it ng ng quan tr ng c a h th ng. 5.7.2.2 Table PACKET ST Tên thu c tính Ki u d li u 1 Ma Chu i (10) 2 Source Mac Chu i (10) T 3 Dest Mac Ý ngh a nh danh gói tin a ch mac c a máy g i gói tin a ch mac c a máy Chu i (10) nh n gói tin 4 Packetlength Chu i (10) chi u dài gói tin 5 Time Chu i (20) Th i gian nh n gói tin 6 Data Chu i (1000) D li u c gói tin ng 5-3 Table PACKET 75 c Ràng bu c Ch ng 5: Phân tích và thi t k PacketCap 6.7.2.4. Table IP ST Tên thu c tính Ki u d li u 1 Ma Chu i (10) 2 Service Chu i (10) 3 ID Chu i (10) ID c a gói tin 4 TTL Chu i (20) Time to live 5 ChecksumIP Chu i (20) Checksum c a IP 6 SourceIP Chu i (20) a ch IP ngu n 7 Dest IP Chu i (20) Ràng Service c a gói tin a ch IP ích T Ý ngh a bu c a ch mac c a máy g i ng 5-4 Table IP 5.7.2.5. Table TCP ST Tên thu c tính Ki u d li u 1 Ma Chu i (10) 2 Source Port Chu i (10) 3 Dest Port Chu i (10) Port ích 4 Seg No Chu i (20) S segment 5 Ack No Chu i (20) Ack 6 Winsize Chu i (20) Winsize 7 checksumTCP Chu i (20) 8 Type Ràng Port ngu n T Ý ngh a bu c nh danh gói tin Checksum c a TCP Chu i (20) ng 5-5 Table TCP Type : {"FIN ","SYN ","RST ","PUSH ","ACK ","URG ","ECE ","CWR "} 76 Ch ng 5: Phân tích và thi t k PacketCap 5.7.2.6. Table UDP ST Tên thu c tính Ki u d li u 1 Ma Chu i (10) 2 Source Port Chu i (10) 3 Dest Port Chu i (10) Port ích 4 ChecksumUDP Chu i (20) Ràng Port ngu n Checksum c a UDP T Ý ngh a bu c nh danh gói tin ng 5-6 Table UDP 5.7.2.7 Table ICMP ST T 1 2 Tên thu c tính Ki u d li u Ma Chu i (10) ICMP message group Ý ngh a nh danh gói tin Chu i (10) 3 Type Chu i (10) 4 Code Chu i (20) 5 Id Chu i (20) 6 Seg No Chu i (20) ng 5-7 Table ICMP Các h ng và ý ngh a c a ICMP message group ( 0, "Echo Reply"}, { 3, "Destination Unreachable"}, { 4, "Source Quench"}, { 5, "Redirect Message"}, 77 Ràng bu c Ch ng 5: Phân tích và thi t k PacketCap { 6, "Alternate Host Address"}, { 8, "Echo Request"}, { 9, "Router Advertisement"}, { 10, "Router Selection"}, { 11, "Time Exceeded"}, { 12, "Parameter Problem"}, { 13, "Timestamp Request"}, { 14, "Timestamp Reply"}, { 15, "Information Request"}, { 16, "Information Reply"}, { 17, "Address Mask Request"}, { 18, "Address Mask Reply"}, 5.7.2.8 Table IGMP ST T 1 2 Tên thu c tính Ki u d li u Ma Chu i (10) IGMP message group Ý ngh a nh danh gói tin Chu i (10) 3 Type Chu i (10) 4 Response Time Chu i (20) 5 Checksum Chu i (20) 6 Group Addr Chu i (20) ng 5-8 Table IGMP 78 Ràng bu c Ch ng 5: Phân tích và thi t k PacketCap Các h ng và ý ngh a c a IGMP message group: { 0x11 ," Group Membership Query."}, {0x12 ,"IGMPv1 Membership Report." }, {0x13 ,"DVMRP. "}, {0x14 ,"PIMv1. "}, {0x15 ,"Cisco Trace Messages. "}, {0x16 ,"IGMPv2 Membership Report. "}, {0x17 ,"IGMPv2 Leave Group." }, {0x1E ,"Multicast Traceroute Response. "}, {0x1F ,"Multicast Traceroute. "}, {0x22 ,"IGMPv3 Membership Report. "}, {0x24 ,"Multicast Router Advertisement. "}, {0x25 ,"Multicast Router Solicitation. "}, {0x26 ,"Multicast Router Termination. "} 79 Ch ng 5: Phân tích và thi t k PacketCap 5.7.2.9. Table ARP ST Tên thu c tính Ki u d li u 1 Ma Chu i (10) 2 ARP type Chu i (10) 3 ARP Source IP Chu i (10) 4 ARPDest IP Chu i (20) 5 Group Addr Chu i (20) T Ý ngh a nh danh gói tin ng 5-9 Table ARP ARP type: ARP Request frame ARP Reply frame RARP Request frame RARP Reply frame Unknown ARP 80 Ràng bu c Ch ng 5: Phân tích và thi t k PacketCap 5.8. Xây d ng PCServer( server), PCManager(client) 5.8.1. L u PCServer Hình 5-6 L u 81 PCServer Ch ng 5: Phân tích và thi t k PacketCap 5.8.2. L u PCManager( Client) Hình 5-7 L u 82 PCManager Ch ng 5: Phân tích và thi t k PacketCap 5.8.3. C u trúc d li u trao i gi a PCServer và PCManager Sau khi Client k t n i thành công v i PCServer, PCManager và PCServer trao i các thông i p v i nhau. th là PCManger s g i yêu c u lên cho PCServer và sau khi th c hi n yêu c u PCManager, Server C u trúc a g i tr l i k t qu th c hi n cho Client. a m i thông i p nh sau: struct tagCMD { int CmdCode; int IPFilterType; int b1,b2,b3,b4;//4 parts of IP address(for filter) int PortFilterType; int Port; int ProtocolFilter;//TCP, UDP, ICMP.. int mb1,mb2,mb3,mb4;//MySQL int NumberPacket; }; V i CmdCode là mã l nh c n g i, các mã l nh mày ngh a b ng các h ng d dàng cho vi c l p trình. 83 c nh Ch ng 5: Phân tích và thi t k PacketCap IPFilterType xác nh ki u c theo a ch IP, giá tr c a nó c nh ngh a nh sau: #define NO_FILTER 0 #define SOURCE_FILTER 1 #define DEST_FILTER 2 #define SOURCE_OR_DEST_FILTER 3 #define SOURCE_AND_DEST_FILTER 4 N u IPFilterType=NO_FILTER ngh a là không th c hi n vi c c các gói tin theo b1,b2,b3,b4 s là a ch IP theo a ch IP, n u IPFilterType khác 0 thì lúc ó a ch IP c n c. B n s nguyên này ng b1.b2.b3.b4 SOURCE_FILTER l c theo a ch IP ngu n, các gói tin có ch ngu n (n i g i) b ng b1.b2.b3.b4 a ch n) b ng b1.b2.b3.b4 s c b t i. PortFilterType xác nó c nh ki u nh ngh a nh ích, các gói tin có c theo Port b ng b1.b2.b3.b4 a ng b1.b2.b3.b4 ng t ích ng, giá tr c a a ch ngu n ho c ích c b t. SOURCE_AND_DEST nh ng gói tin có b1.b2.b3.b4 a ch a IPFilterType. SOURCE_OR_DEST nh ng gói tin có T a c b t i. DEST_FILTER l c theo (n i hình thành a ch ngu n b ng c b t và nh ng gói tin có a ch ích b ng c b t. í IPFilterType là PortFilterType Protocol là giao th c c n c, 0 có ngh a là không TCP... 84 c, 1 là l c theo Ch ng 5: Phân tích và thi t k PacketCap Mb1, mb2, mb3,mb4 là 4 thành ph n ch y h qu n tr a ch IP a máy tính s d li u mà ta mu n l u thông tin b t c vào ó. NumberPacket xác a nh s gói tin c n b t. 5.9.Thi t k giao di n PCManager( phiên n ch y trên Windows) Mô Tên it ng th 1 2 3 4 5 6 IDC_STATIC Ki u i ng Label IDC_IPADDR_SOURCE IP Address Ghi chú IP Nh p IP c n filter CboFilterIP Combobox L a ch n ki u filter theo IP IDC_STATIC Label Port IDC_SOURCEPORT Textbox Nh p port c n filter CboFilterPORT Combobox L a ch n ki u filter theo IP 85 Ch 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ng 5: Phân tích và thi t k PacketCap IDC_STATIC Label Protocol CboProtocol Combobox Ch n p rotocol c n filter IDC_STATIC Label Thông báo nh p IP IDC_IPADDR_MYSQL IP Address Ch n máy ch y MySQL IDC_STATIC Label Number of packet IDC_NUMBER Combo box IDC_STATIC Label l ng packet c n b t Server IP IDC_IPADDR_SERVER Textbox Nh p a ch IP máy PCServer c n u khi n IDC_STATUS Label Báo tình tr ng k t n i BtnStart button Bt BtnStop Button K t thúc vi c b t gói tin BtnGetFilter Button L y thông tin filter hi n th i BtnTermServer Button K t thúc liên k t v server BtnConnect Button K tn i BtnExit Button Thoát kh i ch ng 5-10 Mô 86 u b t gói tin n ma1y server màn hình PCManager ng trình Ch ng 6: Cài t và th nghi m Ch 6.1. Cài ng 6: Cài t và th nghi m t Ph n PCServer c cài t trên môi tr ng Linux, PCManager cài t trên 2 môi tr ng Linux và Windows. • Môi tr ng cài t ng ng o Windows XP Professional o Linux Redhat 9.0 • Môi tr ng l p trình o C for Linux o Visual C++ 6.0 • Môi tr ng cài t th nghi m o PCServer: Linux Redhat 9.0 o PCManager: Windows XP Professional o PCManager: Linux Redhat 9.0 • Các ph n m m h tr PCServer : MySQL, th vi n libpap 87 c Ch ng 6: Cài t và th nghi m 6.2. Th nghi m 6.2.1. Mô hình th nghi m 1 Hình 6-1 Mô hình th nghi m 1 • Mô : PCServer và PCStore cùng ch y trên m t máy, PCManager và PCServer cùng trong m t LAN segment • K t qu : o PCManager k t n i vào PCServer thành công o PCServer th c hi n t t t t gi các yêu c u do PCManager n o PCServer ghi k t qu b t thành công. 88 c vào c s d li u MySQL Ch ng 6: Cài t và th nghi m 6.2.2. Mô hình th nghi m 2 Hình 6-2 Mô hình th nghi m 2 • Mô : PCServer và PCStore có th l a ch n ch y trên cùng 1 máy ho c 2 máy khác nhau. • K t qu : o PCManager k t n i vào PCServer thành công o PCServer th c hi n t t t t gi các yêu c u do PCManager n o PCServer ghi k t qu b t thành công. 89 c vào c s d li u MySQL Ch ng 6: Cài t và th nghi m 6.2.3. Mô hình th nghi m 3 Hình 6-3 Mô hình th nghi m 3 • Mô PCServer và PCManager ch y trên 2 ng LAN khác nhau c n i qua 1 router. • K t qu Ch a th nghi m c mô hình này do không có thi t 90 . Ch ng 7: T ng k t Ch ng 7: T ng k t 7.1. K t lu n 7.1.1. K t qu t c Sau khi th c hi n xong tài, chúng em ã thu cm ts kt qu : • Tìm hi u c th vi n mã ngu n m libpcap và vi t ng b t gói tin d a vào th vi n này. ngu n m h tr l p trình ng c p th p c ng ây là b th vi n mã c s d ng r t nhi u trong các ph n m m h tr b t gói tin nh TcpDump, TCPFlow, Ethereal... • Tìm hi u h qu n tr • Tìm hi u v n s d li u mã ngu n m MySQL. l p trình socket, multithread trên môi tr ng Linux. • Xây d ng c ng vi c phân tích thông tin 7.1.2. ng phân tán b t các gói tin ph c cho ng. n ch • Ch a th b t gói tin ng trên nhi u card ng • l ng protocol có th phân tích và trích c thông tin không nhi u • Ch a h tr ch c n ng phân tích thông tin t nh ng d li u ã bt c. 91 Ch ng 7: T ng k t 7.2. H ng phát tri n Trong t ng lai, ng ng PacketCap c phát tri n thêm nh ng ch c n ng m i và nâng c p ch c n ng hi n i ch a • H tr b t các gói tin • ng thêm s l trích • tr c t t. ng th i trên nhi u card ng protocol mà ch ng ng trình có th phân tích và c thông tin. u thông tin b t c theo các TcpDump.. 92 nh ng a Ethereal, Ph L c PH L C H 1.Ch ng d n s d ng PacketCap ng trình PCServer ch y ch ng trình Server n ch c n vào th server và gõ l nh ./pcserver thì ch thoát kh i ch ng trình ng trình c th c thi. ng trình PCServer Client g i yêu c u k t thúc ch c c h a ch n có th dùng ch ng trình ng trình PCServer, ho c nh n t h p phím Ctrl-C trên console ang ch y PCserver. 2. Ch ng trình PCManager 2.1. PCManager trên môi tr ng Linux ng t nh khi ch y PCServer, trình PCManager r i gõ l nh ./pcman.Ch ch IP n vào th ng trình c có ch a ch yêu c u nh p a máy ch y PCServer. N u k t n i thành công thì ch hi n th các dòng thông báo, màn hình là có th i u khi n ng a ng trình n ch c n nh p các giá tr hi n th trên c ho t 93 ng a PCServer. Ph L c 2.2. PCManager trên môi tr ng Windows Double click chu t vào file PCManager.exe, giao di n a ch ng trình Hình 7-1 Màn hình PCManager ánh a ch IP a PCServer vào c PCServerIP, click chu t vào nút Connect n u k t n i thành công thì dòng tr ng thái phía d Connect i nút thông báo k t qu k t n i thành công hay không. N u thành k t n i thành công thì các nút l nh này ta m i có th th c hi n các thao tác i u khi n Ví d b tt t PCServer) và các gói tin i qua card ng( có hi u l c. Lúc c. a máy ang ch y u k t qu vào chính máy tính ang ch y PCServer thì ch c n click chu t vào nút StartCapture k t thúc ch ng trình PCServer thì click chu t vào nút Terminate Server. 94 Tài li u tham kh o TÀI LI U THAM KH O [1] Nguy n Ph ng Lan – Hoàng c i, L p trình Linux t p 1, NXBGiáo D c, H Chí Minh, 2001 [2] Sams, Linux Programming Unleashed, 1999 Website [3] VietNam OpenSource Forum, www.vnoss.org [4] MySQL, www.mysql.com [5] libpcap, www.tcpdump.org [6] SourceForge, www.sourceforge.net 95 ...
View Full Document

This note was uploaded on 11/06/2010 for the course CS 0652043 taught by Professor Thanh during the Spring '10 term at Abu Dhabi University.

Ask a homework question - tutors are online