• 大小: 875KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: C/C++
  • 标签:

资源简介

利用ICMP数据包,探测指定网段中的活动主机

资源截图

代码片段和文件信息

#include“phlscanhost.h“
void main(int argcchar *argv[])
{
if(argc!=3)
{
cout<<“输入格式错误: start_ip end_ip“< return;
}

if(WSAStartup(MAKEWORD(22)&wsaData)!=0) //初始化Winsock,使用Winsock2.2版本
{ //WSAStartup()成功调用则返回0
cout<<“\nFailed to find a usable WinSock DLL error code=!\n“< ExitProcess(STATUS_FAILED);
}
//初始化套接字(使用互联网协议地址,原始套接字,该套接字使用IPPROTO_ICMP协议,
//该套接字具备重叠I/O特性)
sockRaw=WSASocket(AF_INETSOCK_RAWIPPROTO_ICMPNULL0WSA_FLAG_OVERLAPPED);
//sockRaw函数调用成功,返回新创建的套接字号,否则返回INVALID_SOCKET
//进一步调用WSAGetLastError()来获取相应的错误代码
if(sockRaw==INVALID_SOCKET)
{
cout<<“\nFailed to create the Raw socket error code=\n“< ExitProcess(STATUS_FAILED);
}
//设置套接字选项
int timeout=1000;
//sockRaw是之前创建的原始套接字,SOL_SOCKET表示使用基本套接字处理ICMP报文
//SO_RCVTIMEO表示使用接收超时设置,SO_SNDTIMEO表示使用发送超时设置
//setsockopt(sockRawSOL_SOCKETSO_SNDTIMEO(char *)&timeoutsizeof(timeout));
if(setsockopt(sockRawSOL_SOCKETSO_RCVTIMEO(char *)&timeoutsizeof(timeout))==SOCKET_ERROR)
{//判断套接口选项是否设置成功
cout<<“Failed to set recv timeout:“< ExitProcess(STATUS_FAILED);
}

if(setsockopt(sockRawSOL_SOCKETSO_SNDTIMEO(char *)&timeoutsizeof(timeout))==SOCKET_ERROR)
{//判断套接口选项是否设置成功
cout<<“Failed to set send timeout:“< ExitProcess(STATUS_FAILED);
}
memset(&dest0sizeof(dest)); //初始化目的主机

unsigned long startIPendIP; //定义开始IP和结束IP地址

dest.sin_family=AF_INET; //初始化目的主机的sockaddr_in数据结构
dest.sin_addr.s_addr=inet_addr(argv[1]); //将第一个IP地址参数赋值给目的主机IP地址

startIP=inet_addr(argv[1]); //inet_addr()用于转换点串IP地址

end.sin_family=AF_INET; //
end.sin_addr.s_addr=inet_addr(argv[2]); //最后一个IP地址
endIP=inet_addr(argv[2]); //将最后一个IP地址赋给endIP

HANDLE hThread;

while(htonl(startIP)<=htonl(endIP))
{
DWORD ThreadID;

sockaddr_in *pIPAddrTemp=new (sockaddr_in);

if(!pIPAddrTemp)
{
cout<<“memory alloc failed“< return ;
}
*pIPAddrTemp=dest;

//NUll:线程不能继承,NUll:初始堆栈大小为0,
//线程函数为FindIP,线程参数为pIPAddrTemp,线程标识为ThreadID
hThread=CreateThread(NULLNULLFindIP(LPVOID)pIPAddrTempNULL&ThreadID);
/*DWORD dwRetWFSO = WaitForSingleobject(hThread 10000); 
        if (dwRetWFSO= WAIT_object_0) 
        { 
            TerminateThread(hThread0);
        }
else
{*/
Sleep(50); //延时100毫秒
//结束一个线程
//double i=60000000L;
//while(i--);
TerminateThread(hThread0);
//}
//初始化
memset(&from0sizeof(from));
//htonl()函数将一个无符号的长整型数转化为“Big-Endian“的网络字节序
//startIP=htonl(htonl(startIP)+1);
startIP=htonl(ntohl(startIP)+1);
//修改IP地址
dest.sin_addr.S_un.S_addr=startIP;
}

}
//填充ICMP数据报
void fill_icmp_data(char *icmp_dataint datasize)
{
IcmpHeader *icmp_hdr;
char *datapart;
icmp_hdr=(IcmpHeader*)icmp_data;
icmp_hdr->type=ICMP_ECHO; //设置ICMP数据报类型为
icmp_hdr->id=(USHORT)GetCurrentThreadId(); //设置其ID号为当前线程号
datapart=ic

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      26291  2009-06-18 00:13  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug\main.obj

     文件     209010  2009-06-18 00:13  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug\phlscanhost.exe

     文件     287056  2009-06-18 00:13  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug\phlscanhost.ilk

     文件    2014668  2009-06-18 00:02  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug\phlscanhost.pch

     文件     533504  2009-06-18 00:13  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug\phlscanhost.pdb

     文件     107520  2011-03-02 15:48  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug\vc60.idb

     文件      69632  2009-06-18 00:13  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug\vc60.pdb

     文件       8056  2009-06-18 00:13  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\main.cpp

     文件       1021  2009-06-16 17:03  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\phlscanhost.cpp

     文件       4403  2009-06-16 17:09  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\phlscanhost.dsp

     文件        530  2009-06-16 17:09  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\phlscanhost.dsw

     文件       1917  2009-06-18 00:02  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\phlscanhost.h

     文件      50176  2011-03-02 15:55  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\phlscanhost.ncb

     文件      48640  2011-03-02 15:55  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\phlscanhost.opt

     文件        256  2011-03-02 15:43  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\phlscanhost.plg

     文件     304128  2011-03-23 11:21  利用ICMP探测网络中活动主机程序及报告(VC ++)\课程设计报告.doc

     目录          0  2011-03-23 11:24  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost\Debug

     目录          0  2011-03-23 11:24  利用ICMP探测网络中活动主机程序及报告(VC ++)\phlscanhost

     目录          0  2011-03-23 11:24  利用ICMP探测网络中活动主机程序及报告(VC ++)

----------- ---------  ---------- -----  ----

              3666808                    19


评论

共有 条评论

相关资源