telnet用户名密码验证程序需求帮助,慷慨送分!!!
各位大哥好,在下想编一个检验linux远程登录telnet用户名密码是否正确的程序,但是不知道为什么显示到
"test lines2"之后就停了,因为在下急切需要此程序,所以请各位千万帮忙,绝对送分!程序见下:(一些变量定义等略去)
#include ...
char pala[MAX];
char pala1[MAX];
int lenpala;
int lenpala1;
int i;
FILE *fileres;
int track;
char nulldata[MAX];
char dataval[MAX];
char tempbuf[MAX];
unsigned long resolve(char *host_name) {
struct in_addr addr;
struct hostent *host_ent;
if((addr.s_addr = inet_addr(host_name)) == -1) {
if(!(host_ent = gethostbyname(host_name))) return(0);
memcpy((char *)&addr.s_addr, host_ent->h_addr, host_ent->h_length);
}
return(addr.s_addr);
}
int attack_telnet(char *arg, char *arg1) {
int ret = N;
printf("Begin test for telnet\n");
if ((sock=socket(AF_INET,SOCK_STREAM,0)) < 0) {
printf("Error opening socket: %s\n", strerror(errno));
} else {
HostAttack.sin_port=htons(TELNET);
if(!connect(sock,(struct sockaddr *)&HostAttack, sizeof(HostAttack))) {
bzero(nulldata,sizeof(nulldata));
recv(sock,nulldata,sizeof(nulldata),0);
sprintf(tempbuf,"LOGIN %s\n", arg);
send(sock,tempbuf,strlen(tempbuf),0);
sleep(1);
printf("test lines1!\n");
bzero(nulldata,sizeof(nulldata));
printf("test lines2!\n");
recv(sock,nulldata,sizeof(nulldata),0);
printf("test lines3!\n");
sprintf(tempbuf,"PASS %s\n", arg1);
printf("test lines4!\n");
send(sock,tempbuf,strlen(tempbuf),0);
printf("test lines5!\n");
sleep(5);
printf("test lines6!\n");
recv(sock,dataval,sizeof(dataval),0);
if(strstr(dataval,"last")!=NULL)
ret = Y;
} else {
printf("Error connecting: %s\n", strerror(errno));
}
}
close(sock);
return ret;
}
int checkdata;
int main(int argc, char *argv[]) {
HostAttack.sin_family=AF_INET;
HostAttack.sin_addr.s_addr=resolve("machine7");
printf("begin test\n");
checkdata=attack_telnet("root","password");
if(checkdata==Y) printf("password found\n");
if(checkdata==N) printf("password not found\n");
}