socket编程之DEV C++配置winpcap开发环境并编写网络嗅探器sniffer
欢迎关注我的个人博客:www.zuzhiang.cn
期末计算机网络课程设计让做一个网络嗅探器,要求可以检测和选择网卡,并打开到混杂模式,监听局域网中的所有数据包并解析出所用网络协议以及首部各个字段的值,如 MAC地址,IP地址,端口号等。
然后从网上各种找资料,C语言下基本上都是基于 winpcap包做的,难的是配置环境。网上有各种 VS的配置教程,但是本人用不惯 VS,所以就配置了 DEV C++,朋友也有把 codeblocks 配置成功的。下面就和大家分享一下配置过程。参考文章:DEV 搭建winpcap开发环境。
首先要下载 winpcap的两个东西:
WinPcap V4.1.2:驱动程序、Dll文件
http://www.winpcap.org/install/bin/WinPcap_4_1_2.exe
WinPcap V4.1.2 Developer’s Pack:库文件、头文件、简单的示例程序代码和帮助文件
http://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
第一个 exe文件直接安装到任意目录即可。第二个 zip文件下载解压后将名为 WpdPack的文件夹放到 C盘下,当然放到别的地方也可以。
配置步骤:
第一步:
在Tools->Compiler Options->Directories->Libraries (即工具->编译选项->目录->库) 里面设置winpcap开发包目录的Lib目录;在Tools->Compiler Options->Directories->Includes(即工具->编译选项->目录->C/C++包含文件)(C和C++两个我都设置了,方便)里面设置winpcap开发包目录的Include目录。
这里的 lib目录和include目录就是上面 zip文件解压后的 C:\WpdPack 中的文件夹。
第二步:
在Project->Project Options->Parameters->Linker(即项目->项目属性->参数->链接)下面点击“Add Library or Object”(加入库或对象)按钮,将开发包目录 Lib下的wpcap.lib文件(即 C:\WpdPack\Lib 目录下的文件)添加上去。
第三步:
在源码文件#include "pcap.h"的前面增加预处理定义——#define WPCAP和#define HAVE_REMOTE。好像我只加了“#define HAVE_REMOTE”,例子中的代码就可以运行了。但是看文档中,好像不是这样,具体好要多测试一些代码才能知道。
上面的步骤是其他 CSDN博客上给的,但是在实际操作的时候还需要加上 #include "winsock.h" 这句话,包含 winsock.h 头文件,不然会提示某些变量未定义的错误。此外在上面第二步中还需要加入 C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/WS2_32.Lib 这个文件,不然也是会报一些乱七八糟的错误。
至此开放环境就配置好了,然后就是编写代码。先给出一个 winpcap中文技术文档。嗅探器的代码基本上都是这里面的原码,然后在它的基础上改一下、拼接一下就可以了。大体流程是检测网卡->选择网卡->筛选器的设置(可以只捕捉使用upd或tcp等协议的包)->将捕捉到的数据包分析。
另外DEV C++在编译运行的时候需要选择 32位的编译器,这个我也不知道为什么……自己试出来的。
再另,网络嗅探器捕捉到的大多数都是乱码,因为编码方式是多种多样的。可以使用 ICMP协议中的 ping命令,ping通某个网站,然后将捕获的数据包以 ascii码形式输出,将会是有规矩的字符。
这里要提一下的是,分析数据包的时候好像没有现成的函数或数据结构等,需要自己定义。比如要定义 IP协议的首部,根据每个字段的含义解析,这里充分利用了二进制的相与、左移、右移等操作。另,我们捕获到的数据包是完整的 MAC帧,也就是数据链路层的包,然后可以根据使用的协议确定协议首部的长度,并进一步确定数据部分的位置和大小。
运行效果如下:
最后附上上面说的用到的各种文件以及源代码的下载地址:源码及配套文件下载。
socket编程之DEV C++配置winpcap开发环境并编写网络嗅探器sniffer相关推荐
- 在Visual Studio 2005下配置WinPcap开发环境
在Visual Studio 2005下配置WinPcap开发环境 http://www.winpcap.org/archive/ 4.1beta5_WpdPack.zip http://www.wi ...
- 为dev c++配置图形开发环境easyx之mingw32
easyx官方的文档在说明如何配置环境上面不太详细,所以就有了我的那篇博文为dev c++配置图形开发环境easyx,默认的是在64位的编译器TDM-gcc下配置的,也就是我们配置的easyx最终都是 ...
- codeblocks配置winpcap开发环境
转载请注明出处,谢谢_ (:з」∠)_ 起因 最近作业要用Winpcap开发包分析.pcap文件实现报文字段的识别-本来打算用Visual Studio写,不过想起以前打OJ的时候都用Code::Bl ...
- 一步一步开发sniffer(Winpcap+MFC)(一)工欲善其事,必先配环境——配置winpcap开发环境
0.说在前面的话 1) 本文将以一个初学者的角度,一步一步几乎是从0开始讲述如何完成一个基于winpcap+MFC的sniffer(嗅探器)当然我指的"0"并不是指连编程都不会,如 ...
- Dev-C++ 配置 WinPcap 开发环境
VC++ 6.0实在是太老了,自己并不愿意在这个平台上开发,所以转而使用Dev-C++,以下是综合网上的教程和自己的试验总结出的用Dev-C++进行WinPcap网络开发的所需的环境配置工作: 首先是 ...
- [深入浅出WP8.1(Runtime)]Socket编程之UDP协议
13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...
- 老雷socket编程之PHP利用socket扩展实现聊天服务
老雷socket编程之PHP利用socket扩展实现聊天服务 socket聊天服务原理 PHP有两个socket的扩展 sockets和streams sockets socket_create(AF ...
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
转载:http://blog.csdn.net/apollon_krj/article/details/53437764#0-tsina-1-58570-397232819ff9a47a7b7e80a ...
- Linux下socket编程之UDP简单实现
本文实现一个简单的UDP小例子,来说明Linux下socket编程之UDP的简单实现.本文主要包括三个部分:服务器端的实现,客服端的实现和通信测试.实现的功能:客服端发送一条消息给服务器端,服务器端把 ...
最新文章
- 【python】数据结构与算法—哈希表
- redis分布式锁实现原理_redis分布式锁实现分析与实践
- Node.js 博客实例(一)简单博客
- P1137-旅行计划【拓扑排序,DAGdp】
- POJ 1716 Integer Intervals
- 【论文】本周论文推荐(迁移学习、阅读理解、对话系统、图神经网络、对抗生成网络等)...
- 金蝶K3退出远程桌面后,客户端无法登陆
- 经典排序算法(二十二)--图书馆排序(Library Sort)
- Flink 1.11 新特性之 SQL Hive Streaming 简单示例
- 【老孙随笔】想学程序设计,先学人生设计!
- Mybatis全局配置文件Configuration.xml详解
- whoami 显示“我是谁”
- Kaggle TMDB电影数据分析项目实战
- Keil uVision5 MDK-ARM 程序使用—————中文图解
- Linux如何测试USB硬盘的读写速度
- 微信小程序分享二维码扫码进入如何获取参数,小程序码进入参数为啥拿不到;
- Mybatis遇到的报错集合
- 四旋翼无人机——导航、制导与控制的概念
- python2.7安装pytorch_Pytorch如何安装,Linux安装Pytorch,OSX安装Pytorch教程
- The following error occurred while installing.This is a fatal error andinstallation will be aborted.
热门文章
- 如何在WordPress区块编辑器(Gutenberg)中添加和对齐图像
- 漫画 | 程序员必须要小心的7个潜规则
- 智慧养老系统(社区+居家+机构养老)
- 如何通过OCR技术识别视频和图片中的文字信息?
- 深耕网络安全的奇安信,如何在DT时代铸下安全印记?
- STM32F103+全彩LED显示屏+万年历闹钟+FFT音频频谱制作
- [预告] 俺最近正在做的E助手。。。
- 服务器部署理发店会员系统,使用理发店会员管理系统的价值是什么
- Word控件Spire.Doc 【邮件合并】教程(五): 在 C# 中为组创建邮件合并
- 3ds MAX常用快捷键命令大全,快捷键自定义方法,游戏建模小白必备