ŵ»ùÑÇ | Ë÷°® | ÈýÐÇ | ĦÍÐÂÞÀ­ | ·ÉÀûÆÖ | ¶àÆÕ´ï | ²¨µ¼ | LG | ÁªÏë | ÏÄР| º£¶û | ÏÄÆÕ | ËÉÏ | TCL | Ã÷»ù | º£ÐÅ | ¿µ¼Ñ

Pcap³ÌÐòÉè¼Æ

ʱ¼ä:2008-06-23 17:41:46  À´Ô´:  ×÷Õß:

 

By °¢ÃÀ

Tim Carstens
´ËÎĵÄ×î½ü¸üмûÓÚ http://broker.dhs.org/pcap.htm
ºÃ£¬ÈÃÎÒÃÇ´Ó¿´¿´ÕâÆªÎÄÕÂд¸øË­¿ªÊ¼¡£ÏÔ¶øÒ×¼ûµÄ£¬ÐèҪһЩCÓïÑÔ»ù´¡ÖªÊ¶£¬³ý·ÇÄãÖ»ÏëÁ˽â»ù±¾µÄÀíÂÛ¡£Äã²»±ØÊÇÒ»¸ö±àÂëר¼Ò£¬ÒòΪÕâ¸öÁìÓòÖ»Óо­Ñé·á¸»µÄ³ÌÐòÔ±Éæ×㣬¶øÎÒ½«¾¡¿ÉÄÜÏêϸµÄÃèÊöÕâЩ¸ÅÄî¡£ÁíÍ⣬¿¼Âǵ½ÕâÊÇÓйØÒ»¸ö°üÐá̽Æ÷µÄ£¬ËùÒÔ¶ÔÍøÂç»ù´¡ÖªÊ¶µÄÀí½âÊÇÓаïÖúµÄ¡£ËùÓÐÔڴ˳öÏֵĴúÂëʾÀý¶¼ÒÑÔÚFreeBSD 4.3ƽ̨ÉϲâÊÔͨ¹ý¡£
¿ªÊ¼£ºpcapÓ¦ÓóÌÐòµÄ¸ñʽ
ÎÒÃÇËùÒªÀí½âµÄµÚÒ»¼þÊÂÇéÊÇÒ»¸ö»ùÓÚpcapµÄÐá̽Æ÷³ÌÐòµÄ×ÜÌå²¼¾Ö¡£Á÷³ÌÈçÏ£º
1.ÎÒÃÇ´Ó¾ö¶¨ÓÃÄÄÒ»¸ö½Ó¿Ú½øÐÐÐá̽¿ªÊ¼¡£ÔÚLinuxÖУ¬Õâ¿ÉÄÜÊÇeth0£¬¶øÔÚBSDϵͳÖÐÔò¿ÉÄÜÊÇxl1µÈµÈ¡£ÎÒÃÇÒ²¿ÉÒÔÓÃÒ»¸ö×Ö·û´®À´¶¨ÒåÕâ¸öÉ豸£¬»òÕß²ÉÓÃpcapÌṩµÄ½Ó¿ÚÃûÀ´¹¤×÷¡£
2.³õʼ»¯pcap¡£ÔÚÕâÀïÎÒÃÇÒª¸æËßpcap¶ÔʲôÉ豸½øÐÐÐá̽¡£¼ÙÈçÔ¸ÒâµÄ»°£¬ÎÒÃÇ»¹¿ÉÒÔÐá̽¶à¸öÉ豸¡£ÔõÑùÇø·ÖËüÃÇÄØ£¿Ê¹Óà Îļþ¾ä±ú¡£¾ÍÏñ´ò¿ªÒ»¸öÎļþ½øÐжÁдһÑù£¬±ØÐëÃüÃûÎÒÃǵÄÐá̽“»á»°”£¬ÒÔ´ËʹËüÃǸ÷×ÔÇø±ð¿ªÀ´¡£
3.Èç¹ûÎÒÃÇÖ»ÏëÐáÌ½ÌØ¶¨µÄ´«Ê䣨ÈçTCP/IP°ü£¬·¢Íù¶Ë¿Ú23µÄ°üµÈµÈ£©£¬ÎÒÃDZØÐë´´½¨Ò»¸ö¹æÔò¼¯ºÏ£¬±àÒë²¢ÇÒʹÓÃËü¡£Õâ¸ö¹ý³Ì·ÖΪÈý¸öÏ໥½ôÃܹØÁªµÄ½×¶Î¡£¹æÔò¼¯ºÏ±»ÖÃÓÚÒ»¸ö×Ö·û´®ÄÚ£¬²¢ÇÒ±»×ª»»³ÉÄܱ»pcap¶ÁµÄ¸ñʽ(Òò´Ë±àÒëËü)¡£±àÒëʵ¼ÊÉϾÍÊÇÔÚÎÒÃǵijÌÐòÀïµ÷ÓÃÒ»¸ö²»±»Íⲿ³ÌÐòʹÓõĺ¯Êý¡£½ÓÏÂÀ´ÎÒÃÇÒª¸æËß pcapʹÓÃËüÀ´¹ýÂ˳öÎÒÃÇÏëÒªµÄÄÇÒ»¸ö»á»°¡£
4.×îºó£¬ÎÒÃǸæËßpcap½øÈëËüµÄÖ÷ÌåÖ´ÐÐÑ­»·¡£ÔÚÕâ¸ö½×¶ÎÄÚpcapÒ»Ö±¹¤×÷µ½Ëü½ÓÊÕÁËËùÓÐÎÒÃÇÏëÒªµÄ°üΪֹ¡£Ã¿µ±ËüÊÕµ½Ò»¸ö°ü¾Íµ÷ÓÃÁíÒ»¸öÒѾ­¶¨ÒåºÃµÄº¯Êý£¬Õâ¸öº¯Êý¿ÉÒÔ×öÎÒÃÇÏëÒªµÄÈκι¤×÷£¬Ëü¿ÉÒÔÆÊÎöËù²¿»ñµÄ°ü²¢¸øÓû§´òÓ¡³ö½á¹û£¬Ëü¿ÉÒÔ½«½á¹û±£´æÎªÒ»¸öÎļþ£¬»òÕßʲôҲ²»×÷¡£
5£®ÔÚÐá̽µ½ËùÐèµÄÊý¾Ýºó£¬ÎÒÃÇÒª¹Ø±Õ»á»°²¢½áÊø¡£
ÕâÊÇʵ¼ÊÉÏÒ»¸öºÜ¼òµ¥µÄ¹ý³Ì¡£Ò»¹²Îå¸ö²½Ö裬ÆäÖÐÒ»¸ö£¨µÚ3¸ö£©ÊÇ¿ÉÑ¡µÄ¡£ÎÒÃÇΪʲô²»¿´Ò»¿´ÊÇÔõÑùʵÏÖÿһ¸ö²½ÖèÄØ£¿
ÉèÖÃÉ豸
ÕâÊǺܼòµ¥µÄ¡£ÓÐÁ½ÖÖ·½·¨ÉèÖÃÏëÒªÐá̽µÄÉ豸¡£
µÚÒ»ÖÖ£¬ÎÒÃÇ¿ÉÒÔ¼òµ¥µÄÈÃÓû§¸æËßÎÒÃÇ¡£¿¼²ìÏÂÃæµÄ³ÌÐò£º
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[])
{

char *dev = argv[1];
printf("Device: %s", dev);
return(0);
}
Óû§Í¨¹ý´«µÝ¸ø³ÌÐòµÄµÚÒ»¸ö²ÎÊýÀ´Ö¸¶¨É豸¡£×Ö·û´®“dev”ÒÔpcapÄÜ“Àí½â”µÄ¸ñʽ±£´æÁËÎÒÃÇÒªÐá̽µÄ½Ó¿ÚµÄÃû×Ö£¨µ±È»£¬Óû§±ØÐë¸øÁËÎÒÃÇÒ»¸öÕæÕý´æÔڵĽӿڣ©¡£
ÁíÒ»ÖÖÒ²ÊÇͬÑùµÄ¼òµ¥¡£À´¿´Õâ¶Î³ÌÐò£º
#include <stdio.h>
#include <pcap.h>
int main()
{
char *dev, errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf);
printf("Device: %s", dev);
return(0);
}
ÔÚÕâ¸öÀý×ÓÀpcap¾Í×Ô¼ºÉèÖÃÉ豸¡£“µ«ÊÇ£¬µÈһϣ¬Tim”£¬Äã»á˵£¬“×Ö·û´®errbufÊÇ×öʲôµÄ£¿”´ó¶àÊýµÄpcapÃüÁîÔÊÐíÎÒÃÇÏòËüÃÇ´«µÝ×Ö·û´®×÷Ϊ²ÎÊý¡£Õâ¸ö×Ö·û´®µÄÄ¿µÄÊÇÊ²Ã´ÄØ£¿Èç¹ûÃüÁîʧ°Ü£¬Ëü½«´«¸øÕâ¸ö×Ö·û´®¹ØÓÚ´íÎóµÄÃèÊö¡£ÕâÑù£¬Èç¹ûpcap_lookupdev()ʧ°Ü£¬Ëü½«ÔÚ errbuf´æ´¢´íÎóÐÅÏ¢¡£ºÜºÃ£¬ÊDz»ÊÇ£¿Õâ¾ÍÊÇÎÒÃÇÔõÑùÈ¥ÉèÖÃÉ豸¡£
´ò¿ªÉ豸½øÐÐÐá̽
´´½¨Ò»¸öÐá̽»á»°µÄÈÎÎñÕæµÄ·Ç³£¼òµ¥¡£Îª´Ë£¬ÎÒÃÇʹÓÃpcap_open_live()º¯Êý¡£´Ëº¯ÊýµÄÔ­ÐÍ£¨¸ù¾ÝpcapµÄÊÖ²áÒ³£©ÈçÏ£º
pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)
ÆäµÚÒ»¸ö²ÎÊýÊÇÎÒÃÇÔÚÉÏÒ»½ÚÖÐÖ¸¶¨µÄÉ豸£¬snaplenÊÇÕûÐεģ¬Ëü¶¨ÒåÁ˽«±»pcap²¶»ñµÄ×î´ó×Ö½ÚÊý¡£µ±promiscÉèΪtrueʱ½«ÖÃÖ¸¶¨½Ó¿ÚΪ»ìÔÓģʽ£¨È»¶ø£¬µ±ËüÖÃΪfalseʱ½Ó¿ÚÈÔ´¦ÓÚ»ìÔÓģʽµÄÌØÊâÇé¿öÒ²ÊÇÓпÉÄܵģ©¡£to_msÊǶÁȡʱµÄ³¬Ê±Öµ£¬µ¥Î»ÊǺÁÃë(Èç¹ûΪ0ÔòÒ»Ö±Ðáֱ̽µ½´íÎó·¢Éú£¬Îª-1Ôò²»È·¶¨)¡£×îºó£¬ebufÊÇÒ»¸öÎÒÃÇ¿ÉÒÔ´æÈëÈκδíÎóÐÅÏ¢µÄ×Ö·û´®£¨¾ÍÏñÉÏÃæµÄerrbuf£©¡£´Ëº¯Êý·µ»ØÆä»á»°¾ä±ú¡£
¾Ù¸öÀý×Ó£¬¿¼²ìÒÔÏ´úÂëÆ¬¶Ï£º
#include <pcap.h>
...
pcap_t *handle;
handle = pcap_open_live(somedev, BUFSIZ, 1, 0, errbuf);

Tags£º


ÉÏһƪ£ºÃ»ÓÐÁË   ÏÂһƪ£ºÃ»ÓÐÁË

ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0ÈË·¢±íÁËÆÀÂÛ ²é¿´ÍêÕûÄÚÈÝ

ÍÆ¼ö½Ì³Ì

×îн̳Ì