Estrarre un’animazione flash (.swf) da un file excel (.xls)

Qualche vostro amico/a vi ha mandato il “classico” file XLS con la “classica” animazione natalizia di auguri fatta in flash?

Se (come me) usate OpenOffice e non MS Office, non riuscite a vederlo perché (giustamente) OpenOffice non sa cosa farsene di un file in flash incluso in un documento excel: vi mostra solo il primo frame, che poi probabilmente sarà l’anteprima che ha generato Office quando l’ha incluso, e altro non potete fare… D’altronde se anche avessimo voluto estrarci il file in flash (.swf) incluso, usando un sistema in cui c’è excel per poi vederlo nel nostro computer  non avremmo avuto migliori prospettive.. perché non c’è modo di farlo tramite l’interfaccia di excel!

Possibile che non ci sia un sistema per riottenere quel flash incluso e potercelo guardare nel browser?
Ma è una domanda retorica: certo che c’è! Tutto quel che ci serve è un semplice editor esadecimale (io per scrivere questo mini-tutorial ho usato HxD ) e un po’ di attenzione.

Pronti? Si parte!

Apriamo con l’editor il nostro file .XLS.

Cerchiamo nel file, a partire dall’inizio, la seguente sequenza di bytes (hex):  46 53 57 (“FWS” in ASCII).
Corrisponde, come potete vedere in queste specifiche, alla “firma” di 3 bytes che si trova sempre all’inizio dei file flash, e se notate altro non è che l’estensione “SWF” a rovescio 🙂

Segnatevi (poi servirà) l’indirizzo a cui trovate la sequenza, cioè per la precisione l’offset cui si trova il primo byte della sequenza rispetto all’inizio del file.

Andate avanti di 4 bytes da quell’offset ed annotatevi, a partire da questa nuova posizione, i 4 bytes che troverete (per esempio “B8 A2 12 00”) perché rappresentano -sempre a quanto si legge nelle specifiche di prima- un intero senza segno a 32 bit  contenente la lunghezza del file SWF scritto a partire dal byte meno significativo fino a quello più significativo (per es. “B8 A2 12 00” significa “0012A2B8” in esadecimale, cioè 1221304 bytes).

Ora che abbiamo la lunghezza non ci resta che scrivere su un altro file quel numero di bytes a partire dall’indirizzo base, cioè quello a cui avevamo individuato la sequenza “FWS”: in HxD ci basterà usare la funzione seleziona blocco, indicare l’indirizzo di partenza e la lunghezza, dare ok, poi fare copia, creare un nuovo file, fare incolla e infine salvare il nuovo file con un nome adatto al suo contenuto, come ad esempio “auguri.swf”.

Et voilà! Trascinando nel browser il file possiamo finalmente goderci i nostri auguri!! =)
Ancora Buon Natale a tutti!! =)