主要是在实习当中用到的IP端口扫描的一个操作,python语言,输出到txt文档中,同时显示在dos输出窗口上。
代码:
文件名:port_scan.py
#!/usr/bin/env python
import socket
def check_port(address,port):
s=socket.socket()
try:
s.connect((address,port))
return True
except socket.error,e:
return False
def check_server(address, start_port, end_port):
port = start_port
while(port<=end_port):
check = check_port(address, port)
if (check):
f1.write('Server %s Port %d is on' % (address, port)+"\n")
print 'Server %s Port %d is on' % (address, port)
port=port+1
if __name__=='__main__':
f1 = open("C:\Users\Administrator\Desktop\saomiao/xxx.txt", "a")
from optparse import OptionParser
parser=OptionParser()
parser.add_option("-a","--address",dest="address",default='localhost',help="Address for server",metavar="ADDRESS")
parser.add_option("-f","--file",dest="file",default='',help="Address list",metavar="LIST")
parser.add_option("-s","--start",dest="start_port",type="int",default=80,help="start port",metavar="SPORT")
parser.add_option("-e","--end",dest="end_port",type="int",default=80,help="end port",metavar="EPORT")
(options,args)=parser.parse_args()
print 'options: %s, args: %s' % (options, args)
port=options.start_port
if (options.file == ''):
check_server(options.address, options.start_port, options.end_port)
else:
f = open(options.file,'r')
currentServer = f.readline().strip()
while(currentServer):
#print 'server %s' % currentServer
check_server(currentServer, options.start_port, options.end_port)
currentServer = f.readline().strip()
f.close()
f1.close()
代码注意事项:1.写入的那个txt文件前面是/而不是\不然容易当成转义字符
使用方法:
1.dos中进入port_scan.py路径,用cd(空格)路径名称
2.输入命令python port_scan.py -f ip.txt (ip.txt是你需要扫描的ip清单)
3.静静等待就可以了,会显示出开放的端口,如扫8080,只要把上面的80都改成8080即可