7 votes

Comment puis-je enregistrer toutes les notifications ?

Dropbox, PushBullet, Thunderbird et une douzaine d'autres applications créent des notifications. Est-il possible de les enregistrer à la manière d'Unix ?

Je n'aime pas les petits messages qui apparaissent pendant quelques secondes et disparaissent ensuite sans laisser de trace.

En fait, je veux pouvoir extraire un fichier qui contient une ligne pour chaque notification.

2voto

Krystian Points 13

Comme l'a souligné Arthur Hammer, https://apple.stackexchange.com/a/142811/37689 indique que les notifications sont stockées dans une base de données SQLite. Le script Python script suivant devrait vous aider à démarrer :

#!/usr/bin/env python
import os
import re
import sqlite3

# Location of notification centers database under Yosemite
tmp = os.environ['TMPDIR']
conn = sqlite3.connect(tmp + '/../0/com.apple.notificationcenter/db/db')

for notification in conn.execute('SELECT * from notifications'):
    encoded_data = str(notification[-1]) # last item
    clean = re.sub('[^\w\s-]', '', encoded_data) # remove some funny stuff (fixme: removes too much?)
    sp = clean.split('\t')
    # Find NSActualdeliverydate, message content seems to always come after this
    for ix in range(len(sp)):
        if 'NSActualdeliverydate' in sp[ix]:
            break
    # Skip blanks
    for ix in range(ix+1, len(sp)):
        if sp[ix] != '': break

    print 'notification', sp[ix].replace('_', '\n').strip()

conn.close()

Vous pouvez alors soit l'envoyer dans un fichier et l'analyser, soit analyser directement la sortie du script.

2voto

Liam Devanney Points 41

La réponse de @oystein est excellente, mais je suppose qu'elle ne fonctionne que pour yosemite parce que la base de données sqlite pour high sierra est un modèle de base de données différent...

J'ai donc trouvé cet outil simple... (qui fonctionne parfaitement pour high seirra) https://github.com/ydkhatri/MacForensics/blob/master/macNotifications.py

Il suffit de lancer le programme avec le chemin de la base de données en entrée et le chemin de sortie .csv que vous souhaitez créer.

note : pour trouver le chemin d'accès à votre centre de notification, consultez ce... https://stackoverflow.com/a/26777027

glhf !

2voto

Oscar Zhang Points 213

Localisez d'abord les fichiers sqlite db et db-wal où se trouvent les notifications. Comme dans mojave, ils peuvent être trouvés à l'aide de cette commande :

lsof -p $(ps aux | grep -m1 usernoted | awk '{ print $2 }')| awk '{ print $9 }' | grep 'db2/db$' | xargs dirname

Ensuite, comme @greenhouse l'a mentionné, MacFronsics script est un bon choix pour analyser le fichier de base de données. D'après mes tests, le script supporte également mojave.

Si quelqu'un ne reçoit pas la dernière notification, les notifications les plus récentes ne sont pas susceptibles de figurer dans la base de données principale. L'analyse directe du fichier de la base de données aboutirait à de vieilles notifications. Si vous souhaitez recevoir les dernières notifications, n'oubliez pas de migrer l'enregistrement dans le fichier db-wal (Write AHead Log) vers la base de données en premier lieu.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X