Tải bản đầy đủ (.pdf) (91 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (869.61 KB, 91 trang )


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

TRNG I HC KHOA HC T NHIÊN
KHOA CÔNG NGH THÔNG TIN
 MÔN CÔNG NGH PHN MM
GIANG QUC MINH - 0112016
H PHM THÁI VINH - 0112081
XÂY DNG NG NG BT GÓI TIN CHO
VIC PHÂN TÍCH THÔNG TIN NG PHC
 QUN LÝ
KHÓA LUN C NHÂN TIN HC
GIÁO VIÊN HNG DN
GVC CAO NG TÂN
NIÊN KHÓA 2001 – 2005

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


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

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 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, óng
gó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/2005
Nhóm sinh viên thc hin
Giang Quc Minh – H Phm Thái Vinh

B CC 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 Gii thiu v tài
PHN 2: TÌM HIU CÁC VN  LP TRÌNH. Phn này gii thiu
các vn  lp trình c n nht  xây dng 1ng ng có kh ng bt
các gói tin và cho phép ngi dùng có th iu khin t xa qua môi
trng 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ên
mô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 tin
ng.
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.


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

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

Các danh c
12
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

Các danh c
13
5.7.Thit k d liu................................................................................... 72
5.7.1. Phân tích các hng lu tr ......................................................... 72
5.7.2. Thit k  s  liu...................................................................75
5.7.2.1. Danh sách các i tng (table)............................................. 75
5.7.2.2 Table PACKET ......................................................................75
6.7.2.4. Table IP................................................................................. 76

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

Các danh c
14

DANH SÁCH HÌNH
Hình 5-1 Các thành phn a PacketCap...................................................... 65
Hình 5-2 Mô hình use case...........................................................................66
Hình 5-3 Mô hình lu tr 1 .......................................................................... 72
Hình 5-4 Mô hình lu tr 2 .......................................................................... 73
Hình 5-5 Mô hình lu tr 3 .......................................................................... 74
Hình 5-6 Lu  PCServer........................................................................... 81
Hình 5-7 Lu  PCManager ....................................................................... 82
Hình 6-1 Mô hình th nghim 1................................................................... 88
Hình 6-2 Mô hình th nghim 2................................................................... 89
Hình 6-3 Mô hình th nghim 3................................................................... 90

Các danh c
15
DANH SÁCH NG
ng 4-1 Các giá tr ca domain ..................................................................48
ng 4-2 Các mã li a hàm bind() ............................................................ 51
ng 4-3 Các mã li a domain AF_UNIX ................................................52
ng 4-4 Mã li a hàm connect().............................................................. 55
ng 5-1 Xác nh yêu cu........................................................................... 62
ng 5-2 Danh sách các i tng............................................................... 75
ng 5-3 Table PACKET............................................................................. 75
ng 5-4 Table IP ........................................................................................ 76
ng 5-5 Table TCP..................................................................................... 76
ng 5-6 Table UDP.................................................................................... 77
ng 5-7 Table ICMP .................................................................................. 77
ng 5-8 Table IGMP..................................................................................78
ng 5-9 Table ARP ....................................................................................80
ng 5-10 Mô  màn hình PCManager ....................................................... 86


Phn 1: Tng quan
16
PHN 1: TNG QUAN
Chng 1. Gii thiu  tài

Chng 1: Gii thiu  tài
17
Chng 1: Gii thiu  tài
1.1. t vn 
Ngày nay công ngh thông tin nói chung và Intenet nói riêng ngày càng
phát trin 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ng hôm
nay, s lng các doanh nghip thit lp các h thng mng và kt ni Intenet
ngày càng nhiu.
Vic Công ngh thông tin và mng Intenet phát trin và ngày càng nhiu
các thông tin quan trng c trao i trên mng làm ny sinh mt s vn 
quan trng là bo mt thông tin trên mng  tránh rò r hay ngn không cho
truy cp vào các d liu không cho phép gây thit hi kinh t, qun lý bng
thông  tng kh nng áp ng thông tin, giao dch vi khách hàng ng thi
tránh c tình trng nghn mch lu thông trên mng.
Vic phân tích lu lng mng òi hi nng lc tính toán rt ln, vì vy
mun làm c vic này cn phi trang b các siêu máy tính  thc hin bài
toán này. Trong 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 .

Chng 1: Gii thiu  tài
18
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á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.
• i s lng các máy tính  ln thì vic trin khai Grid
Computing s cho chúng ta mt h thng tính toán cc kì
nh gp nhiu ln 1 siêu máy tính ( lúc ó các siêu máy tính
có th ch là mt node trong h thng Grid Computing).
i nhng u m trên chúng tôi chn  tài “ng dng th nghim
Grid Computing trong vic phân tích thông tin mng phc v qun lý”.
1.2. Gii thiu  tài
 tài “ng ng th nghim Grid Computing trong vic phân tích
thông tin ng phc  qun lý” là mt  ln gm 2 nhóm thc hin.
Nhóm th 1  xây dng ng dng phân tán trên mng cho phép thit lp t
xa ch lc và bt các gói tin, trích lc và lu vào các c s d liu trên
ng phc  cho vic theo dõi và phân tích thông tin ng (Phn I).
Nhóm th 2  tìm hiu Grid Computing và xây dng ng ng  phân
tích hin trng ca mng da trên thông tin t  s d liu do nhóm th 1
xây dng (Phn II).

Chng 1: Gii thiu  tài
19
1.3. Yêu cu a  tài
• Xây dng ng dng phân tán th nghim cho phép bt các gói tin
dùng  phân tích thông tin ng phc  qun lý.
• Các gói tin sau khi bt, c trích thông tin và lu vào các c s d
liu phân tán trên mng theo nhu cu ca ngi qun tr.
•  thng cho phép cu hình ng dng t xa.
• H tr u kt qu bt c theo nh ng a các ng ng bt

gói tin khác nh Ethereal, TCPDump...

Phn 2: Tìm hiu các vn  lp trình
20
PHN 2: TÌM HIU CÁC VN  LP TRÌNH
Chng 2. Th vin lp trình ng libpcap
Chng 3. H qun tr  s d liu MySQL
Chng 4. Lp trình socket

Chng 2: Th vin lp trình ng libpcap
21
Ch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  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, cho
phép phân tích các frame va tìm c.
Th vin libcap c s dng rng rãi trong các phn mm sniffer
packet. Các phn mm s dng libcap ph bin là TCPdump, TCPflow.
Hin nay phiên 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nhànhcà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 t ã hoàn tt.

Chng 2: Th vin lp trình ng libpcap
22
3.3. Các bc xây dng chng trình s dng libpcap
Có 5 bc chính trong vic s dng th vin libpcap
• c 1: Xác nh interface (card ng) mà ta mun bt frame vào
(Trong Linux, interface thng là eth0,eth1…..Ta có th dùng các
hàm pcap_lookupdev() ca th vin libpcap  ly tt c các
inteface.
• c 2: Khi to pcap. Cung cp cho pcap bit interface nào trong
 các interface ã ly v bc trên sc chn  sniff.
• c 3: Lc frame .pcap cho chúng ta c ch chn la khi lc các
frame khi bt (ví d ch bt frame TCP/IP có source IP
192.168.8.8 và port 23 …). ta phi to ra filter ri biên ch filter
này  báo cho pcap bit b lc nó s dùng.
• c 4: Pcap thc thi vic sniff frames.
• c 5: óng phiên làm vic và kt thúc ng dng
Trên ây là qui trình tng quát cách libpcap bt gói tin trong ó bc 3
là tùy chn có th có hoc không.

Chng 2: Th vin lp trình ng libpcap
23
3.4. Chi tit các bc
3.4.1. Chn Interface( card ng)
Có 3 cách thit lp devices  sniff các frames d liu
• Cách 1 : Cho ngi dùng nhp tên thit b t dòng lnh
#include <stdio.h>
#include <pcap.h>
int main(int argc , char* argv[])

{
Char * dev = argv[1]
Printf(Devices : %s \n,dev);
}
Trong ó argv[1] là tham s dòng lnh u tiên
• Cách 2 : S dng hàm pcap_lookupdev() ca libpcap  tìm
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);
}

Chng 2: Th vin lp trình ng libpcap
24
Trong trng hp này, pcap t tìm ra thit b. errbuf là chui cha
thông báo li nu có.
• 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 nh ngha  trên

Chng 2: Th vin lp trình ng libpcap
25
• snaplen cho bit s byte ln nht mà pcap có th bt frames
• promisc nu t bng 1 thì interface s hot ng trong ch
promiscuos mode. ây là ch libpcap s sniff tt c các frame
trên dây dn. Nu t bng 0 thì interface s hot ng  ch
non promiscuos mode, trong ch này,pcap ch sniff nhng
frame gi n máy.
Pcap_t *descr
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);

if(descr == NULL)
{
printf("pcap_open_live(): %s\n",errbuf);
exit(1);
}
Dev là nh danh thit b.
3.4.3. 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.

Chng 2: Th vin lp trình ng libpcap
26
int pcap_setfilter(pcap_t *p,struct_bpf_program *fp)
Tham s th nht là handle qun lý phiên làm vic. Tham s th hai
là tham chiu chn compile version ca filter (ã c nh ngha
trong pcap_compile())
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 "

Chng 2: Th vin lp trình ng libpcap
27
• Filter theo protocal
Ví d ," tcp "
• Ngoài ra còn có th filter tng hp :
Ví d ," dst net 172.168.8.8 and src port 23 tcp"
Ví d v filter n gin
#include <pcap.h>
.
char *dev;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t* descr;
const u_char *packet;
struct pcap_pkthdr hdr; /* pcap.h */
struct bpf_program fp; /* hold compiled program */
bpf_u_int32 maskp; /* subnet mask */
bpf_u_int32 netp; /* ip */
dev = pcap_lookupdev(errbuf);

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);
}

Chng 2: Th vin lp trình ng libpcap
28
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 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 sniff
frame. Chúng ta có th bt frame và a vào vòng lp ch x lý. u
tiên ta xem cách bt frame s dng hàm pcap_next ca libpcap.
Hàm này có cu trúc sau :
u_char *pcap_next(pcap_t *p,struct 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)
}

Chng 2: Th vin lp trình ng libpcap
29
Ví d v sniff frame s dng cu trúc này
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <errno.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/if_ether.h>
int main(int argc, char **argv)
{
int i;
char *dev;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t* descr;
const u_char *packet;
struct pcap_pkthdr hdr; /* pcap.h */
struct ether_header *eptr; /* net/ethernet.h */
u_char *ptr; /* printing out hardware header info */
dev = pcap_lookupdev(errbuf);
if(dev == NULL)

{
printf("%s\n",errbuf);
exit(1);
}
printf("DEV: %s\n",dev);
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);

×