SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Te pique lo que te pique, analiza
            un SQLite
              Alejandro Ramos
          www.SecurityByDefault.com
INTRODUCCIÓN
• Base de datos relacional (RDBMS) open source
• Creado en el año 2000 por Dwayne Richard Hipp
• No funciona en el modo tradicional cliente/servidor.
  Es un único fichero embebido.
• Desarrollado para optimizar espacio.
• Ampliamente usado en móviles, también en
  aplicaciones como Firefox, Chrome, Adobe Air,
  Dropbox o Skype
Desde una perspectiva forense
• Existen Páginas libres / espacio libre en páginas.
• Rollback journal.
   – Cambios directamente en el fichero original.
   – Copia del original en fichero “-journal”
   – Se aplican los cambios si todo es correcto.
• Versión 3.7.0 > Write Ahead Log (WAL)
   – Invierte el proceso.
   – Cambios en WAL “-wal”, original no se modifica
• VACUUM: recompone la base de datos ==
  “desfragmenta”.
Cabecera
100 primeros bytes del fichero. Los más relevantes:
Estructura del SQLite
• Los datos se almacenan en una estructura
  denominada “B-Tree” (común en bbdd y sistemas de
  ficheros)




• Se componen de:
  –   Páginas libres: hojas y troncales.
  –   Páginas de tablas: hojas e interiores.
  –   Páginas de índices: hojas e interiores.
  –   Páginas de Overflow
Páginas libres

• Páginas que contenían
  información de la base
  de datos y han sido
  marcadas como libres.
  Por ej, tras un DELETE.

• Gran parte de los
  datos permanece en
  el fichero
Cabecera de las páginas
• Identifican el número de celdas en la página
• Donde comienza la primera celda.
Espacio libre = desde el fin de cabecera hasta
  el comienzo de la primera celda.
Celdas en páginas
• Cada celda representa un registro de una tabla
• Una celda puede no entrar en una sola página,
  produciendo una nueva página “overflow”.
• En las páginas libres, las celdas están intactas.
• En el resto, las celdas eliminadas pierden el tamaño
  del payload y cabecera.
   – No es posible saber donde empieza y acaba el dato de
     forma estructurada.
… En definitiva …
Una base de datos SQLite mantiene los datos sin
eliminar (siempre y cuando no se haga un vacuum) en:
   – Páginas de tabla e índices: espacio libre entre la cabecera y
     el comienzo de celdas.
   – También el espacio libre entre celdas, si se ha modificado y
     reducido el tamaño de un celda.
   – Páginas libres y troncales: prácticamente enteras menos la
     cabecera.
   – Páginas Overflow: desde que termina la celda hasta el final.
Ejemplo
Dumplite: consolidated.db
  Registros de Freelist
dumplite: Skype (main.db)
       Dump Hexa
Recover Messages: WhatsApp
    Para el usuario final




www.recovermessages.com
GRACIAS


          Alejandro Ramos – SecurityByDefault.com
          Twitter: @aramosf

Weitere ähnliche Inhalte

Was ist angesagt?

Archivos secuenciales indexados c++
Archivos secuenciales indexados c++Archivos secuenciales indexados c++
Archivos secuenciales indexados c++pedroumg
 
Estructura de archivos secuencial indexado
Estructura de archivos secuencial indexadoEstructura de archivos secuencial indexado
Estructura de archivos secuencial indexadodexter120
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directaTiFoN87
 
Presentación ivett kool
Presentación ivett koolPresentación ivett kool
Presentación ivett koolIvett Kool
 
Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++panchorc1
 
Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos Juan Sixto
 
Tipos de Servidores
Tipos de ServidoresTipos de Servidores
Tipos de ServidoresDanielRiosDJ
 

Was ist angesagt? (18)

Portal de datos abiertos de la ugr
Portal de datos abiertos de la ugrPortal de datos abiertos de la ugr
Portal de datos abiertos de la ugr
 
Open office base mateo lopez y sebastian mateus 904
Open office base mateo lopez y sebastian mateus 904Open office base mateo lopez y sebastian mateus 904
Open office base mateo lopez y sebastian mateus 904
 
Cuestionario N-2: Base de Datos
Cuestionario N-2: Base de DatosCuestionario N-2: Base de Datos
Cuestionario N-2: Base de Datos
 
Internet
InternetInternet
Internet
 
Emilio php
Emilio phpEmilio php
Emilio php
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Organización aleatoria o indirecta
Organización aleatoria o indirectaOrganización aleatoria o indirecta
Organización aleatoria o indirecta
 
Archivos secuenciales indexados c++
Archivos secuenciales indexados c++Archivos secuenciales indexados c++
Archivos secuenciales indexados c++
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Inf examen
Inf examenInf examen
Inf examen
 
Estructura de archivos secuencial indexado
Estructura de archivos secuencial indexadoEstructura de archivos secuencial indexado
Estructura de archivos secuencial indexado
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directa
 
Presentación ivett kool
Presentación ivett koolPresentación ivett kool
Presentación ivett kool
 
Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++Grupo 1 Archivos Secuenciales Indexados en C++
Grupo 1 Archivos Secuenciales Indexados en C++
 
Archivo de datos
Archivo de datosArchivo de datos
Archivo de datos
 
Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos Técnicas y herramientas de extracción de datos
Técnicas y herramientas de extracción de datos
 
Tipos de Servidores
Tipos de ServidoresTipos de Servidores
Tipos de Servidores
 
Presentación#2
Presentación#2Presentación#2
Presentación#2
 

Ähnlich wie Alejandro Ramos - Te pique lo que te pique, analiza un SQLite [Rooted CON 2013]

Ähnlich wie Alejandro Ramos - Te pique lo que te pique, analiza un SQLite [Rooted CON 2013] (20)

Base de Datos1
Base de Datos1Base de Datos1
Base de Datos1
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
 
BASES DE DATOS
BASES DE DATOSBASES DE DATOS
BASES DE DATOS
 
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
 
Presentacion de power point
Presentacion de power pointPresentacion de power point
Presentacion de power point
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Base de datos
Base de datos Base de datos
Base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
1-2 Arquitectura base de datos.pptx
1-2 Arquitectura base de datos.pptx1-2 Arquitectura base de datos.pptx
1-2 Arquitectura base de datos.pptx
 
Base de dato
Base de  dato Base de  dato
Base de dato
 
Base de dato act4
Base de  dato act4Base de  dato act4
Base de dato act4
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Base de datos en microsoft sql server
Base de datos en microsoft sql serverBase de datos en microsoft sql server
Base de datos en microsoft sql server
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Base de datos.
Base de datos.Base de datos.
Base de datos.
 
Lina rojas base de datos
Lina rojas base de datosLina rojas base de datos
Lina rojas base de datos
 
Lina rojas base de datos
Lina rojas base de datosLina rojas base de datos
Lina rojas base de datos
 

Mehr von RootedCON

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRootedCON
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...RootedCON
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRootedCON
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_RootedCON
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...RootedCON
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...RootedCON
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...RootedCON
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRootedCON
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...RootedCON
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRootedCON
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...RootedCON
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRootedCON
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...RootedCON
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRootedCON
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRootedCON
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRootedCON
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...RootedCON
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...RootedCON
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRootedCON
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRootedCON
 

Mehr von RootedCON (20)

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amado
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopez
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jara
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
 

Alejandro Ramos - Te pique lo que te pique, analiza un SQLite [Rooted CON 2013]

  • 1. Te pique lo que te pique, analiza un SQLite Alejandro Ramos www.SecurityByDefault.com
  • 2. INTRODUCCIÓN • Base de datos relacional (RDBMS) open source • Creado en el año 2000 por Dwayne Richard Hipp • No funciona en el modo tradicional cliente/servidor. Es un único fichero embebido. • Desarrollado para optimizar espacio. • Ampliamente usado en móviles, también en aplicaciones como Firefox, Chrome, Adobe Air, Dropbox o Skype
  • 3. Desde una perspectiva forense • Existen Páginas libres / espacio libre en páginas. • Rollback journal. – Cambios directamente en el fichero original. – Copia del original en fichero “-journal” – Se aplican los cambios si todo es correcto. • Versión 3.7.0 > Write Ahead Log (WAL) – Invierte el proceso. – Cambios en WAL “-wal”, original no se modifica • VACUUM: recompone la base de datos == “desfragmenta”.
  • 4. Cabecera 100 primeros bytes del fichero. Los más relevantes:
  • 5. Estructura del SQLite • Los datos se almacenan en una estructura denominada “B-Tree” (común en bbdd y sistemas de ficheros) • Se componen de: – Páginas libres: hojas y troncales. – Páginas de tablas: hojas e interiores. – Páginas de índices: hojas e interiores. – Páginas de Overflow
  • 6. Páginas libres • Páginas que contenían información de la base de datos y han sido marcadas como libres. Por ej, tras un DELETE. • Gran parte de los datos permanece en el fichero
  • 7. Cabecera de las páginas • Identifican el número de celdas en la página • Donde comienza la primera celda. Espacio libre = desde el fin de cabecera hasta el comienzo de la primera celda.
  • 8. Celdas en páginas • Cada celda representa un registro de una tabla • Una celda puede no entrar en una sola página, produciendo una nueva página “overflow”. • En las páginas libres, las celdas están intactas. • En el resto, las celdas eliminadas pierden el tamaño del payload y cabecera. – No es posible saber donde empieza y acaba el dato de forma estructurada.
  • 9. … En definitiva … Una base de datos SQLite mantiene los datos sin eliminar (siempre y cuando no se haga un vacuum) en: – Páginas de tabla e índices: espacio libre entre la cabecera y el comienzo de celdas. – También el espacio libre entre celdas, si se ha modificado y reducido el tamaño de un celda. – Páginas libres y troncales: prácticamente enteras menos la cabecera. – Páginas Overflow: desde que termina la celda hasta el final.
  • 11. Dumplite: consolidated.db Registros de Freelist
  • 13. Recover Messages: WhatsApp Para el usuario final www.recovermessages.com
  • 14. GRACIAS Alejandro Ramos – SecurityByDefault.com Twitter: @aramosf