python---获取banner信息之optparse

一、基础知识

在这里插入图片描述

我们举个例子来说明一下,在Linux下我们使用命令的时候可能会需要参数,有些命令不仅需要参数而且还需要指定一些类型、名字等等,比如:

root@kali:~# find /etc -name "*.config"
/etc/menu-methods/menu.config
/etc/manpath.config
/etc/vmware-caf/pme/config/_previous_/cafenv.config
/etc/X11/Xwrapper.config
以上命令表示,查找/ect文件下的名字后缀未config的文件名称。

那么我们以上脚本的作用是干什么的?就是说我们想让脚本来执行获取banner信息,但是我们希望给脚本加一些参数,比如 -f指定我们对应的文件,-i指定我们要扫描的端口。就跟以上的find命令一样,我们使用命令之后指定一些特定的参数,执行特定的行为。
我们先写一下这个脚本:

#!/usr/bin/python
#coding=utf-8

from optparse import OptionParser
parser=OptionParser()
parser.add_option("-f","--file",type="string",dest="filename")
parser.add_option("-i","--ip",type="string",dest="address")
(options,args)=parser.parse_args()


print options.filename
print options.address
~                       

执行:

root@kali:~# ./36.py  -f /root/4.txt -i 192.168.1.109
/root/4.txt
192.168.1.109

**

二、设置帮助信息

**

在这里插入图片描述

#!/usr/bin/python
#coding=utf-8


from optparse import OptionParser
usage="Usage: %prog -f <filename> -i <ip address>"
parser=OptionParser(usage=usage)
parser.add_option("-f","--file",type="string",dest="filename",help="please input a filename")
parser.add_option("-i","--ip",type="string",dest="address",help="please input a ip")
(options,args)=parser.parse_args()


print options.filename
print options.address

在这里插入图片描述

**

三、改进参数

**

import socket 
import sys
import os
from threading import Thread
from optparse import OptionParser 
def getbanner(IP,port):	
		socket.setdefaulttimeout(2)
		s=socket.socket()
		try:
			s.connect((IP,port))
			banner=s.recv(1024)
			s.close()
			return banner
		except:
			pass
def checkbanner(IP,port):
	banner=getbanner(IP,port)
	if banner:
		if ("2.3.4" in banner):
			print IP + " it is valubale",
		else:
			print IP + " it is not valuable",
	else:
		print  IP + " it not have banner"
if __name__=="__main__":
	usage="Usage:%prog -f <filename> -i <ip address>"
	parser=OptionParser(usage=usage)
	parser.add_option("-f","--f",type="string",dest="filename",help="please input a filename")
	parser.add_option("-i","--ip",type="string",dest="address",help="please input a ip")
	(options,args)=parser.parse_args()
	filename=options.filename
	ip=options.address
	if (ip==None and filename==None):
		print "please input a filename and ip"
		sys.exit()
	if filename:
			if not os.path.exists(filename):
				print "请重新输入"
				sys.exit()
			else:
				port=21
			f=open(filename,'r')
			for i in f.readlines():
				IP=i.strip("\n")
				t=Thread(target=checkbanner,args=(IP,port))
				t.start()
			f.close()
	if ip:
		IP1=ip.split(".")[0] + "." + ip.split(".")[1] +"." + ip.split(".")[2] + "."
		for i in range(1,255):
			IP=IP1 + str(i)
			port=21
			r=Thread(target=checkbanner,args=(IP,port))
			r.start()
import socket 
import sys
import os
from threading import Thread
from optparse import OptionParser 
def getbanner(IP,port):	
		socket.setdefaulttimeout(2)
		s=socket.socket()
		try:
			s.connect((IP,port))
			banner=s.recv(1024)
			s.close()
			return banner
		except:
			pass
def checkbanner(IP,port):
	banner=getbanner(IP,port)
	if banner:
		if ("2.3.4" in banner):
			print IP + " it is valubale",
		else:
			print IP + " it is not valuable",
	else:
		print  IP + " it not have banner"
if __name__=="__main__":
	usage="Usage:%prog -f <filename> -i <ip address>"
	parser=OptionParser(usage=usage)
	parser.add_option("-f","--f",type="string",dest="filename",help="please input a filename")
	parser.add_option("-i","--ip",type="string",dest="address",help="please input a ip")
	(options,args)=parser.parse_args()
	filename=options.filename
	ip=options.address
	if (ip==None and filename==None):
		print "please input a filename and ip"
		sys.exit()
	if filename:
			if not os.path.exists(filename):
				print "请重新输入"
				sys.exit()
			else:
				port=21
			f=open(filename,'r')
			for i in f.readlines():
				IP=i.strip("\n")
				t=Thread(target=checkbanner,args=(IP,port))
				t.start()
			f.close()
	if ip:
		IP=ip
		port=21
		r=Thread(target=checkbanner,args=(IP,port))
		r.start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值