-[ 0x13 ]-------------------------------------------------------------------- -[ SET-EXT ]----------------------------------------------------------------- -[ by SET Staff ]-----------------------------------------------------SET-16- Aqui teneis una ligera modificacion de la primera version de la utilidad para extraer los fuentes de la ezine. Es una modificacion del extract incluido en Phrack. Yo lo he probado, y funciona. Si teneis algun problema o preferis algun lenguaje, teneis dos opciones: esperar a SET 17, o usar las versiones que aparecen en el ultimo numero de Phrack, el 53. <++> utils/set-ext.c /* set-ext.c by Falken para SET * * SET - Saqueadores Edicion Tecnica, 1998 * * Extrae fragmentos especialmente marcados en una estructura jerarquica de * directorios. Usar para extraer los fuentes incluidos en algunos de los * articulos de SET. Compatible con el programa ’extract.c’ aparecido en * Phrack 50. * * UNIX: gcc -o set-ext set-ext.c * DOS/Windows: Cualquier compilador de C * * SET-EXT * */ #include #include void extraer (char *nombre) { char *c = "<++> ", *f = "<-->", b[256], *bp; FILE *e, *s = NULL; int l, n, i = 0; l = strlen(c); n = strlen(f); if ( !(e = fopen (nombre, "r"))) { printf ("No se pudo abrir %s.\n", nombre); return; } while (fgets (b, 256, e)) { if (!strncmp (b, c, l)) { b [strlen (b) - 1] = ’\0’; if ((bp = strchr (b + l + 1, ’/’))) while (bp) { *bp = ’\0’; mkdir (b + l, 0700); *bp = ’/’; bp = strchr (bp + 1, ’/’); } if ((s = fopen (b + l, "w"))) printf ("- Extrayendo %s\n", b + l); else { printf ("No se puede extraer ’%s’\n", b + l); return; } } else if (!strncmp (b, f, n)) { if (s) fclose (s); else { printf ("Error cerrando fichero.\n"); return; } } else if (s) { fputs (b, s); i++; } } if (!i) printf ("No se encontraron etiquetas de extraccion.\n"); fclose (e); } int main (int argc, char **argv) { int indice = 0; char name[256]; printf ("\nSET-EXT * Utilidad de extracion de SET * Version 1.2 * 15/6/1998"); printf ("\nFirst published in/Publicado por primera vez en: SET 13"); printf ("\nWritten by/Escrito por: Falken\n\n"); if (argc < 2) { printf ("Deja en blanco para salir\n\n"); do { *name = NULL; printf ("Fichero a escanear: "); gets (name); if (*name) extraer (name); } while (*name); } else if (argc >= 2) for (indice = 2; indice <= argc; indice++) extraer (argv [indice - 1]); return (0); } <--> *EOF*