python编写的扫描端口工具
import socket,sys
port=[135,149,445,1433,3306,3389,1521]#常用端口
def open(ip,port):
s=socket.socket() #创建并返回socket对象
s.connect((ip,port)) #将socket连接到一个主机上
try:
s.connect((ip,port))
return True
except:
return False
def scan(ip):
for x in port: #遍历port
if open(ip,x):
print("%s host ,%s open"%(ip,x))
else:
print("%s host %s close"%(ip,x))
def rscan(ip):
for x in range(s,e): #遍历多个端口
if open(ip,x):
print("%s host ,%s open" % (ip, x))
else:
print("%s host %s close" % (ip, x))
if len(sys.argv)<2: #如果当前脚本小于三个个参数,显示用法
print('''
This program prints files to the standard output
Any number of files can be specified.
Options include:
python.py scan.py host ports
python.py scan.py 127.0.0.1
python.py scan.py 127.0.0.1 80,90,1433,3306,3389
python.py scan.py 127.0.0.1 80-90
python.py scan.py 127.0.0.1 all
''')
if len(sys.argv)==2: #如果有三个参数(如:python.exe scan.py 127.0.0.1)
scan(sys.argv[1]) #调用scan函数扫描第三个参数(即127.0.0.1)
elif(len(sys.argv)==3): #扫描多个端口并且端口之间用逗号隔开
if ',' in sys.argv[2]:
p=sys.argv[2]
p=p.split(',') #分割开这些端口并转换成列表
for x in p:
a=[]
a.append(int(x))#将字符类型转换成整型
port=a
scan(sys.argv[1])
elif('-' in sys.argv[2]):#扫描a[0]-a[1]之间的所有端口
a=sys.argv[2]
a=a.split('-')
s=int(a[0])
e=int(a[1])
rscan(sys.argv[1])
elif(sys.argv=='all'):#扫描从1-65536的所有端口
s=1
e=65536
rscan(sys.argv[2])
``
在cmd中打开运行就可以了-