Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Supports de cours
  2. Python et l'analyse forensique - Récupérer et analyser les données produites par les ordinateurs - Version en ligne

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

Informations

  • Consultable en ligne immédiatement après validation du paiement et pour une durée de 10 ans.
  • Version HTML
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • HTML
  • ISBN : 978-2-409-01830-5
  • EAN : 9782409018305
  • Ref. ENI : LNRIMPYTFO
Ce support s'adresse à l'informaticien, étudiant ou en poste, qui souhaite se familiariser avec le langage Python (en version 3.7 au moment de l'écriture) pour apprendre l'analyse forensique et récupérer et manipuler des données produites par les ordinateurs. La première partie du livre est dédiée à une présentation du langage Python et de son écosystème. Ainsi, le lecteur commence par étudier les éléments de syntaxe fondamentaux tels que les variables, les fonctions et les objets, avant...
Aperçu du livre papier
  • Niveau Initié à Confirmé
  • Parution avril 2019
Ce support s'adresse à l'informaticien, étudiant ou en poste, qui souhaite se familiariser avec le langage Python (en version 3.7 au moment de l'écriture) pour apprendre l'analyse forensique et récupérer et manipuler des données produites par les ordinateurs.

La première partie du livre est dédiée à une présentation du langage Python et de son écosystème. Ainsi, le lecteur commence par étudier les éléments de syntaxe fondamentaux tels que les variables, les fonctions et les objets, avant de parcourir les types de données, les structures de contrôles ou encore les mécanismes d'import. Un chapitre est ensuite consacré aux bibliothèques Python et aux opérations qu'elles permettent sur un système de fichiers ou sur le réseau.

La seconde partie du livre guide le lecteur vers l'acquisition de connaissances et de réflexes qui lui permettront d'écrire ses propres outils et de mener ses propres analyses. Il peut ainsi faire ses premiers pas dans l'analyse d'un fichier et utiliser Python pour lire des métadonnées notamment à l'aide des bibliothèques libmagic et python-xmp. Il apprend à récupérer les données d'un historique de navigation web avec le SGBD SQLite3. Dans les deux derniers chapitres de cette partie, le lecteur se familiarise avec le traitement et l'analyse des données récupérées, notamment basés sur le traitement automatisé du langage naturel ou sur l'apprentissage automatique avec scikit-learn et son écosystème issu du calcul scientifique.

Pour conclure le livre, le dernier chapitre présente les techniques et outils permettant d'inspecter le comportement d'un programme en cours de fonctionnement.

Tout au long du livre, les auteurs accompagnent leurs propos d'exemples de programmes que le lecteur peut reprendre pour s'exercer. 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

Téléchargements

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

Mehdi BENNIS

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.
En savoir plus
Auteur : Yann WEBER

Yann WEBER

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.
En savoir plus

Nos nouveautés

voir plus