Se quello che pensi tu è corretto possiamo ancora usare file per capire il tipo di compressione, guarda questo piccolo scriptino per la bash (lo puoi eseguire tutto su una sola riga):
- Codice: Seleziona tutto
file=casa.rar;
tot_byte=$(wc -c $file | cut -d' ' -f1);
i=1;
while tail -c $(( ${tot_byte}-${i} )) $file > casa; [[ $(file casa) == "casa: data" ]];
do
let i++;
done;
file casa
In pratica ogni volta elimina un byte iniziale dal file in esame (casa.rar) salvandolo in un file temporaneo (casa), quindi richiama il comando 'file' per vedere se il suo output è diverso da "casa: data" che è quello che da se il file non viene riconosciuto. Ho fatto una prova creando appunto l'archivio casa.rar e poi editandolo mettendoci davanti altra roba, sembra aver funzionato, alla fine il file temporaneo "casa" contiene l'archivio rar.
Ovviamente se il file è molto grande ti consiglio montare una partizione in memoria ed eseguire tutto in memoria, oppure puoi prendere solo i primi tot byte del file ad esempio con:
- Codice: Seleziona tutto
head -c 200 file_originale > file_temp
e poi eseguire lo script passandogli "file_temp" da analizzare invece di "file_originale", però in questo modo stai attento perchè il comando file potrebbe anche riconoscere un file dai suoi ultimi byte e non sono da quelli iniziali, forse sarebbe meglio fare un:
- Codice: Seleziona tutto
head -c 200 file_originale > file_temp; tail -c 200 file_originale >> file_temp
in questo modo preservi anche gli ultimi byte.
Anche se la vedo dura, puoi sempre provare così

,
Emanuele