精华内容
下载资源
问答
  • 瓜大计算机学院《网络原理》实验报告2
  • 首先我们供给一台主机要进行的步骤就是对其主机端口扫描,查看其中开放的端口。 我们首先创建一个TCP的全连接的扫描器。我们使用socket来创建连接器。 扫描端口开放 #测试当前主机和端口是否开放,直接使用...
  • TCP端口扫描工具

    2017-11-20 18:01:23
    python的TCP端口扫描,还给了大家一点福利哈哈哈
  • bin\Debug\DirecScan.dll bin\Debug\DirecScan.pdb obj\Debug\ResolveAssemblyReference.cache obj\Debug\DirecScan.dll obj\Debug\DirecScan.pdb
  • 采用多线程分发的方式,实现对电脑1-65535端口进行扫描,并把开启的端口,记录到结果文件中去
  • tcp端口扫描程序

    2014-12-26 13:36:16
    这是基于tcp全连接的端口扫描的源代码、程序,是利用三次握手进行连接之后对所连接的端口是否成功进行对端口是否打开的判断。
  • 端口扫描器 ____ _ ____ | _ \ ___ _ __ | | _ / ___ | ___ __ _ _ __ _ __ ___ _ __ | | _) / _ \| ' __| __| \___ \ / __/ _` | ' _ \| ' _ \ / _ \ ' __ | | __/ (_) | | | | _ ___) | (_ | (_ | | | | | | | ...
  • 简易TCP端口扫描

    2018-10-17 19:22:15
    基于socket实现的简易TCP端口扫描器(Linux) 使用方法: scan xxx.xxx.xxx.xxx
  • 自己编写的Linux下TCP端口扫描程序(含源代码),可打印出扫描的IP上开放的所有TCP端口。如扫描的端口有输出,也可打印输出,从而判断对方端口上运行的程序。
  • TCP 端口扫描

    2012-11-29 22:42:50
    TCP 端口扫描 多线程 课程设计 同步互斥 功能
  • 在该范围内使用多线程机制循环创建客户端套接字对象,对某一地址(段)的主机端口进行扫描,若套接字没有发生异常,说明该端口打开并提供服务,返回该开放端口的类型(如UDP端口还是TCP端口)。 2.3 采用Java网络...
  • 御剑高速TCP端口扫描工具
  • TCP端口扫描一般分为以下几种类型: TCP connect扫描:也称为全连接扫描,这种方式直接连接到目标端口,完成了TCP三次握手的过程,这种方式扫描结果比较准确,但速度比较慢而且可轻易被目标系统检测到。 TCP SYN...
  • 多线程TCP端口扫描器源码

    热门讨论 2012-09-13 09:19:57
    多线程TCP端口扫描器源码,win32程序。
  • HTTP发起的IPv6端口扫描程序,提供纯文本和javascript浏览器兼容版本。 版权所有(C)2011-2021 Tim Chappell。 该文件是IPscan的一部分。 IPscan是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可证的...
  • TCP端口扫描

    2013-04-15 16:43:25
    可以使用该程序实现对指定端口长度范围的扫描
  • 基于TCP端口扫描技术

    2021-03-15 17:59:14
    基于TCP全开的端口扫描技术TCP全开扫描基本概念TCP端口扫描工具的编写 TCP全开扫描基本概念 首先介绍第一种扫描技术——TCP全开扫描。这种扫描的思想很简单,如果目标端口是开放的,那么在接到主机端口发出的SYN请求...

    基于TCP全开的端口扫描技术

    TCP扫描基本概念

    首先介绍第一种扫描技术——TCP全开扫描。这种扫描的思想很简单,如果目标端口是开放的,那么在接到主机端口发出的SYN请求之后,就会返回一个SYN+ACK回应,表示愿意接受这次连接的请求,然后主机端口再回应一个ACK,这样就成功地和目标端口建立了一个TCP连接。
    在这里插入图片描述
    如果目标端口是关闭的,那么在连接到主机端口发出的SYN请求之后,就会返回一个RST回应,表示不接受这次连接的请求,这样就中断了这次TCP连接,这个过程就如下。
    在这里插入图片描述
    但是目标端口不开发还有另外一种情况,就是当主机端口发出SYN请求之后,没有收到任何的回应。多种原因都可能造成这种情况,例如,目标主机处于非活跃状态,这时当然无法进行回应,不过这也可以认为端口是关闭的。另外一些网络安全设备也会屏蔽掉对某些端口的SYN请求,这时也会出现无法进行回应的情况,在此暂时不考虑。
    在这里插入图片描述

    TCP端口扫描工具的编写

    在前面已经写过很多关于Scapy中IP数据包和TCP数据包的格式,需要注意的是需要将TCP的flags参数设置为“S”,表明这是一个SYN请求数据包,然我们构造它并将它发送出去,我们可以像下面这样构造。

    data = IP(dst="192.168.43.1") / TCP(dport=21, flags="S")
    send = sr1(data, timeout=5)
    if send:
        print(send.summary())
    else:
        print("目标端口关闭!")
    

    运行结果:
    在这里插入图片描述
    可以发现有回应的,就证明目标端口是开放的。

    接下来要根据收到对应的应答包来判断目标端口的状态,这是会有以下三种情况。

    1. 如果此时send的值为空,就表示没有收到来自目标的回应。在程序中可以使用str(trpe(send))来判断这个是不是为空,当type(send)的值转化为字符串之后为“<class ‘NoneType’>”时就表明send是空的,也就是没有收到任何数据包,直接判断该端口为closed。如果不是这个值,则说明send不为空,也就是hi收到了回应的数据包,那么就转到后面的第二种或者第三种。
      其实也不用那么麻烦因为sr1只有一个回应,不像sr那样分为收到和没有接收到,所以直接用“if send”即可。
    2. 当收到了回应的数据包之后,需要判断一下这个数据包是“SYN+ACK”类型还是“RST”类型的。在Scapy中数据包的构造是分层的,可以使用haslayer(TCP)来判断,也可以使用getlayer(TCP)来读取其中某个字段的内容。例如,send.getlayer(TCP).flahs == 0x12 就表示目标端口是开放的。
    3. 如果send.getlayer(TCP).flags的结果不是0x12,而是0x14(表示RST),表明目标端口是关闭的。

    这里大家在测试的时候,建议大家拿虚拟机进行测试,而且关闭防火墙,开始我拿自己的物理机测试的,发现一直都是RST,然后我用命令看了一下端口是开放的,最后我才知道我的杀毒软件给拦下来了。

    在这里插入图片描述
    我们可以通过这个图知道我虚拟机win7的IP:192.168.43.83,在使用命令“netstat -a -n”后看到了一些开发的端口。

    接下来我们通过全开TCP连接进行一次端口探测。

    from scapy.all import *
    
    data = IP(dst="192.168.43.83") / TCP(dport=80, flags="S")
    send = sr1(data, timeout=5)
    print(send.summary())
    flag = send[TCP].flags
    if hex(int(flag)) == "0x12":
        print("端口状态:" + hex(int(flag)))
        print("[*] 目标端口处于开放状态!")
    elif hex(int(flag)) == "0x14":
        print("[*] 目标端口处于关闭状态!")
        print("端口状态:" + hex(int(flag)))
    else:
        print("[*] 目标处于非活跃状态")
    

    运行结果:
    在这里插入图片描述
    这里大家可能对SA不太理解,这里的SA表示的就是“SYN+ACK”的连接。但是有一点要注意,我不是像上面提到的使用getlayer()来进行判断它的flags的,我是直接提取TCP里的flags,而后出来的结果就是SA,我们将它转换成int类型,然后在使用hex()转为16进制。而后我们就得到了0x12表示“SYN+ACK”的连接。反之RA表示的就是“RST”,端口是关闭的。
    在这里插入图片描述
    这里我们再次回国头来看,我们需要判断send它是否有回应,如果没有回应我们这个程序必定报错,所以我们可以采用异常处理的方式,或者增加一个判断。

    1. 采用异常处理(这里我探测一个不存在的IP)
    from scapy.all import *
    
    data = IP(dst="192.168.4.83") / TCP(dport=22, flags="S")
    send = sr1(data, timeout=5)
    try:
        print(send.summary())
        flag = send[TCP].flags
        if hex(int(flag)) == "0x12":
            print("端口状态:" + hex(int(flag)))
            print("[*] 目标端口处于开放状态!")
        elif hex(int(flag)) == "0x14":
            print("[*] 目标端口处于关闭状态!")
            print("端口状态:" + hex(int(flag)))
    except:
        print("[!] 目标端口关闭!")
        print("[!] 目标也也有可能处于非活跃状态!")
    

    运行结果:
    在这里插入图片描述

    1. 判断send为空
    from scapy.all import *
    
    data = IP(dst="192.168.4.83") / TCP(dport=21, flags="S")
    send = sr1(data, timeout=5)
    if str(type(send)) == "<class 'NoneType'>":
        print("[!] 目标端口关闭!")
        print("[!] 目标也也有可能处于非活跃状态!")
    else:
        print(send.summary())
        flag = send[TCP].flags
        if hex(int(flag)) == "0x12":
            print("端口状态:" + hex(int(flag)))
            print("[*] 目标端口处于开放状态!")
        elif hex(int(flag)) == "0x14":
            print("[*] 目标端口处于关闭状态!")
            print("端口状态:" + hex(int(flag)))
    

    运行结果:
    在这里插入图片描述

    展开全文
  • VB.NET 多线程TCP端口扫描工具,使用前请输入要扫描的网段IP和端口,本程序可将扫描到的开放端口数量显示在窗口中,扫描时应用了多线程技术,扫描时显示当前线程数,适时显示扫描进度和扫描时间,以毫秒计时,扫描...
  • Rainfall 是一个 TCP 端口扫描器,可让您进行隐形扫描。 我使用了 ,因为它可以简化数据包操作。 这个版本目前是单线程的,我期待着把它变成多线程以加快扫描速度。 目前,它可以做到: SYN扫描 圣诞扫描 FIN扫描...
  • 一个windows端比较好用的端口扫描工具,放在云服务器上运行有奇效噢~
  • Python之TCP端口扫描

    千次阅读 2018-02-06 15:40:13
    TCP端口及服务扫描器的设计 在学习完《Python绝技》一章后,认真的...1. TCP端口扫描根据不同的发包可以分为:  (1)TCP SYN扫描:也称半开放扫描,该扫描类型发送一个SYN的TCP链接数据包等待响应,当返回RST数据包
     TCP端口及服务扫描器的设计

    在学习完《Python绝技》一章后,认真的总结下笔记。

     常见的端口扫描是基于TCP三次握手或者是四次挥手过程,常见的是发送一个TCP syn包到指定主机的指定端口,根据返回的结果判断该端口是否开放。

    1. TCP端口扫描根据不同的发包可以分为:

     (1)TCP SYN扫描:也称半开放扫描,该扫描类型发送一个SYN的TCP链接数据包等待响应,当返回RST数据包表示端

    口关闭,返回ACK表示端口开放。

     (2)TCP NULL扫描:TCP空扫描设置TCP的标志头为零,如果返回一个RST数据包则表示这个端口是关闭的。

     (3)TCP FIN扫描:TCP FIN扫描发送一个FIN数据包,请求关闭链接,等待一个个圆满的终止,如果返回RST数据包则

    表示该端口是关闭的。

     (4)TCP XMAS扫描:TCP XSMAS扫描设置PSH,FIN和URG TCP的标志位,如果返回RST数据包则表示这个端口是关

    闭的。

    2.扫描器设计思路:

     (1)用户输入目标主机名和要扫描的常用端口列表,通过主机名得到目标网络的IP地址,用列表中的每一个端口号去链

    接目标地址,最后确定端口上运行的特殊服务,可以发送特定的数据,并读取特定应用程序返回的标识。

     (2)从用户那里接收主机名和端口,利用optparse标准库来解析命令行选项,调用optparse.OptionParser()创建一个

    选项分析器,然后通过parser.add_option()函数来指定命令选项。

    3.多线程端口扫描器应注意:

     (1)多线程在速度上有明显优势,但是端口回显的信息可能是无序的,必须在同一时间内只有一个打印信息的函数,但

    是访问端口的却可以是多个的,同时还要避免重复访问同一个端口,造成资源浪费。因此,必须使用信号量加锁

     (2)使用acquire()加锁,新好像允许信号运行,如果锁定了必须要等到信号量的进程释放锁,利用信号量可以保证在同

    一时间只有一个线程在打印输出结果

    4.用到的模块及函数

    (1)optparse模块:

    optparse.OptionParser()

    optparse.add_option()

    optparse.parse_args()

    以上三个函数不多介绍,基本就是命令解释的作用。如果感兴趣,请参考大神的文章:点击打开链接

    (2)sock模块:

     socket.gethostbyname(hostname):将主机名转换成IP地址返回
     socket.gethostbyaddr(ip_address):传入一个Ip地址返回一个元组,其中包括主机名,别名列表和同一接口的Ip地址列表 socket.socket():创建一个socket

     socket. connect(address,timeout,source_address):传入Ip地址和端口号返回一个socket对象,可以设置超时重连的时间
    socket.send(data):项目地主机端口发送数据 socket.recv(size):从socket中接受size大小的字节数据

    (3)threading模块:

    threading.Semaphore(value=num):创建信号量为num的锁

    threading.acquire():加锁

    threading.release():解锁,释放信号量

        5.程序代码:

    # coding = UTF-8
    
    import optparse
    import socket
    import threading
    
    
    screenLock = threading.Semaphore(value = 1)
    
    def connScan(tgtHost,tgtPort):
    
        try:
    
            connSkt = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
            connSkt.connect((tgtHost,tgtPort))
    
            connSkt.send('ViolentPython\r\n')
    
            results = connSkt.recv(100)
    
            screenLock.acquire()
    
            print('[+]%d/tcp open' %tgtPort)
    
            print('[+]' + results.decode('utf-8'))
    
        except:
    
            screenLock.acquire()
    
            print('[-]%d/tcp closed' %tgtPort)
    
        finally:
    
            screenLock.release()
    
            connSkt.close()
    
    
    
    def portScan(tgtHost,tgtPorts):
    
        try:
    
            tgtIP = socket.gethostbyname(tgtHost)
    
        except:
    
            print("[-] Cannot resolve '%s': Unknown host" %tgtHost)
    
            return
    
        try:
    
            tgtName = socket.gethostbyaddr(tgtIP)
    
            print('\n [+]Scan Results for:' + tgtName[0])
    
        except:
    
            print('\n [+]Scan Results for:' + tgtIP)
    
        socket.setdefaulttimeout(1)
    
        for tgtPort in tgtPorts:
    
            print('Scanning por' + str(tgtPort))
    
            t = threading.Thread(target = connScan,args = (tgtHost,int(tgtPort)))
    
            t.start()
    
    
    def main():
    
        parser = optparse.OptionParser('usage %prog -H <target host> -p <target port>')
    
        parser.add_option('-H',dest = 'tgtHost',type = 'string',help = 'specify target host')
    
        parser.add_option('-p',dest = 'tgtPort',type ='int',help = 'specify target port')
    
        (options,args) = parser.parse_args()
    
        tgtHost = options.tgtHost
    
        tgtPort = options.tgtPort
    
    
        if(tgtHost == None) or (tgtPort == None):
    
            print('[-] You must specify a target host and port[s]!')
    
            exit(0)
    
        portScan(tgtHost,args)
    
    
    if __name__ == '__main__':
        main()
    
     运行结果如下:

    展开全文
  • udp,tcp端口扫描

    2012-11-26 16:49:33
    网络编程,最简单的udp,tcp扫描程序,在mfc平台下编译通过,单线程。
  • TCP端口扫描器的实现

    2011-07-19 09:28:16
    有关TCP端口扫描器的开发与实现的毕业论文,可以为关于这方面的毕业设计提供参考,里面包含代码
  • tcp端口扫描方式

    千次阅读 2019-02-17 12:39:02
      其实指TCP的连接方式  一般有三种:  1.通过connect  客户端通过connect发起连接后,如果服务器处于监听状态就可以发起连接成功,否则说明...优点是比较简单可靠,缺点是如果连接不成功会频繁的发包,扫描...

    转载自:https://blog.csdn.net/f905699146/article/details/82625597?utm_source=blogxgwz2

     

    其实指TCP的连接方式 
    一般有三种: 
    1.通过connect 
    客户端通过connect发起连接后,如果服务器处于监听状态就可以发起连接成功,否则说明端口是关闭的。优点是比较简单可靠,缺点是如果连接不成功会频繁的发包,扫描时间比较长 
    2.通过SYN扫描 
    向目标端口发送SYN数据帧,如果又收到SYN+ACK说明开放,如果收到RST说明关闭,在IP层实现。 
    3.通过FIN扫描 
    四次挥手的过程,主动结束的一方会发送FIN帧。

    展开全文
  • Delphi编写的多线程端口扫描工具及Delphi源代码 Ver 2018-08 可对IP范围进行排除及追加,最高999线程。
  • 御剑高速TCP端口扫描.rar
  • 基于socket编程的的TCP端口扫描程序

    千次阅读 2019-09-24 09:35:29
    基于socket编程的的TCP端口扫描程序 Ubuntu下的C语言编程 用户设定扫描目的的地址;并设定扫描端口的范围; 先通过gcc编译 gcc scanip.c -o scanip 然后运行./scanip 127.0.0.1 1 65535(可修改为自己想要扫描的...

    基于socket编程的的TCP端口扫描程序

    Ubuntu下的C语言编程

    用户设定扫描目的的地址;并设定扫描端口的范围;
    先通过gcc编译 gcc scanip.c -o scanip
    然后运行./scanip 127.0.0.1 1 65535(可修改为自己想要扫描的IP和端口范围)

    #include<stdlib.h>
    #include<stdio.h>
    #include<sys/socket.h>
    #include<string.h>
    #include<unistd.h>
    #include<netinet/in.h>
    #include<arpa/inet.h>
    struct servent{
        char* s_name;
    	char** s_aliases;
    	int s_port;
    	char* s_proto;
    };
    
    void print_usage(char * cmd)
    {
    	fprintf(stderr," %s usage:\n",cmd);
    	fprintf(stderr,"%sIP_Addr[port]\n",cmd);
    }
    int scanport(int sockfd,struct sockaddr_in scanip,int port,char** arg){
    if(-1==(sockfd=socket(AF_INET,SOCK_STREAM,0))){
    		perror("can not create socket\n");
    		exit(1);
    	}
    memset(&scanip,0,sizeof(struct sockaddr_in))
    scanip.sin_family = AF_INET;
    scanip.sin_addr.s_addr =inet_addr(arg[1]);
    scanip.sin_port = htons(port);
    int ret =connect(sockfd,(struct sockaddr*)&scanip,sizeof(struct sockaddr));
    	close(sockfd);
    	return ret;
    } 
    int main(int argc,char** argv)
    {
    	int sockfd;
    	struct servent* sp;
    	int start_port=atoi(argv[2]);
    	int end_port=atoi(argv[3]);
    	struct sockaddr_in scanip;
        if (4!=argc) 
        {
    		print_usage(argv[0]);
    		exit(1);
        }
    	for(start_port;start_port<=end_port;start_port++){
    		if(!scanport(sockfd,scanip,start_port,argv)){
    			if (-1==(sockfd=socket(AF_INET,SOCK_STREAM,0)))
    		{
    		perror("can not create socket\n");
    		exit(1);
    		}
    		connect(sockfd,(struct sockaddr*)&scanip,sizeof(struct sockaddr));		sp=getservbyport(htons(start_port),"tcp";
    		if (NULL!=sp){
    printf("%d,%s\n",start_port,sp->s_name);
    			}
    		else{
    printf("%d unknow\n",start_port);
    			} 
    			close(sockfd);
    		}
    	}
    	exit(0);
    
    }
    
    

    可以通过nmap进行验证,结果一致
    nmap的安装:opt install nmap

    展开全文
  • tcp端口扫描

    2013-10-10 13:08:30
    tcp端口扫描,扫描目标主机端口开放情况。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,510
精华内容 26,604
关键字:

tcp端口扫描

友情链接: paper.rar