ARPSpoofing教程(三) - 捕获数据包
1: #include"pcap.h"
2: //每次捕获到数据包时,libpcap都会自动调用这个回调函数
3: void packet_handler(u_char *param,const pcap_pkthdr*header,const u_char *ptk_data){
4:
5: char timestr[16];
6: //将时间戳转换成可识别的格式
7: time_t local_tv_sec=header->ts.tv_sec;
8: tm *ltime=localtime(&local_tv_sec);
9: //strftime(timestr,sizeof(timestr),"%H:%M:%S",ltime);
10: strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);
11: printf("%s,%.6d len:%d\n",timestr,header->ts.tv_usec,header->len);
12: }
13: int main(){
14: pcap_if_t *alldevs;
15: pcap_t *adhandle;
16: char errbuf[PCAP_ERRBUF_SIZE];
17:
18: if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)==-1){
19: fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf);
20: exit(1);
21: }
22:
23: //print device list
24: int count=1;
25: for(pcap_if_t *d=alldevs;d!=NULL;d=d->next){
26: printf("%d. %s",count++,d->name);
27: printf("(%s)\n",d->description);
28: }
29: if(count==1) {
30: printf("No interface found! Make sure WinPcap is isntalled\n");
31: return -1;
32: }
33: int num;
34: printf("Enter the interface number:(1-%d): ",count);
35: scanf("%d",&num);
36: if(num<1||num>count){
37: printf("Out Of Range\n");
38: pcap_freealldevs(alldevs);
39: return -1;
40: }
41: pcap_if_t *d=alldevs;
42: // 跳转到选中的适配器
43: for(int i=0;i<num;i++,d=d->next){
44: // 设备名
45: // 65535保证能捕获到不同数据链路层上的每个数据包的全部内容
46: // 混杂模式
47: // 读取超时时间
48: // 远程机器验证
49: // 错误缓冲池
50: adhandle=pcap_open(d->name,65536,PCAP_OPENFLAG_PROMISCUOUS,1000,NULL,errbuf);
51: if(adhandle==NULL){
52: fprintf(stderr,"Unable to open the adapter %s",d->name);
53: return -1;
54: }
55: printf("Listening on %s...\n",d->description);
56:
57: pcap_freealldevs(alldevs);
58: //开始捕获
59: pcap_loop(adhandle,0,packet_handler,NULL);
60:
61: }
62: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
试验结果:

ARPSpoofing教程(三) - 捕获数据包的更多相关文章
- winPcap编程之不用回调方法捕获数据包(五 转)
这一次要分析的实例程序跟上一讲非常类似(“打开适配器并捕获数据包”),略微不同的一点是本次将pcap_loop()函数替换成了pcap_next_ex()函数.本节的重点也就是说一下这两个函数之间的差 ...
- winPcap编程之打开适配器并捕获数据包(四 转)
在贴源码之前先介绍一个将要用到的很重要的函数--pcap_open(),下面是pcap_open()在remote-ex.h中的声明: pcap_t *pcap_open(const char *so ...
- Python3+pyshark捕获数据包并保存为文件
一.直接使用wireshark捕获数据包并保存为文件 可以使用wireshark通过图形界面的操作来实现捕获数据包并保存为文件. wireshark默认捕获的数据包保存为临时文件,如果最后退出时不选择 ...
- CRL快速开发框架系列教程三(更新数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- winpcap使用之捕获数据包
第一种方法,调用回调函数 #include "pcap.h" /* packet handler 函数原型 */ void packet_handler(u_char *param ...
- winPcap_5_打开适配器并捕获数据包
知道如何获取适配器的信息了,那我们就开始一项更具意义的工作,打开适配器并捕获数据包.编写一个程序,将每一个通过适配器的数据包打印出来. 打开设备的函数是 pcap_open(). (Open a ge ...
- winPcap_6_不用回调方法捕获数据包
用 pcap_next_ex() 函数代替 _5_ 中的 pcap_loop()函数: pcap_loop()函数是基于回调的原理来进行数据捕获,这是一种精妙的方法,并且在某些场合中,它是一种很好的选 ...
- Winpcap笔记4之不用回调函数捕获数据包
函数1: pcap_next_ex(pcap_t* p, struct pcap_pkthdr** pkt_header, const u_char* ...
- Winpcap笔记3之打开适配器并捕获数据包
上一讲中知道了如何获取适配的信息,这一将我们讲写一个程序蒋每一个通过适配器的数据包打印出来. 打开设备的函数是pcap_open().函数原型是 pcap_t* pcap_open(const cha ...
- Linux系统捕获数据包流程
Linux系统捕获数据包流程 为了提高数据包的捕获效率,瓶颈问题是一个需要非常关注的焦点.减少在捕获数据包过程中的瓶颈,就能够提高数据包捕获的整体性能.下面本文将以Linux操作系统为平台,分析捕获数 ...
随机推荐
- 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...
- <实训|第八天>超级管理员管理linux用户行为权限附监控主机状态
作为运维工程师,系统管理员,你最大的权力就是给别人分配权力,而且你还能时时控制着他们,今天就给大家介绍一下关于管理用户这一方面的前前后后. 开班第八天: 主要课程大纲:(下面我将把自己的身份定位成一 ...
- js单选和复选框
http://blog.csdn.net/chelen_jak/article/details/44827393 http://www.gbtags.com/technology/jquerynews ...
- :after,:before
:after和:before生成的内容具有内联元素的属性,在不设置display:block的情况下设置宽高无效 :after和:before生成的内容具有absolute的性质,默认都是以父元素的左 ...
- Windows10一周年庆典壁纸
example: 下载:http://pan.baidu.com/s/1b55D5k
- 让所有的浏览器都支持html5
<!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js" ...
- 十天冲刺---Day9
站立式会议 站立式会议内容总结: 燃尽图 照片 队员们都回来了,写完之后继续对alpha版本进行迭代. 希望演示的时候能拿得出来.
- java内存管理机制
JAVA 内存管理总结 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 ( ...
- 【USACO 2.1】Healthy Holsteins
/* TASK: holstein LANG: C++ URL: http://train.usaco.org/usacoprob2?a=SgkbOSkonr2&S=holstein SOLV ...
- bzoj2653: middle
首先,对于每个询问,我们二分答案 然后对于序列中大于等于中位数的数,我们把它们置为1,小于中位数的数,置为-1 那么如果一个区间和大于等于0,那么就资磁,否则就不滋磁 这个区间和呢,我们可以用主席树维 ...