人性化交互式python脚本,采用多线程方式完成linux服务器开放端口扫描:
以下为完整代码:
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
#func: scan the open port of server
#author: youjiaLee
#time: 01/27/2013
import sys
import socket
import thread
import time
#START scanning
openPortNum=0
socket.setdefaulttimeout(3)
def usage():
print ‘‘‘
Usage:
Scan the port of one IP: python scanPort.py -o <ip>
Scan the port of many IP: python scanPort.py -m <ip1,ip2,ip3,ip4 ...>
‘‘‘
print ‘\033[32;1mExit\n\033[0m‘
sys.exit(1)
def socket_port(ip,PORT):
global openPortNum
if PORT > 65535:
print ‘Port scanning beyond the port range,ending of the scan‘
sys.exit()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#s.settimeout(float(1))
result = s.connect_ex((ip,PORT))
if(result == 0):
print ip,u":",PORT,u"is Open"
openPortNum += 1
s.close()
def start_scan(IP):
for port in range(0,65535+1):
thread.start_new_thread(socket_port,(IP,int(port)))
#To ensure that the first operation method in Seeker
time.sleep(0.006)
if __name__ == ‘__main__‘:
t = 0
if len(sys.argv)<2 or sys.argv[1] == ‘-h‘ :
usage()
elif sys.argv[1] == ‘-o‘:
ONE_IP = raw_input(‘Please input ip of scanning: ‘)
t = time.time()
start_scan(ONE_IP)
elif sys.argv[1] == ‘-m‘:
MANY_IP = raw_input(‘Please input many ip of scanning: ‘)
IP_SEG = MANY_IP.split(‘,‘)
t = time.time()
for i in IP_SEG:
start_scan(i)
print ‘‘
print ‘\033[32;1mOpen port total is %s,Scan used time is: %f\n\033[0m‘ % ((openPortNum,time.time()-t))
本文出自 “linux-moniter” 博客,请务必保留此出处http://moniter.blog.51cto.com/2908666/1355004
原文:http://moniter.blog.51cto.com/2908666/1355004