- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARP存活主机
现在大多上网用户用的是小区宽带,这就为我们的入侵活动提供了方便。行动之前我们要做好充分的准备,比如扫描。
对目标主机进行网络扫描时,首先要进行的工作是判断目标主机是否存活或在线。传统的探测远程主机是否存活的方法是通过ICMP协议中的回显应答报文来探测(Ping)。随着对安全的越来越多的了解和重视,很多主机为了避免被扫描器探测,通过防火墙将ICMP包屏蔽,从而达到在网络中隐藏的目的。这时,Ping返回的结果一般是“Request timed out”,表明目标主机没有处于活动状态,但其实目标主机在线。
利用ARP探测活动主机可以达到避开防火墙探测活动主机的目的。ARP协议的作用是将IP地址转换成物理地址(MAC地址)。攻击者向目标主机发送一个ARP请求,如果目标主机处于活动状态,则会返回其MAC地址,这样就可以达到探测活动主机的目的了。我实现这个想法的源代码如下。
#include #include #include #include #pragma comment lib,ws2_32.lib
#pragma comment lib,iphlpapi.lib
char StartIP[20]; //扫描起始IP地址
char EndIP[20]; //扫描结束IP地址
int ProgressTag 0; //进度条标志位 上面的代码主要包含了相关头文件,加载了必需的库文件,并且定义了全局变量StartIP和EndIP。变量StartIP表示扫描起始地址,变量EndIP表示扫描结束地址。注意,由于程序要用SendARP函数,所以要包含头文件iphlpapi.h和加载库文件iphlpapi.lib。
// 解析命令行
void ParseCmd int argc, char **argv if argc ! 2 printf usage : ActiveHostScan.exe [StartIP-EndIP] ;
exit 0 ; char *pdest;
int result;
ZeroMemory StartIP,20 ;
ZeroMemory EndIP,20 ;
int ch -; //分隔符
pdest strchr argv[1], ch ; result pdest - argv[1] + 1; //寻找“-”的位置
strncpy StartIP,argv[1],result-1 ; //提取起始IP地址
strncpy EndIP,argv[1]+result,strlen argv[1] -result ; //提取结束IP地址 上面的代码实现解析用户输入命令的函数。参数argc是字符串个数;argv表示用户输入命令。程序流程是:先判断输入的命令个数是否符合要求,然后调用strchr函数搜寻“-”的位置,最后找到相应位置将用户输入的起始IP和结束IP赋值给StartIP和EndIP。
//定义进度提示函数
void ProgressShow void //进度条
char *progressbar[12] |,/,-,\,|,/,-,\,|,/,-,\,
; printf %s ,progressbar[ProgressTag] ;
ProgressTag ProgressTag 11 ?0:ProgressTag+1;
Sleep 2 ; //扫描目标主机是否存活
int ScanHostState char *ip HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];//MAC地址
ULONG ulLen;
char *szMac;
//转换成网络字节顺序
ipAddr inet_addr ip ;
//设置MAC地址为广播地址xff
memset pulMac, 0xff, sizeof pulMac ;
ulLen 6;
hr SendARP ipAddr, 0, pulMac, ulLen ;
//如果返回无错则表明指定目标主机存活
if hr NO_ERROR size_t i, j;
szMac new char[ulLen*3];
PBYTE pbHexMac PBYTE pulMac;
//转换MAC地址为字符串格式以便输出
for i 0, j 0; i ulLen - 1; ++i j + sprintf szMac + j, %02X:, pbHexMac[i] ; sprintf szMac + j, %02X, pbHexMac[i] ;
printf
您可能关注的文档
最近下载
- 电机及拖动基础 第4版 第一章 直流电机.ppt
- SY 6606-2012-T 石油工业工程技术服务承包商健康安全环境管理规范.pdf
- 2024年高等数学期末考试卷及答案.pdf
- 《建国方略》与孙中山.ppt
- 1输变电工程施工质量验收统一表式(线路工程)-2024年版.docx VIP
- 七年级英语阅读理解(20篇附答案).pdf VIP
- DB32T-采供血过程风险管理 第3部分:献血不良反应风险控制规范.pdf VIP
- 2024教学心得:对图形与几何领域一致性教学的一点思考 .pdf
- DAM16KL国六售后技术培训.pptx VIP
- 2024年版《陕西省通用安装工程消耗量定额》第九册 消防安装工程.pdf VIP
文档评论(0)