Sacar provecho de la caché de Google Chrome

http-equiv=»Content-Type» content=»application/xhtml+xml; charset=utf-8″ />

/ * <[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

La caché de Google Chrome representa un desafío para los investigadores forenses. Si el alcance de su examen ha sido abrir la carpeta de caché y ver los archivos en un explorador de archivos, es probable que esté perdiendo una gran cantidad de contenido.

Para empezar, los archivos almacenados en la memoria caché se cambia el nombre de sus nombres originales en el servidor web. A continuación, los elementos de texto (como HTML, JSON, etc) son zlib comprimidos. Por último, los archivos más pequeños que 16.384 bytes (16k) se almacenan en archivos de bloques que son archivos de contenedores que tienen muchos archivos pequeños. Los meta-datos acerca de los archivos de caché se almacenan en estos archivos contenedores, también, y su todo mapeados por un archivo de índice binario.

Así, mientras que su bastante fácil señalar con el explorador de archivos o el visor de imágenes en el directorio de caché y ver algunas estructuras de datos reconocibles, dar sentido a todo lo que es, no puede ser más difícil. En el resto de esta discusión, voy a tratar de darle una visión más clara en la caché de Google Chrome. Esto debería ser de interés para forensicators móviles por igual en disco y, ya que la estructura es la misma si está examinando un ordenador de sobremesa o un dispositivo móvil, como un teléfono o tableta Android

Estructura caché

Todos los archivos de la caché de Google Chrome se almacenan en una sola carpeta llamado caché . La memoria caché se compone de al menos cinco archivos: e índice file y cuatro datos archivos conocidos como bloque . Como he dicho anteriormente, los archivos descargados se almacenan en uno de los archivos de bloques o directamente al directorio de caché, y el índice hace un seguimiento de la operación y la ubicación de almacenamiento.

Un caché puede constar de sólo el cinco archivos (denominados index , data_0 , datos_1 , datos_2 mencionaron , y data_3 ) si todos los archivos de datos en la memoria caché es menor que 16k. Los archivos más grandes se almacenan fuera de los archivos de bloque. Vaya por delante, compruebe su caché si no me crees … que voy a esperar. En caso de que usted no tiene uno a mano, aquí está la lista de archivos como truncada de un examen reciente de Android que realicé, ordenados por tamaño.

Salida de ls-LSR
 -rw-r - r - 1 user user 16519 20 de febrero 13:06 f_00008a 
-rw-r - r - 1 user user 16566 20 de febrero 13:06 f_0000cf
-rw-r - r - 1 user user 16604 20 de febrero 13:06 f_0000cc
-rw-r - r - 1 user user 16944 20 de febrero 13:06 f_0000cd
...
-rw-r - r - 1 user user 70659 20 de febrero 13:06 f_0000f7
-rw-r - r - 1 user user 73804 20 de febrero 13:06 f_00008f
-rw-r - r - 1 user user 74434 20 de febrero 13:06 f_0000df
. ..
-rw-r - r - 1 user user 81920 20 de febrero 13:06 data_0
...
-rw-r - r - 1 user user 262512 febrero 20 13:06 Índice
-rw-r - r - 1 user user 1581056 20 de febrero 13:06 datos_1
-rw-r - r - 1 user user 2105344 20 de febrero 13:06
datos_2-rw-r - r - 1 user user 4202496 20 de febrero 13:06 data_3

Advertencia
Cuando uno o más de los cinco archivos de base se dañan o suprimirse , todo el conjunto se vuelve a crear. Experimenté por la eliminación de un archivo de bloque de datos y reiniciar Chrome. El reinicio del navegador , toda la memoria caché se ha eliminado y los nuevos archivos de base fueron creadas.

Tal vez se pregunte acerca de los bloques de datos de los cuatro. ¿Cómo se distinguen? La respuesta es: tamaño , no el tamaño de los bloques de archivos ellos mismos, pero el tamaño de los bloques de datos internas. Cada archivo de bloque se define para almacenar los datos en bloques, al igual que un sistema de archivos. Y al igual que diferentes sistemas de archivos de tamaño se pueden definir con distintos bloques de tamaño, por lo que los bloques de datos a archivos de caché se definen con diferentes tamaños de bloque, y los datos pueden ser asignados a no más de cuatro cuadras a la vez antes de ser considerado demasiado grande para ese bloque -file

Tabla 1. Por defecto los tamaños de bloque de archivos de datos

Bloquear SZ Max Data SZ

data_0

36b

class=»table»>

ranking

datos_1

256b

1k

datos_2

1k

class=»table»>

data_3

4k

class=»table»>

Nota
Cuando un bloque de archivos de datos llega a su máxima capacidad (cada archivo sólo se le permite mantener un número determinado de objetos) se crea un nuevo bloque y archivo de datos señalado en la pestaña de información de bloque de archivo anterior

direcciones caché

Todos los objetos en caché tienen una dirección. La dirección es un número entero de 32 bits que describe dónde se almacenan los datos. Los metadatos acerca del objeto se almacena, también, e incluye:

  • encabezados HTTP

  • Pedir datos

  • Nombre de entrada (clave)

  • Otros datos auxiliares (por ejemplo, las clasificaciones)

Ejemplos de direcciones de memoria caché:
  0x00000000: no inicializado 
0x8000002A:
​​0xA0010003:. bloque-file número 1 (datos_1), número de bloque inicial de 3, 1 bloque de longitud

Importante
Las direcciones anteriores se ordenan a medida que leen, pero en el disco que se encuentra en formato little-endian, por ejemplo, el archivo externo aparece en el disco como 0x2A000080

direcciones de caché se interpretan a nivel de bits. Eso significa que tenemos que convertir el entero de 32 bits en bits y evaluar para entender la dirección. Los primeros 4 bits son la cabecera, que consisten en el bit inicializado siguió tres bits de tipo de archivo.

class=»title»>

BINARIO INTEGER INTERPRETACIÓN class=»table»>

0

archivo independiente en el disco

class=»table»>

1

rankings bloque-file

class=»table»>

2

class=»table»>

class=»table»>

3

class=»table»>

class=»table»>

4

class=»table»>

Los 28 bits restantes se interpretan de acuerdo con el tipo de archivo:

Tabla 3. Archivo independiente
Init Tipo de archivo archivo #

1

000

1111111111111111111111111111

Tabla class=»title»>

Init Tipo de archivo reservados bloques contiguos Block File Block #

1

001

class=»table»>

00

11

00000000

1111111111111111

Vamos a echar un mirar las dos últimas direcciones caché arriba:

Dirección de Archivo Externo

0x8000002A , interpretado como un entero de 32 bits, es 2147483690. En binario, es 10000000000000000000000000101010 . Interpretamos la siguiente manera:

class=»title»>

Init Tipo de archivo archivo #

binario

1

000

0000000000000000000000101010

Entero

1

0

42 (0x2A)

Dirección Block File

0x080001A0 , interpretado como un entero de 32 bits, es 2684420099. En binario, es 10100000000000010000000000000011 . Interpretamos la siguiente manera:

class=»title»>

<ª align = "center" valign = "top"> Init Tipo de archivo reservados bloques contiguos Block File Block #

Binary

1

010

00

class=»table»>

00

00000001

0000000000000011

Entero

1

2

0

0

1

3

Nota
El hombre extraño aquí es bloques contiguos, con un peso de cero, sino que parece ser interpretada como 1 cuadra que en base a la documentación de Google.

Hay mucho más que discutir aquí, pero este es un buen comienzo. Usted sabe sé que la memoria caché index tiene un mapa de los datos del navegador almacenados en caché, y que el data_ # archivos pueden contener caché objeto web que has pudo haber estado desaparecido. Voy a cubrir más en el seguimiento de la caché de un mapa y extraer el contenido del archivo de la ficha bloques en un próximo artículo (o dos)


Deja un comentario

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