<中心>
捕捉我们的第一个包
中心> <人力资源noshade=" noshade "/>现在我们知道数据包捕获的本质
确认,我们实际上有一个接口拉东西,怎么做
我们抓住一个包!
“就给我该死的例子
让我砍……”,你哭.....
很好给你. .下载
从这里. .testpcap1。c或剪切和粘贴
下面。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *,文件:,,,,testpcap1.c * *,Simple single  packet capture 程序 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */# include & lt; stdio.h> # include & lt; stdlib.h> # include & lt; pcap.h>,/*,加入报错请尝试用,pcap/pcap.h */# include & lt; errno.h> # include & lt; sys/socket.h> # include & lt; netinet/in.h> # include & lt; arpa/inet.h> # include & lt; netinet/if_ether.h>,/*,包含;net/ethernet.h , */命令行参数个数,int 主要(int char * * argv) { ,,,int 我; ,,,char * dev,, ,,,char errbuf [PCAP_ERRBUF_SIZE]; ,,,pcap_t *,备注说明; ,,,const u_char *包; ,,,struct pcap_pkthdr hdr;,,,,,/*, pcap.h */,,,struct ether_header * eptr;,/*;net/ethernet.h , */,,,u_char * ptr;,/*,打印输出硬件头信息,*/,,,/*,抓取网卡,*/,,,dev =, pcap_lookupdev (errbuf); ,,,如果(dev ==, NULL) ,,,{ ,,,,,,,printf (" % s \ n " errbuf); ,,,,,,,退出(1); ,,,} ,,,, ,,,printf (" DEV: % s \ n ", DEV); ,,,/*, ,,,,,,打开网卡,准备监听 ,,,,,,pcap_t * pcap_open_live (char *设备,int snaplen, int promisc, int to_ms, ,,,,,,char * ebuf) ,,,,,,snaplen 作用;抓取的最大字节 ,,,,,,promisc 作用;设置网卡为混杂模式 ,,,,,,to_ms ,,今天早上,等待时间,单位,女士 ,,,,,,errbuf ,安康;保存错误信息 ,,,,,,Note if 你change “prmisc”, param 用anything other than 零,你会 ,,,,,,get all packets your device 看到,,whether 活动对象,断开连接;intendeed for 你或 ,,,,,,不! !,Be sure 你知道,rules of 从而network 你断开连接;running ,,,,,,before 你set your card promiscuous 拷贝模式! !,,,, ,,,,,,注意:如果你将网卡的模式从混杂模式改为任何一种其他模式,你将会监听到你的网卡能看到的所有数据包,无论是否是你想要的,再更新你网卡模式时,一定要确认你了解你正在使用网卡的知识 ,,,*/,,,, ,,,descr =, pcap_open_live (dev BUFSIZ 0 1 errbuf); ,,,如果(descr ==, NULL) ,,,{ ,,,,,,,printf (" pcap_open_live ():, % s \ n”, errbuf); ,,,,,,,退出(1); ,,,} ,,/* ,,,,,,,,,,,,,,,,, ,,,,,,u_char * pcap_next (pcap_t * p, struct pcap_pkthdr * h), ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,从备注说明抓取一个数据包 ,,,, ,,*/,,,packet =, pcap_next(备注说明,和hdr); ,,,如果(packet ==, NULL) ,,,{ ,,,,,,,printf("并't grab 包\ n”); ,,,,,,,退出(1); ,,,} ,,,/*,, ,,,,,,,pcap_pkthdr 结构体详解 ,,,,,,,struct pcap_pkthdr { ,,,,,,,struct timeval ts;,,, t是一个结构struct timeval,它有两个部分,第一部分是1900年开始以来的秒数,第二部分是当前秒之后的毫秒数 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullLibpcap tutorial-02