1 / 20
文档名称:

WinPcap开发:零基础入门样本.doc

格式:doc   大小:545KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

WinPcap开发:零基础入门样本.doc

上传人:非学无以广才 2020/10/30 文件大小:545 KB

下载得到文件列表

WinPcap开发:零基础入门样本.doc

文档介绍

文档介绍:WinPcap开发(一):零基础入门*原创作者:追影人0×00序言网络编程在网络安全方面含有举足轻重作用,怎样快捷高效监听、分析、结构网络流量,成为很多安全从业者需要处理关键问题。而winpcap这一无偿开源项目恰好能够为win32应用程序提供访问网络底层能力,所以其成为了相关网络编程首选开发工具。0×01winpcap是什么?winpcap(windowspacketcapture)是windows平台下一个无偿网络访问系统,可用于windows系统下网络编程。著名wireshark便是基于winpcap开发,大家在安装wireshark中能够看到winpcap驱动程序安装过程。相关winpcap介绍网络上很多,百科里面介绍也很具体,我就不再copy了。需要注意一点是,winpcap并不是一个简单library,而是一个针对Win32平台上抓包和网络分析一个架构,它包含一个关键态包过滤器,一个底层动态链接库()和一个高层不依靠于系统库()。所以它只能“嗅探”到物理线路上数据包,而不含有拦截能力,所以不适适用于个人防火墙等项目。0×02你需要准备些什么?本系列文章关键带大家认识和了解怎样利用winpcap网络编程技术进行网络协议分析、流量统计及网络探测扫描等,这里我们并不会去深硬解读相关源代码,而是以轻松方法结合试验来对相关原理进行深入了解。在本系列文章中,笔者从简到难,简明介绍winpcap架构原理、相关环境搭建及快速编写关键代码。不过在开始前,读者需要有部分相关基础:了解网络协议相关基础知识,掌握一门winpcap开发库支持编程语言,自己能动手实践编写部分例子。Winpcap提供开发接口原生是c语言,不过热心肠程序猿们已经为其它语言使用提供了封装,比如java、.net、python,仿佛连易语言全部有。本系列文章将使用c语言来进行多种试验,有爱好读者能够将其转换成自己熟悉语言来动手实践。0×03你能学到什么?相关winpcap开发文章在网上很轻易找到,不过更多全部是对于代码讲解,笔者在本文尽可能系统性从原理层面结合各个应用场景来介绍相关知识:1. Winpcap获取网卡基础信息及收发数据包2. 存活主机探测3. 端口扫描4. Arp欺骗5. 中间人攻击简单实现6.  流量统计和分析0×04知识补充进行下面介绍前,我们需要了解多个名词关系。winpcap(windowspacketcapture)是windows平台下一个无偿网络访问系统,可用于windows系统下网络编程。linux平台下对应开发包是libpcap。Wireshark是基于winpcap处理网络驱动层。Wpdpack是winpcap开发包,提供开发相关程序接口。0×05环境准备首先依据你所选择开发语言选择对应编译器,笔者使用c语言,利用VS进行相关开发。安装好编译器后,进行相关配置。下载wpdpack点击这里 初学者能够选择里面Examples进行编译,能够看到找不到头文件,及相关库。  这是因为wpdpack中相关库还没有引入到编译环境中 将wpdpack包中Include和lib文件夹中文件添加到VS相关目录下即可编译经过。将编译后程序进行运行则出现以下错误。 这是因为运行时缺乏动态链接库造成,最简单方法是直接下载并安装winpcap驱动程序 下载 假如你认为这么子很麻烦,也能够采取简易方法。,,所以不需要完整安装winpcap,而选择只复制以上三个文件到对应目录中即可。本节笔者将采取著名Arpspoof源码进行相关讲解,源码下载地址0×06枚举可用网络适配器资源在使用winpcap进行收发数据包时,需指定对应网卡,所以有必需列出计算机上全部可用网络适配资源。列取网卡信息关键代码://该函数在Arpspoof程序中,笔者进行了具体注释void ListAdapters(){ pcap_if_t *alldevs;//用于存放网卡链表头指针 pcap_if_t *d;//用于遍历网卡链表临时变量    int i=0;//统计网卡个数char errbuf[PCAP_ERRBUF_SIZE];//存放错误信息char szGateIPAddr[16];//网卡对应网关地址char *p;//网卡名词 char szIPAddr[16];//网卡对应IP unsigned char ucPhysicalAddr[6];//网卡对应MAC地址    if (pcap_findalldevs(&alldevs,errbuf)==-1)//获取网卡链表    {        fprintf(