sys模块
内置的sys模块使我们能访问到由python解释器使用或维护的对象,其中包括标志、版本、整形数的最大尺寸、可用的模板、hook路径、标准错误/输入/输出的位置,以及调用解释器的命令行参数。与sys模块交互对创建python脚本非常有帮助。
利用import sys 导入sys模块文件。通过dir()方法查看模块中可用的方法。
sys.argv列表中含有所有的命令行参数。第一个sys.argv[0]元素是python脚本的名称。列表中其余元素中则记录了之后所有的命令行参数。
import sys
print("The command line arguments are:")
for i in sys.argv:
print (i)
print('\n\nThe PYTHON is',sys.path,'\n')
import sys
if len(sys.argv)==1:
filename = sys.argv[0]
print("[+]Reading Vulnerabilities From:"+filename)
import sys
if len(sys.argv)==2:
filename = sys.argv[1]
print("[+]Reading Vulnerabilities From:"+filename)
OS模块
内置的OS模块提供了丰富的适用于Mac、NT或Posix的操作系统的函数。这个模块允许程序独立地与操作系统环境、文件系统、用户数据库以及权限进行交互。
import sys
import os
if len(sys.argv)==2:
filename = sys.argv[1]
if not os.path.isfile(filename):
print ("[-]"+filename+'dose not exist')
exit(0)
if not os.access(filename,os.R_OK):
print("[-]"+filename+'access denied')
exit(0)
print("[+]Reading Vulnerabilities From:"+filename)
对脚本作以优化。
import socket
import os
import sys
def retBanner(ip,port):
try:
socket.setdefaulttimeout(2)
s = socket.socket()
s.connect((ip,port))
banner = str(s.recv(1024))
return banner
except:
return
def checkVulnes(banner,filename):
f=open(filename,'r')
for line in f.readlines():
if line.strip('\n') in banner:
print("[+]server is vulunerable:"+banner.strip("\n"))
def main():
if len(sys.argv)==2:
filename = sys.argv[1]
if not os.path.isfile(filename):
print ("[-]"+filename+"dose not exist")
exit(0)
if not os.access(filename,os.R_OK):
print("[-]"+filename+"access denied")
exit(0)
else:
portList = [21]
for x in range(219,220):
ip = "192.168.0."+str(x)
for port in portList:
banner = retBanner(ip,port)
if banner:
print ("[+]"+ip+":"+banner)
checkVulnes(banner,filename)
else:
print("[-] Usage:"+str(sys.argv[0])+'<vuln filename>')
exit(0)
if __name__ == '__main__':
main()