昨晚今晚写了两晚,总算把Py Port Scanner 写完了,姑且称之为0.1版本,算是一个Python多线程端口扫描工具。
水平有限,实话中间有一些困惑和不解的地方,代码可能也写的比较乱。有些问题并未找到很好的解决方法,还望大家谅解。速度大家自己试验,我感觉还行。
送上效果图两份,分别是扫单IP和扫IP段:
源码:
复制代码 代码如下:
# -*- 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]
#得到一个队列
def GetQueue(list):
PortQueue = Queue.Queue(65535)
for p in list:
PortQueue.put(p)
return PortQueue
#单IP扫描线程个数
nThread = 20
#线程锁
lock = threading.Lock()
#超时时间
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 使用说明:
port [port..] 设置扫描的端口,用逗号分隔。
默认: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] 设置超时时间,默认为3秒
example: time 5
cls 清楚屏幕内容
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__
#设置端口
def do_port(self, line):
global PortList
PortList = []
ListTmp = line.split(',')
for port in ListTmp:
if port.find("..") < 0:
if not port.isdigit():
print "输入错误"
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 "输入错误"
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"参数错误"
def do_cls(self, line):
os.system("cls")
if '__main__' == __name__:
try:
os.system("cls")
shell = Shell()
shell.cmdloop()
except:
exit()
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 《原神》「星路拾忆」网页活动壁纸展示
- 群星.2024-祝你幸福!电影原声带【阿里巴巴】【FLAC分轨】
- 于台烟.2004-执着【乾坤唱片】【WAV+CUE】
- 黄品源.2004-感谢·情人(引进版)【滚石】【WAV+CUE】
- 《最终幻想16》评测:游、戏两难全的系列转折
- 《纸嫁衣》五部打包¥104,《鬼泣5》仅需¥44
- 《崩坏:星穹铁道》造物大赛卷出新高度
- 《王菲 菲常传奇 2CD》[WAV+CUE][950MB]
- 《王菲 空灵独味唱腔 非常传奇 紫水晶2CD》[WAV+CUE][860MB]
- 《车载专业测试王1号 极品音质》[WAV/分轨][980MB]
- 炉石传说的国服回归送什么奖励 炉石传说9.25回归最新消息介绍
- 云顶之弈最强阵容汇总2024 云顶之弈最强阵容搭配最新版本
- S14lol全球总决赛在哪观看 lol全球总决赛观赛直播地址汇总
- 黄思婷2011-感谢天[豪记唱片][WAV+CUE]
- 孙淑媚2013-太阳[台湾首版][WAV+CUE]