Newsgroup: it.comp.programmare.win32
Titolo: leggere formato binario sconosciuto

Ciao a tutti,
è una domanda stupida però vorrei avere conferma da chi ne sa più di
me:
se io ho un file in un formato proprietario, ad esempio quello di un
cad,
c'è un modo per capire come è strutturato? 
grazie a tutti
Gianca

 wrote in 
news:1127907075.9...@g14g2000cwa.googlegroups.com
:

Non esiste un sistema "standard" per ricavare la struttura del file.
Si può fare del reverse engineering e cercare di ricavare informazioni 
utili.
Puoi osservare il file usando un editor esadecimale oppure cercare di 
debuggare (o monitorare il comportamento) del programma che lo carica 
per capire come sono strutturate le informazioni.
Generalmente, se si ha a disposizione il programma che genera il 
formato da analizzare, è utile partire con un file semplice (meglio 
ancora vuoto), modificare un particolare o aggiungere un dato e vedere 
le differenze.
Ovviamente la complessità delle operazioni è direttamente collegata 
alla complessità dei dati immagazzinati, al tipo di accesso al file che 
fa il programma (un cad salva il disegno presumibilmente in una 
"botta" sola, un database modifica continuamente i dati, gli indici, 
alloca spazio, lo libera etc.) ed eventualmente all'utilizzo di 
algoritmi di crittografia/compressione.
-- 
Valter Minute
(the reply address of this message is invalid,
but you may be able to guess the right one)

 ha scritto nel messaggio news:1127907075.9...@g14g2000cwa.googlegroups.com...

c'è se hai qualche informazione in merito al formato;
viceversa con il solo file in mano puoi solo visualizzarne in maniera
grezza il contenuto

Gianca
Ti scarichi dalla rete un bel editor esadecimale come per esempio 010
e provi a vedere cosa potrebbe esserci dentro il fle.
Con molta pazienza e tempo,...forse qualcosa ci cavi fuori.
F

 Con molta pazienza e tempo,...forse qualcosa ci cavi fuori.
Questo è l'unico metodo possibile se non hai a disposizione il 
programma che legge/scrive quei file.
In quel caso puoi provare a usare filemon (
www.sysinternals.com
) oppure 
un API monitor (ce ne sono diversi) per vedere che chiamate esegue il 
programma quando legge/scrive il file. Se, ad esempio, legge 135 byte e 
poi fa altre letture a lunghezza variabile, puoi ipotizzare che quei 
135 byte siano un header che descrive in qualche modo il resto del file 
e che le successive letture corrispondano a "blocchi" di informazione 
(ex: gli elementi grafici di un disegno etc.).
Ovviamente il discorso non funziona se il programma ottimizza l'accesso 
al file leggendo/scrivendo a blocchi.


 In quel caso puoi provare a usare filemon (
www.sysinternals.com
)
[...]
Ottimo suggerimento. In generale confermo che č un lavoraccio e che spesso 
conviene contattare la ditta fornitrice del programma e sperare che 
rispondano!
-- 
/* Costantino Grana                                */
main(int c,char**o){char*s=c?"+L7?+;:7?+:OKIK+9?;9=;"
":+9?;:<:;+9?;;;:;+9<:;<::;+RLJ;K9+":1[o],t,a=!c,m;do
for (m=*s-'0',t=a?m/c:m%c;m>>7?c=1<<m+8,!a&&puts(&a)*
*&a:t--;printf("  \0/*"+a));while ((a^=3)||a[++s]);;}
/* Original code due to Chris Brown... impressive! */

se è un formato di cad noto ...dfx ...dwg o qualche altro puoi sperare 
di trovare un visualizzatore in gpl con i sorgenti ....e li ti vai a 
cercare la parte che legge il file.... nn è bello ma forse è + 
sbrigativo che rifarti tu il reverse engeneering del file


 
Ovviamente davo per scontato questo passaggio.
Comunque, come hai giustamente fatto tu, è il caso di ribadire anche 
quello che si da per scontato, e quindi aggiungo:
- ricerca su google (sia web che gruppi)
- ricerca su 
www.wotsit.org
- ricerca sul sito del produttore del software (a volte ci sono dei 
"technical reference" ben nascosti in fondo a qualche directory FTP)
- ricerca di utility (meglio se con codice sorgente) che sono in grado 
di convertire quel formato (o in quel formato) altri formati. Se ci 
sono i sorgenti, sono un buonissimo punto di partenza per capire il 
formato, se non ci sono, si può contattare l'autore e vedere se 
collabora (ovviamente partendo dal presupposto che la ditta fornitrice 
abbia già risposto picche)


 abbia già risposto picche)
L'altro suggerimento da non dare per scontato è verificare (dopo tutto 
quello che hai detto, ma prima di buttarsi nel reverse engineering) che il 
formato non sia compresso con qualche algoritmo standard (ZIP, RAR) e anche 
che non sia solo un formato noto con uno XOR fatto per nasconderlo.
Ricordo che assieme alle cartucce della stampante mi avevano dato un CD di 
Harry Potter con un programma penoso di DTP ma delle bellissime immagini. 
Volevo importarle in Word e usarle lì. Beh, niente da fare, il formato era 
HPG (un improbabile Harry Potter Graphics). Guarda un po' durante il 
caricamento (disassemblatore per windows) e cosa salta fuori una bella 
stringa da xorrare. Risultato: erano GIF.


 stringa da xorrare. Risultato: erano GIF.
MA LOL!!! che minkioni!!! asdasdasd :D
"Harry Potter Graphics" :D
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Grazie a tutti x le risposte, mi avete dato molti spunti..
in pratica io avrei questo file cad; questo tipo di cad al suo interno
ha dei collegamenti ad altri file (ad esempio una tavola che è
collegata a dei pezzi singoli)
io dovrei accedere solo al valore di questi link, e modificarli.
C'è una utility venduta insieme al cad in questione, ma è
estremamente lenta.
Quindi stavo cercando altre strade, anche se mi sa che questa è molto
lunga.
ad ogni modo grazie a tutti

> c'č un modo per capire come č strutturato?
Prova su 
wotsit.org
Ci sono un sacco di link a documenti che descrivono i piů disparati formati 
di file 

Quindi stavo cercando altre strade, anche se mi sa che questa è molto
lunga.
Mmmh... Beh... Se non riesci a fare quello che ti proponevi, puoi creare un 
programma che ti gestisca i riallacci: sostituisci i files con altri files 
(se lui da A apre B e C, e tu hai bisogno che ti apra D e E allora 
semplicemente copi D su B e E su C)