精华内容
下载资源
问答
  • ICMP扫描

    千次阅读 2016-04-18 21:33:16
    icmp(Internet control message protocol),是一种网络上用来传递错误报文的协议,根据类型和代码,可以分为很多类型的,为了实现icmp扫描,我们这里只需要用到请求回显(type=8,code=0)和回显应答(type=0,...

    icmp(Internet control message protocol),是一种网络上用来传递错误报文的协议,根据类型和代码,可以分为很多类型的,为了实现icmp扫描,我们这里只需要用到请求回显(type=8,code=0)和回显应答(type=0,code=0),具体情况,请查看icmp,报文格式。

    原理,像需要扫描的ip发送icmp请求回显,如果收到icmp回显应答,则该ip处于活动状态,否则不是,这里我开发环境是win7+vs2013,建立的普通控制条程序,使用socket即可。

    1.定义header.h头文件,用于定于一些需要使用的头部定义

    #include"winsock2.h"
    #pragma comment(lib,"ws2_32")
    #include"WS2TCPIP.H"
    #include "mstcpip.h"
    //ip头部,每个变量含义请参考ip首部格式,注意编译器对结构体优化的问题,详细情况,请看http://blog.csdn.net/u012198947/article/details/51078214里面的说明
    typedef struct _iphdr
    {
    	unsigned char h_lenver;
    	unsigned char tos;
    	unsigned short total_len;
    	unsigned short ident;
    	unsigned short frag_and_flags;
    	unsigned char ttl;
    	unsigned char proto;
    	unsigned short checksum;
    	unsigned int sourceIP;
    	unsigned int destIP;
    }IPHEADER;
    
    //icmp头部
    typedef struct _icmphdr
    {
    	BYTE i_type;
    	BYTE i_code;
    	USHORT i_cksum;
    	USHORT i_id;
    	USHORT i_seq;
    	ULONG timestamp;
    }ICMPHEADER;
    
    //解码结果
    typedef struct
    {
    	USHORT usSeqNo;		  //包序列号
    	DWORD dwRoundTripTime; //往返时间
    	in_addr dwIPaddr;	  //对端IP地址
    } DECODE_RESULT;//ip头部定义,具体含义,参考ip头部格式


    2.发送数据包的函数

    //在主函数中调用,用于发送icmp数据包
    //返回值是执行结构,成功0,失败-1
    //参数与分别是定义好的套接字,目标地址的结构体指针
    int SendEchoRequest(SOCKET s, LPSOCKADDR_IN lpstToAddr)
    {
    	int nRet; //
    	char IcmpSendBuf[sizeof(ICMPHEADER)];//存放包的缓存区
    
    	//填充数据包
    	memset(IcmpSendBuf, 0, sizeof(IcmpSendBuf));
    	ICMPHEADER *pIcmpHeader = (ICMPHEADER*)IcmpSendBuf;
    	pIcmpHeader->i_type = 8; //回写请求消息
    	pIcmpHeader->i_code = 0;
    	pIcmpHeader->i_id = (USHORT)GetCurrentProcessId();//可以随便给,这里为了方便就给当前线程号
    	pIcmpHeader->i_seq = 0x0;//
    	pIcmpHeader->i_cksum = 0;
    	pIcmpHeader->timestamp = 0x01020304;//数据,随意,大小也是随意,这里我定义的4B
    	pIcmpHeader->i_cksum = CheckSum((USHORT*)pIcmpHeader, sizeof(ICMPHEADER));//校验和计算,函数如下:
    
    	nRet = sendto(s, IcmpSendBuf, sizeof(IcmpSendBuf),0, (LPSOCKADDR)lpstToAddr, sizeof(SOCKADDR_IN));//发送
    
    	if (nRet == SOCKET_ERROR)
    	{
    		cout << "sento Error" << endl;
    		return -1;
    	}
    	return 0;
    }
    
    //计算检验和函数
    USHORT CheckSum(USHORT *buffer, int size)
    {
    <span style="white-space:pre">	</span>unsigned long cksum = 0;
    <span style="white-space:pre">	</span>while (size > 1)
    <span style="white-space:pre">	</span>{
    <span style="white-space:pre">		</span>cksum += *buffer++;
    <span style="white-space:pre">		</span>size -= sizeof(USHORT);
    <span style="white-space:pre">	</span>}
    <span style="white-space:pre">	</span>if (size)
    <span style="white-space:pre">	</span>{
    <span style="white-space:pre">		</span>cksum += *(UCHAR*)buffer;
    <span style="white-space:pre">	</span>}
    <span style="white-space:pre">	</span>while (cksum >> 16)
    <span style="white-space:pre">		</span>cksum = (cksum >> 16) + (cksum & 0xffff);
    <span style="white-space:pre">	</span>return (USHORT)(~cksum);
    }
    
    3.用于解析接收到的数据包的函数
    /********************************************************
    函数名:DecodeIcmpResponse
    输入参数:char* pBuf:接收到的原始数据包(包括IP首部)
    int iPacketSize:原始数据包大小
    DECODE_RESULT *stDecodeResult:解析结构指针
    输出参数:操作成功的标志,true:成功,false:失败
    功能:解析收到的原始数据包,将收到的ICMP错误报文和响应报文分别处理
    *********************************************************/
    BOOL DecodeIcmpResponse(char* pBuf, int iPacketSize, DECODE_RESULT& stDecodeResult)
    {
    	IPHEADER* pIpHdr = (IPHEADER*)pBuf;
    	int iIpHdrLen = 20;//ip头部,固定20字节
    	
    	//ip首部占用20字节,定位到icmp报文
    	ICMPHEADER* pIcmpHdr = (ICMPHEADER*)(pBuf + iIpHdrLen);
    	USHORT usID, usSquNo;
    	if (pIcmpHdr->i_type == 0)//回写应答
    	{
    		usID = pIcmpHdr->i_id;
    		usSquNo = pIcmpHdr->i_seq;
    	}
    	else
    		return FALSE;
    	//处理正确收到的ICMP数据报,因为type=0的icmp只有一种报文,所以不用检查code
    	if (pIcmpHdr->i_type == 0 )
    	{
    		//返回解码结果
    		stDecodeResult.dwIPaddr.s_addr = pIpHdr->sourceIP;
    		stDecodeResult.dwRoundTripTime = GetTickCount() - stDecodeResult.dwRoundTripTime;
    		return TRUE;
    	}
    	return FALSE;
    }
    4.接收数据包函数
    /********************************************************
    函数名:RecvEchoReply
    输入参数:SOCKET s:原始套接字
    SOCKADDR_IN *saFrom:数据包的来源地址
    SOCKADDR_IN *saDest:数据包的目标地址
    DECODE_RESULT *stDecodeResult:解析结构指针
    输出参数:操作成功的标志,true:成功,false:失败
    功能:接收数据,并调用DecodeIcmpResponse对接收到的ICMP响应进行解析
    *********************************************************/
    DWORD RecvEchoReply(SOCKET s, SOCKADDR_IN *saFrom, SOCKADDR_IN *saDest, DECODE_RESULT *stDecodeResult)
    {
    	int nRet;
    	int nAddrLen = sizeof(struct sockaddr_in);
    
    	//创建ICMP包接收缓冲区
    	char IcmpRecvBuf[1024];
    	memset(IcmpRecvBuf, 0, sizeof(IcmpRecvBuf));
    
    	// 接收	
    	nRet = recvfrom(s,					// socket
    		(LPSTR)&IcmpRecvBuf,	// buffer
    		1024,	// size of buffer
    		0,					// flags
    		(LPSOCKADDR)saFrom,	// From address
    		&nAddrLen);			// pointer to address len
    
    
    	//打印输出
    	if (nRet != SOCKET_ERROR) //接收没有错误
    	{
    		//解码得到的数据包,如果解码正确则跳出接收循环发送下一个EchoRequest包
    		if (DecodeIcmpResponse(IcmpRecvBuf, nRet, *stDecodeResult))
    		{
    			if (stDecodeResult->dwIPaddr.s_addr == saDest->sin_addr.s_addr)
    			{
    				printf("该主机处于活动状态\n");
    				return 1;
    			}
    		}
    		else
    			return -1;
    	}
    	else if (WSAGetLastError() == WSAETIMEDOUT) //接收超时,一般情况下,不可达可以收到目的地不可达icmp报文,但如果需要扫描ip与本机处于同一局域网,则主//机在发送icmp之前,回先发送arp请求目的ip物理地址,如果该ip存在,则才会继续发送icmp报文,如果不存在,则不会有后续的,这里就是处理这种情况
    	{
    		printf("该主机不处于活动状态\n");
    	}
    	else
    	{
    		printf("recvfrom函数调用错误,错误号: %d\n", WSAGetLastError());
    		return -1;
    	}
    	return 0;
    }
    5.以下开始是主函数

    <pre name="code" class="cpp">
    int main()
    {
    int iResult;
    SOCKET sockRaw;
    sockaddr_in addrDest, addrSrc;
    DECODE_RESULT stDecodeResult;
    USHORT usSeqNo = 0;


    WSADATA wsaData;
    iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
    if (iResult != 0) 
    {
    //告知用户无法找到合适可用的Winsock DLL
    printf("WSAStartup 函数调用错误,错误号: %d\n", WSAGetLastError());
    return -1;
    }
    //创建原始套接字
    sockRaw= socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

    //设置接收超时选项
    int iTimeout = 1000;
    iResult = setsockopt(sockRaw, SOL_SOCKET, SO_RCVTIMEO, (char*)&iTimeout, sizeof(iTimeout));


    memset(&stDecodeResult, 0, sizeof(DECODE_RESULT));

    //需要扫描的ip,根据自己的需要来赋值吧
    addrDest.sin_addr.S_un.S_addr = inet_addr("192.168.218.18");
    addrDest.sin_family = AF_INET;


    // 发送ICMP Echo请求
    iResult = SendEchoRequest(sockRaw, &addrDest);
    if (iResult == SOCKET_ERROR)
    {
    if (WSAGetLastError() == WSAEHOSTUNREACH){
    printf("目的主机不可达,traceroute探测结束!");
    return -1;
    }
    }
    //接收ICMP的EchoReply数据报
    iResult = RecvEchoReply(sockRaw, &addrSrc, &addrDest, &stDecodeResult);
    return 0;
    }
    
    

    好了,这样就ok了


    展开全文
  • ICMP扫描程序的设计与实现 ICMP扫描程序的设计与实现 ICMP扫描程序的设计与实现
  • Scapy编写ICMP扫描脚本

    2019-06-08 19:53:00
    使用Scapy模块编写ICMP扫描脚本: from scapy.all import * import optparse import threading import os def scan(ipt): pkt=IP(dst=ipt)/ICMP() res=sr1(pkt,timeout=0.1,verbose=0) if res: ...

    使用Scapy模块编写ICMP扫描脚本:

    from scapy.all import *
    import optparse
    import threading
    import os
    
    def scan(ipt):
        pkt=IP(dst=ipt)/ICMP()
        res=sr1(pkt,timeout=0.1,verbose=0)
        if res:
            print(ipt,' is online')
        
    def main():
        parser=optparse.OptionParser("%prog "+"-t <target> -f <filename>")
        parser.add_option('-t',dest='target',type='string',help='Target')
        parser.add_option('-f',dest='fil',type='string',help='Filename')
        (options,args)=parser.parse_args()
        target=options.target
        fil=options.fil
        if(target==None) and (fil==None):
            print('Please input target(-t) or file(-f)')
            exit(0)
    
        if target:
            iplist=target.split('.')
            ip=iplist[0]+'.'+iplist[1]+'.'+iplist[2]+'.'
            for t in range(1,255):
                ipt=ip+str(t)
                t=threading.Thread(target=scan,args=(ipt,))
                t.start()
        if fil:
            if os.path.exists(fil):
                with open(fil) as f:
                    for i in f.readlines():
                        ipt=i.strip('\n')
                        t=threading.Thread(target=scan,args=(ipt,))
                        t.start()
            else:
                print('File is not exists!')
                exit(0)
    
    if __name__=='__main__':
        main()

     

    转载于:https://www.cnblogs.com/nul1/p/10991500.html

    展开全文
  • web渗透--ICMP扫描详解

    2020-08-13 13:44:06
    ICMP扫描 ICMP(Internet Control Message Protocal,因特网控制报文协议)工作在OSI上网络层,向数据通信中的源主机报告错误。ICMP就是一个“错误的侦测与回报机制”,目的是为了能够检测网络的连续状况,也能够确保...

    ICMP扫描
        ICMP(Internet Control Message Protocal,因特网控制报文协议)工作在OSI上网络层,向数据通信中的源主机报告错误。ICMP就是一个“错误的侦测与回报机制”,目的是为了能够检测网络的连续状况,也能够确保连续的准确性。通过实施ICMP Ping扫描,可以发现目标主机是否活动。
    一、ICMP工作机制
        ICMP是TCP/IP的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息指的是网络通不通、主机是否可达、路由是否可用等网络本身的消息。当遇到IP数据包无法访问目标、IP路由器无法按照当的传输速率转发数据包的情况,会自动发送ICMP消息,来确定目标主机的状态。
    二、标准ICMP扫描
        标准的ICMP扫描是向目标主机发送ICMP Echo Request数据包,来探测目标主机是否在线,如果目标主机回复ICMP Echo Reply则表示目标主机在线。常用的发送ICMP Echo Request数据包的工具是ping,也可以使用fping来发送。
        1、使用Ping命令
            ping:该命令可以检查网络是否连通,可以很好的帮助用户分析和判断网络故障。该命令是发送ICMP Echo Request数据包,然后等待目标主机返回的相应,来检查网络是否通畅或者网络连接速度。格式为:  ping [目标]。在目标不可达的时候会返回Destination Host Unreachable(目标主机不可达)
        2、使用Nmap工具
            Nmap是一个免费开放的网络扫描和嗅探工具包,也叫网络映射器(Network Mapper)。Nmap工具的“-PE”选项,可以用来实施ICMP扫描,格式为:nmap -PE [目标]。原理是发送一个ICMP echo、timestamp和netmask请求来探测主机是否在线。
        3、使用Fping命令
            Fping是一个小型命令行工具,类似于ping但是在ping多主机时性能个比较好,Fping可以在命令行上定义任意数量的主机、指定包含要ping的IP地址、主机表文件。格式为:fping [目标]。
    三、时间戳查询扫描
        一些服务器配置了防火墙来阻止ICMP Echo请求。但由于配置不当,仍然可能会回复ICMP时间戳请求。故可以通过Nmap实施ICMP时间戳查询扫描来判断目标主机是否在线。格式:nmap -PP [目标]
    四、地址掩码查询扫描
        地址掩码查询和时间戳查询扫描类似。是一种非常规的ICMP查询,试图用备选的ICMP登记Ping指定的主机,可以绕过配置有ping封锁标准回声请求策略的防火墙。格式:nmap -PM [目标]

    展开全文
  • 第6章 ICMP扫描器的设计(含源码) 6.6 MultiPing 因为网上没有网络扫描技术揭秘的源代码,所以自己买了书dump下光盘按章节上传,物有所值,可以根据需要下载
  • ICMP扫描器设计

    2018-04-09 19:40:47
    网络 扫描器 源代码 mfc框架
  • Python 协议攻击脚本(三): ICMP扫描

    千次阅读 2019-04-26 11:29:16
    文章目录ICMP协议TypeICMP扫描数据包分析Python脚本 ICMP协议 互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,...

    ICMP协议

    互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

    Type

    ICMP的类型

    • 0 回显请求 Echo Request
    • 8 回显应答 Echo Reply
    • 3 目标不可达 Destination Unreachable
    • 11 超时消息 Time Exceeded
    • 5 重定向消息 Redirect

    ICMP扫描

    利用ICMP协议来判断存活的主机

    原理

    对需要扫描的ip发送icmp回显请求Echo Request,如果收到回显应答Echo Reply则判断该ip处于活动状态,简单来说就是ping别人,以是否ping得通来判断是否存活

    数据包分析

    ping网关

    # ping 网关 -c 1 
    

    mark

    可以看到封装为Ether/IP/ICMP,ICMP的类型为8 (Echo Request)

    mark

    答复的数据包ICMP类型为0(Echo Reply)

    mark

    >>> ls(ICMP)
    type       : ByteEnumField                       = (8) #ICMP类型
    code       : MultiEnumField (Depends on type)    = (0)
    chksum     : XShortField                         = (None)
    id         : XShortField (Cond)                  = (0)
    seq        : XShortField (Cond)                  = (0)
    [...]
    

    编写脚本

    1.Scapy中ICMP的请求和答复

    >>> packet =Ether()/IP(src='192.168.1.113',dst='192.168.1.1')/ICMP()
    >>> packet.show()
    ###[ Ethernet ]### 
      dst= 88:25:93:d2:6e:fa
      src= 00:0c:29:62:44:de
      type= 0x800
    ###[ IP ]### 
         version= 4
         ihl= None
         tos= 0x0
         len= None
         id= 1
         flags= 
         frag= 0
         ttl= 64
         proto= icmp
         chksum= None
         src= 192.168.1.113
         dst= 192.168.1.1
         \options\
    ###[ ICMP ]### 
            type= echo-request
            code= 0
            chksum= None
            id= 0x0
            seq= 0x0
    
    >>> p = srp1(packet)
    Begin emission:
    .Finished sending 1 packets.
    *
    Received 2 packets, got 1 answers, remaining 0 packets
    >>> p.show()
    ###[ Ethernet ]### 
      dst= 00:0c:29:62:44:de
      src= 88:25:93:d2:6e:fa
      type= 0x800
    ###[ IP ]### 
         version= 4
         ihl= 5
         tos= 0x0
         len= 28
         id= 36140
         flags= 
         frag= 0
         ttl= 64
         proto= icmp
         chksum= 0x69f2
         src= 192.168.1.1
         dst= 192.168.1.113
         \options\
    ###[ ICMP ]### 
            type= echo-reply
            code= 0
            chksum= 0xffff
            id= 0x0
            seq= 0x0
    ###[ Padding ]### 
               load= '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    
    >>> p.getlayer(ICMP)  #获取ICMP层
    <ICMP  type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |<Padding  load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>
    >>> p.getlayer(ICMP).fields['type'] #获取type的值
    0
    

    Python自带的ipaddress模块

    >>> import ipaddress
    >>> ip = list(ipaddress.ip_network('192.168.1.0/30'))
    >>> ip
    [IPv4Address('192.168.1.0'),
     IPv4Address('192.168.1.1'),
     IPv4Address('192.168.1.2'),
     IPv4Address('192.168.1.3')]
    >>> for i in ip:
    ...:     print(i)
    ...:
    192.168.1.0
    192.168.1.1
    192.168.1.2
    192.168.1.3
    >>> ip = ipaddress.ip_network('192.168.1.1')
    >>> for i in ip:
    ...:     print(i)
    ...:
    192.168.1.1
    

    2.demo:先定义两个函数

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    from scapy.all import *
    
    #ICMP请求,返回响应包
    def icmp_requset(ip_dst,iface=None):
        pkt = Ether()/IP(dst=ip_dst)/ICMP(type=8) #ICMP类型为
        req = srp1(pkt,timeout=2,verbose=False) #timeou:超时时间设置 verbose:设置自带消息反馈
        return req
    
    #判断是否存活
    def icmp_scan(ip_dst):
        req = icmp_requset(ip_dst)
        #判断是否响应包是否为空
        if req:
             type = req.getlayer('ICMP').fields['type']
             print('[+]',ip_dst,':',type,'    Host is up')
        else:
            pass
    if __name__ == '__main__':
        icmp_scan('10.35.68.1')
    

    运行结果

    [+] 10.35.68.1 : 0     Host is up
    

    3.改进代码,加入扫描子网

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    from scapy.all import *
    import ipaddress
    
    #ICMP请求,返回响应包
    def icmp_requset(ip_dst):
        pkt = Ether()/IP(dst=ip_dst)/ICMP(type=8) #ICMP类型为
        req = srp1(pkt,timeout=2,verbose=False) #timeou:超时时间设置 verbose:设置自带消息反馈
        return req
    
    #判断是否存活
    def icmp_scan(ip_dst):
        req = icmp_requset(ip_dst)
        #判断是否响应包是否为空
        if req:
             print('[+]',ip_dst,'    Host is up')
                
    def main(network):
        
        #Windows下注释掉这段
        # if os.getuid() != 0:
        #     print('[-]Need root user to run')
        #     sys.exit(1)
    
        network = list(ipaddress.ip_network(network))
    
        for ip in network:
            icmp_scan(ip)
        
    if __name__ == '__main__':
        main('10.35.68.0/24')
    

    运行结果

    [+] 10.35.68.1 : 0     Host is up
    [+] 10.35.68.4 : 0     Host is up
    [+] 10.35.68.8 : 0     Host is up
    [+] 10.35.68.3 : 0     Host is up
    [+] 10.35.68.9 : 0     Host is up
    

    4.代码完善,加上参数选项和多线程

    argparse 命令行选项模块

    threading 多线程模块

    PYTHON3 多线程实例学习

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    from scapy.all import IP, ICMP, srp1,Ether
    import threading
    import argparse
    import ipaddress
    import os
    import sys
    
    
    # 发送ICMP请求,判断是否存活
    def icmp_requset(ip_dst, iface=None):
        pkt = Ether()/IP(dst=ip_dst) / ICMP(type=8)
        req = srp1(pkt, timeout=3, verbose=False)
    
        if req:
            print('[+]', ip_dst, '    Host is up')
    
    
    #进行子网的多线程扫描
    def icmp_scan(network):
        threads = []
        length = len(network)
        for ip in network:
            t = threading.Thread(target=icmp_requset, args=(str(ip),))
            threads.append(t)
    
        for i in range(length):
            threads[i].start()
    
        for i in range(length):
            threads[i].join()
    
    
    # 参数选项
    def main():
        # Windows下注释掉这段
        # 判断是否为root
        if os.getuid() != 0:
            print('[-]Need root user to run')
            sys.exit(1)
    
        parser = argparse.ArgumentParser()
        parser.add_argument('network', help='eg:192.168.1.0/24')
        args = parser.parse_args()
        network = list(ipaddress.ip_network(args.network))
    
        icmp_scan(network)
    
    
    if __name__ == '__main__':
        main()
    

    运行演示

    mark

    展开全文
  • C++ ICMP扫描源码

    2019-01-11 10:32:51
     bool isSameICMPReport(const ICMPHeader *, const ICMPHeader *); public:  ulong m_sip;  ulong m_eip;  bool m_stop;  ulong m_sRaw;  ulong m_dwTimeout;  DoxSyntonyParam m_send; }; ...
  • 源端口(Source Port):16bit, 表示报文发送方的端口号目的端口(Destination port): 16bit,表示报文接收方的端口号序列号(SN):32bit,标识了TCP报文中第一个byte在对应方向的传输中对应的字节序号。...
  • 基于icmp扫描子网

    2016-12-19 11:36:00
    .. 转载于:https://www.cnblogs.com/freesec/p/6196864.html
  • /*一下是针对linux的结果 对于windows tcpfin 和tcpnull 扫描有不同的效果,即不管端口开或关 都会返 * 回rst 和ack *(1) tcp syn scan * 发送一个带有SYN标记的TCP 若返回SYN+ACK 端口开放 *(2) tcp fin scan *...
  • 基于ICMP主机扫描

    2014-09-12 22:56:12
    基于ICMP主机扫描c#程序,简单地实现多ICMP协议的工作原理
  • 使用ICMP主机扫描

    2012-04-17 11:52:30
    分析ICMP协议报文,理解和掌握ICMP协议报文头各字段的含义和作用,使用其进行主机的扫描
  • #include #define PACK_LEN 72#define BUFSIZE 4096int main(int argc, char *argv[]){struct sockaddr_in send_sa;//struct s;...int scan_icmp_socket;char send_buff[PACK_LEN];char recv_buff[BUFS...
  • 在windows下可实现 tcp的fin syn扫描,和icmp 的ping扫描。界面部分由c#编写,后台为c、c++。其中tcp部分采用多线程。 可实现界面主题更换。
  • 基于ICMP的端口扫描

    2009-04-21 10:25:12
    基于ICMP的端口扫描, VC实现,原始套接字编程, 通过发ICMP包来实现端口扫描
  • 基于ICMP数据包的主机扫描进行网络管理时,常常需要确定当前网络中处理活动状态的主机。本设计的目标就是编制程序,利用ICMP的回送请求和回送应答消息,来发现指定网段中的活动主机,即ping消息的请求和应答。
  • TCP、UDP端口及ICMP网络扫描工具

    热门讨论 2011-09-13 17:18:03
    基于vc6.0开发网络扫描工具,利用select+connect进行TCP端口扫描,利用ICMP端口不可达报文进行UDP端口扫描,可以完成对TCP、UDP端口的探测,ICMP你懂的。利用GetBestRoute和GetIpAddrTable来判定使用本地接口IP,不...
  • 基于vc6.0开发网络扫描工具,利用select+connect进行TCP端口扫描,利用ICMP端口不可达报文进行UDP端口扫描,可以完成对TCP、UDP端口的探测,ICMP你懂的。利用GetBestRoute和GetIpAddrTable来判定使用本地接口IP,不...
  • ICMP(Ping)扫描

    2019-09-29 02:20:31
    //--------------------------------------------------------------------// // ICMP(Ping)扫描 // // Rrouned  // //----------------------------------------------------...
  • 扫描软件在黑色的控制台里面玩的飞起。脑瓜一热,咱们自己能不能做一个呢?小菜我就开始吧啦吧啦的在网上查找资料,查找完决定做一个二行代码就可以实现发现存活主机的扫描工具,大家可以把名字写到工具上,这样多有...
  • 扫描配置中,自定义一个

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 828
精华内容 331
关键字:

icmp扫描