Streams iOS6 Foto: «recuperar» eliminados Camera Roll Fotos

/ * <[CDATA [* / var asciidoc = {/ / Namespace!. / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Indice generador / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / * Autor: Mihai Bazon , septiembre de 2002 * http://students.infoiasi.ro/ ~ mishoo ** Tabla de generador de contenido * Versión: 0.4 ** Siéntase libre de utilizar esta secuencia de comandos en los términos de la GNU General Public License *, siempre y cuando lo hace no suprimir o alterar este aviso. * / / * Modificado por Troy D. Hanson, septiembre de 2006. Licencia: GPL * / / * modificado por Stuart Rackham, 2006, 2009. Licencia: GPL * / / / toclevels = 1 .. 4. toc: function (toclevels) {function getText (el) {var text = ""; for (var i = el.firstChild; i = null; i = i.nextSibling!) {if (== i.nodeType 3 / * Node.TEXT_NODE * /) / / IE no habla constantes. texto + = I.Data; else if (i.firstChild = null!) Texto + = getText (i);} texto return;} function TocEntry (el, texto, toclevel) {this.element = el; this.Text = texto; this.toclevel = toclevel;} tocEntries función (EL, toclevels) {var result = new Array; var re = new RegExp ('[HH] ([1 -' + (toclevels 1) + '])') / / Función que escanea el árbol DOM para elementos de encabezado (la API DOM2 / / NodeIterator sería una mejor técnica, pero no con el apoyo de todos / / los navegadores). iterate var = function (el) {for (var i = el.firstChild;! i = null; i = i.nextSibling) {if (== i.nodeType 1 / * Node.ELEMENT_NODE * /) {var = mo re . exec (i.tagName); if (mo && (i.getAttribute ("clase") | | i.getAttribute ("className")) = "float"!) {resultado [result.length] = new TocEntry (i , getText (i), mo [1] -1);} iteración (i);}}} iterate (el); return resultado;} var toc = document.getElementById ("toc"); if (toc) {! vuelta;} / / Eliminar entradas de la TDC existentes en caso de que estamos volviendo a cargar el TOC. var tocEntriesToRemove = []; var i; for (i = 0; i «+» «+ n «.» + + nota + «

«; var id = palmos [i] getAttribute («id»);. if (id = nulos!) refs [«#» + id] = n;}} si (n == 0) noteholder.parentNode.removeChild (Bonista); else {/ / Proceso footnoterefs. for (i = 0; i

Nota

Recuperación de archivos borrados en iDevices desde iOS 4 ha sido poco práctico imposible debido a la utilización de un sistema de archivos cifrado. Esto no quiere decir que los datos borrados no se pueden recuperar, sin embargo. Los registros borrados pueden ser recuperados de bases de datos SQLite asignados por el de la construcción de la base de datos de archivo: cayeron los registros no siempre son sobrescritos. Este artículo demuestra cómo la interacción entre el servicio IOS Streams y la aplicación Camera Roll puede ayudar a los examinadores de identificar y «recuperar» las fotografías borradas.

El amanecer de iCloud de Apple en 2011, un nuevo servicio nació: el iCloud Galería de fotos. Galería de fotos sincroniza las fotos tomadas con un iDevice con otros dispositivos registrados por el usuario. El usuario debe tener una cuenta de iCloud y permitir Galería de fotos a través de la Opciones | iCloud |. Galería de fotos del menú para que el servicio funcione

Galería de fotos viene en dos sabores, si se quiere: la básica Galería de fotos y Shared Galería de fotos . Básica Galería de fotos sincroniza fotos solo entre los dispositivos de los usuarios, sino de fotos compartidas Corriente alows al usuario compartir fotos con otras personas a través de un sitio web público o directamente en sus dispositivos habilitados Galería de fotos.

Galería de fotos Requerimientos

Foto Shared Stream

  • iDevice con iOS 6.0 +

  • Mac con OS X v10.8.2 + y iPhoto o Aperture 9.4 + 3.4 +

  • PC con Windows Vista (SP2) / 7/8 y el Panel de control de iCloud 2.1 +

  • Apple TV (Gen 2) con la actualización de software 5.1 +

Básica Galería de fotos

  • iDevice con iOS 5.1 +

  • Mac con OS X v10 .7.5 + e iPhoto 9.2.2 + 3.2.3 + o Aperture

  • PC con Windows Vista (SP2) / 7 y el Panel de Control de iCloud v2.0 +

  • Apple TV (Gen 2) con Software Update 5.0 +

podría estar recibiendo por delante de mí ya y pensar,» ¡Excelente! Si un usuario toma una fotografía de su iPhone y se sincroniza con otros dispositivos con capacidad Galería de fotos, puedo encontrar fotos borradas del iPhone en los otros dispositivos! » Para que yo digo, «Whoa allí grandote», y me tire firmemente de vuelta en sus riendas. No es así de simple, y al mismo tiempo que es una posibilidad si la fotografía se mueve fuera de Photo almacenamiento Stream y en un lugar de almacenamiento a largo plazo, hay algunas cosas que usted necesita saber …

imágenes en el cielo

Cuando un usuario toma una fotografía con una Galería de fotos habilitado iDevice, como un iPhone, es se envía a almacenamiento de iCloud y se mantiene allí durante 30 días para dar a todos los usuarios de dispositivos registrados la oportunidad de sincronizar. Los datos sólo se transfiere desde el iPhone cuando está conectado a Wi-Fi, no transmite fotografías a través de redes celulares. iDevices tienen las últimas 1000 fotos (JPG, TIFF, PNG y RAW) en la corriente, por lo que el usuario debe mover fotografías a una ubicación de almacenamiento a largo plazo, como la Lista de Cámara si quieren mantenerlos por más tiempo. Mac y PC no tienen la limitación de 1.000 fotos, debido a sus capacidades de almacenamiento más grandes. Los vídeos no se sincronizan a través Photo Stream.

Si otro dispositivo habilitado Galería de fotos de la red del usuario toma una fotografía, o una fotografía se carga en Galería de fotos sobre un Mac o un PC de otro origen, como una cámara digital, que se sincronizan con el iPhone, como usted probablemente ha adivinado. Si una imagen se borra de Galería de fotos en cualquiera de los dispositivos conectados en red, se elimina de todos los dispositivos en la red. Como nuestro amigo Mork de Ork solía decir, «Shazbot!» No va a ser tan fácil. Y, además, ¿con qué frecuencia en nuestras manos todos los dispositivos cuando se realizan análisis forense, de todos modos?

Así, ¿Por qué el Post?

Durante la realización de un examen sobre un iPhone 4s con iOS 6.1.3 poco, me señaló un montón de fotografías duplicadas con nombres de archivo diferentes. Las diferencias de nombre de archivo que no eran parte de un usuario cambiar el nombre de ellos (si eso es posible en un dispositivo dañado no la cárcel), pero las imágenes con el mismo contenido de la imagen aparente y al mismo tiempo creó existido en dos caminos distintos, tenían nombres distintos (como «IMG_1027 . JPG «y» IMG_1098.JPG «) y existió en diferentes dominios. Intrigado, he investigado.

A través del estudio y un poco de experimentación con un iPhone colegas, he descubierto que cuando un usuario toma una fotografía, se almacena simultáneamente en la cámara rollo dominio / Medios / DCIM / subdirectorios y el dominio de medios en las / Media / PhotoStreamsData / subdirectorios. El nombre del archivo es incremental: si la última fotografía era «IMG_1027.JPG», el siguiente es «IMG_1028.JPG». Esto es cierto incluso si se elimina «IMG_1027.JPG» antes de tomar-los nombres de archivo de la siguiente imagen no se reutilizan.

Del mismo modo, la fotografía que se escribe a la Corriente de fotos se le da un nombre de archivo incrementales. Pero, no es sobre la base de los nombres de archivo Carrete de dominio, pero en cambio en los nombres de archivo de imagen Galería de fotos almacenadas en el dominio de los medios de comunicación. Recordemos que las imágenes en Galería de fotos pueden venir de cualquier dispositivo en red y tendrán sentido de que tienen que tener nombres de archivo únicos creados en el dispositivo local para evitar sobrescribir. Con ese conocimiento, se empieza a entender por qué existen dos archivos con el mismo contenido de la imagen en diferentes lugares y tienen diferentes nombres de archivos.

Pero, aún hay más. He mencionado que los vídeos no se sincronizan en Galería de fotos. Son, sin embargo, se almacenan en el dominio Carrete del iDevice en el que fueron creados, y se les da un nombre de archivo incrementales que los mezcla en las fotografías pesar de que tienen una extensión diferente. He impreso una muestra lista para ilustrar.

Lista parcial de los archivos de la cámara de rollo de dominio
 CameraRollDomain/Media/DCIM/105APPLE/IMG_5316.JPG 

CameraRollDomain/Media/DCIM/105APPLE/IMG_5317.JPG CameraRollDomain/Media/DCIM/105APPLE/IMG_5318.JPG
CameraRollDomain/Media/DCIM/105APPLE/IMG_5320.MOV />
CameraRollDomain/Media/DCIM/105APPLE/IMG_5319.MOV CameraRollDomain/Media/DCIM/105APPLE/IMG_5321.JPG
CameraRollDomain / Media/DCIM/105APPLE/IMG_5322.JPG

Así, el vídeo se incluyen en el Carrete de dominio incrementando esquema de nombre de archivo, pero como no se escriben en el dominio de medios, los nombres de los archivos allí no afectado, es decir, no se incrementa.

Otro factor a considerar es que el dominio de Camera Roll se puede utilizar para guardar vídeos e imágenes que no sea con el dispositivo que se examina. El usuario tiene la opción de guardar la imagen y los videos de los navegadores de Internet, aplicaciones como Facebook y MMS pulsando y manteniendo ellos. Cualquiera que sea el origen de los archivos, que se guardan en Camera Roll con nombres de archivos secuenciales.

Carrete ahorra más que las fotos y videos tomados con dispositivo
 CameraRollDomain/Media/DCIM/105APPLE/IMG_5198.JPG CameraRollDomain/Media/DCIM/105APPLE/IMG_5199.JPG /> 
CameraRollDomain / Media/DCIM/105APPLE/IMG_5200.JPG

CameraRollDomain/Media/DCIM/105APPLE/IMG_5201.JPG CameraRollDomain/Media/DCIM/105APPLE/IMG_5202.MOV
CameraRollDomain/Media/DCIM/105APPLE / IMG_5203.MOV />

CameraRollDomain/Media/DCIM/105APPLE/IMG_5205.mp4 CameraRollDomain/Media/DCIM/105APPLE/IMG_5206.mp4
CameraRollDomain/Media/DCIM/105APPLE/IMG_5207.mp4

CameraRollDomain/Media/DCIM/105APPLE/IMG_5208.mp4 CameraRollDomain/Media/DCIM/105APPLE/IMG_5209.mp4
CameraRollDomain / Media/DCIM/105APPLE/IMG_5210.PNG

Una vez más, el JPEG, TIFF, PNG, y las imágenes RAW se añaden automáticamente a la Foto Stream cuando el servicio está habilitado. Si hubiera alguna fuente de datos para ayudar a averiguar cómo hacer coincidir los nombres de archivos de imagen del rollo de la cámara a las de los directorios Streams de Fotos. Hash criptográfico (por ejemplo, MD5) no ayudará porque los datos EXIF ​​es diferente en. Jpg, y además, el punto de este artículo es «recuperar» eliminan las imágenes, lo que significa que se echa en falta la mitad de la comparación! Una vez más, entrar en SQLite …

recuperar imágenes borradas de la cámara Roll

El / CameraRollDomain / Medios / PhotoData / Photos.sqlite base de datos contiene los datos sobre las imágenes de la cámara de rollo de dominio y el dominio Media. Por cierto, también el seguimiento de los vídeos en la cámara de rollo de dominio. La tabla de activos ZGENERICASSET es la tabla de interés y contiene fechas de archivo, rutas y nombres.

ZGENERICASSET esquema de la tabla

!

<- Generador: GNU fuente-highlight 3.1.6 por Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite - >

  $  sqlite3  -   /  Multimedia . /   /    sqlite    
" zgenericasset esquema "
CREAR MESA (
PRIMARIA CLAVE ,
,
,
,
,
ZCLOUDHASUNSEENCOMMENTS INTEGER ,
,
ZCOMPLETE INTEGER ,
,
,
,
,
INTEGER ZSAVEDASSETTYPE ,
,
ZWIDTH INTEGER ,
,
ZCLOUDBATCHPUBLISHDATE TIMESTAMP ,
TIMESTAMP ,
TIMESTAMP ,
TIMESTAMP ,
FLOAT ,
VARCHAR ,
VARCHAR ,
ZCLOUDBATCHID VARCHAR ,
VARCHAR ,
VARCHAR ,
VARCHAR ,
ZTITLE VARCHAR ,
VARCHAR ,
BLOB ,
BLOB ,
estilo ZUUID BLOB ,
BLOB ,
BLOB ,
BLOB
);

Gran parte de la información de la tabla es intrascendente para nuestro análisis. Algunos son de un interés pasajero, y podría ser relevante para otros tipos de exámenes. Pero le permite afinar en nuestra cantera: fechas de archivo, nombres y rutas de acceso. Para hacer el trabajo de SQLite para usted, usted debe aprender su lenguaje de consulta estructurado.

En primer lugar, le permite obtener una visión general de los archivos que las pistas esta mesa. Sería agradable ver sólo los caminos únicos en el campo ZDIRECTORY. Afortunadamente, SQLite nos da la Distinct función sólo para este fin.

SQLite DISTINCT () Función
<- Generador: GNU fuente-highlight 3.1.6 por Lorenzo Bettini http://www. lorenzobettini.it http://www.gnu.org/software/src-highlite ->

  $  sqlite3  -  cabecera CameraRollDomain  /   /   /  Fotos      
'SELECT DISTINCT ( zdirectory) DE LA ORDEN POR zgenericasset ASC zdirectory '
ZDIRECTORY

DCIM /
100APPLE DCIM /
101APPLE DCIM /
102APPLE DCIM /
103APPLE DCIM /
104APPLE DCIM /
105APPLE PhotoData / /
100SYNCD PhotoStreamsData / 97527241 / 103APPLE
/ 97527241 / 104APPLE

Así, vemos en la salida que el DCIM y PhotoData los directorios, que están en la cámara de rollo de dominio, y el PhotoStreamData del directorio, que se encuentra en el dominio de los medios de comunicación, son los directorios raíz del origen de los datos registrados por esta tabla. ¿Cómo iba yo a saber que si yo no estaba familiarizado con la estructura de archivos iPhone? Caza y picotear? No!

BASH encontrar grep
<- Generador: GNU fuente-highlight 3.1.6 por Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu. org / software / src-highlite - tipo encontrar>

  $  d  |  grep-E  '(DCIM |? fotográficas (Streams) Datos) $ '.  
/ MediaDomain / Medios / PhotoStreamsData
/ CameraRollDomain / Medios / DCIM
/ CameraRollDomain / Medios / PhotoData
. / CameraRollDomain / Medios / PhotoData / Metadata / DCIM

Aquí le decimos al encontrar para devolver sólo los directorios con el d opción y filtramos los resultados con una expresión regular. La expresión regular busca líneas que terminan con DCIM , PhotoData o PhotoStreamsData . Esto ahorra mucho de la caza y la ley del más fuerte!

Ahora, vamos a llegar exportar los archivos de la base de datos ordenados por fecha de creación . A partir de este, tal vez podamos sacar algunas conclusiones, o al menos tener una lista de archivos en el que centrarse para su posterior análisis.

SQLite Query (salida truncada)
<- Generador: GNU fuente-highlight 3.1.6 por Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu org / software / src-highlite ->

  $  sqlite3  -   -   /   /   /  .   "  
z_pk, DATETIME (zdatecreated + 978307200, 'unixepoch', 'localtime') AS
zdatecreated, zdirectory, zfilename DE zgenericasset
ZDATECREATED | ZDIRECTORY | ZFILENAME
...
9598 | 04/27/2013 20:53:44 | DCIM/105APPLE | IMG_5303.JPG
9628 | 27/04/2013 20:53:44 | PhotoStreamsData/97527241/104APPLE | IMG_4245.JPG
9599 | 2013-04 - 27 20:53:49 | DCIM/105APPLE | IMG_5304.JPG
9629 | 27/04/2013 20:53:49 | PhotoStreamsData/97527241 / 104APPLE | IMG_4246.JPG
9600 | 04/27/2013 21:16:41 | DCIM/105APPLE | IMG_5305.JPG
9630 | 04/27/2013 21:16:41 | PhotoStreamsData/97527241/104APPLE | IMG_4247.JPG
9601 | 04/27/2013 21:16:49 | DCIM/105APPLE | IMG_5306.JPG
9631 | 04/27/2013 21:16:49 | PhotoStreamsData/97527241/104APPLE | IMG_4248.JPG
...

Nota

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *