Mastering Python Forensics Master The Art of Digital Forensics and Analysis With Python 1st Edition Michael Spreitzenbarth Johann Uhrmann
Mastering Python Forensics Master The Art of Digital Forensics and Analysis With Python 1st Edition Michael Spreitzenbarth Johann Uhrmann
Mastering Python Forensics Master The Art of Digital Forensics and Analysis With Python 1st Edition Michael Spreitzenbarth Johann Uhrmann
com
https://ebookmeta.com/product/mastering-python-
forensics-master-the-art-of-digital-forensics-and-
analysis-with-python-1st-edition-michael-
spreitzenbarth-johann-uhrmann/
OR CLICK BUTTON
DOWLOAD EBOOK
https://ebookmeta.com/product/unleashing-the-art-of-digital-
forensics-1st-edition-rohit-tanwar/
https://ebookmeta.com/product/windows-registry-forensics-
advanced-digital-forensic-analysis-of-the-windows-registry-
second-edition-carvey/
https://ebookmeta.com/product/artificial-intelligence-and-
blockchain-in-digital-forensics-river-publishers-series-in-
digital-security-and-forensics-1st-edition-p-karthikeyan-editor/
https://ebookmeta.com/product/the-art-of-reinforcement-learning-
fundamentals-mathematics-and-implementations-with-python-1st-
edition-michael-hu-2/
The Art of Reinforcement Learning: Fundamentals,
Mathematics, and Implementations with Python 1st
Edition Michael Hu
https://ebookmeta.com/product/the-art-of-reinforcement-learning-
fundamentals-mathematics-and-implementations-with-python-1st-
edition-michael-hu/
https://ebookmeta.com/product/digital-forensics-investigation-
and-response-4th-edition-chuck-easttom/
https://ebookmeta.com/product/digital-forensics-investigation-
and-response-4th-edition-chuck-easttom-2/
https://ebookmeta.com/product/digital-forensics-investigation-
and-response-4th-edition-easttom-chuck/
https://ebookmeta.com/product/digital-forensics-and-internet-of-
things-impact-and-challenges-1st-edition-anita-gehlot/
Table of Contents
Mastering Python Forensics
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Setting Up the Lab and Introduction to Python ctypes
Setting up the Lab
Ubuntu
Python virtual environment (virtualenv)
Introduction to Python ctypes
Working with Dynamic Link Libraries
C data types
Defining Unions and Structures
Summary
2. Forensic Algorithms
Algorithms
MD5
SHA256
SSDEEP
Supporting the chain of custody
Creating hash sums of full disk images
Creating hash sums of directory trees
Real-world scenarios
Mobile Malware
NSRLquery
Downloading and installing nsrlsvr
Writing a client for nsrlsvr in Python
Summary
3. Using Python for Windows and Linux Forensics
Analyzing the Windows Event Log
The Windows Event Log
Interesting Events
Parsing the Event Log for IOC
The python-evtx parser
The plaso and log2timeline tools
Analyzing the Windows Registry
Windows Registry Structure
Parsing the Registry for IOC
Connected USB Devices
User histories
Startup programs
System Information
Shim Cache Parser
Implementing Linux specific checks
Checking the integrity of local user credentials
Analyzing file meta information
Understanding inode
Reading basic file metadata with Python
Evaluating POSIX ACLs with Python
Reading file capabilities with Python
Clustering file information
Creating histograms
Advanced histogram techniques
Summary
4. Using Python for Network Forensics
Using Dshell during an investigation
Using Scapy during an investigation
Summary
5. Using Python for Virtualization Forensics
Considering virtualization as a new attack surface
Virtualization as an additional layer of abstraction
Creation of rogue machines
Cloning of systems
Searching for misuse of virtual resources
Detecting rogue network interfaces
Detecting direct hardware access
Using virtualization as a source of evidence
Creating forensic copies of RAM content
Using snapshots as disk images
Capturing network traffic
Summary
6. Using Python for Mobile Forensics
The investigative model for smartphones
Android
Manual Examination
Automated Examination with the help of ADEL
Idea behind the system
Implementation and system workflow
Working with ADEL
Movement profiles
Apple iOS
Getting the Keychain from a jailbroken iDevice
Manual Examination with libimobiledevice
Summary
7. Using Python for Memory Forensics
Understanding Volatility basics
Using Volatility on Android
LiME and the recovery image
Volatility for Android
Reconstructing data for Android
Call history
Keyboard cache
Using Volatility on Linux
Memory acquisition
Volatility for Linux
Reconstructing data for Linux
Analyzing processes and modules
Analyzing networking information
Malware hunting with the help of YARA
Summary
Where to go from here
Index
Mastering Python Forensics
Mastering Python Forensics
Copyright © 2015 Packt Publishing All rights reserved. No part of this
book may be reproduced, stored in a retrieval system, or transmitted in
any form or by any means, without the prior written permission of the
publisher, except in the case of brief quotations embedded in critical
articles or reviews.
Every effort has been made in the preparation of this book to ensure the
accuracy of the information presented. However, the information
contained in this book is sold without warranty, either express or implied.
Neither the authors, nor Packt Publishing, and its dealers and distributors
will be held liable for any damages caused or alleged to be caused
directly or indirectly by this book.
Livery Place
ISBN 978-1-78398-804-4
www.packtpub.com
Credits
Authors
Reviewers
Richard Marsden
Puneet Narula
Yves Vandermeer
Commissioning Editor
Kartikey Pandey
Acquisition Editor
Sonali Vernekar
Shweta Pant
Technical Editor
Pranil Pathare
Copy Editor
Vibha Shukla
Project Coordinator
Shipra Chawhan
Proofreader
Safis Editing
Indexer
Mariammal Chettiyar
Production Coordinator
Arvindkumar Gupta
Cover Work
Arvindkumar Gupta
About the Authors
Dr. Michael Spreitzenbarth holds a degree of doctor of engineering in IT
security from the University of Erlangen-Nuremberg and is a CISSP as
well as a GMOB. He has been an IT security consultant at a worldwide
operating CERT for more than three years and has worked as a
freelancer in the field of mobile phone forensics, malware analysis, and
IT security consultancy for more than six years. Since the last four years,
he has been giving talks and lectures in the fields of forensics and mobile
security at various universities and in the private sector.
First of all, I would like to thank my wife, Daniela, for her moral
support and willingness to give up on some family time while I was
writing. I also would like to thank my coauthor and colleague, Dr.
Michael Spreitzenbarth, for talking me into writing this book and
handling a great deal of the organizational overhead of such a
project. Furthermore, the great people working on all the open source
software projects that we used and mentioned in this book deserve
credit. You are the guys who keep the IT world spinning.
About the Reviewers
Richard Marsden has over twenty years of professional experience in
software development. After starting in the fields of geophysics and oil
exploration, he has spent the last twelve years running the Winwaed
Software Technology LLC, an independent software vendor. Winwaed
specializes in geospatial tools and applications, which include web
applications, and operates the http://www.mapping-tools.com website for
tools and add-ins for geospatial products, such as Caliper's Maptitude
and Microsoft's MapPoint.
He started his career in banking and finance and then moved to the ever
growing domain of data and analytics.
Did you know that Packt offers eBook versions of every book published,
with PDF and ePub files available? You can upgrade to the eBook
version at www.PacktPub.com and as a print book customer, you are
entitled to a discount on the eBook copy. Get in touch with us at
<[email protected]> for more details.
https://www2.packtpub.com/books/subscription/packtlib
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Chapter 3, Using Python for Windows and Linux Forensics, is the first
step on your journey to understanding digital evidence. We will provide
examples to detect signs of compromise on Windows and Linux systems.
We will conclude the chapter with an example on how to use machine
learning algorithms in the forensic analysis.
Chapter 6, Using Python for Mobile Forensics, will give you an insight on
how to retrieve and analyze forensic data from mobile devices. The
examples will include analyzing Android devices as well as Apple iOS
devices.
Chapter 7, Using Python for Memory Forensics, demonstrates how to
retrieve memory snapshots and analyze these RAM images forensically
with Linux and Android. With the help of tools such as LiME and Volatility,
we will demonstrate how to extract information from the system memory.
What you need for this book
All you need for this book is a Linux workstation with a Python 2.7
environment and a working Internet connection. Chapter 1, Setting Up
the Lab and Introduction to Python ctypes, will guide you through the
installation of the additional Python modules and tools. All of our used
tools are freely available from the Internet. The source code of our
samples is available from Packt Publishing.
To get the most out of this book, you should have decent skills in Python
and understand at least some inner workings of your forensic targets. For
example, some file system details.
Conventions
In this book, you will find a number of text styles that distinguish between
different kinds of information. Here are some examples of these styles
and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file
extensions, pathnames, dummy URLs, user input, and Twitter handles
are shown as follows: "Note that in the case of Windows, msvcrt is the
MS standard C library containing most of the standard C functions and
uses the cdecl calling convention (on Linux systems, the similar library
would be libc.so.6)."
def multi_hash(filename):
"""Calculates the md5 and sha256 hashes
of the specified file and returns a list
containing the hash sums as hex strings."""
<Event
xmlns="http://schemas.microsoft.com/win/2004/08/events
/event"><System><Provider Name="Microsoft-Windows-
Security-Auditing" Guid="54849625-5478-4994-a5ba-
3e3b0328c30d"></Provider>
<EventID Qualifiers="">4724</EventID>
<Version>0</Version>
<Level>0</Level>
<Task>13824</Task>
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you
think about this book—what you liked or disliked. Reader feedback is
important for us as it helps us develop titles that you will really get the
most out of.
If there is a topic that you have expertise in and you are interested in
either writing or contributing to a book, see our author guide at
www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of
things to help you to get the most from your purchase.
Errata
Although we have taken every care to ensure the accuracy of our
content, mistakes do happen. If you find a mistake in one of our books—
maybe a mistake in the text or the code—we would be grateful if you
could report this to us. By doing so, you can save other readers from
frustration and help us improve subsequent versions of this book. If you
find any errata, please report them by visiting
http://www.packtpub.com/submit-errata, selecting your book, clicking on
the Errata Submission Form link, and entering the details of your errata.
Once your errata are verified, your submission will be accepted and the
errata will be uploaded to our website or added to any list of existing
errata under the Errata section of that title.
Piracy
Piracy of copyrighted material on the Internet is an ongoing problem
across all media. At Packt, we take the protection of our copyright and
across all media. At Packt, we take the protection of our copyright and
licenses very seriously. If you come across any illegal copies of our
works in any form on the Internet, please provide us with the location
address or website name immediately so that we can pursue a remedy.
We appreciate your help in protecting our authors and our ability to bring
you valuable content.
Questions
If you have a problem with any aspect of this book, you can contact us at
<[email protected]>, and we will do our best to address the
problem.
Chapter 1. Setting Up the Lab and
Introduction to Python ctypes
Cyber Security and Digital Forensics are two topics of increasing
importance. Digital forensics especially, is getting more and more
important, not only during law enforcement investigations, but also in the
field of incident response. During all of the previously mentioned
investigations, it's fundamental to get to know the root cause of a security
breach, malfunction of a system, or a crime. Digital forensics plays a
major role in overcoming these challenges.
In this book, we will teach you how to build your own lab and perform
profound digital forensic investigations, which originate from a large
range of platforms and systems, with the help of Python. We will start
with common Windows and Linux desktop machines, then move forward
to cloud and virtualization platforms, and end up with mobile phones. We
will not only show you how to examine the data at rest or in transit, but
also take a deeper look at the volatile memory.
If you have already worked with Python ctypes and have a working lab
environment, feel free to skip the first chapter and start directly with one
of the other chapters. After the first chapter, the other chapters are fairly
independent of each other and can be read in any order.
Setting up the Lab
As a base for our scripts and investigations, we need a comprehensive
and powerful lab environment that is able to handle a large number of
different file types and structures as well as connections to mobile
devices. To achieve this goal, we will use the latest Ubuntu LTS version
14.04.2 and install it in a virtual machine (VM). Within the following
sections, we will explain the setup of the VM and introduce Python
virtualenv, which we will use to establish our working environment.
Ubuntu
To work in a similar lab environment, we suggest you to download a copy
of the latest Ubuntu LTS Desktop Distribution from
http://www.ubuntu.com/download/desktop/, preferably the 32-bit version.
The distribution provides a simple-to-use UI and already has the Python
2.7.6 environment installed and preconfigured. Throughout the book, we
will use Python 2.7.x and not the newer 3.x versions. Several examples
and case studies in this book will rely on the tools or libraries that are
already a part of the Ubuntu distribution. When a chapter or section of the
book requires a third-party package or library, we will provide the
additional information on how to install it in the virtualenv (the setup of
this environment will be explained in the next section) or on Ubuntu in
general.
To write your first Python script, you can use a simple editor such as vi or
a powerful but cluttered IDE such as eclipse. As a really powerful
alternative, we would suggest you to use atom, a very clean but highly
customizable editor that can be freely downloaded from https://atom.io/.
This is also what we will use in the following chapters to keep a common
environment for all the readers of the book and not run into any
compatibility issues. First of all, we have to install the virtualenv
package. This is done by the following command:
We will now create a folder in the users' home directory for our virtual
Python environment. This directory will contain the executable Python
files and a copy of the pip library, which can be used to install other
packages in the environment. The name of the virtual environment (in our
case, it is called labenv) can be of your choice. Our virtual lab
environment can be created by executing the following command:
Now, you can see that the command prompt starts with the name of the
virtual environment that we activated. From now on, any package that
you install using pip will be placed in the labenv folder, isolated from the
global Python installation in the underlying Ubuntu.
Throughout the book, we will use this virtual python environment and
install new packages and libraries in it from time to time. So, every time
you try to recap a shown example remember or challenge to change into
the labenv environment before running your scripts.
If you are done working in the virtual environment for the moment and
you want to return to your "normal" Python environment, you can
deactivate the virtual environment by executing the following command:
(labenv)user@lab:~$ deactivate
user@lab:~$
This puts you back in the system's default Python interpreter with all its
installed libraries and dependencies.
If you are using more than one virtual or physical machine for the
investigations, the virtual environments can help you to keep your
libraries and packages synced with all these workplaces. In order to
ensure that your environments are consistent, it's a good idea to "freeze"
the current state of environment packages. To do this, just run:
This will create a requirements.txt file, which contains a simple list of all
the packages in the current environment and their respective versions. If
you want to now install the same packages using the same version on a
different machine, just copy the requirements.txt file to the desired
machine, create the labenv environment as described earlier and
execute the following command:
Now, you will have consistent Python environments on all the machines
and don't need to worry about different library versions or other
dependencies.
After we have created the Ubuntu virtual machine with our dedicated lab
environment, we are nearly ready to start our first forensic analysis. But
before that, we need more knowledge of the helpful Python libraries and
backgrounds. Therefore, we will start with an introduction to the Python
ctypes in the following section.
Introduction to Python ctypes
According to the official Python documentation, ctypes is a foreign
function library that provides C compatible data types and allows calling
functions in DLLs or shared libraries. A foreign function library means that
the Python code can call C functions using only Python, without requiring
special or custom-made extensions.
This module is one of the most powerful libraries available to the Python
developer. The ctypes library enables you to not only call functions in
dynamically linked libraries (as described earlier), but can also be used
for low-level memory manipulation. It is important that you understand the
basics of how to use the ctypes library as it will be used for many
examples and real-world cases throughout the book.
C:\Users\Admin>python
>>> from ctypes import *
>>> libc = cdll.msvcrt
>>> print libc.time(None)
1428180920
(labenv)user@lab:~$ python
C data types
When looking at the two examples from the earlier section in detail, you
can see that we use None as one of the parameters for a dynamically
linked C library. This is possible because None, integers, longs, byte
strings, and unicode strings are the native Python objects that can be
directly used as the parameters in these function calls. None is passed as
a C, NULL pointer, byte strings, and unicode strings are passed as
pointers to the memory block that contains their data (char * or wchar_t
*). Python integers and Python longs are passed as the platform's
default C int type, their value is masked to fit into the C type. A complete
overview of the Python types and their corresponding ctype types can be
seen in Table 1:
ctypes type C type
c_bool _Bool
(https://docs.python.org/2/library/ctypes.html#ctypes.c_bool)
c_char char
(https://docs.python.org/2/library/ctypes.html#ctypes.c_char)
c_wchar wchar_t
(https://docs.python.org/2/library/ctypes.html#ctypes.c_wchar)
c_byte char
(https://docs.python.org/2/library/ctypes.html#ctypes.c_byte)
c_ubyte unsigned
(https://docs.python.org/2/library/ctypes.html#ctypes.c_ubyte) char
c_short short
(https://docs.python.org/2/library/ctypes.html#ctypes.c_short)
c_ushort unsigned
(https://docs.python.org/2/library/ctypes.html#ctypes.c_ushort) short
c_long long
(https://docs.python.org/2/library/ctypes.html#ctypes.c_long)
c_ulong unsigned
(https://docs.python.org/2/library/ctypes.html#ctypes.c_ulong) long
c_longlong __int64 or
(https://docs.python.org/2/library/ctypes.html#ctypes.c_longlong) long long
c_ulonglong unsigned
(https://docs.python.org/2/library/ctypes.html#ctypes.c_ulonglong) __int64 or
unsigned
long long
c_float float
(https://docs.python.org/2/library/ctypes.html#ctypes.c_float)
c_double double
(https://docs.python.org/2/library/ctypes.html#ctypes.c_double)
c_longdouble long
(https://docs.python.org/2/library/ctypes.html#ctypes.c_longdouble) double
c_char_p char *
(https://docs.python.org/2/library/ctypes.html#ctypes.c_char_p) (NUL
terminated)
terminated)
c_wchar_p wchar_t *
(NUL
(https://docs.python.org/2/library/ctypes.html#ctypes.c_wchar_p) terminated)
c_void_p void *
(https://docs.python.org/2/library/ctypes.html#ctypes.c_void_p)
This table is very helpful because all the Python types except integers,
strings, and unicode strings have to be wrapped in their corresponding
ctypes type so that they can be converted to the required C data type in
the linked library and not throw the TypeError exceptions, as shown in the
following code:
(labenv)user@lab:~$ python
class case(Union):
fields = [
("evidence_int", c_int),
("evidence_long", c_long),
("evidence_char", c_char 4)
]
A structure is very similar to unions, but the members do not share the
same memory location. You can access any of the member variables in
the structure using dot notation, such as case.name. This would access
the name variable contained in the case structure. The following is a very
brief example of how to create a structure (or struct, as they are often
called) with three members: name, number, and investigator_name so that
all can be accessed by the dot notation:
class case(Structure):
fields = [
("name", c_char 16),
("number", c_int),
("investigator_name", c_char * 8)
]
Tip
Downloading the example code
You can download the example code files from your account at
http://www.packtpub.com for all the Packt Publishing books you have
purchased. If you purchased this book elsewhere, you can visit
http://www.packtpub.com/support and register to have the files e-
mailed directly to you.
Summary
In the first chapter, we created our lab environment: a virtual machine
running Ubuntu 14.04.2 LTS. This step is really important as you can
now create snapshots before working on real evidence and are able to
roll back to a clean machine state after finishing the investigation. This
can be helpful, especially, when working with compromised system
backups, where you want to be sure that your system is clean when
working on a different case afterwards.
After completing this chapter, you will have a basic environment created
to be used for the rest of the book, and you will also understand the
fundamentals of Python ctypes that will be helpful in some of the
following chapters.
Chapter 2. Forensic Algorithms
Forensic algorithms are the building blocks for a forensic investigator.
Independent from any specific implementation, these algorithms describe
the details of the forensic procedures. In the first section of this chapter,
we will introduce the different algorithms that are used in forensic
investigations, including their advantages and disadvantages.
Algorithms
In this section, we describe the main differences between MD5, SHA256,
and SSDEEP—the most common algorithms used in the forensic
investigations. We will explain the use cases as well as the limitations
and threats behind these three algorithms. This should help you
understand why using SHA256 is better than using MD5 and in which
cases SSDEEP can help you in the investigation.
Before we dive into the different hash functions, we will give a short
summary of what a cryptographic hash function is.
1. It must be easy to compute the hash value for any given input.
2. It must be infeasible to generate the original input from its hash.
3. It must be infeasible to modify the input without changing the hash.
4. It must be infeasible to find two different inputs with the same hash
(collision-resistant).
In the ideal case, if you create a hash of the given input and change only
one bit of this input, the newly calculated hash will look totally different,
as follows:
MD5
The MD5 message-digest algorithm was the most commonly used (and
is still a widely used) cryptographic hash function that produces a 128-bit
(16-byte) hash value, typically expressed in the text format as a 32-digit
hexadecimal number (as shown in the previous example). This message
digest has been utilized in a wide variety of cryptographic applications
and is commonly used to verify data integrity in forensic investigations.
This algorithm was designed by Ronald Rivest in 1991 and has been
heavily used since then.
"We already knew that MD5 is a broken hash function" and that "no
one should be using MD5 anymore".
We would not go that far (especially because a lot of tools and services
still use MD5), but you should try switching to SHA256 or at least double-
check your results with the help of different hash functions in cases
where it is critical. Whenever the chain of custody is crucial, we
recommend using multiple hash algorithms to prove the integrity of your
data.
SHA256
SHA-2 is a set of cryptographic hash functions designed by the NSA
(U.S. National Security Agency) and stands for Secure Hash Algorithm
2nd Generation. It has been published in 2001 by the NIST as a U.S.
federal standard (FIPS). The SHA-2 family consists of several hash
functions with digests (hash values) that are between 224 bits and 512
bits. The cryptographic functions SHA256 and SHA512 are the most
common versions of SHA-2 hash functions computed with 32-bit and 64-
bit words.
Despite the fact that these algorithms calculate slower and that the
calculated hashes are larger in size (compared to MD5), they should be
the preferred algorithms that are used for integrity checks during the
Another random document with
no related content on Scribd:
saints livres qui me parlent quand je veux, m’éclairent, me consolent,
me fortifient, répondent à tous mes besoins. Les quitter me fait
chagrin, les emporter est difficile ; ne pas les quitter est le mieux.
Je lis dans mes loisirs un ouvrage de Leibniz qui m’enchante par
sa catholicité et les bonnes choses pieuses que j’y trouve, comme
ceci sur la confession : « Je regarde un confesseur pieux, grave et
prudent, comme un grand instrument de Dieu pour le salut des
âmes ; car ses conseils servent à diriger nos affections, à nous
éclairer sur nos défauts, à nous faire éviter l’occasion du péché, à
dissiper les doutes, à relever l’esprit abattu, enfin à enlever ou
mitiger toutes les maladies de l’âme ; et si l’on peut à peine trouver
sur la terre quelque chose de plus excellent qu’un ami fidèle, quel
bonheur n’est-ce pas d’en trouver un qui soit obligé par la religion
inviolable d’un sacrement divin à garder la foi et à secourir les
âmes ? »
Ce céleste ami, je l’ai dans M. Bories. Aussi la nouvelle de son
départ m’afflige profondément. Je suis triste d’une tristesse qui fait
pleurer l’âme. Je ne dirais pas cela ailleurs, on le prendrait mal,
peut-être on ne me comprendrait pas. On ne sait pas dans le monde
ce que c’est qu’un confesseur, cet homme ami de l’âme, son
confident le plus intime, son médecin, son maître, sa lumière ; cet
homme qui nous lie et qui nous délie, qui nous donne la paix, qui
nous ouvre le ciel, à qui nous parlons à genoux en l’appelant,
comme Dieu, notre père : la foi le fait véritablement Dieu et père.
Quand je suis à ses pieds, je ne vois autre chose en lui que Jésus
écoutant Madeleine et lui pardonnant beaucoup parce qu’elle a
beaucoup aimé. La confession n’est qu’une expansion du repentir
dans l’amour [14] .
[14] Le lecteur retrouvera le passage qui précède
reproduit textuellement dans le cahier suivant, page 108.
Nous n’avons pas dû supprimer cette répétition : Que
prouve-t-elle, sinon l’importance particulière que Mlle de
Guérin attachait à ces pensées et peut-être la secrète
satisfaction qu’elle aura éprouvée, sans le savoir, en
réussissant à les exprimer d’une manière si nette et si
ferme ?
JUSTIN MAURICE.
C’est la plus douce chose, la plus de mon goût que j’aie trouvée
depuis que je suis ici. Aussi je m’en empare. S’il fait beau, je partirai
ce soir. Cette idée m’enchante, je verrai papa, Mimi : la douce chose
qu’un retour !
Le 22. — Mimi m’a quittée pour quinze jours ; elle est à ***, et je
la plains au milieu de cette païennerie, elle si sainte et bonne
chrétienne ! Comme me disait Louise une fois, elle me fait l’effet
d’une bonne âme dans l’enfer ; mais nous l’en sortirons dès que le
temps donné aux convenances sera passé. De mon côté, il me
tarde ; je m’ennuie de ma solitude, tant j’ai l’habitude d’être deux.
Papa est aux champs presque tout le jour, Éran à la chasse ; pour
toute compagnie, il me reste Trilby et mes poulets qui font du bruit
comme des lutins ; ils m’occupent sans me désennuyer, parce que
l’ennui est le fond et le centre de mon âme aujourd’hui. Ce que
j’aime le plus est peu capable de me distraire. J’ai voulu lire, écrire,
prier, tout cela n’a duré qu’un moment ; la prière même me lasse.
C’est triste, mon Dieu ! Par bonheur, je me suis souvenue de ce mot
de Fénelon : « Si Dieu vous ennuie, dites-lui qu’il vous ennuie. » Oh !
je lui ai bien dit cette sottise.
Le 24. — Comme elle a passé vite, mon ami, cette nuit passée à
t’écrire ! l’aurore a paru que je me croyais à minuit ; il était trois
heures pourtant, et j’avais vu passer bien des étoiles, car de ma
table je vois le ciel, et de temps en temps je le regarde et le
consulte ; et il me semble qu’un ange me dicte. D’où me peuvent
venir, en effet, que d’en haut tant de choses tendres, élevées,
douces, vraies, pures, dont mon cœur s’emplit quand je te parle !
Oui, Dieu me les donne, et je te les envoie. Puisse ma lettre te faire
du bien ! elle t’arrivera mardi ; je l’ai faite la nuit pour la faire jeter à la
poste le matin, et gagner un jour. J’étais si pressée de te venir
distraire et fortifier dans cet état de faiblesse et d’ennui où je te vois !
Mais je ne le vois pas, je l’augure d’après tes lettres, et quelques
mots de Félicité. Plût à Dieu que je pusse le voir et savoir ce qui te
tourmente ! alors je saurais sur quoi mettre le baume, tandis que je
le pose au hasard. Oh ! que je voudrais de tes lettres ! Écris-moi,
parle, explique-toi, fais-toi voir, que je sache ce que tu souffres et ce
qui te fait souffrir. Quelquefois je pense que ce n’est rien qu’un peu
de cette humeur noire, que nous avons, et qui rend si triste quand il
s’en répand dans le cœur. Il faut s’en purger au plus tôt, car ce
poison gagne vite et nous ferait fous ou bêtes. On ne désire rien de
beau ni d’élevé. Je sais quelqu’un qui, dans cet état, n’a d’autre
plaisir que de manger, et d’ordinaire c’est une âme qui tient peu aux
sens. Cela fait voir combien toute passion nous bestialise. C’en est
une que la tristesse, et qui consume, hélas ! bien des vies. Je
regarde à peu près comme perdus ceux qu’elle possède. Faut-il
remplir un devoir ? impossible. Ce sont des hommes tristes ; ne leur
demandez rien, ni pour Dieu, ni pour eux-mêmes, que ce que leur
humeur voudra.
Le 18. — M. le curé sort d’ici et m’a laissé une de tes lettres, qu’il
m’a glissée furtivement dans la main au milieu de tout le monde. Je
lui ai tremblé tout doucement un merci, et, comprenant ce que
c’était, je suis sortie et suis allée te lire à mon aise dans la garenne.
Comme j’allais vite, comme je tremblais, comme je brûlais sur cette
lettre où j’allais te voir enfin ! Je t’ai vu ; mais je ne te connais pas ; tu
ne m’ouvres que la tête : c’est le cœur, c’est l’âme, c’est l’intime, ce
qui fait ta vie, que je croyais voir. Tu ne me montres que ta façon de
penser ; tu me fais monter, et moi je voulais descendre, te connaître
à fond dans tes goûts, tes humeurs, tes principes, en un mot, faire
un tour dans tous les coins et recoins de toi-même. Je ne suis donc
pas contente de ce que tu me dis ; cependant j’y trouve de quoi bénir
Dieu, car je m’attendais à pis. Je te dirai tout cela dans ma lettre, ici
c’est inutile ; mes réflexions seraient de l’histoire ancienne quand tu
les lirais.
Le 3. — Rien.
Le 23. — Sans le songe que j’ai fait cette nuit, je n’écrirais pas ;
mais je t’ai vu, je t’ai embrassé, je t’ai parlé, et tout cela, quoique
erreur, il faut que j’en parle, parce que mon cœur en est touché. J’ai
tant de regret de ne pas te voir, à présent que les absents
reviennent ! Raymond est arrivé. Qui sait s’il m’apporte de tes
lettres ? Je serais bien contente d’avoir quelque chose de particulier,
comme tu l’as fait par des occasions semblables. C’est notre signe
de vie et de tendresse que cette chère écriture ; écrivons-nous donc,
écris-moi. Je viens d’envoyer une lettre de neuf pages à Louise. Ce
serait long, infini pour tout autre ; mais, entre nous, il n’y en a jamais
assez. Le cœur, quand il aime, est intarissable. Je voudrais bien
t’écrire de la sorte. Voilà un nuage qui passe, si sombre que je vois à
peine sur mon papier blanc. Cela me fait souvenir de tant d’idées
noires qui passent ainsi sur l’âme parfois.
Le 24. — La matinée a commencé agréablement par une lettre
d’Auguste qui me parle beaucoup de toi ; il t’aime, ce bon cousin,
cela se voit. Je voudrais bien que le joli projet de voyage
s’accomplît, et que moi je fusse du voyage. Oh ! venir te voir à
Paris !… mais non, ce serait trop joli pour ce monde, n’y pensons
pas. J’ai presque l’idée que nous ne devons nous revoir qu’en
l’autre : voilà le choléra ; sans doute il viendra ici. Je l’attends et
dispose mon âme de mon mieux, afin de ne pas mourir à
l’improviste, seule chose à craindre, car le malheur n’est pas de
quitter la vie. Je ne dis pas ceci dans le sens des dégoûtés de vivre :
il y a de saints désirs de la mort qui viennent à l’âme chrétienne.
Encore un nuage qui me force de quitter. Le nuage amenait un
déluge, le tonnerre, le vent, tout le vacarme d’un orage. Dans ce
temps, je courais de çà, de là, pensant à mes poulets ; je chauffais
une chemise pour ce petit garçon qui nous est arrivé noyé ; à
présent tout est calme et dans son cours. L’extraordinaire ici dure
peu. Mon cousin Fontenilles nous est venu voir ; il couchera dans la
chambrette, mon cher réduit qui sert à tout : excellent emploi des
choses humaines, toutes à tous. Mais, mon cahier, va dedans : ceci
n’est pas pour le public, c’est de l’intime, c’est de l’âme, C’EST POUR
UN.