4 votos

Puedo acceder a los nombres de los contactos en el chat.db?

He estado jugando con el chat.db archivo Library/Messages ver mis mensajes desde un sql perspectiva. Me pregunto si es posible ver los nombres de los contactos en este db, en concreto de alguna manera se unen en el message tabla. Mi hurgando no ha sido útil, y no ha googlear.

Cualquier conocimiento apreciado!

10voto

siva Puntos 23

Usted puede unirse a la manija de la tabla a la tabla de mensajes.

select date, id, text
from message
left join handle
on message.handle_id = handle.ROWID

Sin embargo, esto sólo proporciona el número de teléfono o ID de Apple dirección de correo electrónico. Esto es debido a que el chat.db no almacena los nombres de los contactos - este es busqué en la marcha por los Mensajes.

Puede adjuntar la libreta de direcciones de la base de datos y realizar una consulta de unirse a las mesas de las dos bases de datos para obtener la información que necesita.

  1. Iniciar un sqlite3 sesión. Abrir Terminal y ejecutar

    sqlite3
    
    SQLite version 3.19.3 2017-06-27 16:48:08
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite>
    
  2. Determinar que los Contactos de la base de datos a utilizar. Los contactos pueden provenir de múltiples fuentes. En mi caso, todos mis contactos están en iCloud, por lo que es fácil elegir la más grande base de datos. Ir a

    ~/Library/Application Support/AddressBook/Sources
    

    y buscar la carpeta con el tamaño más grande, o de lo contrario se echar un vistazo a través de cada una de las carpetas de la carpeta de Metadatos utilizando QuickLook a encontrar contactos dentro de la base de datos.

    Finder Sources folder

  3. Una vez que usted haya encontrado la carpeta de Fuentes que contiene los contactos que desea, obtener la ruta de acceso a la base de datos. Haga clic derecho en AddressBook-v22.abcddb dentro de la carpeta con tus contactos, mantenga ⌥ y seleccione " Copiar "de la libreta de direcciones-v22.abcddb" como nombre de Ruta'.

  4. En la Terminal dentro de sqlite3, ejecute el siguiente:

    attach "/Users/yourusername/Library/Messages/chat.db" as cdb;
    attach "<paste your path>" as adb;
    

    Reemplazar 'nombredeusuario' en el primer comando y pegar la ruta que has copiado en el segundo.

  5. Ejecutar SQL. Copiar y pegar todas estas líneas.

    select date, id, ZFIRSTNAME || ' ' || ZLASTNAME, text
    from cdb.message
    left join cdb.handle
    on message.handle_id = handle.ROWID
    left join adb.ZABCDPHONENUMBER
    on replace(substr(handle.id, 4), ' ', '')
    like '%' || substr(replace(ZABCDPHONENUMBER.ZFULLNUMBER, ' ', ''), 2)
    left join adb.ZABCDRECORD
    on ZABCDPHONENUMBER.ZOWNER = ZABCDRECORD.Z_PK;
    

    Tenga en cuenta que este SQL contiene algunos números de magia.

    • substr(handle.id, 4) presume de números de teléfono de los Mensajes comienzan con un código de país en el formato de un plus seguido de 2 dígitos.
    • substr(replace(…), 2) presume de números de teléfono de los Contactos comienzan con un 0.

    Este es el estándar de formato internacional. Esto tendrá que ser ajustado para Estados Unidos.

  6. Usted debe obtener un resultado parecido:

    datetimestamp|+441234567890|First Last|Lorem ipsum dolor sit amet
    

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X