-[ 0x12 ]-------------------------------------------------------------------- -[ SET-EXT ]----------------------------------------------------------------- -[ by SET Staff ]-----------------------------------------------------SET-13- Aqui teneis 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 14, o usar las versiones que aparecen en el ultimo numero de Phrack, el 52. <++> 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 extrare 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; printf ("SET Split by Falken\n"); printf ("SET - Saqueadores Edicion Tecnica, 1998\n"); printf ("---------------------------------------\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); } <-->