Newsgroup: it.comp.sicurezza.varie
Titolo: Cercare file nel file

Durante la fase di recupero di file jpg ed avi da una memory card per 
fotocamera digitale, mi e' venuto fuori un file ".jpg" enorme da 908 Mb 
dove, presumo all'interno, ci siano nascoste tutte le altre jpeg ed avi che 
non riesco ad estrarre. Esistono programmi che recuperano "files nel file"? 



Hum. Nel caso dei JPEG puoi provare con un chunker caricato con la
sequenza "ff d8 ff e0 00 10 4a 46 49 46". Non sono sicuro che vada
bene per tutti i jpeg, visto che il secondo blocco potrebbe anche,
AFAIK, essere un E1. Avendo un JPEG di quella macchina potrei fare
qualcosa di meglio, ma prova con questo. Prende un file, ed estrae
tutto quello che assomiglia a un JPG (sperando non sia frammentato
se no c'e' poco da fare), salvandolo come chunk0, chunk1, ... .
Poi, dovrai aprire una dopo l'altra le immagini JPEG e risalvarle,
per liberarti della spazzatura che ci sara' incollata dietro.
Per gli AVI il programma e' tanticchia piu' complesso.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned char   sequence[] = { 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 'J',
'F', 'I', 'F' };
int main(int argc, char **argv)
{
        FILE    *in;
        FILE    *out    = NULL;
        unsigned char c;
        char    chunk[256];
        int     chunk_n = 0;
        size_t  seqptr  = 0;
        if (argc != 2)
        {
                printf("Syntax: %s infile\n", argv[0]);
                exit(0);
        }
        in      = fopen(argv[1], "rb");
        while(!feof(in))
        {
                int eof;
                c = (eof = fgetc(in));
                if (eof == EOF)
                        break;
                if (c == sequence[seqptr])
                {
                        if (++seqptr == sizeof(sequence))
                        {
                                if (out) fclose(out);
                                snprintf(chunk, sizeof(chunk),
"chunk%d.jpg", chunk_n++);
                                if (NULL == (out = fopen(chunk, "wb")))
                               {
                                        fprintf(stderr, "cannot open
%s\n", chunk);
                                        break;
                                }
                                fwrite(sequence, 1, seqptr, out);
                                seqptr = 0;
                        }
                        continue;
                }
                else
                {
                        if (seqptr && out)
                        {
                                fwrite(sequence, 1, seqptr, out);
                                seqptr = 0;
                        }
                }
                if (out) fputc(c, out);
        }
        if (out) fclose(out);
        fclose(in);
        return EXIT_SUCCESS;
}
(Dice: e la sicurezza cosa c'entra? Be', IMHO magari c'entra).
Leonardo elicante mushky forensicalmente
-- 
Dawn is near, the time is short (Human aircraft! Hard to port!)
We eight reindeers of the night work as one in silent flight.
Let not one damn house pass by (Who taught that guy how to fly?)
Each year sees more girls and boys: how many of them can we bring toys?

 ha scritto nel messaggio 
news:slhoh2h1qgf8hj74c...@4ax.com...
Pensavo in qualcosa di piu' immediato. Dovrei compilarlo in VisualC? 


http://www.pcinspector.de/smart_media_recovery/uk/welcome.htm
E' specializzato per le smart card e simili.
Però devi fare una ricerca nel device, non nei file. Se c'è qualcosa
in JPG di recuperabile te lo trova. Per gli AVI non ti so dire, puoi
vedere lo stesso prog se ti trova qualcosa, oppure se File recovery
riesce a fare di meglio: 
http://www.pcinspector.de/file_recovery/uk/welcome.htm
Ha le funzione apposta e riconosce anche gli AVI, ma non è
specializzato per le card ma per i normali HD.
Entrambi free.
Bye, G. 




Boh, se lavori su Windows e, soprattutto, se ti fidi (e fai male), te
lo posso compilare io.
http://alnitak.ctt.it/lserni/jpegchunk.exe
  (Windows, 4096 bytes)
http://alnitak.ctt.it/lserni/jpegchunk
	    (Linux)
http://alnitak.ctt.it/lserni/jpegchunk.c
    (sorgente)
Ho provato a copiare da DOS, con COPY /B, una dozzina di file misti e
accodati (ok, non DOS, ma l'interfaccia CMD di Windows XP...).
COPY /B file1.jpg+file2.txt+file2.jpg+file4.jpg+file5.html fuffa
e il comando "jpegchunk fuffa" mi genera il numero giusto di JPEG con
tanta spazzatura dietro. jpegtran o un qualsiasi editor li riporta in
condizioni ottimali: altrimenti i file sono visibili, sembrano buoni,
ma sono piu' ingombranti di quel che potrebbero essere.
E ovviamente dentro puo' rimanere traccia di un sacco di *altra* roba
precedentemente presente sul disco... compresi perfino pezzi di altre
immagini: c'e' dei decoder JPEG cui non fa schifo niente. Casomai uno
tiene alla pràivasi, son cose che e' bene aver presenti, nel caso.
A parte questo, in modalita' "va e fa" a me ha funzionato benissimo.
Pero' non mi sento di garantirti niente. Fammi sapere, caso mai ci si
da' un'occhiata (l'email e' buona).
Leonardo
