网站大量收购独家精品文档,联系QQ:2885784924

ARP存活主机.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

kaiss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档