美文网首页
端口扫描器

端口扫描器

作者: KevinCool | 来源:发表于2016-05-12 16:10 被阅读148次

使用argparse包,threading包。
实现线程扫描,还有信号量来避免乱码和失序。
使用screenLock.acquire()进行加锁,如果信号量没有被锁上,线程就有权继续运行,并且输出打印到屏幕上。如果信号量已经被锁定,只能等待持有信号量的线程释放信号量。通过利用信号量来确保在任何给定的时间点上只有一个线程可以打印屏幕。

#coding=utf-8

import argparse
from socket import *
from threading import *
#Semaphore,是负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。
screenLock = Semaphore(value=1)

def connScan(tgtHost,tgtPort):
    try:
        connSkt = socket(AF_INET,SOCK_STREAM)
        connSkt.connect((tgtHost,tgtPort))
        connSkt.send("hello\n")
        results = connSkt.recv(1000)
        #进程上锁,如果信号量可以使用,执行下面代码,如果不能使用,则等待使用
        screenLock.acquire()
        print "%d/tcp open "%tgtPort
        print str(results)
    except:
        screenLock.acquire()
        print "%d/closed"%tgtPort
    finally:
        #结束的时候释放锁
        screenLock.release()
        connSkt.close()

def portScan(tgtHost,tgtPorts):
    try:
        tgtIP = gethostbyname(tgtHost)
    except:
        print "can not solve '%s':Unknown host"%tgtHost
        return
    try:
        tgtName = gethostbyaddr(tgtIP)
        print "Scan result for "+tgtName[0]
    except:
        print "Scan result for "+tgtIP
    setdefaulttimeout(1)
    for tgtPort in tgtPorts:
        t = Thread(target=connScan,args=(tgtHost,int(tgtPort)))
        t.start()

def main():
    '''程序的参数解析,调用函数等'''
    parser = argparse.ArgumentParser()
    parser.add_argument('-H',dest="tgtHost")
    parser.add_argument('-p',dest="tgtPort")
    args = parser.parse_args()
    tgtHost = args.tgtHost
    tgtPorts = args.tgtPort.split(",")
    if (tgtHost==None) | (tgtPorts[0]==None):
        print "you must specify a target host and post"
    print tgtHost
    print tgtPorts
    portScan(tgtHost,tgtPorts)

if __name__=="__main__":
    main()```

相关文章

  • 用Python编写一个高效的端口扫描器

    PyPortScanner python多线程端口扫描器。 输出示例: Github 此端口扫描器的源码,文档及详...

  • 信息收集系列(一)

    最快的端口扫描器 nmap基本上都知道,masscan知道的人可能会少点,但是它是公认的最快的互联网端口扫描器。可...

  • web扫描器

    web扫描器应该包含哪些部分: 1》端口扫描 (masscan, zmap, nmap) 2》端口指纹扫描 (nm...

  • 基于C++的端口扫描器+源码

    VC++端口扫描器源码,可实现单独扫描指定的一个端口,比如80端口,扫描其是否被占用; 扫描指定范围内的端口,比如...

  • 骇客

    扫描器 Nmap扫描器 Nmap是一款针对大型网络的端口扫描工具,同时也使用于单机扫描,它支持Vanilla TC...

  • python脚本解析masscan扫描结果

    masscan简介 开源、免费的端口扫描器,获取主机开放的端口和端口信息。 速度非常快,6分钟可以扫描整个互联网,...

  • 端口扫描器

    使用argparse包,threading包。实现线程扫描,还有信号量来避免乱码和失序。使用screenLock....

  • 【Python与网络2】

    端口扫描 使用Python编写端口扫描器 在Linux系统下ping命令被用于判断与一台主机的网络是否连通,而判断...

  • 端口扫描器源码分析

    1.F-NAScan和RAScan简介 F-NAScan是一款基于Python2的端口扫描器,工具可从github...

  • Python 实现端口扫描器

    适合有一点Python编程基础的学员学习 实现的原理 最简单的端口扫描工具使用TCP连接扫描的方式,即利用操作系统...

网友评论

      本文标题:端口扫描器

      本文链接:https://www.haomeiwen.com/subject/dnrprttx.html