📄 239.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="190.htm">上一层</a>][<a href="240.htm">下一篇</a>]
<hr><p align="left"><small>好久不见,大家好! & mchk.c <br>
---------------------------------------------------------------------------- <br>
---- <br>
xperc 于 2001-3-4 3:05:38 加贴在 绿盟科技论坛(bbs.nsfocus.com)--UNIX系统安全 <br>
: <br>
/* mchk.c <br>
* <br>
* this program is Smtp server Checker. <br>
* Many of Smtp server can use vrfy&expn commands. <br>
* if Smtp server can do , Maybe you can guess Smtp <br>
* user lists. <br>
* Coded by xperc <br>
*/ <br>
#include <stdio.h> <br>
#include <string.h> <br>
#include <sys/types.h> <br>
#include <sys/socket.h> <br>
#include <netinet/in.h> <br>
#include <netdb.h> <br>
#include <unistd.h> <br>
#include <signal.h> <br>
#define FLAG 0x0 <br>
#define SMTP_PORT 25 <br>
#define HOSTNAME 255 <br>
#define BUF_MSG 150 <br>
#define TIMEOUT 2 <br>
int sockfd,flag,eflag,vflag,dflag; <br>
char hostname[HOSTNAME],filename[BUFSIZ],list[BUF_MSG]; <br>
struct hostent *hp; <br>
int man() <br>
{ <br>
puts("------------man------------"); <br>
puts("Open /etc/sendmail.cf"); <br>
puts("find here:\n"); <br>
puts("# privacy flags"); <br>
puts("Change:"); <br>
puts("0 PrivacyOptions=authwarnings"); <br>
puts("To:"); <br>
puts("0 PrivacyOptions=authwarnings,noexpn,novrfy"); <br>
puts("restart your sendmail ..."); <br>
} <br>
int color_msg(char *msg) <br>
{ <br>
printf("\033[31m%s\033[0m\n\a",msg); <br>
} <br>
} <br>
void timeout() <br>
{ <br>
close(sockfd); <br>
} <br>
int smtp_connect(char *host) <br>
{ <br>
struct sockaddr_in sin; <br>
#if FLAG==1 <br>
strncpy(hostname,host,sizeof(hostname)); <br>
#else <br>
gethostname(hostname,sizeof(hostname)); <br>
#endif <br>
if((hp=gethostbyname(hostname))==NULL){ <br>
fprintf(stderr,"%s: Unknow host.\n",hostname); <br>
exit(1); <br>
} <br>
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){ <br>
perror("socket"); <br>
return(-1); <br>
} <br>
sin.sin_family=AF_INET; <br>
sin.sin_port=htons(SMTP_PORT); <br>
bcopy(hp->h_addr,&sin.sin_addr,hp->h_length); <br>
signal(SIGALRM,timeout); <br>
alarm(TIMEOUT); <br>
if(connect(sockfd,(struct sockaddr *)&sin,sizeof(sin))<0){ <br>
perror("connect"); <br>
exit(1); <br>
} <br>
alarm(0); <br>
return(sockfd); <br>
} <br>
int guess_begin(char *host, char *user, int num) <br>
{ <br>
int i,s; <br>
char msg[BUF_MSG],ver[BUF_MSG]; <br>
char expn_chk[BUF_MSG],vrfy_chk[BUF_MSG]; <br>
dflag=0; <br>
if((s=smtp_connect(host))<0) exit(-1); <br>
if(recv(sockfd,msg,sizeof(msg)-1,0)<=0) <br>
exit(-1); <br>
strncpy(ver,msg,sizeof(ver)); <br>
// check expn command ... <br>
#if FLAG==1 <br>
snprintf(msg,sizeof(msg),"expn %s\n",user); <br>
#else <br>
sprintf(msg,"expn root\n"); <br>
#endif <br>
send(sockfd,msg,strlen(msg),0); <br>
if((i=recv(sockfd,msg,sizeof(msg)-1,0))<=0) <br>
exit(-1); <br>
strncpy(expn_chk,msg,sizeof(expn_chk)); <br>
// check vrfy command ... <br>
#if FLAG==1 <br>
snprintf(msg,sizeof(msg),"vrfy %s\n",user); <br>
#else <br>
sprintf(msg,"vrfy root\n"); <br>
#endif <br>
send(sockfd,msg,strlen(msg),0); <br>
if((i=recv(sockfd,msg,sizeof(msg)-1,0))<=0) <br>
exit(-1); <br>
strncpy(vrfy_chk,msg,sizeof(vrfy_chk)); <br>
msg[i]=0; <br>
close(sockfd); <br>
switch(num){ <br>
case 0: <br>
case 0: <br>
printf("--------Version head-------\n"); <br>
printf("%s\n",ver); <br>
printf("----------Report-----------\n"); <br>
flag=0; <br>
if(strstr(expn_chk,"502")==NULL){ <br>
#if FLAG==1 <br>
color_msg("Bingo! Expn Cmd Access OK!"); <br>
eflag=1; <br>
#else <br>
color_msg("Warning: Expn command can access!"); <br>
flag=1; <br>
#endif <br>
}else{ <br>
#if FLAG==1 <br>
puts("Shit! No expn"); <br>
eflag=0; <br>
#else <br>
puts("Expn: no problem."); <br>
#endif <br>
} <br>
if(strstr(vrfy_chk,"252")==NULL){ <br>
#if FLAG==1 <br>
color_msg("Bingo! Vrfy Cmd Access OK!"); <br>
vflag=1; <br>
#else <br>
color_msg("Warning: Vrfy command can access!"); <br>
flag=1; <br>
#endif <br>
}else{ <br>
#if FLAG==1 <br>
puts("fuck!no vrfy!"); <br>
vflag=0; <br>
#else <br>
puts("vrfy: no problem."); <br>
#endif <br>
} <br>
#if FLAG==0 <br>
if(flag==1) man(); <br>
#endif <br>
#if FLAG==1 <br>
break; <br>
#endif <br>
case 1: <br>
if(eflag==1){ <br>
if(strstr(expn_chk,"250")!=NULL) <br>
dflag=1; <br>
}else{ <br>
if(strstr(vrfy_chk,"250")!=NULL) <br>
dflag=1; <br>
} <br>
break; <br>
} <br>
} <br>
int set_list(char *host) <br>
{ <br>
FILE *fp,*log; <br>
register int j; <br>
printf("Enter user list name:"); <br>
scanf("%s",filename); <br>
if((fp=fopen(filename,"r"))==NULL){ <br>
printf("CanNot find userlist: %s\n",filename); <br>
exit(1); <br>
} <br>
if((log=fopen("smtp.log","a"))==NULL){ <br>
printf("Cannot write log file!\n"); <br>
exit(1); <br>
} <br>
printf("wait ... ...\n"); <br>
for(j=0;;j++){ <br>
if(feof(fp)) break; <br>
fscanf(fp,"%s",list); <br>
guess_begin(host,list,1); <br>
if(dflag==1){ <br>
color_msg(list); <br>
strcat(list,"\n"); <br>
fputs(list,log); <br>
} <br>
} <br>
fclose(fp); <br>
fclose(log); <br>
} <br>
int main(int argc, char *argv[]) <br>
{ <br>
char ch; <br>
#if FLAG==1 <br>
if(argc!=3){ <br>
printf("Usage: %s <HostName> <UserName>\n",*argv); <br>
exit(1); <br>
} <br>
guess_begin(argv[1],argv[2],0); <br>
#else <br>
guess_begin(" "," ",0); <br>
#endif <br>
if(eflag!=0 || vflag!=0){ <br>
printf("Do you want go on?(Y/N)"); <br>
if((ch=getchar())!='N') set_list(hostname); <br>
else printf("Done!\n"); <br>
} <br>
exit(0); <br>
} <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="190.htm">上一层</a>][<a href="240.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -