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()