sys.argv入力セクションを変更する前は、このスクリプトは入力を提供する静的ファイルで動作していました...なんらかの理由で理解できません... 2つの引数を使用してスクリプトを実行すると、./scriptnamevuln_bannersが終了します。
#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python
import socket
import sys
import os
def retBanner(ip, port):
try:
socket.setdefaulttimeout(2)
s = socket.socket()
s.connect((ip, port))
banner = s.recv(1024)
return banner
except:
return
def checkVulns(banner, filename):
f = open(filename, 'r')
for line in f.readlines():
if line.strip('\n') in banner:
print '[-] Server is vulnerable:'+ banner.strip('\n')
def main():
if len(sys.argv) == 2:
filename = sys.argv[1]
if not os.path.isfile(filename):
print '[-] ' + filename + ' does not exist'
exit(0)
if not os.access(filename, os.R_OK):
print '[-] '+ filename + 'Access Denied'
exit(0)
else:
print '[-] Usage: ' + str(sys.argv[0]) + '<vuln-filename>'
exit(0)
portList = [21,22,25,80,110]
for x in range(1, 100):
ip = '172.17.1.'+ str(x)
for port in portList:
print 'Checking ' + str(ip) + ' on port '+ str(port)
banner = retBanner(ip, port)
if banner:
print '[+] ' + ip + ': ' + banner
checkVulns(banner, filename)
if __name__ == '__main__':
main()