From 4cbd15a4a2744812505aefaf978165ea1ea40673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Fri, 10 Mar 2017 14:56:32 +0100 Subject: [PATCH] Fix spell --- slides/PyCIRCLean/circl-introduction.pdf | Bin 71352 -> 71645 bytes slides/PyCIRCLean/content.tex | 16 ++++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/slides/PyCIRCLean/circl-introduction.pdf b/slides/PyCIRCLean/circl-introduction.pdf index 65e9d38625cee276fba3e8420c427ee6dcbde4ba..99771e3ff9f5d797999749f8e841e2063ed7ebef 100644 GIT binary patch delta 20605 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%0D0H*uaF3O`RCNqiDJ09cK7Z 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 bY6^37VRCeMa%E-;H!wIbF$yImMNdWws3pmq diff --git a/slides/PyCIRCLean/content.tex b/slides/PyCIRCLean/content.tex index 074c513..df1eeae 100644 --- a/slides/PyCIRCLean/content.tex +++ b/slides/PyCIRCLean/content.tex @@ -8,7 +8,7 @@ \begin{frame}[fragile]{Overview} \begin{itemize} \item Aims to be used in dedicated security applications to sanitize documents from hostile to trusted environments. - \item Generic way to handle large colections of files + \item Generic way to handle large collections of files \item Generate audit logs \item Comes with many helpers \item Defensive programming @@ -18,7 +18,7 @@ \begin{frame}[fragile]{Implementation} \begin{itemize} \item Copies files from a directory (source) to an other one (destination) - \item Computes hashes (sha1) of all the files in the source + \item Computes hashes (sha256) of all the files in the source \item Creates a directory tree on the destination directory \item Gets the mime type of each file \end{itemize} @@ -28,7 +28,7 @@ \begin{itemize} \item Every processing is logged \item Medatata (filetype, size, name, extension, ...) are kept - \item Any error occuring during the processing is stored + \item Any error occurring during the processing is stored \item WiP: generating a human readable report (Markdown, HTML) \end{itemize} \end{frame} @@ -37,7 +37,7 @@ \begin{itemize} \item Discard known extensions with active content \item Verifies if the extension corresponds to the mimetype (polyglot files) - \item Force extension on suposedly text files + \item Force extension on supposedly text files \item Discards windows executables \item Discard Office (Libreoffice and Windows Office) document with active content \item Discard PDFs with active content @@ -64,11 +64,11 @@ \begin{frame}[fragile]{Implement your own module - FileBase} \begin{itemize} - \item The default conctructors gets the mime type of the file and initialize the log of the file + \item The default constructors gets the mime type of the file and initialize the log of the file \item Surcharge the constructor accordingly to your needs \item Has helpers to get and set information on the file being processed \item Can force the extension of the file when copied - \item All thoses functions have to be used in order to handle the files accordingly to your requirements + \item All those functions have to be used in order to handle the files accordingly to your requirements \end{itemize} \end{frame} @@ -83,7 +83,7 @@ \begin{frame}[fragile]{Implement your own module - GroomerLogger} \begin{itemize} - \item The default constructor initialize the logfiles + \item The default constructor initialize the log files \item Creates a tree representation of the content, computes the hashes \item Stores the logs for each processed file \end{itemize} @@ -117,7 +117,7 @@ \end{itemize} \end{frame} -\begin{frame}[fragile]{Defensive programing - Remediations} +\begin{frame}[fragile]{Defensive programming - Remediations} \begin{itemize} \item Bare Debian for Raspberry \item Few dependencies