⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 239.htm

📁 unix高级编程原吗
💻 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 + -