import threading
import time
from socket import *
class ScanTcpPort:
def __init__(self):
self.port = 0
self.lock = threading.Lock()
setdefaulttimeout(1)
self.f = open('scanportlog','w')
def __del__( self ):
self.f.close()
def savelog(self,host):
self.f.write('扫描的ip:%s\r\n' % host)
def scan(self,host,threadnum):
self.lock.acquire()
self.port += 1
#num = self.port
try:
s = socket(AF_INET,SOCK_STREAM)
s.connect((host,self.port))
log='thread%d:port %d open' % (threadnum,self.port)
print(log)
self.f.write(log+"\r\n")
#self.f.write("\r\n")
s.close()
except:
log='thread%d:port %d close' % (threadnum,self.port)
print(log)
self.f.write(log+"\r\n")
#self.f.write("\r\n")
self.lock.release()
return self.port
class jdThread(threading.Thread):
def __init__(self,item,ip,endport):
threading.Thread.__init__(self)
self.item = item
self.ip = ip
self.endport = endport
def run(self):
while True:
#time.sleep(0.1)
value = n.scan(self.ip,self.item)
if value > self.endport:
return
n = ScanTcpPort()
def main():
ip=input("请输入ip地址:")
portlimit=int(input("请输入要扫描到的端口号:"))
n.savelog(ip)
for item in range(5):
t = jdThread(item,ip,portlimit)
t.start()
#t.join()#使线程一个一个执行
if __name__ == '__main__':
main()
import time
from socket import *
class ScanTcpPort:
def __init__(self):
self.port = 0
self.lock = threading.Lock()
setdefaulttimeout(1)
self.f = open('scanportlog','w')
def __del__( self ):
self.f.close()
def savelog(self,host):
self.f.write('扫描的ip:%s\r\n' % host)
def scan(self,host,threadnum):
self.lock.acquire()
self.port += 1
#num = self.port
try:
s = socket(AF_INET,SOCK_STREAM)
s.connect((host,self.port))
log='thread%d:port %d open' % (threadnum,self.port)
print(log)
self.f.write(log+"\r\n")
#self.f.write("\r\n")
s.close()
except:
log='thread%d:port %d close' % (threadnum,self.port)
print(log)
self.f.write(log+"\r\n")
#self.f.write("\r\n")
self.lock.release()
return self.port
class jdThread(threading.Thread):
def __init__(self,item,ip,endport):
threading.Thread.__init__(self)
self.item = item
self.ip = ip
self.endport = endport
def run(self):
while True:
#time.sleep(0.1)
value = n.scan(self.ip,self.item)
if value > self.endport:
return
n = ScanTcpPort()
def main():
ip=input("请输入ip地址:")
portlimit=int(input("请输入要扫描到的端口号:"))
n.savelog(ip)
for item in range(5):
t = jdThread(item,ip,portlimit)
t.start()
#t.join()#使线程一个一个执行
if __name__ == '__main__':
main()