SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

SET 16

59736 visitas

Fuentes Extract

      2161

Autor: SET Staff
-[ 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 <fichero>
  *
  */

#include <stdio.h>
#include <string.h>
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*