1. Livres et vidéos
  2. Python et l'analyse forensique - Récupérer et analyser les données produites par les ordinateurs

Python et l'analyse forensique Récupérer et analyser les données produites par les ordinateurs

  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne
  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7

Présentation

L'informatique forensique nécessite de comprendre en détail le fonctionnement des ordinateurs, des périphériques et des logiciels en question. L'objectif est de donner au lecteur les connaissances nécessaires pour se familiariser avec le langage Python (en version 3) en orientant la problématique de manière à se focaliser sur le fonctionnement de ces objets. Ce livre a été écrit avec la volonté d'être accessible au plus grand nombre et la conviction qu'une « démocratisation » de la compréhension de l'outil informatique est désormais essentielle.

Ce livre propose une approche en deux temps : il commence par une introduction au langage Python puis présente comment l'utiliser pour récupérer et manipuler les données produites par nos ordinateurs. Les auteurs traitent ainsi de thématiques variées allant de l'inspection de la mémoire vive des processus, au fonctionnement interne de logiciels grand public ou à l'extraction de l'historique de navigateur web. Différents outils sont étudiés : des plus basiques avec la bibliothèque libmagic, aux technologies les plus récentes comme l'apprentissage automatique avec scikit-learn et son écosystème issu du calcul scientifique.

Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.


Les chapitres du livre :
Avant-propos – Introduction : Python et l'informatique forensique – Premiers pas en Python – Bibliothèque standard – Premiers pas dans l'analyse d'un fichier – Analyser un historique de navigation web – Partitionnement automatique de données – Extraire les sujets d'un ensemble de textes – Inspection des processus du noyau Linux



Quizinclus dans
la version en ligne !
  • Testez vos connaissances à l'issue de chaque chapitre
  • Validez vos acquis

Table des matières

  • Introduction : Python et l’informatique forensique
    • 1. Pourquoi un livre sur le sujet ?
      • 1.1 La mutation de l'informatique forensique
        • 1.1.1 Des usages toujours plus nombreux et variés
        • 1.1.2 Un cadre légal qui évolue à l'échelle planétaire
      • 1.2 Une pratique qui se démocratise
        • 1.2.1 Des attentes en sécurité et en fiabilité toujours plus grandes
        • 1.2.2 De la nécessité de maîtriser ses outils
    • 2. Présentation du langage
      • 2.1 Un langage adapté
        • 2.1.1 Python, un langage de script
        • 2.1.2 Une interface efficace avec C
        • 2.1.3 Une communauté active
      • 2.2 Interprétation de Python
        • 2.2.1 CPython
        • 2.2.2 Autres implémentations
        • 2.2.3 URL
    • 3. Le choix des logiciels
      • 3.1 Le choix du système d'exploitation
        • 3.1.1 GNU/Linux
        • 3.1.2 Le choix d'une distribution
        • 3.1.3 Les procédures d'installation dans ce livre
  • Premiers pas en Python
    • 1. Installation de CPython
      • 1.1 Avec le gestionnaire de paquets de la distribution GNU/Linux
        • 1.1.1 Sur GNU/Linux Debian 9
        • 1.1.2 Autres gestionnaires de paquets
      • 1.2 Autres méthodes
        • 1.2.1 Depuis les sources
        • 1.2.2 Avec les binaires fournis sur le site python.org
      • 1.3 Exécuter du Python
        • 1.3.1 Depuis l’interpréteur interactif
        • 1.3.2 Depuis un fichier
        • 1.3.3 Hyperliens
    • 2. Éléments de syntaxe fondamentaux
      • 2.1 Les commentaires
        • 2.1.1 Commentaire monoligne
        • 2.1.2 Les commentaires multilignes
      • 2.2 Variables
        • 2.2.1 Nommage
        • 2.2.2 Affectation
      • 2.3 Les fonctions
        • 2.3.1 Appeler une fonction
        • 2.3.2 Définir une fonction
        • 2.3.3 Fonction lambda
      • 2.4 Les objets et leurs instances
        • 2.4.1 Rapide rappel sur la programmation orientée objet
        • 2.4.2 Créer une instance
        • 2.4.3 Accéder aux attributs, appeler une méthode
        • 2.4.4 Définir une classe en Python
        • 2.4.5 Les méthodes « magiques »
        • 2.4.6 Le « modèle objet » de Python
        • 2.4.7 Les attributs et les méthodes « de classe »
        • 2.4.8 Hyperliens
    • 3. Les types de données essentiels
      • 3.1 Les nombres
        • 3.1.1 Entiers et flottants
        • 3.1.2 Opérations sur les nombres
        • 3.1.3 Opérateurs de comparaisons
        • 3.1.4 Opérations bits à bits
        • 3.1.5 Nombres complexes
      • 3.2 Autres types
        • 3.2.1 None
        • 3.2.2 Booléens
        • 3.2.3 Opérateurs booléens
        • 3.2.4 Opérateurs d’identité
      • 3.3 Itérables
        • 3.3.1 Introduction
        • 3.3.2 Les tableaux : list
        • 3.3.3 Le dépaquetage de séquences
        • 3.3.4 Les listes immuables : tuple
        • 3.3.5 Les tableaux associatifs : dict
        • 3.3.6 Les ensembles : set
        • 3.3.7 Les itérateurs
        • 3.3.8 Les fonctions de génération
        • 3.3.9 Regrouper des arguments de fonctions dans un itérable
      • 3.4 Les chaînes de caractères
        • 3.4.1 Présentation
        • 3.4.2 Fonctions et méthodes des chaînes de caractères
        • 3.4.3 La méthode « format »
        • 3.4.4 Formater une chaîne avec la syntaxe « printf »
        • 3.4.5 Les chaînes d’octets
        • 3.4.6 Encode et decode
        • 3.4.7 URL
    • 4. Les structures de contrôles
      • 4.1 Conditionnels et boucles
        • 4.1.1 Les branchements conditionnels
        • 4.1.2 Les expressions conditionnelles
        • 4.1.3 La répétition « tant que » avec while
        • 4.1.4 L’itération avec for
        • 4.1.5 Les instructions de contrôle de l’itération
        • 4.1.6 Le else de boucle
      • 4.2 La compréhension de liste
        • 4.2.1 L’expression d’une collection
        • 4.2.2 L’introduction des conditions
      • 4.3 Gestion des exceptions
        • 4.3.1 Introduction
        • 4.3.2 Les classes d’exceptions de Python
        • 4.3.3 Try, Except, Raise
        • 4.3.4 else/finally
    • 5. Mécanismes d’import
      • 5.1 Définitions
        • 5.1.1 Les modules de Python
        • 5.1.2 Les packages en Python
      • 5.2 Syntaxe de l’import
        • 5.2.1 Le mot-clé « import »
        • 5.2.2 Les chemins d’import
        • 5.2.3 Le mot-clé « from »
    • 6. Environnement, dépendances et communauté
      • 6.1 Déploiement/installation
        • 6.1.1 Présentation
        • 6.1.2 Le script setup.py
        • 6.1.3 Egg et Wheel
        • 6.1.4 Pip
        • 6.1.5 Gestionnaire de paquet d'une distribution
        • 6.1.6 Hyperliens
      • 6.2 Les environnements virtuels avec virtualenv
        • 6.2.1 Présentation et mise en garde
        • 6.2.2 Installation et utilisation
      • 6.3 Qualité du code
        • 6.3.1 Les conventions de codage PEP8
        • 6.3.2 Utilitaires
        • 6.3.3 Hyperliens
  • Bibliothèque standard
    • 1. Bibliothèques utilitaires
      • 1.1 Fonctions utilitaires
        • 1.1.1 Afficher avec print
        • 1.1.2 Interroger le type d'une variable
        • 1.1.3 Obtenir de l'aide avec help
      • 1.2 Modules utilitaires de Python
        • 1.2.1 Garder une trace de l’exécution des programmes avec logging
        • 1.2.2 Analyser les arguments de la ligne de commande avec argparse
        • 1.2.3 Parallélisation facile avec multiprocessing.Pool
        • 1.2.4 Hyperliens
    • 2. Opérations de base sur un système de fichiers
      • 2.1 Se déplacer et explorer l’arborescence des dossiers
        • 2.1.1 Les chemins d’accès : les paths
        • 2.1.2 Le dossier courant cwd et le déplacement dans l’arborescence
        • 2.1.3 Les fonctions utilitaires sur les chemins de os.path
        • 2.1.4 Exploration d’une arborescence avec le module os
      • 2.2 Opérations sur les fichiers
        • 2.2.1 Ouverture et fermeture d’un fichier
        • 2.2.2 stdin, stdout & stderr
        • 2.2.3 Lecture et écriture dans un fichier
        • 2.2.4 Exemple : réaliser une image disque
      • 2.3 Utilitaires
        • 2.3.1 Manipulation des fichiers avec le module os
        • 2.3.2 Aller plus loin dans la manipulation des fichiers avec shutil
        • 2.3.3 Gérer les fichiers temporaires avec tempfile
    • 3. Opérations de base sur le réseau
      • 3.1 TCP/UDP
        • 3.1.1 Python et les sockets
        • 3.1.2 Serveur
        • 3.1.3 Client
        • 3.1.4 Recevoir et envoyer des données sur un socket
        • 3.1.5 Un faux serveur chargen
      • 3.2 Le module urllib
        • 3.2.1 Introduction
        • 3.2.2 Analyse d'URL avec urllib.parse
        • 3.2.3 Forger une URL avec urllib.parse
        • 3.2.4 Hyperliens
  • Premiers pas dans l'analyse d'un fichier
    • 1. Le fichier dans son ensemble
      • 1.1 Trouver le type d'un fichier avec les nombres magiques
        • 1.1.1 Présentation
        • 1.1.2 Installation de python-magic
        • 1.1.3 Exemple d'utilisation
        • 1.1.4 Hyperliens
      • 1.2 Les fonctions de hachage
        • 1.2.1 Présentation du concept
        • 1.2.2 Le module hashlib de la bibliothèque standard
        • 1.2.3 Contrôler l'intégrité des fichiers
      • 1.3 Génération de "diff" avec difflib
        • 1.3.1 Présentation de diff
        • 1.3.2 Le programme GNU diff
        • 1.3.3 Générer le diff de deux fichiers avec Python
        • 1.3.4 Générer des diff de fichiers binaires
    • 2. Utiliser Python pour lire des métadonnées
      • 2.1 De l'importance des métadonnées
        • 2.1.1 Définition
        • 2.1.2 Quels intérêts pour les métadonnées ?
      • 2.2 Lire les informations fournies par un système de fichiers
        • 2.2.1 L’espace utilisé
        • 2.2.2 Les métadonnées temporelles avec os.path
        • 2.2.3 Le système de fichiers vu par le noyau
        • 2.2.4 Identifier les liens matériels à l'aide des inodes
        • 2.2.5 Hyperliens
      • 2.3 Métadonnées de fichiers multimédias avec XMP
        • 2.3.1 Le choix du format de métadonnée XMP
        • 2.3.2 Installation de python-xmp-toolkit
        • 2.3.3 Utilisation de la bibliothèque
        • 2.3.4 Présentation rapide de XML
        • 2.3.5 Un petit explorateur de métadonnées
        • 2.3.6 Hyperliens
  • Analyser un historique de navigation web
    • 1. Bibliothèques HTML et HTTP haut niveau
      • 1.1 La bibliothèque requests
        • 1.1.1 Présentation
        • 1.1.2 Installation
        • 1.1.3 Envoyer une requête avec une commande spécifique
        • 1.1.4 Passage de paramètres dans l'URL
        • 1.1.5 Passage de paramètres pour une requête POST
        • 1.1.6 Hyperliens
      • 1.2 La bibliothèque Beautiful Soup
        • 1.2.1 Présentation
        • 1.2.2 Installation
        • 1.2.3 Charger du HTML
        • 1.2.4 Extraire du contenu
        • 1.2.5 Hyperliens
    • 2. Les bases de données SQLite3
      • 2.1 SGBD et SQL
        • 2.1.1 Les Systèmes de Gestion de Base de Données
        • 2.1.2 Structured Query Langage (Langage de requête structurée)
        • 2.1.3 Un ORM pour les interfacer tous
      • 2.2 SQLite3 un SGBD léger
        • 2.2.1 Présentation
        • 2.2.2 Les types de données SQLite3
        • 2.2.3 Hyperlien
      • 2.3 Le module SQLite3
        • 2.3.1 Connexion à une base de données
        • 2.3.2 Exécuter une requête SQL
        • 2.3.3 Les curseurs
        • 2.3.4 Hyperliens
    • 3. Accéder à l’historique d’un navigateur
      • 3.1 L’historique des navigateurs les plus utilisés
        • 3.1.1 Introduction
        • 3.1.2 Mozilla Firefox
        • 3.1.3 Safari®
        • 3.1.4 Navigateur Android®
        • 3.1.5 Navigateur Chrome™/Chromium™
        • 3.1.6 Hyperliens
      • 3.2 Écriture d’un module d’accès
        • 3.2.1 Organisation générale du code
        • 3.2.2 Exécuter la requête selon le navigateur
        • 3.2.3 Exemple d’utilisation
        • 3.2.4 Récupérer un document HTML
        • 3.2.5 Mise en place d'un cache
        • 3.2.6 Accélérer l’exécution avec multiprocessing
        • 3.2.7 Hyperliens
      • 3.3 Utilisations
        • 3.3.1 Lister les noms de domaines visités
        • 3.3.2 Établir des statistiques sur les en-têtes des documents
  • Partitionnement automatique de données
    • 1. L'apprentissage automatique ou apprentissage statistique
      • 1.1 Présentation
        • 1.1.1 Définition
        • 1.1.2 « Supervision » des algorithmes
      • 1.2 Le partitionnement non supervisé
        • 1.2.1 Présentation de la famille d'algorithmes
        • 1.2.2 Principaux algorithmes
    • 2. Bibliothèques Python
      • 2.1 Calcul matriciel optimisé avec NumPy
        • 2.1.1 Présentation
        • 2.1.2 Installation
        • 2.1.3 Le type numpy.array
        • 2.1.4 Hyperliens
      • 2.2 L'apprentissage automatique avec Scikit-Learn
        • 2.2.1 Présentation
        • 2.2.2 Installation
        • 2.2.3 Le partitionnement de données avec scikit-learn
        • 2.2.4 Hyperliens
      • 2.3 Afficher des données avec Matplotlib
        • 2.3.1 Présentation
        • 2.3.2 Installation
        • 2.3.3 Afficher un ensemble de données dans un graphique
        • 2.3.4 Hyperliens
    • 3. Une première application : regrouper les fichiers par date de création
      • 3.1 Représentation des données
        • 3.1.1 Description de la problématique
        • 3.1.2 Stockage et identification des temps et des chemins
        • 3.1.3 Écrire un script pour créer des instances de FilesTime
        • 3.1.4 Normalisation des données
      • 3.2 Création du modèle et construction des sous-groupes
        • 3.2.1 Préambule
        • 3.2.2 Création du modèle avec MiniBatchKmeans
        • 3.2.3 Création du modèle avec BIRCH
        • 3.2.4 Création du modèle avec DBSCAN
        • 3.2.5 Création des groupes à partir des modèles
      • 3.3 Écrire une interface textuelle
        • 3.3.1 Présentation de l’interface
        • 3.3.2 Les fonctions utilitaires d’une interface textuelle
        • 3.3.3 Une représentation des modèles pour l’interface
        • 3.3.4 Le module ui
        • 3.3.5 Afficher les données dans un graphique
        • 3.3.6 Le menu principal et la boucle de traitement
        • 3.3.7 Utilisation
  • Extraire les sujets d'un ensemble de textes
    • 1. Le traitement automatique des langues naturelles
      • 1.1 Introduction
        • 1.1.1 Présentation
        • 1.1.2 La modélisation de sujets
      • 1.2 Les langues naturelles en Python avec NLTK
        • 1.2.1 Présentation
        • 1.2.2 Installation
        • 1.2.3 Hyperliens
      • 1.3 La modélisation de sujets avec gensim
        • 1.3.1 Présentation
        • 1.3.2 Installation
        • 1.3.3 Hyperliens
      • 1.4 Les autres bibliothèques utilisées dans ce chapitre
        • 1.4.1 Les caractères accentués avec unidecode
        • 1.4.2 La progression avec tqdm
        • 1.4.3 Hyperliens
    • 2. Modélisation de sujet avec LDA et LSI
      • 2.1 Extraire une liste de mots d'un texte
        • 2.1.1 Analyse lexicale ou tokenization
        • 2.1.2 Suppression des caractères accentués et de la ponctuation
        • 2.1.3 Suppression des mots vides
        • 2.1.4 Une première version du module « corpus »
      • 2.2 Sac de mots et TF-IDF
        • 2.2.1 Introduction
        • 2.2.2 Génération d'un dictionnaire de mots
        • 2.2.3 Création de "sacs de mots"
        • 2.2.4 Le modèle TF-IDF de gensim
        • 2.2.5 Hyperliens
      • 2.3 Les modèles gensim pour LDA et LSI
        • 2.3.1 Génération du modèle
        • 2.3.2 Regrouper les documents par sujets
        • 2.3.3 Récupération des sujets
    • 3. Exemples d'application
      • 3.1 Depuis l'historique d'un navigateur web
        • 3.1.1 Réutilisation de l'analyse de l'historique
        • 3.1.2 Adaptation de l’interface d’extraction
        • 3.1.3 Écrire un script doté d’une interface
      • 3.2 Depuis des fichiers textes
        • 3.2.1 Utilisation de LibreOffice comme convertisseur
        • 3.2.2 TF-IDF depuis un système de fichier
        • 3.2.3 Un script et une interface
        • 3.2.4 Hyperliens
  • Inspection des processus du noyau Linux
    • 1. Introduction
      • 1.1 Ptrace et le noyau Linux
        • 1.1.1 Exécutables et processus
        • 1.1.2 La mémoire vue par un processus
        • 1.1.3 Présentation de ptrace
        • 1.1.4 Hyperliens
    • 2. Inspection d’un processus avec Python
      • 2.1 La bibliothèque python-ptrace
        • 2.1.1 Introduction
        • 2.1.2 Installation de python-ptrace
        • 2.1.3 Hyperliens
      • 2.2 « Tracer » un processus
        • 2.2.1 Démarrer un nouveau processus
        • 2.2.2 Attacher un processus existant
        • 2.2.3 Mise en pause et reprise de l’exécution
        • 2.2.4 Récupérer l’état des registres
        • 2.2.5 Reprise d’exécution conditionnelle
        • 2.2.6 Hyperliens
      • 2.3 La mémoire d’un processus
        • 2.3.1 Généralités sur l’organisation de la mémoire pour un processus
        • 2.3.2 Les maps mémoire
        • 2.3.3 L’interface d’accès à la mémoire de python-ptrace
        • 2.3.4 Hyperliens
    • 3. Exemple d'utilisation
      • 3.1 Extraire le texte
        • 3.1.1 Objectif du programme
        • 3.1.2 La fonction d’extraction des chaînes de caractères
        • 3.1.3 Récupérer les maps à partir d’un PID
        • 3.1.4 Initialisation et appel
      • 3.2 Tricher à un jeu vidéo
        • 3.2.1 Présentation de l’approche
        • 3.2.2 La classe MemState
        • 3.2.3 Un script et une interface pour MemState
        • 3.2.4 Exemple d’utilisation
        • 3.2.5 Hyperliens
        • Index

Auteurs

Mehdi BENNISEn savoir plus

Mehdi Bennis est fasciné par les nouvelles technologies depuis son plus jeune âge. Il a commencé par s'intéresser à l'électronique et l'électricité en bricolant des objets par lui-même pour ensuite se focaliser sur les ordinateurs. À 19 ans, il obtient un DUT en réseaux et télécommunication à l'IUT de Colmar. Pour compléter ses compétences réseau, il intègre ensuite l'Université de Technologie de Belfort-Montbéliard (UTBM) en alternance au sein de l'entreprise Bull S.A.S avec laquelle il découvre le langage de programmation Python. Actuellement ingénieur de développement dans la division « Big Data and Security » dans cette même entreprise, il suit de très près les différentes évolutions technologiques.

Yann WEBEREn savoir plus

Autodidacte et engagé dans le logiciel libre, Yann Weber s'intéresse à la programmation dès son plus jeune âge et reste guidé depuis par une interrogation : pourquoi et comment les ordinateurs fonctionnent ? Cette interrogation le pousse à s'intéresser tout autant aux problématiques bas niveau, de l'écriture de compilateurs au fonctionnement d'un système d'exploitation, à celles de plus haut niveau, comme le traitement de textes structurés ou le « web ». L'obtention d'un DUT en informatique est un premier pas pour lui vers l'utilisation de ses compétences dans un cadre professionnel. Après un poste d'ingénieur au sein du pôle Recherche et Développement de SFR puis au sein de la recherche publique française (CNRS), Yann Weber est aujourd'hui développeur freelance et continue à être fasciné par son outil de travail.

Caractéristiques

  • Niveau Initié à Confirmé
  • Nombre de pages 441 pages
  • Parution mars 2019
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-01790-2
    • EAN : 9782409017902
    • Ref. ENI : RIPYTFO
  • Niveau Initié à Confirmé
  • Parution mars 2019
    • HTML
    • ISBN : 978-2-409-01829-9
    • EAN : 9782409018299
    • Ref. ENI : LNRIPYTFO

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (67,8 Ko)