TOP
AutoresTOTAL
LecturasSET 19
175715 visitas
- Contenidos - SET Staff
- Editorial - Editor
- Noticias - Rufus T. Firefly
- En linea con... Merce Molist - Hendrix
- Bazar de SET - Varios Autores
- Fuentes en C de los algoritmos A3 y A8 de GSM (Bazar) - Varios autores
- Salvapantallas de Windows y sus claves (Bazar) - Bacterio
- Hackear la TV (Bazar) - Hendrix
- Introduccion a Shiva (Bazar) - Madfran
- Infovia Plus: Nivel Usuario Impertinente (Bazar) - Maikel
- Phreak en la Republica Checa (Bazar) - GND
- Phreak en Alemania (Bazar) - GND
- PBX (Bazar) - Hendrix
- Mente Artificial (Bazar) - Cyclops
- WinGate (Bazar) - BiT^BaNG
- Reflexiones sobre un joven rebelde (Bazar) - Alomejor
- (d)EFECTO 2000 (Bazar) - Garrulo
- BookMarks - SET Staff
- Trucos - SET Staff
- FreeCad v1.0 - +NetBul
- Hacking PlayStation - GND
- Proyectos, peticiones, avisos - SET Staff
- Radio paquete - Qua$ar
- The Bugs Top 10 - SET Staff
- The modem connection - Paseante
- SET Inbox - SET Staff
- Cracking bajo Linux III - SiuL+Hacky
- IP Hijacking v0.1 - Inetd
- Curso de Novell Netware XI, XII y XIII - Madfran
- Shell Scripting - UnderCode
- Historia electronica - GND
- Protocolo SET - Hendrix
- Tu amigo el disco duro - Chessy
- Jugando con tarjetas inteligentes - GND
- V.I.R.U.S. - Garrulo & HackerMatter
- Fuentes Extract - SET Staff
- Llaves PGP - SET Staff
Fuentes Extract
Autor: SET Staff
-[ 0x15 ]-------------------------------------------------------------------- -[ SET-EXT ]----------------------------------------------------------------- -[ by SET Staff ]-----------------------------------------------------SET-19- Bueno, otra vez mas el mismo codigo. Habra que hacerle alguna que otra actualizacion para el proximo numero, que ya va siendo hora de echar una manita, no? Como veis, en esta ocasion no digo nada de novedades ni sorpresas que podais llegar a ver proximamente. Claro, al final nada. Y mejor no hacer anuncios a bombo y platillo de cosas que no se sabe seguro si se van a poder realizar. Pues nada, que lo disfruteis, y si mejorais o incluis alguna nueva funcion al codigo de Route & Sirsyko, pues se la enviais directamente a ellos. Y por supuesto, pasadnos una copia, vale? ;) <++> utils/extract.c /* extract.c by Phrack Staff and sirsyko * * (c) Phrack Magazine, 1997 * 1.8.98 rewritten by route: * - aesthetics * - now accepts file globs * todo: * - more info in tag header (file mode, checksum) * Extracts textfiles from a specially tagged flatfile into a hierarchical * directory strcuture. Use to extract source code from any of the articles * in Phrack Magazine (first appeared in Phrack 50). * * gcc -o extract extract.c * * ./extract file1 file2 file3 ... */ #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <string.h> #include <dirent.h> #define BEGIN_TAG "<++> " #define END_TAG "<-->" #define BT_SIZE strlen(BEGIN_TAG) #define ET_SIZE strlen(END_TAG) struct f_name { u_char name[256]; struct f_name *next; }; int main(int argc, char **argv) { u_char b[256], *bp, *fn; int i, j = 0; FILE *in_p, *out_p = NULL; struct f_name *fn_p = NULL, *head = NULL; if (argc < 2) { printf("Usage: %s file1 file2 ... filen\n", argv[0]); exit(0); } /* * Fill the f_name list with all the files on the commandline (ignoring * argv[0] which is this executable). This includes globs. */ for (i = 1; (fn = argv[i++]); ) { if (!head) { if (!(head = (struct f_name *)malloc(sizeof(struct f_name)))) { perror("malloc"); exit(1); } strncpy(head->name, fn, sizeof(head->name)); head->next = NULL; fn_p = head; } else { if (!(fn_p->next = (struct f_name *)malloc(sizeof(struct f_name)))) { perror("malloc"); exit(1); } fn_p = fn_p->next; strncpy(fn_p->name, fn, sizeof(fn_p->name)); fn_p->next = NULL; } } /* * Sentry node. */ if (!(fn_p->next = (struct f_name *)malloc(sizeof(struct f_name)))) { perror("malloc"); exit(1); } fn_p = fn_p->next; fn_p->next = NULL; /* * Check each file in the f_name list for extraction tags. */ for (fn_p = head; fn_p->next; fn_p = fn_p->next) { if (!(in_p = fopen(fn_p->name, "r"))) { fprintf(stderr, "Could not open input file %s.\n", fn_p->name); continue; } else fprintf(stderr, "Opened %s\n", fn_p->name); while (fgets(b, 256, in_p)) { if (!strncmp (b, BEGIN_TAG, BT_SIZE)) { b[strlen(b) - 1] = 0; /* Now we have a string. */ j++; if ((bp = strchr(b + BT_SIZE + 1, '/'))) { while (bp) { *bp = 0; mkdir(b + BT_SIZE, 0700); *bp = '/'; bp = strchr(bp + 1, '/'); } } if ((out_p = fopen(b + BT_SIZE, "w"))) { printf("- Extracting %s\n", b + BT_SIZE); } else { printf("Could not extract '%s'.\n", b + BT_SIZE); continue; } } else if (!strncmp (b, END_TAG, ET_SIZE)) { if (out_p) fclose(out_p); else { fprintf(stderr, "Error closing file %s.\n", fn_p->name); continue; } } else if (out_p) { fputs(b, out_p); } } } if (!j) printf("No extraction tags found in list.\n"); else printf("Extracted %d file(s).\n", j); return (0); } /* EOF */ <-->