No pasó mucho tiempo desde el lanzamiento de iOS6 en 14/09/12 hasta que conseguí mi primer dispositivo iOS6 de proceso: 18 días. En este caso, se trataba de un iPhone4 con iOS6. En tan poco tiempo, no hay demasiadas herramientas que hay preparados para analizar el nuevo sistema operativo o de sus nuevos formatos de datos.
Por suerte para mí, el teléfono no estaba cerrada con llave comerciales o de código abierto. Para procesar el teléfono, en la que el interés primordial era mensajes de texto y contactos, he utilizado las últimas iTunes para crear una copia de seguridad del teléfono. Fortuna fue de nuevo a mi lado:. El teléfono no estaba preparado para las copias de seguridad cifradas
iTunes copia de seguridad
Si usted no está familiarizado con las copias de seguridad de iTunes, y luego permitir que me presente a en general. datos de copias de iTunes del usuario (los medios de comunicación, bases de datos, configuración, aplicaciones, etc) a un directorio en el sistema operativo. La ubicación del directorio varía según el sistema operativo y la versión. Dado que se trata fundamentalmente de una discusión sobre el nuevo Sms.db iOS6, voy a dejar que encuentre la ubicación usted mismo. Lo más importante a saber es esto:
- las copias de seguridad son planos : todos los archivos se descargan en un directorio y no se conservan en su árbol original . estructura
- los archivos se cambian de nombre :. los nombres de los archivos son valores SHA1 calculado a partir del dominio, la ruta y nombre de archivo del archivo original
Identificación de archivos en la copia de seguridad
El Sms.db
|
iOS6 | iOS5 | Número de tablas: | 10 | 8 | Nombres de tablas: | SqliteDatabaseProperties, mensaje, sqlite_sequence, chat, apego, Manilla, message_attachment_join, chat_handle_join, chat_message_join, sqlite_stat1 | _SqliteDatabaseProperties, mensaje, sqlite_sequence, msg_group, group_member, msg_pieces, madrid_attachment, madrid_chat |
Número de disparadores: | 9 | 7 | Disparador nombres: | , update_message_roomname_cache_insert, delete_attachment_files , clean_orphaned_attachments, clean_orphaned_handles, clear_message_has_attachments, clean_orphaned_messages, update_message_roomname_cache_delete, clean_orphaned_handles2 | insert_unread_message, mark_message_unread, mark_message_read, delete_message, insert_newest_message, delete_newest_message, delete_pieces | Número de índices: | 16 | 18 | Índice de nombres: | sqlite_autoindex__SqliteDatabaseProperties_1, sqlite_autoindex_message_1, sqlite_autoindex_chat_1, sqlite_autoindex_attachment_1, sqlite_autoindex_handle_1, sqlite_autoindex_handle_2, sqlite_autoindex_message_attachment_join_1, sqlite_autoindex_chat_handle_join_1, sqlite_autoindex_chat_message_join_1, message_idx_is_read, message_idx_failed, message_idx_handle, chat_idx_identifier, chat_idx_room_name, message_idx_was_downgraded, chat_message_join_idx_message_id | sqlite_autoindex__SqliteDatabaseProperties_1, madrid_attachment_message_index, madrid_attachment_guid_index, madrid_attachment_filename_index, madrid_chat_style_index, madrid_chat_state_index, madrid_chat_account_id_index, madrid_chat_chat_identifier_index, madrid_chat_service_name_index, madrid_chat_guid_index, madrid_chat_room_name_index, madrid_chat_account_login_index, message_group_index, message_flags_index, pieces_message_index, madrid_guid_index, madrid_roomname_service_index, madrid_handle_service_index |
Sellos de Tiempo
sqlite> seleccione datetime (370884516 + 978307200, ‘unixepoch’);
datetime (370884516 + 978307200, ‘unixepoch ‘)
2012-10-02 22:28:36
Mientras que en el tema de las marcas de tiempo, dos marcas de tiempo adicionales son posibles en cada registro: date_read y Courier New, Courier, monospace;»> date_delivered . Los valores predeterminados de campo date_read a 0 hasta que se abra el mensaje en la aplicación iMessage. El date_sent se rellena con una fecha en que se envía el mensaje a través del servicio iMessage, pero no SMS. Esta AMUMA es posible diferenciar entre el tiempo que un iMessage fue iniciado por el usuario del dispositivo y cuando fue enviado realmente.
Direcciones
Otro cambio significativo en la base de datos es la dirección monospace;»> handle_id corresponde al style=»font-family: Courier New, Courier, monospace;»> ROWID manejar tabla, que contiene el número de teléfono del contacto en el id
Banderas
voy a mencionar rápidamente un par de otros cambios. En las versiones anteriores de la Sms.db, campos como y leer fueron utilizados para marcar el tipo (enviado, recibido, etc) y el estado (leído, no leído, etc) de el mensaje. Existen nuevas áreas para estos atributos incluidos is_from_me, is_empty, is_delayed, is_auto_reply, is_prepared, is_read, is_system_message, is_sent. Los valores 0 y 1 son utilizados como «no» y «sí», respectivamente, en la interpretación de estos campos.
He mencionado antes que el servicio que se utiliza para transmitir el texto, SMS o iMessage, dio lugar a diferentes Tipo de marca de tiempo. También dio lugar a diferentes campos que se están pobladas en la tabla de mensajes. En iOS6, los mensajes comparten las mismas banderas, independientemente del servicio que se utiliza para enviarlos. El servicio utilizado es registrada en el nuevo servicio style=»font-family: Courier New, Courier, de la tabla de mensajes.
Uniendo todas las piezas
No he venido a acercarse a la descripción de todos los datos en la nueva tabla Sms.db, ni cómo relacioné todas las mesas. Yo sólo la intención de alertar a los investigadores que hay diferencias en la nueva base de datos que deben ser considerados.
Dicho esto, sería negligente si no le proporcionamos una consulta de ejemplo para producir una básica lista de chat. La siguiente consulta genera una lista con varios campos importantes ( ROWID, Fecha, Número de teléfono, servicio | Tipo | Fecha de lectura / Enviados | Texto):
SELECT m.rowid como ROWID, DATETIME (fecha + 978307200, ‘unixepoch’, ‘localtime’) como Date, h.id como» número de teléfono «, m.service como Servicio, is_from_me CASO CUANDO ENTONCES 0 «Recibido» CUANDO 1 ENTONCES ELSE END «Desconocido» «enviados» como Tipo, CASO CUANDO date_read> 0 ENTONCES DATETIME (date_read + 978307200, ‘unixepoch’) CUANDO date_delivered> 0 ENTONCES DATETIME (date_delivered + 978307200, ‘unixepoch’) ELSE NULL END como «Fecha de lectura / Enviado», el texto como texto de mensaje m, manejar h DONDE h.rowid = m.handle_id ORDER BY ASC m.rowid;
Voy a hacer que un poco más fácil de leer:
SELECT
m.rowid como ROWID,
DATETIME (fecha + 978307200, ‘unixepoch’, ‘localtime’) como Date,
h.id como» número de teléfono «, m.service como Servicio,
CASE is_from_me
0 ENTONCES CUANDO» Recibido «
; CUANDO 1 ENTONCES «Enviados»
ELSE «Desconocido»
END como Tipo,
CASE
CUANDO date_read> 0 entonces DATETIME (date_read + 978307200, ‘unixepoch’)
CUANDO date_delivered> 0 ENTONCES DATETIME (date_delivered + 978307200, ‘unixepoch’)
ELSE END NULL como «Fecha de lectura / Enviado»,
texto como texto
de mensaje m, manejar h
DONDE h.rowid = m.handle_id
ORDER BY ASC m.rowid;
Sus resultados, al importarse a una hoja de cálculo, debe ser similar a esto:
ROWID | Fecha | número de teléfono | Servicio | Tipo | Fecha de lectura / Enviados | texto | 2484 | 2012-10-02 08:28:36 | 11231234567 | iMessage | Enviado | 2012-10-02 08 : 28:39 | Hey | 2485 | 2012-10-02 08:45:17 | 11231234567 | iMessage | Sent | 2012-10-02 08:46:11 | Llámame cuando oigas esto sdnum=»1033;» | 2486 | 2012-10-02 08:46:06 | 13217654321 | SMS | Recibido | 2012-10-02 08:47:21 | ¿Puedo pedir prestado algo de dinero? | 2487 | 2012-10-02 08:47:10 | 1321765321 | SMS | Sent | |
No! Yo no tengo ninguna hembra. |