资源简介
使用ARP协议获取局域网内部活动主机的物理地址,C++实现,附源码、程序及文档还有winpcap环境搭建介绍
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
//ARP数据包结构
typedef struct ArpStruct{
u_short hdtype; //硬件类型(2B),值为0001表示它为Ethernet
u_short protype; //协议类型(2B),值为0800表示上层协议为IP
u_char hdsize; //物理地址长度(1B),值为06
u_char prosize; //协议地址长度(1B),值为04
u_short op; //操作(2B),值为0001表示ARP请求,值为0002表示ARP应答
u_char sMacAddr[6]; //源物理地址(6B)
u_char sIpAddr[4]; //源IP地址(4B)
u_char dMacAddr[6]; //目的mac地址(6B)
u_char dIpAddr[4]; //目的IP地址(2B)
}ArpStruct;
void main()
{
pcap_if *alldevs; //存放网卡列表的链表
pcap_if *d; //指定上述链表的某个结点
int inum; //通过输入序号选择网卡
int i=0; //网卡列表序号
pcap_t *adhandle; //网卡句柄
char errbuf[PCAP_ERRBUF_SIZE]; //错误信息记录块
u_int netmask; //子网掩码
char packet_filter[] = “ether proto \\arp“; //设置正则表达式,只过滤arp包
struct bpf_program fcode;
// 获得网络设备列表
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING NULL &alldevs errbuf) == -1)
{
cout<<“Error in pcap_findalldevs: “< exit(1);
}
// 打印网络设备列表
for(d=alldevs; d; d=d->next)
{
cout<<++i<<“. “;
if (d->description)
cout<description< else
cout<<“设备没有描述“< }
if(i==0)
{
cout<<“没有找到适配器,请核查是否已安装winpcap驱动.“< return ;
}
//输入序号,选择网卡
cout<<“\n请输入适配器的序号:(1-“< scanf(“%d“ &inum);
//序号合法性检测
while(inum < 1 || inum > i){
cout< cout<<“\n请输入适配器的序号:(1-“< scanf(“%d“ &inum);
}
// 跳转到已选设备
for(d=alldevs i=0; i< inum-1 ;d=d->next i++);
// 以混杂模式打开适配器
if ( (adhandle= pcap_open(d->name // 设备名
65536 // 捕获数据最大字节数
// 65535保证能捕获到不同数据链路层上的每个数据包的全部内容
PCAP_OPENFLAG_PROMISCUOUS // 混杂模式,值为1
1000 // 定义超时时间(毫秒数)
NULL // 远程机器验证
errbuf // 错误缓冲池
) ) == NULL)
{
cout< // 释放设备列表
pcap_freealldevs(alldevs);
return ;
}
/////////编译并设置过滤器
// 获得接口第一个地址的掩码
if(d->addresses != NULL)
netmask=((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr;
else
// 如果接口没有地址,那么我们假设一个C类的掩码
netmask=0xffffff;
//编译过滤器
if (pcap_compile(adhandle &fcode packet_filter 1 netmask) <0 )
{
cout< // 释放设备列表
pcap_freealldevs(alldevs);
return ;
}
//设置过滤器
if (pcap_setfilter(adhandle &fcode)<0)
{
cout<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 548921 2013-07-05 03:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\exe\catch_hosts_arp.exe
文件 5034 2013-07-05 03:13 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\catch_hosts_arp.cpp
文件 3569 2013-07-05 03:54 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\catch_hosts_arp.dsp
文件 538 2013-07-05 03:54 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\catch_hosts_arp.dsw
文件 33792 2013-07-05 03:54 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\catch_hosts_arp.ncb
文件 48640 2013-07-05 03:54 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\catch_hosts_arp.opt
文件 1224 2013-07-05 03:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\catch_hosts_arp.plg
文件 548921 2013-07-05 03:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug\catch_hosts_arp.exe
文件 791972 2013-07-05 03:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug\catch_hosts_arp.ilk
文件 162985 2013-07-05 03:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug\catch_hosts_arp.obj
文件 5455836 2013-07-05 01:17 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug\catch_hosts_arp.pch
文件 1106944 2013-07-05 03:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug\catch_hosts_arp.pdb
文件 205824 2013-07-05 03:43 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug\vc60.idb
文件 143360 2013-07-05 03:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug\vc60.pdb
文件 350208 2013-07-06 17:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\课程设计报告.doc
目录 0 2013-07-06 17:31 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码\Debug
目录 0 2013-07-06 17:31 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\exe
目录 0 2013-07-06 17:31 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址\源码
目录 0 2013-07-06 17:32 计算机网络课设-使用ARP协议获取局域网内部活动主机的物理地址
文件 103936 2013-07-06 17:51 winpcap环境配置.doc
----------- --------- ---------- ----- ----
9511704 20
相关资源
- 数据结构课程设计 山东大学版 文件
- 梁友栋-barsky算法
- C++课程设计 酒店管理系统 完整版
- C++ 教学管理系统
- 基于qt5.6与echarts配合打造最强图表库
- 基于QT5.6编写Echart动态交互仪表盘-修
- sart算法重建程序c++
- 数据结构课程设计(C++代码+报告)
- 基于ARM的时钟+闹钟
- 基于ARM的闹钟
- 会议记录管理系统 C++课程设计
- c++课程设计作业,图书馆管理系统 源
- rar文件MFC 图像处理之图像增强 图像平
- 数据结构与算法分析 C++语言描述 第二
- 计算机网络课程实验:FTP协议的实现
- 微机课程设计报告——风扇控制
- AntTweakBar.zip
- C++课程设计报告及源代码
- 波形图软件库CChart4.2.1.0版32位版
- 文本编辑器(报告+源代码) MFC VC 数
- stm32F103zet6开串口通信2 C语言
- vcredist_x86.rar
- 学生社团管理系统 c++ MFC 课程设计
- 基于MFC的TeeChart控件
- 16C++MFC课程设计之吹泡泡游戏
- c语言用odbc连数据库.rar
- C++课程设计之水电煤气管理系统
- 航空客运订票系统数据结构课程设计
- 操作系统课程设计:Windows 命令接口之
- C++课程设计贪吃蛇源码+课设报告
评论
共有 条评论