icmp 扫描-sockopt failed with error10013

问题描述

sockopt failed with error10013

#include"stdio.h"
#include"Winsock2.h"
#pragma comment(lib,"ws2_32.lib")
typedef struct IpHeader
{
unsigned char Version_HLen;
unsigned char TOS;
unsigned short Length;
unsigned short Ident;
unsigned short Flags_Offset;
unsigned char TTL;
unsigned char Protocol;
unsigned short Checksum;
unsigned int SourceAddr;
unsigned int DestinationAddr;
}Ip_Header;
typedef struct IcmpHeader
{
BYTE Type;
BYTE Code;
USHORT Checksum;
USHORT ID;
USHORT Sequence;
}Icmp_Header;
USHORT checksum(USHORT buff,int size)
{
unsigned long cksum=0;
while(size>1){
cksum+=*buff++;
size-=sizeof(USHORT);
}
if(size)
{
cksum+=
(UCHAR*)(buff);
}

cksum=(cksum>>16)+(cksum&0xffff);
cksum+=(cksum>>16);
return (USHORT)(-cksum);

}
//主函数
int main(int argc,char *argv[])
{
//WSADATA 数据结构
WSADATA wsaData;
//目的地址结构
sockaddr_in DestAddr;
Ip_Header *ip;
Icmp_Header*icmp;
Icmp_Header*SendIcmp;
int Timeout=1000;
char DestIpAddr[100]="192.168.1.3";
char IcmpBuffer[8]="";
SOCKET IcmpSocket;
char RecvBuffer[1024];
sockaddr_in addr;
int Len=sizeof(addr);
int Result;
if((Result=WSAStartup(MAKEWORD(2,2),&wsaData))!=0)
{
printf("WSAStartup failed with error%d
",Result);
return 0;
}

IcmpSocket=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
if(IcmpSocket==INVALID_SOCKET)
{
printf("sockopt failed with error%d
",WSAGetLastError());
return 0;
}
Result=setsockopt(IcmpSocket,SOL_SOCKET,SO_RCVTIMEO,
(char*)&Timeout,sizeof(Timeout));
if(Result==SOCKET_ERROR){
printf("setsockopt failed with error%d
",WSAGetLastError());
return 0;
}
memset(&DestAddr,0,sizeof(DestAddr));
DestAddr.sin_addr.s_addr=inet_addr(DestIpAddr);
DestAddr.sin_port =htons(0);
DestAddr.sin_family =AF_INET;
SendIcmp=(Icmp_Header*)IcmpBuffer;
SendIcmp->Type=8;
SendIcmp->Code=0;
SendIcmp->ID =(USHORT)GetCurrentProcessId();
SendIcmp->Sequence=htons(1);
SendIcmp->Checksum=0;
SendIcmp->Checksum=checksum((USHORT*)IcmpBuffer,sizeof(IcmpBuffer));
Result=sendto(IcmpSocket,
IcmpBuffer,
sizeof(IcmpBuffer),
0,
(SOCKADDR*)&DestAddr,
sizeof(DestAddr));
if(Result==SOCKET_ERROR){
printf("sendto failed with error%d
",WSAGetLastError());
return 0;
}
Result=recvfrom(IcmpSocket,
RecvBuffer,
1024,
0,
(sockaddr*)&addr,
&Len);
if(Result==SOCKET_ERROR){
if(WSAGetLastError()!=WSAETIMEDOUT){
printf("recvfrom failed with error %d
",WSAGetLastError());
return 0;
}
else
{
printf("Host%s may be down.
",DestIpAddr);
}
}
if(Result==sizeof(Ip_Header)+sizeof(Icmp_Header)){
printf("data error from %d
",inet_ntoa(addr.sin_addr));
}
ip=(Ip_Header*)RecvBuffer;
if((ip->SourceAddr==inet_addr(DestIpAddr))&&(ip->Protocol==IPPROTO_ICMP))
{
icmp=(Icmp_Header*)(RecvBuffer+sizeof(Ip_Header));
if(icmp->Type!=0){
printf("type error%d",icmp->Type);
return 0;
}
if(icmp->ID!=GetCurrentProcessId()){
printf("id error %d/n",icmp->ID);
return 0;
}
else if((icmp->Type==0)&&(icmp->ID==GetCurrentProcessId()))
{
printf("Host%s is up.
",DestIpAddr);
}
}
if(closesocket(IcmpSocket)==SOCKET_ERROR)
{
printf("closesocket failed with error %d
",WSAGetLastError());
return 0;
}
if(WSACleanup()==SOCKET_ERROR)
{
printf("WSAClaeanup failed with error %d
",WSAGetLastError());
return 0;
}
return 1;
}

解决方案

conversion to dalvik format failed with error 1
conversion to dalvik format failed with error 1
关于conversion to dalvik format failed with error 1

解决方案二:

什么意思,没明白

时间: 2024-11-03 18:58:56

icmp 扫描-sockopt failed with error10013的相关文章

《Nmap渗透测试指南》—第2章2.8节ICMP Ping Types扫描

2.8 ICMP Ping Types扫描表2.7所示为本章节所需Nmap命令表,表中加粗命令为本小节所需命令--ICMP Ping Types扫描. 使用-PE:-PP:-PM选项可以进行ICMP Ping Types扫描.ICMP(Internet Control Message Protocol)是Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可用等网络本身的消息.这些控制消息虽然并不

互联网扫描器 ZMap 完全手册

初识 ZMap ZMap被设计用来针对整个IPv4地址空间或其中的大部分实施综合扫描的工具.ZMap是研究者手中的利器,但在运行ZMap时,请注意,您很有可能正在以每秒140万个包的速度扫描整个IPv4地址空间 .我们建议用户即使在实施小范围扫描之前,也联系一下本地网络的管理员并参考我们列举的最佳扫描体验. 默认情况下,ZMap会对于指定端口实施尽可能大速率的TCP SYN扫描.较为保守的情况下,对10,000个随机的地址的80端口以10Mbps的速度扫描,如下所示: $ zmap --band

Nmap网络探测和安全审核工具指南:主机发现

任何网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为 一列活动的或者您感兴趣的主机.扫描每个IP的每个端口很慢,通常也没必要. 当然,什么样的主机令您感兴趣主要依赖于扫描的目的.网管也许只对运行特定服务的 主机感兴趣,而从事安全的人士则可能对一个马桶都感兴趣,只要它有IP地址:-).一个系统管理员 也许仅仅使用Ping来定位内网上的主机,而一个外部入侵测试人员则可能绞尽脑汁用各种方法试图 突破防火墙的封锁. 由于主机发现的需求五花八门,Nmap提供了一箩筐的选项来定制

ksvcreate: Process(m000) creation failed

一测试服务器数据库(Oracle Database 10g Release 10.2.0.5.0 - 64bit Production)突然访问不了,检查发现数据库处于挂起模式(hang mode),检查告警日志,发现有"ksvcreate: Process(m000) creation failed","kkjcre1p: unable to spawn jobq slave process"之类的错误信息.具体如下所示: Sun Jan 17 09:56:05

VB.NET开发扫描客户端服务工具

客户端 在大中型企业信息系统中,对客户端PC的管理,往往是容易出现问题的环节.因此,很多大公司引入了各种分布式的管理系统,例如防病毒方面的Norton AntiVirus,BlackICE防火墙,微软的 SMS (System Management Server),等等,这些系统都会在客户端安装相应的客户端软件,一般都是以服务的形式出现,但是由于种种原因,这些服务会停止运行或者该客户机根本没有安装这些客户端服务,这样管理系统就会出现疏漏,有可能造成问题,如因无法防御病毒而成为病毒源,无法为该客户

透析ICMP协议(4):应用篇ping(RAW Socket)

原理简介: -------- 用RAW Socket实现的ping可能比上一节的应用ICMP.DLL的程序庞大些, 但是这才是我们需要关注的东西, 我的观点真正想做网络开发的程序员应该静下心来读读这篇文章, 相信你会从中获益颇多. 中间我也会讲解一些东西为后一章的路由追踪做一些铺垫. 另一个重要的要讲的东西, 微软宣布随时不支持上节讲的ping用到的开发接口, 但是本节的讲的是更一般的东西. 所以它不会过时, 甚至做很小的改动就可以移植到别的系统上去. 系统移植不是我们的讲的重点. 但是微软的长

透析ICMP协议(3):应用篇ping(ICMP.dll)

原理简介: -------- 这个例子演示了应用微软的ICMP.DLL怎样"ping"另一台机器. 这个DLL是没有文档话的发送ICMP回送包API接口, 也称为"pings," 就像潜水员对声纳信号的术语一样. 这段代码出自一个被一个名叫MarkG的家伙的GUI程序, 他的网页已经消失了. ICMP.DLL API 现在在Windows平台上与微软的Winsocks工作的很好, 但是微软说更好的产品一出来他们将替换它. 微软说这个自从Windows 95时代就在用

Linux管理员:企业端口扫描策略

  企业端口扫描策略 1.端口扫描的目的 对于位于网络中的计算机系统来说,一个端口就是一个潜在的通信通道,也就是一个入侵通道.对目标计算机进行端口扫描,能得到许多有用的信息从而发现系统的安全漏洞.通过其可以使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种参考的手段. 从技术原理上来说,端口扫描向目标主机的TCP/UDP服务端口发送探测数据包,并记录目标主机的响应.通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息. 端口扫描也可以通过捕获本地主机

Linux安全扫描工具Nmap用法及参数详解

  扫描器是一种能够自动检测主机安全性弱点的程序.扫描器通过发送特定的网络数据包,记录目标主机的应答消息,从而收集关于目标主机的各种信息.目前网络上有很多扫描软件,比较著名的扫描器有SSS,X-Scan,Superscan等,功能最强大的当然是Nmap. Nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具. 它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的操作系统类型.nmap支持很多扫描技术,例如:UDP.TCP conne