欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python實(shí)現(xiàn)的多線程端口掃描工具分享

系統(tǒng) 1985 0

昨晚今晚寫了兩晚,總算把Py Port Scanner 寫完了,姑且稱之為0.1版本,算是一個(gè)Python多線程端口掃描工具。

水平有限,實(shí)話中間有一些困惑和不解的地方,代碼可能也寫的比較亂。有些問(wèn)題并未找到很好的解決方法,還望大家諒解。速度大家自己試驗(yàn),我感覺還行。

送上效果圖兩份,分別是掃單IP和掃IP段:

Python實(shí)現(xiàn)的多線程端口掃描工具分享_第1張圖片

Python實(shí)現(xiàn)的多線程端口掃描工具分享_第2張圖片

源碼:

復(fù)制代碼 代碼如下:

# -*- coding: utf-8 -*-
__author__ = 'Phtih0n'
import threading, socket, sys, cmd, os, Queue

#掃描常用端口
PortList = [21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080, 9015]
#得到一個(gè)隊(duì)列
def GetQueue(list):
??? PortQueue = Queue.Queue(65535)
??? for p in list:
??????? PortQueue.put(p)
??? return PortQueue

#單IP掃描線程個(gè)數(shù)
nThread = 20
#線程鎖
lock = threading.Lock()
#超時(shí)時(shí)間
Timeout = 3.0
#打開的端口列表
OpenPort = []

class ScanThread(threading.Thread):
??? def __init__(self, scanIP):
??????? threading.Thread.__init__(self)
??????? self.IP = scanIP

??? def Ping(self, Port):
??????? global OpenPort, lock, Timeout
??????? sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
??????? sock.settimeout(Timeout)
??????? address = (self.IP, Port)
??????? try:
??????????? sock.connect(address)
??????? except:
??????????? sock.close()
??????????? return False
??????? sock.close()
??????? OpenPort.append(Port)
??????? if lock.acquire():
??????????? print "IP:%s? Port:%d" % (self.IP, Port)
??????????? lock.release()
??????? return True


class ScanThreadSingle(ScanThread):
??? def __init__(self, scanIP, SingleQueue):
??????? ScanThread.__init__(self, scanIP)
??????? self.SingleQueue = SingleQueue

??? def run(self):
??????? while not self.SingleQueue.empty():
??????????? p = self.SingleQueue.get()
??????????? self.Ping(p)


class ScanThreadMulti(ScanThread):
??? def __init__(self, scanIP, PortList):
??????? ScanThread.__init__(self, scanIP)
??????? self.List = PortList[:]

??? def run(self):
??????? for p in self.List:
??????????? self.Ping(p)

class Shell(cmd.Cmd):
??? u'''Py Port Scanner 0.1 使用說(shuō)明:
??? port [port..] 設(shè)置掃描的端口,用逗號(hào)分隔。
??????? 默認(rèn):21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080, 9015
??????? example:port 21,23,25
??????? example: port 1000..2000
??????? example: port 80,443,1000..1500
??? scan [IP] 掃描某一IP地址
??????? example: scan 192.168.1.5
??? search [IP begin]-[IP end] 掃描某一IP段
??????? example: search 192.168.1.1-192.168.1.100
??? time [timeout] 設(shè)置超時(shí)時(shí)間,默認(rèn)為3秒
??????? example: time 5
??? cls 清楚屏幕內(nèi)容
??? listport 打印端口列表
??? help 打開本幫助
??????? '''
??? def __init__(self):
??????? cmd.Cmd.__init__(self)
??????? reload(sys)
??????? sys.setdefaultencoding('utf-8')
??????? self.prompt = "Port Scan >>"
??????? self.intro = "Py Port Scanner 0.1"

??? def do_EOF(self, line):
??????? return True

??? def do_help(self, line):
??????? print self.__doc__

??? #設(shè)置端口
??? def do_port(self, line):
??????? global PortList
??????? PortList = []
??????? ListTmp = line.split(',')
??????? for port in ListTmp:
??????????? if port.find("..") < 0:
??????????????? if not port.isdigit():
??????????????????? print "輸入錯(cuò)誤"
??????????????????? return False
??????????????? PortList.append(int(port))
??????????? else:
??????????????? RangeLst = port.split("..")
??????????????? if not (RangeLst[0].isdigit() and RangeLst[1].isdigit()):
??????????????????? raise ValueError
??????????????????? exit()
??????????????? for i in range(int(RangeLst[0]), int(RangeLst[1])):
??????????????????? PortList.append(i)

??? def do_scan(self, line):
??????? global nThread, PortList
??????? ThreadList = []
??????? strIP = line
??????? SingleQueue = GetQueue(PortList)
??????? for i in range(0, nThread):
??????????? t = ScanThreadSingle(strIP, SingleQueue)
??????????? ThreadList.append(t)
??????? for t in ThreadList:
??????????? t.start()
??????? for t in ThreadList:
??????????? t.join()

??? def do_search(self, line):
??????? global nThread, PortList
??????? ThreadList = []
??????? (BeginIP, EndIP) = line.split("-")
??????? try:
??????????? socket.inet_aton(BeginIP)
??????????? socket.inet_aton(EndIP)
??????? except:
??????????? print "輸入錯(cuò)誤"
??????????? return
??????? IPRange = BeginIP[0:BeginIP.rfind('.')]
??????? begin = BeginIP[BeginIP.rfind('.') + 1:]
??????? end = EndIP[EndIP.rfind('.') + 1:]
??????? for i in range(int(begin), int(end)):
??????????? strIP = "%s.%s" % (IPRange, i)
??????????? t = ScanThreadMulti(strIP, PortList)
??????????? ThreadList.append(t)
??????? for t in ThreadList:
??????????? t.start()
??????? for t in ThreadList:
??????????? t.join()

??? def do_listport(self, line):
??????? global PortList
??????? for p in PortList:
??????????? print p,
??????? print '\n'

??? def do_time(self, line):
??????? global Timeout
??????? try:
??????????? Timeout = float(line)
??????? except:
??????????? print u"參數(shù)錯(cuò)誤"

??? def do_cls(self, line):
??????? os.system("cls")


if '__main__' == __name__:
??? try:
??????? os.system("cls")
??????? shell = Shell()
??????? shell.cmdloop()
??? except:
??????? exit()


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品va在线观看无 | 一级观看免费完整版视频 | 91成人影院| 日韩一区二区三区在线观看 | 日韩欧美一级大片 | 日韩免费一区二区三区 | 色涩亚洲 | 中国女警察一级毛片视频 | 久久99精品视香蕉蕉 | 成人午夜视频在线播放 | 天天天操 | 亚洲国产中文字幕 | 亚洲国产精品99久久久久久久久 | 日韩高清不卡 | 久久综合亚洲色综合 | 看片免费黄 | 播播网色播播 | 成人午夜免费视频毛片 | 亚洲国产精品成 | 久www| 国产午夜视频 | 日本一级高清不卡视频在线 | 99国产精品视频免费观看 | 欧美a在线 | 91看片入口| 国产美女精品 | 亚洲AV久久综合无码东京 | 久久精品无码一区二区日韩av | 黑人精品欧美一区二区蜜桃 | 亚洲精品久久AV无码蜜桃 | www.天天操| 911福利视频 | 黑人精品 | 99热在线观看免费 | 91久久国产| 久操精品在线观看 | 夜夜爽爽| 日韩日日夜夜 | 91福利免费体验区观看区 | 亚洲欧美视频一区 | 一级黄色毛片播放 |