精华内容
下载资源
问答
  • Python 端口扫描全连接扫描,多线程
    2020-12-10 19:14:28

    from socket import *

    import threading #导入线程相关模块

    lock = threading.Lock()

    openNum = 0

    threads = [] #定义线程列表

    def portScanner(host,port):

    global openNum

    try:

    s = socket(AF_INET,SOCK_STREAM)

    s.connect((host,port))

    lock.acquire() #因为openNum是个全局变量,每个线程不能对openNum 同时操作,只有获得所的线程才可以操作 openNum

    openNum+=1

    print('[+] %d open' % port)

    lock.release() #线程对全局变量openNum操作完成后,需要释放所,其他线程才可以继续修改全局变量openNum

    s.close()

    except: #如果端口没开,那么就直接pass,不执行其他输出操作。

    pass

    def main():

    setdefaulttimeout(1)

    ports = [20, 21, 22, 23, 80, 111, 3306] #定义要扫描的端口,也可以在for中使用range进行定义,看个人需求,例如 for p in range(1,1024):

    for p in ports:

    t = threading.Thread(target=portScanner,args=('192.168.60.130',p))

    threads.append(t)

    t.start()

    for t in threads: #等待线程列表中的所以线程的执行完毕

    t.join()

    print('[*] The scan is complete!')

    print('[*] A total of %d open port' % (openNum))

    if __name__ == '__main__':

    main()

    如果要计算扫描了多久的话,可以导入time模块,然后 程序开始运行的时间 减去 程序结束运行的时间 最后输出时间的差。

    更多相关内容
  • 简单实现C多线程端口扫描核心代码(2008-11-21 23:05:00)标签:c端口扫描最近想写一个自己的端口扫描器,主要为了方便扫描“自定义”端口,上网找了一下没找到现成的代码,自己就写了个测试代码。主要实现了:对指定...

    a4c26d1e5885305701be709a3d33442f.png

    简单实现C多线程端口扫描核心代码

    (2008-11-21 23:05:00)

    标签:

    c

    端口

    扫描

    最近想写一个自己的端口扫描器,主要为了方便扫描“自定义”端口,上网找了一下没找到现成的代码,自己就写了个测试代码。主要实现了:对指定IP进行扫描,自定义线程数,设置扫描端口的范围。以下程序没有多余的代码只是用来做功能测试。

    #include

    #include

    #pragma comment(lib,"Ws2_32.lib")

    WSADATA wsaData;

    SOCKADDR_IN sockaddr;

    int curport;

    void scan(int i)

    {

    SOCKET Socket;

    int e;

    Socket=socket(AF_INET,SOCK_STREAM,0);

    sockaddr.sin_port=htons(i);

    printf("Connecting %d port.\r",i);

    e=connect(Socket,(LPSOCKADDR)&sockaddr,sizeof(SOCKADDR_IN));

    if (e==SOCKET_ERROR)

    {

    closesocket(Socket);

    return;

    }

    printf("Found port >%d<

    open!\n",i);

    closesocket(Socket);

    }

    DWORD WINAPI ThreadFunc( LPVOID lpParam )

    {

    scan((int)lpParam);

    return 0;

    }

    int main(int argc, char *argv[])

    {

    DWORD dwThreadId;

    WORD wVersionRequest=MAKEWORD(2,2);

    WSAStartup(wVersionRequest,&wsaData);

    sockaddr.sin_family=AF_INET;

    sockaddr.sin_addr.S_un.S_addr=inet_addr("192.168.0.18");

    //要扫描的IP

    int bport,eport,curip,threads,tport,intp,modp;

    threads=200; //线程数

    bport=1; //起始端口

    eport=10000; //结束端口

    curport=bport;

    tport=eport-bport;

    intp=tport / threads;

    modp=tport % threads;

    if(tport

    threads=tport;

    for(int j=0;j

    {

    if (j==intp)

    {

    threads=modp+1;

    }

    for(int i=0;i

    {

    CreateThread(NULL,0,ThreadFunc,(LPVOID)curport,0,&dwThreadId);

    Sleep(5);

    }

    }

    WSACleanup();

    return 0;

    }

    VS2005下编译成功!

    分享:

    a4c26d1e5885305701be709a3d33442f.png喜欢

    0

    a4c26d1e5885305701be709a3d33442f.png赠金笔

    加载中,请稍候......

    评论加载中,请稍候...

    发评论

    登录名: 密码: 找回密码 注册记住登录状态

    昵   称:

    评论并转载此博文

    a4c26d1e5885305701be709a3d33442f.png

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    展开全文
  • 多线程端口扫描实现(C语言)源码:#include #include #include #include #include #pragma comment(lib,"WS2_32.lib")DWORD WINAPI ScanThread (LPVOID port);int main (int argc, char* argv[]){WSADATA wsd;int ...

    多线程端口扫描实现(C语言)

    源码:

    #include

    #include

    #include

    #include

    #include

    #pragma comment(lib,"WS2_32.lib")

    DWORD WINAPI ScanThread (LPVOID port);

    int main (int argc, char* argv[])

    {

    WSADATA wsd;

    int port = 0;

    int MAX_PORT;

    clock_t start, end;

    HANDLE handle;

    DWORD dwThreadId;

    //Initialize socket lib

    if (WSAStartup (MAKEWORD (2, 2), &wsd) != 0)

    {

    printf ("WSAStartup failed!\n");

    return 1;

    }

    printf ("请输入要扫描的最大端口:");

    scanf ("%d", &MAX_PORT);

    printf("Scaning......\n");

    start = clock ();

    //扫描的主要代码,根据需要删减

    do{

    handle = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)ScanThread, (LPVOID)port, 0, &dwThreadId);

    port++;

    } while (port < MAX_PORT);

    WaitForSingleObject (handle, INFINITE);//等待最后一个线程结束

    end = clock ();

    int duration = end - start;

    printf ("总耗时 %d ms", duration);

    system ("pause");

    return 0;

    }

    DWORD WINAPI ScanThread (LPVOID port)

    {

    int Port = (int)(LPVOID)port;

    int retval;//调用各种socket函数的返回值

    SOCKET sHost;

    SOCKADDR_IN servAddr;

    sHost = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);

    if (INVALID_SOCKET == sHost)

    {

    printf ("socket failed!\n");

    WSACleanup ();

    return -1;

    }

    servAddr.sin_family = AF_INET;

    servAddr.sin_addr.S_un.S_addr = inet_addr ("127.0.0.1");

    //setsockopt (sHost, IPPROTO_TCP, TCP_MAXRT, (char *)&Timeout, sizeof (Timeout));//设置快速扫描

    servAddr.sin_port = htons (Port);

    retval = connect (sHost, (LPSOCKADDR)&servAddr, sizeof (servAddr));//lpsockaddr is 环路地址

    if (retval == SOCKET_ERROR) {

    printf ("端口%d关闭!\n", Port); //这里不要使用WSACleanup()函数,不然后续的线程会创建不了socket

    closesocket (sHost);

    return -1;

    }

    printf ("端口%d开放!\n", Port);

    closesocket (sHost);

    return 1;

    }

    可以在ScanThread线程函数中设置server的IP来确定要扫描的主机,运行时会提示输入扫描的最大端口。

    1f4aa909a23d

    提示.png

    调用time.h中的clock函数来精确确定扫描的时间,在end之前调用WaitForSingleObject函数等待最后一个线程扫描结束。

    1f4aa909a23d

    定义start,end时钟

    1f4aa909a23d

    调用WaitForSingleObject

    测试结果:

    扫描本地:

    1f4aa909a23d

    本地耗时1265ms

    扫描百度(123.125.115.110):

    1f4aa909a23d

    扫描百度耗时21262ms

    展开全文
  • python多线程端口扫描

    2021-10-13 14:19:15
    #!/usr/bin/python3 # coding UTF-8 import socket ...# 端口扫描函数 def scan(ports): while True: if not ports.empty(): port=ports.get() #取用消息队列内的取用 #异常处理 try: clien
    #!/usr/bin/python3
    # coding UTF-8
    
    import socket
    import queue
    import threading
    
    # 端口扫描函数
    def scan(ports):
        while True:
            if not ports.empty():
                port=ports.get()   #取用消息队列内的取用
                
    #异常处理
            try:            
                client=socket.socket()        #创建客户端
                client.connect(('www.baidu.com',port))    #端口连接
                socket.setdefaulttimeout(1)   #延时1秒
                print(port)   #打印可以连接的端口号,也就是开放的端口
                client.close()   #关闭客户端
            except:
                pass   #连接请求没反应则跳过
    
    # 消息队列
    ports=queue.Queue()
    for p in range(65536):     
        ports.put(p)  #将所有端口放进消息队列,待取用
    
    # 多线程
    threads=[]
    for i in range(10000):
        t=threading.Thread(target=scan,args=(ports,))  #创建线程
        threads.append(t)
    for j in range(len(threads)):    
        threads[j].start()   
    
    展开全文
  • TCP全连接端口扫描

    2021-09-19 21:18:33
    全连接端口扫描器原理介绍普通扫描器高并发扫描器 原理介绍 TCP全连接端口扫描器是最基础的扫描器,它的原理是调用Socket的connect函数连接到目标IP的特定端口上,如果连接成功说明端口是开放的,如果连接失败,说明...
  • 端口扫描代码 C语言

    2013-12-15 16:23:01
    端口扫描代码 C语言 !
  • 这种方法是通过完整的三次握手来去确定目标端口是否可用 acquire()是给线程加信号量,加信号量后其余线程只能等待 release()是释放信号量的,这时其余线程才开始工作 #!/usr/bin/python # -*- coding: utf-8 -*- ...
  • Java多线程编写高效端口扫描

    千次阅读 热门讨论 2017-10-12 23:22:48
    期末课程设计时想了很久也没有想到要编写个什么,刚好那段时间比特币病毒爆发,很高校的毕业生的毕业设计,毕业论文等不幸丢失,这时很多人认识到了电脑端口的重要性,于是我也有了想法,想要编写一个端口扫描器。...
  • 主要是采用了.NET中的异步模型加事件通知(俗称IOCP),可能涉及到重复造轮子的嫌疑,但是确实要比很多端口扫描程序的速度要快上很多,因为没有采用多线程,相对来说线程占用不多,所以内存控制的还算比较不错!...
  • 前言 今天为大家一个利用Python扫描开放主机的TCP端口,首先你要查看其中的开放的端口,创建一个TCP全连接扫描器,一般使用socket来创建连接器的,测试当前主机和端口是否开放,直接使用s...
  • 端口扫描技术向目标系统的TCP/UDP端口发送探测数据包,记录目标系统的响应,通过分析响应来查看该系统处于监听或运行状态的服务。 1. TCP扫描 常见的tcp端口扫描方式有以下三种: 1.1 扫描(connect) 扫描主机尝试...
  • 通过端口扫描我们可以知道目标主机都开放了哪些服务,下面通过TCP connect来实现一个TCP全连接端口扫描器。 一个简单的端口扫描器 #!/usr/bin/python3 # -*- coding: utf-8 -*- from socket import * def ...
  • python scapy的半连接端口扫描

    千次阅读 2019-08-25 14:14:30
    端口扫描常见的一般有以下两种 基于socket的connect全连接扫描(速度快,但是会在对方系统日志留下痕迹) 基于scapy的SYN半连接扫描(不会被扫描的主机发现,速度慢。现在好像防火墙会有痕迹) 详细说明 ...
  • 利用Python编写一个TCP端口扫描器 要求 输入一个主机号和端口列表,并扫描发送数据并获取Banner信息 Step one 目的 获取主机名和端口 知识分解 socket编程 掌握下面两种 服务端 #! /usr/bin/python3.8 # coding:...
  • '''这是一个端口全连接扫描的脚本,扫描结果会比较准确,但是比较费时间''' '''运行环境 Python3 ''' from socket import * def portScanner(host,port): try: s = socket(AF_INET,SOCK_STREAM) #注意参数 s....
  • UDP 端口扫描 要对端口进行扫描需要先了解一下UDP协议的特征 UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会...
  • Java实现端口扫描

    千次阅读 2021-11-09 08:52:48
    通过Java实现一个端口扫描器 原理介绍 端口扫描顾名思义,就是扫描目的资源的端口,来发现...扫描模式:TCP全连接扫描、TCP半连接扫描(待实现) 通过发送空信息,获取开放端口对应服务的应答,获取指纹信息,从而判
  • 《从零开始写漏扫》系列,端口扫描源码,Python3编写,使用socket实现全连接扫描、Scapy实现SYN半连接扫描、TCP FIN扫描、NULL扫描、XMAS扫描、TCP ACK扫描、TCP窗口扫描。使用锁机制实现线程同步,多线程端口扫描,...
  • Python实现端口扫描

    千次阅读 2022-01-04 17:32:10
    # 什么是端口扫描 定义:对一段端口或指定的端口进行扫描。 目的:通过扫描结果可以知道一台计算机上都提供了哪些服务,然后就可以通过所提供的这些服务的己知漏洞就可进行攻击。 原理:当一个主机向远端一个...
  • 实验三 端口扫描实验

    千次阅读 2017-07-11 15:24:58
     编写一个利用全连接端口扫描程序,能显示目标主机的端口开放情况。要求能在命令行输入要扫描的目标主机和端口范围。比如:scan *.*.*.* nnnn-mmmm 二、实验设计  (一)实验内容:  编写一个利用全连接端口...
  • 2、该程序的功能是使用多线程扫描主机端口是否打开 2、创建程序并写入以下代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using
  • 今天为大家一个利用Python扫描开放主机的TCP端口,首先你要查看其中的开放的端口,创建一个TCP全连接扫描器,一般使用socket来创建连接器的,测试当前主机和端口是否开放,直接使用socket连接 导入第三方库   ...
  • SYN端口扫描

    2021-05-06 11:18:49
    由于socke实现的是全连接扫描,因此下面我打算采用Scapy模块的功能来实现SYN半开扫描,进一步提升端口扫描效率。 Scapy sr() sr()函数是用来发送数据包和接收应答。该函数返回一对数据包及其应答,还有无应答的...
  • TCP全开端口扫描

    2021-10-30 16:31:29
    elif(response.getlayer(TCP).flags = 0x14): print("The port %s is Closed" % dst_port) 运行结果: 拓展: 可以将发包和判断回应组合成一个函数,然后使用循环遍历端口号,加上多线程进行快速扫描。源码赞不提供...
  • 扫描主要分s扫描,和tcp扫描,S扫描...以下介绍的也只是tcp多线程,单网段扫描了(由于时间久了也懒得改了)   程序界面如下: 程序通过启动另外一个线程来扫描,其中判断ip另端主机是否存在,是通过ping
  • Android系统端口扫描器编写初探

    千次阅读 2021-05-27 08:56:43
    最近,很想在安卓手机上玩一下端口扫描器。再者,之前没有写过能运行于Android系统的端口扫描器,于是想写一个出来。扫描器原理及安卓平台上实现方式简析我们知道端口有两种,UDP和TCP。入侵者如果想要探测目标机...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,201
精华内容 6,080
关键字:

多线程全连接端口扫描c