memoryn70 Pubblicato: 22 Giugno 2009 Segnalazione Share Pubblicato: 22 Giugno 2009 (modificato) Ciao! Sapete con l' introduzione dei plugin con WinFile, Snake soprattutto ha implementato molti formati tra cui gif,mbm,ota ecc... Io,invece, volevo scoprire il formato dei file di backup .arc (quelli che si creano con l'applicazione Memory Card): infatti più di una volta capita di voler estrarre solo alcuni file o comunque una parte dell'archivio. Inanzitutto ho aperto il file con un hex editor e ho visto i vari percorsi. Ho immaginato che tra i percorsi ci sia il blocco del contenuto dei file (infatti poi si è rivelato cosi). Il problema che non è semplicemente una copia del file, bensi sono byte "a caso", si poteva pensare. Invece no! Ho pensato che il contenuto sia zipppato: è proprio cosi! Allora ho provato a zippare con python una lettera a vedere cosa mi da in output ("a".encode('zlib')). Mi da una stringa molto più lunga di un solo carattere e, da notare, questa stringa contiene all'inizio dei byte che identificano la compressione e sono sempre quelli. Cosi gli ho cercati nel file: esistono! Allora ho provato a estrarre quella parte di byte " a mano " e a decomprimerli: ....tata! Il file txt sono riuscito a leggerlo! Ora però dovevo scoprire come fare a capire bene l'inizio, la fine del blocco dati, la lunghezza del percorso ecc...Con un po di pazienza e intuito ho trovato il significato di svariati byte e stringhe di byte. Cosi ecco che ho fatto una piccola libreria...funziona! E ho adirittura provato ad estrarre tutto con successo. Descrizione formato file Dovrebbe andare bene per tutti i 2nd edition: se qualcuno prova su vari device sarei contento...anche su 3rd! INIZIO Primo byte (sempre \x00 ???) Sucessivi 4 byte (long)-> Totale files Dopo altri 10 byte, un byte che dichiara la lunghezza del nome del file (primo) Alla fine del nome del file e dopo altri 10 byte, abbiamo 4 byte che indicano la dimensione scompressa e dopo altri 4 byte che indicano la dimensione compressa. La dimensione compressa sono i byte da leggere subito dopo e decomprimere. Alla fine del "blocco dati" si ricomincia con il byte della lunghezza del nome del file e via cosi fino alla fine, n volte dove n è il numero dei files, all'inizio. Verso la fine del file arc (6 bytes prima) c'è una sigla che non codifica niente ma indica il modello su cui il backup si può applicare (immagino) Su N70 è RM8405 (rm84 è il modello che si vede con *#0000#). Ecco qui P.S: a scovare questo non ci ho messo nemmeno tanto, praticamente meno di una giornata! Anche perchè in questo periodo sono spesso via... Allego la libreria in python! Si può usare sia sul telefono che sul pc (dove ho fatto le prove) Praticamente ha una classe arc. esempio di uso: import arc_file a=arc_file.arc("E:\\Backup\\Backup.arc") #Prima di fare tutte le operazioni bisogna fare load! a.load() #Carica tutti i file #Tutte azzerate se non si chiama load() a.filelist #Lista dei files (lista unicode) a.numfiles #Numero files a.loaded #Interna: 1 se già chiamata load() a.data #Dizionario: Nome File: [posizione blocco dati nel file arc (assoluta),lunghezza blocco dati, dimensione blocco dati scompressa] a.real_size #Totale dimensione scompressa a.filename #nome file arc a.close() #Chiude il file a.get(n) #Ritorna il contenuto scompresso di un file dell'archivio ''Codice get()'' s.file.seek(s.data[n][0]) return s.file.read(s.data[n][1]).decode('zlib') a.file #file object arc arc_file.zip Modificato 23 Giugno 2009 da memoryn70 Link to comment Condividi su altri siti More sharing options...
memoryn70 Pubblicato: 22 Giugno 2009 Autore Segnalazione Share Pubblicato: 22 Giugno 2009 ...per estrarre tutto: #TESTS f=arc("file arc") f.load() print f.filelist #print f.data print f.numfiles print len(f.filelist) #print f.get(f.filelist[-2]) print f.filesize print f.real_size t=0 import os #EXTRACT for fn in f.filelist: bytes_written=0 fn1=fn.replace(u'C:\\',u'E:\\prova\\') #root di destinazione try: os.makedirs(os.path.split(fn1)[0]) except: pass bw=open(fn1,'wb') bw.write(f.get(fn)) #preso da sisboom...servirebbe a evitare di caricare tutto in memoria # zlib_class = zlib.decompressobj() # f.file.seek(f.data[fn][0]) # while bytes_written < f.data[fn][2]: # temp_bytes = f.file.read(10000) #valore da verificare # bytes_written += len(temp_bytes) # temp_bytes = zlib_class.decompress(temp_bytes) #Decomprimi l'oggetto # bw.write(temp_bytes) bw.close() Link to comment Condividi su altri siti More sharing options...
memoryn70 Pubblicato: 26 Giugno 2009 Autore Segnalazione Share Pubblicato: 26 Giugno 2009 Posto il plugin che ho fatto per WinFile (va bene dalla versione 1.03, cmq installate sempre l'ultima ) Arc Plugin for WinFile v 0.2 Features: -Esplora e apre i file di backup dei telefoni Symbian (2nd edition tutti??) -Visualizza dettagli: dimensione, dimensione scompressa, file totali e modello con il quale il backup si è creato -Permette l'estrazione dei file (non l'apertura diretta, altrimenti sarebbe buggosa fino a che non implemento un supporto migliore) -L'estrazione dei file può essere: singola; selezionati; cartelle; totale -Mentre estrae viene visualizzata una barra di avanzamento che in tutti i casi si basa sulla dimensione da estrarre,per avere l'idea corretta di quanto manca o se si è bloccato qualcosa. -Possibilità di annullare l'estrazione (cancellando l'ultimo file estratto parzialmente) Queste funzioni di estrazione sono venute bene e le implementerò anche nel plugin degli archivi zip. P.S: se non vi serve il codice sul cellulare, installatevi il file arc.pyc in Plugins\fileopen: sarà più veloce ad aprirsi e consuma meno ram. Infatti nella prossima versione di wf tutti i pllugin saranno compilati (i source li metto in uno zip nella cartella plugins) arc.zip Link to comment Condividi su altri siti More sharing options...
memoryn70 Pubblicato: 27 Luglio 2009 Autore Segnalazione Share Pubblicato: 27 Luglio 2009 anche io avevo provato a capire il formato e alla fine avevo rinunciato pensando che fosse un formato proprietario chiuso..invece sei addirittura riuscito a creare un plugin per il tuo programma! davvero utile! complimenti! Eh si alla fine sono riuscito Grazie Link to comment Condividi su altri siti More sharing options...
Simon88 Pubblicato: 27 Luglio 2009 Segnalazione Share Pubblicato: 27 Luglio 2009 Eh si alla fine sono riuscito Grazie Grande Memory è una vita che cercavo qualcosa del genere. Anche io avevo provato tempo fa a capirci qualcosa su questo tipo di file con un editor hex; poi però avevo lasciato perdere dato che non venivo a capo di nulla praticamente. Ancora Complimenti!! Link to comment Condividi su altri siti More sharing options...
gionniweb Pubblicato: 20 Febbraio 2010 Segnalazione Share Pubblicato: 20 Febbraio 2010 Eh si alla fine sono riuscito Grazie domandone...sei capace di modificare il file arc??? aggiungendo ad esempio il percorso c\sys\bin....il cell lo accetterebbe???sarebbe moooolto comodo fare un backup con già i programmi istallati...o almeno la craccatura del cell... Link to comment Condividi su altri siti More sharing options...
madhacker Pubblicato: 22 Febbraio 2010 Segnalazione Share Pubblicato: 22 Febbraio 2010 da quanto ne so, questo plugin funziona per i file .arc dei 2nd edition. Link to comment Condividi su altri siti More sharing options...
alemana Pubblicato: 28 Ottobre 2011 Segnalazione Share Pubblicato: 28 Ottobre 2011 Gentili utento non so se sto postando nel posto giusto e mi scuso anticipatamente se non lo fosse. volevo sapere se qualcuno ha acquistato la versione completa di Noki. perchè usando la versione trial arriva a leggere solo fino a 30 sms del file bacup.arc. Accetto suggerimenti. Grazie Link to comment Condividi su altri siti More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Accedi Ora