Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Linpmem — Pilote du noyau Linux pour l'acquisition de la mémoire physique, permettant un accès en lecture à toute adresse physique, y compris la mémoire réservée et les trous mémoire, avec les informations CR3 et les services de traduction virtuelle à physique. | Kitploit
Outils/GitHubGitHub/velocidex/linpmem
Criminalistique MémoireAnalyse ForensiqueCriminalistique NumériqueRéponse aux Incidents
GitHubvelocidex/linpmem

Linpmem

Pilote du noyau Linux pour l'acquisition de la mémoire physique, permettant un accès en lecture à toute adresse physique, y compris la mémoire réservée et les trous mémoire, avec les informations CR3 et les services de traduction virtuelle à physique.

Voir le dépôt
1051212il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Linpmem – un outil d'acquisition de mémoire physique pour Linux

alt text

Linpmem est un outil Linux x64 uniquement pour lire la mémoire physique.

Comme son homologue Windows, Winpmem, il ne s'agit pas d'un vidage mémoire traditionnel. Linpmem offre une API pour lire depuis n'importe quelle adresse physique, y compris la mémoire réservée et les trous mémoire, mais il peut également être utilisé pour un vidage mémoire normal. De plus, le pilote propose différents modes d'accès pour lire la mémoire physique, tels que les modes octet, mot, double mot, quadruple mot et tampon, ce dernier étant approprié dans la plupart des cas standards. Si la lecture nécessite une lecture alignée en octet/mot/double mot/quadruple mot, Linpmem le fera précisément.

Actuellement, Linpmem propose :

  1. Lecture d'adresse physique (mode d'accès octet, mot, double mot, quadruple mot ou tampon)
  2. Service d'information CR3 (spécifier le processus cible par pid)
  3. Service de traduction d'adresse virtuelle en adresse physique

Le contrôle du cache sera ajouté à l'avenir pour prendre en charge les modes d'accès spécialisés.

Tableau récapitulatif

  • Construction du pilote noyau
  • Chargement du pilote
  • Utilisation
    • Code de démonstration
    • Outil en ligne de commande
    • Bibliothèque
    • Outil de vidage mémoire
  • Bibliothèque
  • Distributions Linux testées
  • Gestion du Secure Boot
  • Problèmes connus
  • En cours
  • Travaux futurs
  • Remerciements

Construction du pilote noyau

Pour l'instant, vous devez compiler vous-même le pilote Linpmem. Une méthode pour charger un pilote Linpmem précompilé sur d'autres systèmes Linux est en cours de développement, mais pas encore terminée. Cela dit, compiler le pilote Linpmem n'est pas difficile, il suffit d'exécuter make.

Étape 1 – Obtenir les bons en-têtes

Vous avez besoin de make et d'un compilateur C. (Nous recommandons gcc, mais clang devrait fonctionner aussi.)

Assurez-vous d'avoir installé les linux-headers (en utilisant le gestionnaire de paquets de votre distribution Linux cible). Le nom exact du paquet peut varier selon votre distribution. Un moyen rapide (indépendant de la distribution) de vérifier si vous avez le paquet installé :

ls -l /usr/lib/modules/`uname -r`/

C'est tout, vous pouvez passer à l'étape 2.

Système étranger : Actuellement, si vous voulez compiler le pilote pour un autre système (par exemple parce que vous voulez créer un vidage mémoire mais ne pouvez pas compiler sur la cible), vous devez télécharger le paquet d'en-têtes directement depuis les dépôts de la distribution Linux de ce système. Vérifiez doublement que la version du paquet correspond exactement à la version du noyau et de la version exécutée sur le système étranger. Si l'autre système utilise un noyau compilé manuellement, vous devez obtenir une copie du répertoire de construction de ce noyau. Ensuite, placez le chemin de l'un ou l'autre répertoire dans la variable d'environnement KDIR.

export KDIR=chemin/vers/le/paquet/d'en-têtes/extrait/ou/racine/du/noyau

Étape 2 – make

Compiler le pilote est simple, tapez simplement :

make

Cela devrait produire linpmem.ko dans le répertoire de travail courant.

Vous voudrez peut-être vérifier precompiler.h avant et choisir de compiler pour la release ou le debug (par exemple avec des impressions de debug). Il n'y a pas beaucoup d'autres paramètres de précompilation pour le moment.

Chargement du pilote

Le module linpmem.ko peut être chargé en utilisant insmod chemin-vers-linpmem.ko, et déchargé avec rmmod chemin-vers-linpmem.ko. (Cela chargera le pilote uniquement pour cette session.) Si vous avez compilé pour le debug, regardez aussi dmesg.

Après le chargement, pour communiquer avec le pilote, vous devez créer le périphérique :

mknod /dev/linpmem c 42 0

Si vous ne pouvez pas parler au pilote, vérifiez éventuellement dans le journal dmesg que '42' était bien le majeur enregistré :

[12827.900168] linpmem: registered chrdev with major 42

Cependant, généralement le noyau essaiera d'attribuer ce nombre.

Vous pouvez utiliser chown sur le périphérique pour le donner à votre utilisateur, si vous ne voulez pas garder une console root ouverte en permanence. (Ou continuez simplement à l'utiliser dans une console root.)

  • Surveillez la sortie dmesg. Veuillez signaler les erreurs si vous en voyez !
  • Attention : s'il y a un message d'erreur dmesg de Linpmem demandant de redémarrer, faites-le immédiatement.
  • Attention : ceci est une version préliminaire.

Utilisation

Code de démonstration

Un exemple de code démontrant et expliquant (en détail) comment interagir avec le pilote est fourni. La référence de l'API espace utilisateur se trouve en outre dans ./userspace_interface/linpmem_shared.h.

  1. cd demo
  2. gcc -o test test.c
  3. (sudo) ./test // <= vous avez besoin de sudo si vous n'avez pas utilisé chown sur le périphérique.

Ce code est important si vous voulez comprendre comment interagir directement avec le pilote au lieu d'utiliser une bibliothèque. Il peut également être utilisé comme un test de fonctionnalité court.

Outil en ligne de commande

Il existe un outil en ligne de commande (optionnel) de base pour Linpmem, l'outil CLI pmem. Il se trouve ici : https://github.com/vobst/linpmem-cli. Outre le code source, il existe également un outil CLI précompilé ainsi que la bibliothèque statique précompilée et les en-têtes que l'on peut trouver ici (signés). Remarque : ceci est une version préliminaire, vérifiez les mises à jour car de nombreux ajouts et améliorations suivront bientôt.

L'outil CLI pmem peut être utilisé pour tester les différentes fonctions de Linpmem de manière (relativement) sûre et pratique. Linpmem peut également être chargé par cet outil au lieu d'utiliser insmod/rmmod, avec quelques options supplémentaires à l'avenir. Cela a aussi l'avantage que pmem crée automatiquement le bon périphérique pour vous pour une utilisation immédiate. Il est extrêmement portable et fonctionne sur n'importe quel système Linux (et a en fait été testé même sur un Linux 2.6).

$ ./pmem -h
Client en ligne de commande pour le pilote linpmem

Utilisation : pmem [OPTIONS] [COMMANDE]

Commandes :
  insmod  Charger le pilote linpmem
  help    Afficher ce message ou l'aide de la sous-commande donnée

Options :
  -a, --address <ADRESSE>            Adresse pour les opérations de lecture physique
  -v, --virt-address <VIRT_ADRESSE>  Traduire l'adresse dans l'espace d'adressage du processus cible (défaut : processus courant)
  -s, --size <TAILLE>                Taille des opérations de lecture tampon
  -m, --mode <MODE>                  Mode d'accès pour les opérations de lecture [valeurs possibles : byte, word, dword, qword, buffer]
  -p, --pid <PID>                    Processus cible pour les informations cr3 et les traductions virtuel-vers-physique
      --cr3                          Interroger la valeur cr3 du processus cible (défaut : processus courant)
      --verbose                      Afficher les sorties de debug
  -h, --help                         Afficher l'aide (voir plus avec '--help')
  -V, --version                      Afficher la version
Télécharger l’outil