-
大小: 875KB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 2021-05-27
- 語言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
利用ICMP數(shù)據(jù)包,探測(cè)指定網(wǎng)段中的活動(dòng)主機(jī)
代碼片段和文件信息
#include“phlscanhost.h“
void?main(int?argcchar?*argv[])
{
if(argc!=3)
{
cout<<“輸入格式錯(cuò)誤:?start_ip?end_ip“< return;
}
if(WSAStartup(MAKEWORD(22)&wsaData)!=0) //初始化Winsock,使用Winsock2.2版本
{ //WSAStartup()成功調(diào)用則返回0
cout<<“\nFailed?to?find?a?usable?WinSock?DLL?error?code=!\n“< ExitProcess(STATUS_FAILED);
}
//初始化套接字(使用互聯(lián)網(wǎng)協(xié)議地址,原始套接字,該套接字使用IPPROTO_ICMP協(xié)議,
//該套接字具備重疊I/O特性)
sockRaw=WSASocket(AF_INETSOCK_RAWIPPROTO_ICMPNULL0WSA_FLAG_OVERLAPPED);
//sockRaw函數(shù)調(diào)用成功,返回新創(chuàng)建的套接字號(hào),否則返回INVALID_SOCKET
//進(jìn)一步調(diào)用WSAGetLastError()來獲取相應(yīng)的錯(cuò)誤代碼
if(sockRaw==INVALID_SOCKET)
{
cout<<“\nFailed?to?create?the?Raw?socket?error?code=\n“< ExitProcess(STATUS_FAILED);
}
//設(shè)置套接字選項(xiàng)
int?timeout=1000;
//sockRaw是之前創(chuàng)建的原始套接字,SOL_SOCKET表示使用基本套接字處理ICMP報(bào)文
//SO_RCVTIMEO表示使用接收超時(shí)設(shè)置,SO_SNDTIMEO表示使用發(fā)送超時(shí)設(shè)置
//setsockopt(sockRawSOL_SOCKETSO_SNDTIMEO(char?*)&timeoutsizeof(timeout));
if(setsockopt(sockRawSOL_SOCKETSO_RCVTIMEO(char?*)&timeoutsizeof(timeout))==SOCKET_ERROR)
{//判斷套接口選項(xiàng)是否設(shè)置成功
cout<<“Failed?to?set?recv?timeout:“< ExitProcess(STATUS_FAILED);
}
if(setsockopt(sockRawSOL_SOCKETSO_SNDTIMEO(char?*)&timeoutsizeof(timeout))==SOCKET_ERROR)
{//判斷套接口選項(xiàng)是否設(shè)置成功
cout<<“Failed?to?set?send?timeout:“< ExitProcess(STATUS_FAILED);
}
memset(&dest0sizeof(dest)); //初始化目的主機(jī)
unsigned?long?startIPendIP; //定義開始IP和結(jié)束IP地址
dest.sin_family=AF_INET; //初始化目的主機(jī)的sockaddr_in數(shù)據(jù)結(jié)構(gòu)
dest.sin_addr.s_addr=inet_addr(argv[1]); //將第一個(gè)IP地址參數(shù)賦值給目的主機(jī)IP地址
startIP=inet_addr(argv[1]); //inet_addr()用于轉(zhuǎn)換點(diǎn)串IP地址
end.sin_family=AF_INET; //
end.sin_addr.s_addr=inet_addr(argv[2]); //最后一個(gè)IP地址
endIP=inet_addr(argv[2]); //將最后一個(gè)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,
//線程函數(shù)為FindIP,線程參數(shù)為pIPAddrTemp,線程標(biāo)識(shí)為ThreadID
hThread=CreateThread(NULLNULLFindIP(LPVOID)pIPAddrTempNULL&ThreadID);
/*DWORD?dwRetWFSO?=?WaitForSingleobject(hThread?10000);?
????????if?(dwRetWFSO=?WAIT_object_0)?
????????{?
????????????TerminateThread(hThread0);
????????}
else
{*/
Sleep(50);?//延時(shí)100毫秒
//結(jié)束一個(gè)線程
//double?i=60000000L;
//while(i--);
TerminateThread(hThread0);
//}
//初始化
memset(&from0sizeof(from));
//htonl()函數(shù)將一個(gè)無符號(hào)的長(zhǎng)整型數(shù)轉(zhuǎn)化為“Big-Endian“的網(wǎng)絡(luò)字節(jié)序
//startIP=htonl(htonl(startIP)+1);
startIP=htonl(ntohl(startIP)+1);
//修改IP地址
dest.sin_addr.S_un.S_addr=startIP;
}
}
//填充ICMP數(shù)據(jù)報(bào)
void?fill_icmp_data(char?*icmp_dataint?datasize)
{
IcmpHeader?*icmp_hdr;
char?*datapart;
icmp_hdr=(IcmpHeader*)icmp_data;
icmp_hdr->type=ICMP_ECHO; //設(shè)置ICMP數(shù)據(jù)報(bào)類型為
icmp_hdr->id=(USHORT)GetCurrentThreadId(); //設(shè)置其ID號(hào)為當(dāng)前線程號(hào)
datapart=ic
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????26291??2009-06-18?00:13??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug\main.obj
?????文件?????209010??2009-06-18?00:13??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug\phlscanhost.exe
?????文件?????287056??2009-06-18?00:13??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug\phlscanhost.ilk
?????文件????2014668??2009-06-18?00:02??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug\phlscanhost.pch
?????文件?????533504??2009-06-18?00:13??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug\phlscanhost.pdb
?????文件?????107520??2011-03-02?15:48??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug\vc60.idb
?????文件??????69632??2009-06-18?00:13??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug\vc60.pdb
?????文件???????8056??2009-06-18?00:13??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\main.cpp
?????文件???????1021??2009-06-16?17:03??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\phlscanhost.cpp
?????文件???????4403??2009-06-16?17:09??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\phlscanhost.dsp
?????文件????????530??2009-06-16?17:09??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\phlscanhost.dsw
?????文件???????1917??2009-06-18?00:02??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\phlscanhost.h
?????文件??????50176??2011-03-02?15:55??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\phlscanhost.ncb
?????文件??????48640??2011-03-02?15:55??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\phlscanhost.opt
?????文件????????256??2011-03-02?15:43??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\phlscanhost.plg
?????文件?????304128??2011-03-23?11:21??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\課程設(shè)計(jì)報(bào)告.doc
?????目錄??????????0??2011-03-23?11:24??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost\Debug
?????目錄??????????0??2011-03-23?11:24??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)\phlscanhost
?????目錄??????????0??2011-03-23?11:24??利用ICMP探測(cè)網(wǎng)絡(luò)中活動(dòng)主機(jī)程序及報(bào)告(VC?++)
-----------?---------??----------?-----??----
??????????????3666808????????????????????19
評(píng)論
共有 條評(píng)論