Maison / l'Internet / Surveillance des dossiers et des fichiers. Process Monitor : comment retrouver une application qui écrit des fichiers obscurs sur le disque. Enregistrement et ouverture du journal

Surveillance des dossiers et des fichiers. Process Monitor : comment retrouver une application qui écrit des fichiers obscurs sur le disque. Enregistrement et ouverture du journal

Je voudrais consacrer un article à un tour d'horizon des API fournies par différents systèmes d'exploitation pour suivre les modifications d'un annuaire. L'article est apparu à la suite de mon travail sur les démons de suivi des modifications pour l'utilitaire dklab_realsync (, référentiel github) et le mien, que je ne veux pas encore annoncer.

Windows ReadDirectoryChangesW

Pour bloc opératoire Systèmes Windows il existe une merveilleuse fonction ReadDirectoryChangesW , qui renvoie un ensemble de modifications pour un répertoire, y compris un indicateur pour travailler de manière récursive (bWatchSubtree). Ainsi, la mise en œuvre du suivi des modifications dans le répertoire n'est pas difficile, et dans la même implémentation dklab_realsync prend 80 lignes de code ou 3,5 Ko. Fait intéressant, sous Windows, ces événements sont pris en charge même via SMB !

Cependant, il y a certains pièges :

  • la taille finale du tampon de modifications, après quoi la file d'événements débordera et ces événements seront perdus
  • selon la documentation du package watchdog, l'événement de déplacement est envoyé avant que les modifications ne deviennent visibles dans le système de fichiers
  • taille de la mémoire tampon limitée à 64 Ko pour le réseau FS

Conclusion: La fonction ReadDirectoryChangesW vous permet de trouver facilement tous les événements dans les fichiers, mais la file d'attente des événements peut déborder et vous devrez alors effectuer une analyse complète du système de fichiers. Il est également possible de diffuser des événements avant qu'ils ne deviennent pertinents.

Mac OS X, FSEvents

Mac OS X dispose également d'une API pratique et simple pour suivre les modifications apportées à système de fichiers appelé FSEvents. En utilisant cette API, l'implémentation de démon la plus simple est de 50 lignes de code ou 1,8 ko. La file d'attente ne peut pas déborder (!), mais une analyse complète peut toujours être nécessaire si le démon fseventsd tombe en panne. Il convient de noter que cette API avant la version 10.7 ne fournit pas de modifications par fichiers, elle signale uniquement les répertoires où quelque chose a changé. Étant donné que les événements ne vont nulle part et sont écrits dans le journal (le service FSEvents stocke les événements dans une base de données persistante par volume), le détail avec la précision du répertoire permet d'économiser de l'espace disque.

Conclusion: L'API FSEvents pour Mac OS X est la plus inhabituelle de toutes ces API. La file d'attente ne déborde pas et il est même possible de récupérer des événements du passé. Cependant, la granularité des événements est donnée par répertoire (jusqu'à la version 10.7), ce qui signifie que le démon est moins efficace pour synchroniser les fichiers.

Linux, notifier

Dans le noyau linux vanilla, il existe un moyen de surveiller les modifications dans un répertoire, et c'est inotify . Il existe une bonne documentation détaillée pour cette API, mais il n'y a pas de support pour le suivi des modifications récursives ! De plus, inotify limite le nombre maximum d'objets pouvant être surveillés. L'implémentation de démon la plus simple prend 250 lignes de code ou 8 Ko. Une construction statique utilisant dietlibc prend environ 14 ko. Autre moment désagréable, l'application elle-même doit maintenir des correspondances entre le descripteur de veille (dans notre cas, il s'agit toujours d'un répertoire) et le nom. Il existe une fonction inotify_add_watch , qui transmet le chemin vers le répertoire surveillé, mais il n'y a pas d'inverse - inotify_get_path, qui renverrait ce chemin même selon le descripteur passé. Les événements contiennent uniquement un descripteur de surveillance et un chemin relatif vers le fichier modifié dans le répertoire.

Les pièges du suivi récursif d'un répertoire avec inotify :

  • Possibilité de déborder la file d'attente (la longueur de la file d'attente est définie dans /proc/sys/fs/inotify/max_queued_events)
  • Limite du nombre maximum d'objets watch (défini dans /proc/sys/fs/inotify/max_user_watches)
  • Ne pas pouvoir suivre récursivement un répertoire
  • La nécessité de traiter séparément le cas lors de la création d'un répertoire (par exemple mkdir -p a/b/c). Vous recevrez un événement indiquant que le répertoire "a" a été créé, mais pendant que vous attachez un gestionnaire à ce répertoire, un autre répertoire peut déjà y être créé et vous ne recevrez pas d'événement à ce sujet.
  • La possibilité théorique d'un débordement d'entier du descripteur de surveillance (wd), puisqu'il est défini par uint32

FreeBSD, Mac OS X, kqueue

FreeBSD et Mac OS X vous permettent de suivre les modifications à l'aide de kqueue, qui a des caractéristiques similaires à inotify et qui manque également de suivi de répertoire récursif. De plus, kqueue prend des descripteurs comme arguments. Ouvrir des fichiers(répertoires), ainsi lors de l'utilisation de cette API, les limites sur le nombre de répertoires surveillés sont encore plus strictes.

Total:

Comme vous pouvez le constater, toutes les API ont leurs avantages et leurs inconvénients. Les mécanismes kqueue et inotify sont les moins pratiques, mais ils sont aussi les plus efficaces et les plus fiables. Les systèmes d'exploitation commerciaux fournissent des mécanismes plus pratiques pour suivre les modifications, mais ils ont également leurs propres caractéristiques. J'espère maintenant que vous avez une meilleure idée de la dureté du sort de Dropbox et des programmes similaires qui doivent s'entendre avec tout cela et effectuer une synchronisation des données fiable et efficace :).

* Photo tirée de

Si vous n'êtes pas le seul utilisateur de votre ordinateur et que vous avez besoin de connaître les modifications apportées à vos fichiers et dossiers sur une certaine période, vous pouvez utiliser programmes spéciaux qui va t'aider suivre les modifications de fichiers et obtenez des informations précises sur toutes les modifications apportées au système de fichiers Windows.

Comment suivre les changements de fichiers et de dossiers ?

Dans cet article, je vais vous présenter deux programmes. Avec le programme FolderChangesView et avec l'utilitaire Disk Pulse. Les deux programmes sont gratuits. FolderChangeView est entièrement gratuit. Disk Plus a une version gratuite et payante (il y a peu de différences)

FolderChangesView : surveillez les changements de dossier et de fichier

AffichageModificationsDossier - petit utilitaire gratuit pour garder une trace de toutes les modifications apportées aux fichiers dans un dossier et une partition spécifiques disque dur.

Analyses d'utilitaires en temps réel à l'avance dossier spécifié ou groupe de dossiers et affiche des informations détaillées sur tous les changements. L'ensemble du résultat est présenté dans un tableau pratique.

Vous devez d'abord télécharger le programme. Vous pouvez télécharger gratuitement FolderChangesView à partir du site du développeur sur ce lien. Là, vous pouvez également télécharger le crack, qui doit être décompressé et jeté dans le dossier avec le programme.

Personnalisation de FolderChangesView

Le programme ne nécessite pas d'installation. Après le démarrage du programme, une fenêtre de paramètres apparaîtra.


Suivi des modifications de fichiers avec FolderChangesView

Dans la fenêtre des paramètres, vous devez spécifier un dossier, plusieurs dossiers ou section dure lecteur que vous devez surveiller. Dans ce cas, j'ai sélectionné le dossier - spysoftnet et coché Analyse également les sous-répertoires

Dans la deuxième ligne de la fenêtre des paramètres, vous pouvez définir les dossiers que vous ne souhaitez pas que le programme suive. Par exemple, je ne veux pas que l'application surveille les changements dans le dossier tmp. Une fois que vous avez défini le dossier, n'oubliez pas de cocher la case à côté de Exclure les dossiers suivants .

En outre, vous pouvez définir la taille de fichier minimale et maximale. Une fois tous les paramètres sélectionnés, cliquez sur OK

Disk Pulse : programme de surveillance des fichiers et des dossiers

DiskPulse est un autre programme de surveillance de fichiers, de dossiers et de disques durs qui peut afficher les modifications apportées au système de fichiers Windows en temps réel.


DiskPulse : comment suivre les modifications apportées aux fichiers et aux dossiers

Le programme a un très intéressant, à mon avis, la possibilité d'envoyer des notifications par e-mail ou l'exécution de commandes utilisateur (actions), en cas de détection de toutes sortes de changements critiques dangereux dans le système.

Si vous laissez tous les paramètres tels qu'ils sont par défaut, vous serez informé de tous les changements à l'échelle du système. Mais si vous creusez un peu dans les options, vous pouvez réduire la quantité de données. Dans l'image ci-dessous, vous pouvez voir à quel point cela peut être facile en quelques clics.


DiskPulse : sélectionnez un dossier ou un disque dur

À dernière version ajout d'un tableau montrant le nombre de fichiers, leurs types et plus informations utiles.


DiskPulse : programme de surveillance des fichiers et des dossiers

Télécharger DiskPulse gratuitement depuis le site du développeur, vous pouvez ce lien.

Résumons. Les deux programmes fonctionnent très bien et gèrent la fonction de base de surveillance des fichiers et des dossiers et méritent l'attention. Programme" AffichageModificationsDossier» J'ai plus aimé le programme. Bien que le deuxième programme soit plus fonctionnel. Les programmes sont gratuits et sans virus, alors essayez les deux et décidez vous-même lequel utiliser.


Ces utilitaires aideront à suivre l'activité des utilisateurs, ainsi qu'à identifier et analyser le travail caché des programmes malveillants. À propos de quoi malware existent, nous avons écrit dans l'article -.

Cet examen n'incluait pas 2 autres programmes de surveillance de fichiers et de dossiers. Ce que je reviendrai dans le prochain article. Par conséquent, afin de ne pas manquer les mises à jour, abonnez-vous à notre VKontakte public et à d'autres réseaux sociaux.

Vidéo: Présentation du disque impulsion

Si vous n'êtes pas le seul utilisateur de PC, après une longue période de non-utilisation de la machine, vous devrez peut-être savoir exactement quels changements se sont produits pendant cette période. Il peut également y avoir des situations dans lesquelles Disque dur montre une activité, mais en fait, il n'est pas clair s'il est occupé à traiter des processus utiles ou s'il exécute un logiciel malveillant. Le programme FolderChangesView vous aidera à suivre les modifications apportées aux fichiers et à obtenir des données à jour sur toutes les modifications apportées au système de fichiers.

FolderChangesView est un petit utilitaire qui a été créé spécifiquement pour garder une trace de toutes les modifications apportées aux fichiers et dossiers. Le programme affiche en temps réel toutes les modifications apportées aux fichiers et le résultat complet est présenté à l'utilisateur dans un tableau pratique. Vous pouvez télécharger le programme lui-même depuis le site officiel du développeur sur le lien (il est également possible de télécharger le crack, qui s'installe simplement en le déplaçant dans le dossier avec l'application) : http://www.nirsoft.net /utils/folder_changes_view.html

Paramètres du programme

L'utilitaire ne nécessite pas d'installation, car l'archive ne contient qu'un seul fichier .exe. Il est recommandé de créer dossier séparé pour le programme, téléchargez le crack et jetez-y ces deux fichiers. Après le démarrage, le menu de configuration s'ouvrira devant vous (si vous fermez le programme et l'ouvrez à nouveau, le menu réapparaîtra devant vous).

Ici, vous devez sélectionner le lecteur, les dossiers ou l'intégralité de la partition du disque dur que vous souhaitez analyser. Lors de la sélection d'un dossier, laissez l'option "Analyser également les sous-dossiers" cochée. Vous avez également la possibilité de spécifier des dossiers que vous n'avez pas besoin de surveiller : vous devez spécifier le chemin d'accès au dossier et cocher la case à côté de "Exclure les dossiers suivants".
Eh bien, en conclusion, à partir de paramètres utiles, vous pouvez définir la taille des fichiers que vous devez surveiller. Après avoir sélectionné ces paramètres de base, cliquez simplement sur "OK" et le processus de surveillance des dossiers sélectionnés commencera.

Je voudrais consacrer un article à un tour d'horizon des API fournies par différents systèmes d'exploitation pour suivre les modifications d'un annuaire. L'article est apparu à la suite de mon travail sur les démons de suivi des modifications pour l'utilitaire dklab_realsync (, référentiel github) et le mien, que je ne veux pas encore annoncer.

Windows ReadDirectoryChangesW

Pour système opérateur Windows a une merveilleuse fonction ReadDirectoryChangesW qui renvoie un ensemble de modifications pour un répertoire, y compris un indicateur pour fonctionner de manière récursive (bWatchSubtree). Ainsi, la mise en œuvre du suivi des modifications dans le répertoire n'est pas difficile, et dans la même implémentation dklab_realsync prend 80 lignes de code ou 3,5 Ko. Fait intéressant, sous Windows, ces événements sont pris en charge même via SMB !

Cependant, il y a certains pièges :

  • la taille finale du tampon de modifications, après quoi la file d'événements débordera et ces événements seront perdus
  • selon la documentation du package watchdog, l'événement de déplacement est envoyé avant que les modifications ne deviennent visibles dans le système de fichiers
  • taille de la mémoire tampon limitée à 64 Ko pour le réseau FS

Conclusion: La fonction ReadDirectoryChangesW vous permet de trouver facilement tous les événements dans les fichiers, mais la file d'attente des événements peut déborder et vous devrez alors effectuer une analyse complète du système de fichiers. Il est également possible de diffuser des événements avant qu'ils ne deviennent pertinents.

Mac OS X, FSEvents

Mac OS X dispose également d'une API pratique et simple pour surveiller les modifications du système de fichiers appelée FSEvents . En utilisant cette API, l'implémentation de démon la plus simple est de 50 lignes de code ou 1,8 ko. La file d'attente ne peut pas déborder (!), mais une analyse complète peut toujours être nécessaire si le démon fseventsd tombe en panne. Il convient de noter que cette API avant la version 10.7 ne fournit pas de modifications par fichiers, elle signale uniquement les répertoires où quelque chose a changé. Étant donné que les événements ne vont nulle part et sont écrits dans le journal (le service FSEvents stocke les événements dans une base de données persistante par volume), le détail avec la précision du répertoire permet d'économiser de l'espace disque.

Conclusion: L'API FSEvents pour Mac OS X est la plus inhabituelle de toutes ces API. La file d'attente ne déborde pas et il est même possible de récupérer des événements du passé. Cependant, la granularité des événements est donnée par répertoire (jusqu'à la version 10.7), ce qui signifie que le démon est moins efficace pour synchroniser les fichiers.

Linux, notifier

Dans le noyau linux vanilla, il existe un moyen de surveiller les modifications dans un répertoire, et c'est inotify . Il existe une bonne documentation détaillée pour cette API, mais il n'y a pas de support pour le suivi des modifications récursives ! De plus, inotify limite le nombre maximum d'objets pouvant être surveillés. L'implémentation de démon la plus simple prend 250 lignes de code ou 8 Ko. Une construction statique utilisant dietlibc prend environ 14 ko. Autre moment désagréable, l'application elle-même doit maintenir des correspondances entre le descripteur de veille (dans notre cas, il s'agit toujours d'un répertoire) et le nom. Il existe une fonction inotify_add_watch , qui transmet le chemin vers le répertoire surveillé, mais il n'y a pas d'inverse - inotify_get_path, qui renverrait ce chemin même selon le descripteur passé. Les événements contiennent uniquement un descripteur de surveillance et un chemin relatif vers le fichier modifié dans le répertoire.

Les pièges du suivi récursif d'un répertoire avec inotify :

  • Possibilité de déborder la file d'attente (la longueur de la file d'attente est définie dans /proc/sys/fs/inotify/max_queued_events)
  • Limite du nombre maximum d'objets watch (défini dans /proc/sys/fs/inotify/max_user_watches)
  • Ne pas pouvoir suivre récursivement un répertoire
  • La nécessité de traiter séparément le cas lors de la création d'un répertoire (par exemple mkdir -p a/b/c). Vous recevrez un événement indiquant que le répertoire "a" a été créé, mais pendant que vous attachez un gestionnaire à ce répertoire, un autre répertoire peut déjà y être créé et vous ne recevrez pas d'événement à ce sujet.
  • La possibilité théorique d'un débordement d'entier du descripteur de surveillance (wd), puisqu'il est défini par uint32

FreeBSD, Mac OS X, kqueue

FreeBSD et Mac OS X vous permettent de suivre les modifications à l'aide de kqueue, qui a des caractéristiques similaires à inotify et qui manque également de suivi de répertoire récursif. De plus, kqueue prend des descripteurs de fichiers ouverts (répertoires) comme arguments, donc lors de l'utilisation de cette API, les limites sur le nombre de répertoires surveillés sont encore plus strictes.

Total:

Comme vous pouvez le constater, toutes les API ont leurs avantages et leurs inconvénients. Les mécanismes kqueue et inotify sont les moins pratiques, mais ils sont aussi les plus efficaces et les plus fiables. Les systèmes d'exploitation commerciaux fournissent des mécanismes plus pratiques pour suivre les modifications, mais ils ont également leurs propres caractéristiques. J'espère maintenant que vous avez une meilleure idée de la dureté du sort de Dropbox et des programmes similaires qui doivent s'entendre avec tout cela et effectuer une synchronisation des données fiable et efficace :).

* Photo tirée de

Nous trouvons des fichiers incompréhensibles sur le disque de deux manières. Soit ils sont clairement visibles dans l'explorateur, soit gestionnaire de fichiers, ou ils conduisent à la recherche de la cause de la disparition espace libre sur disque. Eh bien, si après avoir supprimé les fichiers, ils n'apparaissent plus. Mais ce n'est pas toujours le cas, auquel cas vous devez déterminer l'application qui les crée.

Une fois qu'une personne a contacté le forum, dont l'application écrivait à la racine disque système fichiers contenant tmp_out.

Bien sûr, il est possible que ce système soit infecté et une vérification approfondie avec toutes sortes d'outils antivirus est nécessaire. Mais le problème n'est pas toujours lié à code malicieux, et alors une approche différente est nécessaire. Le moyen le plus simple de déterminer le coupable de l'apparition de tels fichiers consiste à utiliser l'utilitaire. Cette vidéo de quatre minutes vous montrera comment le faire.

Suivi d'activité

Une fois lancé, l'utilitaire surveille plusieurs types d'activité système :

  • enregistrement
  • système de fichiers
  • processus et threads

Puisque nous recherchons la raison pour laquelle les fichiers sont écrits sur le disque, nous devons nous concentrer sur l'activité dans le système de fichiers. Pour ce faire, ne laissez qu'un seul bouton activé sur la barre d'outils, qui est responsable de l'activité du disque.

Assurez-vous également que l'utilitaire suit l'activité. Si vous avez un bouton barré, entouré en rouge sur la figure, cliquez sur CTRL+E.

Dans la figure ci-dessus, l'activité est surveillée, et uniquement dans le système de fichiers.

Filtre principal

Nous devons maintenant appliquer un filtre pour exclure les activités non pertinentes. Appuyez sur le raccourci clavier CTRL+L, et vous verrez les options de filtrage. Certains filtres sont immédiatement actifs dans Process Monitor, ce qui exclut la surveillance des activités du programme lui-même, ainsi que certains composants du système (fichier d'échange, tables MFT, etc.). Ceci est fait afin d'exclure la surveillance de l'activité standard du système. Dans la plupart des cas, vous n'avez pas besoin de supprimer ces filtres et d'ajouter simplement les vôtres.

La figure ci-dessus montre un filtre qui suivra la création et la modification de tous les fichiers dont les chemins contiennent tmp_out. Analysons le filtre plus en détail de gauche à droite :

  • Chemin. Le chemin dans le système de fichiers. Vous pouvez également spécifier des clés de registre lorsque l'activité y est surveillée.
  • contient. La condition par laquelle la recherche est déterminée mot-clé. Traduit de l'anglais, ce mot signifie "contient". Selon la tâche, vous pouvez spécifier la condition en sélectionnant l'option commence par(commence par) ou se termine par(se termine par).
  • tmp_out. Le mot-clé, qui dans ce cas doit être contenu dans le chemin. Le nom de fichier et l'extension font partie du chemin d'accès complet au fichier.
  • Comprendre. Inclure la condition spécifiée dans la liste des conditions surveillées.

N'oubliez pas d'appuyer sur le bouton Ajouter pour ajouter un filtre à la liste. Cependant, si vous oubliez, Process Monitor vous le rappelle avant de fermer la fenêtre du filtre.

Dans ce cas, j'ai utilisé une partie du nom de fichier comme mot-clé, car tous les fichiers obscurs contiennent tmp_out dans le nom. Si les fichiers sont créés avec des noms différents mais dans un dossier spécifique, utilisez le chemin d'accès à ce dossier comme mot-clé.

Étant donné qu'une condition stricte de filtrage de l'activité des fichiers est définie, la fenêtre du programme n'affichera probablement aucun processus maintenant. Mais Process Monitor a déjà commencé à les suivre.

La vérification du filtre est très simple. Il suffit de créer éditeur de texte un fichier avec le nom que vous recherchez ou dans un dossier que vous regardez, et Process Monitor y réagira instantanément.

Filtres supplémentaires

Veuillez noter que l'utilitaire a enregistré non seulement l'activité du bloc-notes, mais aussi l'explorateur et Recherche Windows. Vous pouvez exclure les processus non pertinents des résultats en créant des filtres supplémentaires. Faites un clic droit sur le processus et sélectionnez parmi menu contextuel paragraphe exclure<имя процесса> . C'est le moyen le plus simple de créer un filtre, mais vous pouvez le faire à partir de la fenêtre de filtre, comme indiqué ci-dessus. Dans ce cas, la condition sera : Nom du processus - Est -<имя процесса>— Exclure.

Enregistrement et ouverture du journal

Veuillez noter que pour le suivi à long terme, la taille du journal peut être mesurée en gigaoctets. Par défaut, Process Monitor se connecte au fichier d'échange. Si vous avez un petit partition système, il est logique d'enregistrer le journal dans un fichier sur une autre partition de disque.

Pour enregistrer le journal dans un fichier, appuyez sur le raccourci clavier CTRL+B et fournissez un nom et l'emplacement souhaité pour le fichier.

Les modifications prennent effet après le redémarrage de la capture d'activité. Maintenant, vous pouvez laisser Process Monitor activé en toute sécurité pendant une longue période sans craindre la limite d'espace disque.

Vous pouvez arrêter le suivi des activités avec un raccourci clavier CTRL+E.

Par la suite, vous pouvez toujours charger le journal du fichier enregistré dans l'utilitaire. Fermez Process Monitor et double-cliquez sur le fichier journal .pml. Le contenu du journal sera affiché dans la fenêtre Process Explorer.

La personne qui est venue sur le forum avec le problème n'est jamais revenue pour me dire si mes conseils l'avaient aidé. Mais il n'était pas le premier à poser une telle question, et certainement pas le dernier. Si vous avez une question, vous pouvez utiliser Process Monitor pour y répondre.

À propos de la vidéo

Les lecteurs du blog ont exprimé leur soutien à mon idée de compléter les articles avec du matériel vidéo. J'ai pensé que c'était un très bon ajustement et j'ai enregistré une vidéo de moins de 4 minutes.

Pour être honnête, créer une telle vidéo prend beaucoup plus de temps que d'écrire un article. Je ne suis donc pas prêt à remplacer le texte imprimé par une vidéo de toute façon. Mais il me semble que dans ce cas la vidéo est plus intéressante et plus claire. Que penses-tu de cela?

La vidéo dure environ quatre minutes et j'ai essayé de la rendre rapide et concise. En effet, dans la réalité, préparer la capture d'une application prend littéralement une minute. Êtes-vous satisfait de la rapidité de présentation ?

Vous pouvez regarder une histoire plus détaillée sur Process Monitor et d'autres exemples de son utilisation pratique dans la vidéo de mon collègue Vasily Gusev si vous avez 40 minutes à perdre :)