-
大小: 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
- 上一篇:基礎PageRank 算法 C++實現
- 下一篇:學生成績管理系統 C、VC++
評論
共有 條評論