Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
[iPhone] Unire sms.db da iOS 1 a iOS 3 - Editor SQL
#1
Ciao Mattia,
ti scrivo per chiederti una informazione per quanto concerne i file degli sms per iphone (mi riferisco al file sms.db)
Non so se tu possiedi un iphone, in ogni caso i msg vengono salvati tutti in questo file in sql...
Questo file è possibile ripristinarlo su un iphone riposizionandolo nel dovuto percorso... sembra però che ogni iOS dell'iphone salvi con una diversa struttura questi sms.db...
ho trovato QUESTA pagina dove è possibile unire due sms.db in un unico file... (come si legge nelle info accetta il file.db dalla versione iOS3 in su) e avendo io l'esigenza di fondere un vecchio sms.db a quello che utilizzo attualmente col mio iphone, ho fatto la prova ma mi ha dato errore poichè il file più vecchio è di un IOS precedente alla versione 3.
Il mio problema è che il db che voglio ripristinare è del primo iOS (versione 1.1.4). Non sapendo con che software aprire i file sms.db (ho provato col blocco note ma nn mi sembra di aver visto molte differenze, ma ho letto anche di un sqlite)...mi chiedevo se ci fosse un modo per riuscire a "importare" le informazioni del vecchio db sul nuovo...magari realizzando uno script simile a quello linkato sopra ma senza il vincolo delle versioni... dici che è possibile?? Ma soprattutto...sono stato chiaro??

Saluti

p.s. Ti segnalo anche QUESTO sito dov'è possibile aprire i file in questione ed esportare i dati in html/pdf
Cita messaggio
#2
Non posseggo un iPhone quindi non posso fare delle prove dirette, ma, come hai scritto tu, i file "sms.db" sono nel formato Sqlite. Questo è un formato molto diffuso sia per le applicazioni (viene utilizzato anche, per fare un esempio, da Firefox) e personalmente l'ho utilizzato per creare alcuni siti di piccole dimensioni.
Il primo link che hai pubblicato esegue uno script in PHP (è disponibile anche il codice sorgente), ma è compatibile solo da iOS 3 fino a iOS 5.
Non avendo a disposizione un file "sms.db" precedente alla versione di iOS 3, non so come siano le tabelle che formano il database e quindi non posso aiutarti a trasformarle nel formato di iOS 3. Poi basterebbe utilizzare lo script che hai indicato per unire il vecchio file "sms.db" trasformato da iOS 1 a iOS 3 e il file nuovo già nel formato di iOS 3.
Se vuoi provare a trasformare tu il vecchio file "sms.db" nel formato di iOS 3, puoi provare a utilizzare SQLite Database Browser, che è un software gratuito per creare, modificare e visualizzare database nel formato Sqlite. Non l'ho mai utilizzato, quindi non so se sia valido.
Se invece hai a disposizione un server con PHP e con il supporto a Sqlite, puoi provare ad aprire il vecchio file "sms.db" utilizzando Adminer, che è uno script in PHP formato da un unico file che permette di gestire i database di molti formati, tra cui anche Sqlite.
Mattia!
Cita messaggio
#3
Se vuoi, posso passarti entrambi i file in privato, (per ovvii motivi non li posto qui visto che contengono dati sensibili) così, magari, riesci a trovare le differenze di struttura tra i file...
Cita messaggio
#4
Se vuoi, puoi mandarmeli a info@matriz.it
Mattia!
Cita messaggio
#5
mail inviata... smilie
Cita messaggio
#6
Sto cominciando a vedere come importare i messaggi del vecchio "sms.db" all'interno del nuovo "sms.db", ma la questione è un po' lunga e quindi, intanto che aspetti, ti suggerisco di provare a fare una cosa.
Dovresti provare a importare il vecchio "sms.db" seguendo questa guida e poi esportare il file "sms.db" che è stato creato. Fatto questo dovresti riuscire a unire il vecchio "sms.db" trasformato con il nuovo "sms.db" tramite questo servizio.
Mattia!
Cita messaggio
#7
Ciao Mattia,
purtroppo avevo già fatto questo tentativo senza successo... il problema è sempre la differenza di IOS... nel mio caso forse troppo vecchio visto che il primo file sms.db è del primissimo Iphone il 2 EDGE...
Ciò nn toglie che dovrei fare la prova di tutti e 5 i file su un nuovo backup...ma al momento nn posso poichè il backup di itunes non salva proprio "tutti i dati che ho sull'iphone" e questo comporterebbe la perdita di una discreta mole di dati...quindi preferirei risolvere come sopra...

Saluti
Cita messaggio
#8
Questo è l'elenco delle query che ho eseguito sul vecchio database "sms.db" per farlo assomigliare a quello nuovo. Dopo aver eseguito le query, si deve utilizzare iPhone SMS Database Merger per unire i due database.
Codice:
UPDATE _SqliteDatabaseProperties SET "value" = 1 WHERE "key" = "_ClientVersion";
CREATE TABLE msg_pieces (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, message_id INTEGER, data BLOB, part_id INTEGER, preview_part INTEGER, content_type TEXT, height INTEGER, version INTEGER, flags INTEGER, content_id TEXT, content_loc TEXT, headers BLOB);
ALTER TABLE group_member ADD COLUMN country text NULL DEFAULT 'it';
ALTER TABLE message ADD COLUMN subject text NULL;
ALTER TABLE message ADD COLUMN country text NULL DEFAULT 'it';
ALTER TABLE message ADD COLUMN headers blob NULL;
ALTER TABLE message ADD COLUMN recipients blob NULL;
ALTER TABLE message ADD COLUMN read integer NULL DEFAULT 1;
ALTER TABLE msg_group ADD COLUMN hash integer NULL;

Per i nuovi campi country ho assegnato come valore di default "it" e come valore per il campo read ho assegnato "1" che dovrebbe specificare che il messaggio è già stato letto.
Purtroppo per il campo hash della tabella msg_group non sono riuscito a capire qual è il valore da calcolare.
Mattia!
Cita messaggio
#9
(31/03/2012 15:41)Mattia Ha scritto: Questo è l'elenco delle query che ho eseguito sul vecchio database "sms.db" per farlo assomigliare a quello nuovo. Dopo aver eseguito le query, si deve utilizzare iPhone SMS Database Merger per unire i due database.
Codice:
UPDATE _SqliteDatabaseProperties SET "value" = 1 WHERE "key" = "_ClientVersion";
CREATE TABLE msg_pieces (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, message_id INTEGER, data BLOB, part_id INTEGER, preview_part INTEGER, content_type TEXT, height INTEGER, version INTEGER, flags INTEGER, content_id TEXT, content_loc TEXT, headers BLOB);
ALTER TABLE group_member ADD COLUMN country text NULL DEFAULT 'it';
ALTER TABLE message ADD COLUMN subject text NULL;
ALTER TABLE message ADD COLUMN country text NULL DEFAULT 'it';
ALTER TABLE message ADD COLUMN headers blob NULL;
ALTER TABLE message ADD COLUMN recipients blob NULL;
ALTER TABLE message ADD COLUMN read integer NULL DEFAULT 1;
ALTER TABLE msg_group ADD COLUMN hash integer NULL;

Per i nuovi campi country ho assegnato come valore di default "it" e come valore per il campo read ho assegnato "1" che dovrebbe specificare che il messaggio è già stato letto.
Purtroppo per il campo hash della tabella msg_group non sono riuscito a capire qual è il valore da calcolare.
Forse questi due link possono tornare utili:
http://www.duriaan.ch/iphone.html
http://www.jwz.org/hacks/sms-backup-iphone.pl

Se non ho capito male il primo link dice che il valore Hash corrisponde all' md5sum

il secondo dice questo:
Citazione:# This magic number is the hash of the iPhone SMS database name: We could
# just "use Digest::SHA1" and do sha1_hex("HomeDomain-Library/SMS/sms.db")
# but the hash doesn't change...
#
my $sms_db_name = "3d0d7e5fb2ce288813306e4d4636395e047a3d28";
...

Spero che questi due link possano servire a risolvere il problema

Saluti
Cita messaggio
#10
Ho provato a seguire i due link, ma non mi sembra che venga spiegato come calcolare il valore del campo "hash" per le tabelle dei messaggi.
Mattia!
Cita messaggio
#11
Magari ho capito male... ma a me sembra di capire che ogni iphone ha un suo MD5, se fosse vero che il valore dell'hash lo calcoli in base a questo... forse bisognerebbe trovare il file che ti "sveli" qual'è l'md5 dell'iphone in questione!!
Ho detto na cazzata?
Cita messaggio
#12
Nel database c'è un identificativo dell'iPhone, ma non mi sembra che serva a calcolare quell'hash.
Mattia!
Cita messaggio
#13
non saprei... magari ho capito male io! Sad
Cita messaggio
#14
Altro link che potrebbe servire:
http://www.italo-design.com/2009/05/27/n...mment-9446

Inoltre stavo pensando... quando Itunes fa un backup automatico dell'iphone sul prprio PC/Mac, salva tutti i file (spezzettati e non raccolti in un unico file) in un percorso ed ogni file viene rinominato con una serie numericoalfabetica (ad es. 3d0d7e5fb2ce288813306e4d4636395e047a3d28 che è il file sms.db) nel mio caso il file sms.db dell'Iphone 2G si chiama "0b1fe6f87c054ebb6d00cfafb6bacd343a7f6fa1.mdbackup" che sia questo il valore che serve a calcolare l'Hash?? (lo so, sono ripetitivo...ma magari ha un senso)
Cita messaggio
#15
(13/05/2012 23:32)Chandler Ha scritto: Altro link che potrebbe servire:
http://www.italo-design.com/2009/05/27/n...mment-9446
Nei commenti dice che non calcola il campo hash, perché trasforma gli SMS del Nokia nella vecchia versione dell'iPhone e poi tramite iPhone/iTunes trasforma "sms.db" dalla vecchia alla nuova versione di iOS.

(13/05/2012 23:32)Chandler Ha scritto: Inoltre stavo pensando... quando Itunes fa un backup automatico dell'iphone sul prprio PC/Mac, salva tutti i file (spezzettati e non raccolti in un unico file) in un percorso ed ogni file viene rinominato con una serie numericoalfabetica (ad es. 3d0d7e5fb2ce288813306e4d4636395e047a3d28 che è il file sms.db) nel mio caso il file sms.db dell'Iphone 2G si chiama "0b1fe6f87c054ebb6d00cfafb6bacd343a7f6fa1.mdbackup" che sia questo il valore che serve a calcolare l'Hash?? (lo so, sono ripetitivo...ma magari ha un senso)
Quella serie di cifre e numeri e un numero in esadecimale (infatti, se noti, la lettera più avanti nell'alfabeto che trovi è sempre la "F"), ma non saprei proprio come calcolare da quel numero l'hash.
Mattia!
Cita messaggio
#16
continuerò ad indagare e ti aggiornerò se avrò novità smilie
Cita messaggio
#17
(20/05/2012 17:57)Chandler Ha scritto: continuerò ad indagare e ti aggiornerò se avrò novità smilie


Ciao a tutti,

Grazie,
sono nuovo di qui, sono uno studente di economia e un appassionato (vero, non frutto della moda... ) della Mela Morsicata...

Mi trovo nella stessa condizione di Chandler, dovendo trasferire i messaggi dall'iPhone 2G al 5...

Ho tentato inutilmente con tutte le guide anche inglesi sia con programmi mac che su windows, ma non sono ancora riuscito nel mio intento.

Chandler, tu ce l'hai fatta? Avresti qualche consiglio?

grazie mille! smilie
Cita messaggio
#18
Intanto che aspetti la risposta di Chandler, potresti provare a utilizzare lo script che aveva linkato nel primo messaggio visto che è in questo momento è alla versione 0.13 aggiornata il 4 luglio 2012 (cioè dopo i nostri ultimi messaggi).
Non avendo un iPhone non saprei aiutarti, però ho trovato anche questa guida sul sito ufficiale della Apple che potrebbe essere utile.
Mattia!
Cita messaggio
#19
ciao mattia,
grazie per la tua risposta,
ma non posso applicare quello script perché sull'iphone 2G ho il software 1.1.4 e funziona solo dal 3.X in poi.... ( ho letto che se aggiorno l'ìphone con jailbreak perdo tutto, sms compresi...)
la guida apple è la prima che ho seguito, funziona per tutto (foto, musica, apps, contatti ect) ma non per gli sms,
sono anche passato al genius bar ma non mi potevano aiutare perché il mio iphone ha il jailbreak...

grazie comunque!

Simone
Cita messaggio
#20
Ciao Simone, mi spiace ma leggo solo adesso questo messaggio...
mi rincuora sapere che esiste un'altra persona al mondo nelle mie condizioni... smilie
ad ogni modo, come avrai constatato leggendo questo post, eravamo rimasti bloccati al calcolo hash. Ammetto di essermi "adagiato" non avendo trovato una soluzione (anche perchè più il tempo passa e più è difficile trovare informazioni in tal senso). Ma sono sempre disponibile a trovare una soluzione (sia per la curiosità che anche come sfida ormai), ancora meglio se siamo in due Smile
Tu hai fatto qualche ricerca?

Saluti

Ai fini di "ricerca" tornano sempre utili:
http://theiphonewiki.com/wiki/Firmware
http://theiphonewiki.com/wiki/Little_Bea...2_(iPhone)
http://www.zdziarski.com/blog/wp-content...ethods.pdf
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)