From aa679e43813642d104812d41dd5f6b856034e79c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Mon, 7 Mar 2016 16:39:22 +0100 Subject: [PATCH] Add slides. --- .gitignore | 9 + slides/CIRCLean/beamercolorthemechameleon.sty | 30 +++ slides/CIRCLean/beamerinnerthemefancy.sty | 182 ++++++++++++++++++ slides/CIRCLean/beamerouterthemedecolines.sty | 166 ++++++++++++++++ slides/CIRCLean/beamerthemeTorino.sty | 28 +++ slides/CIRCLean/circl-introduction.pdf | Bin 0 -> 69682 bytes slides/CIRCLean/circl-introduction.tex | 24 +++ slides/CIRCLean/content.tex | 125 ++++++++++++ slides/CIRCLean/logo-circl.pdf | Bin 0 -> 9230 bytes 9 files changed, 564 insertions(+) create mode 100644 slides/CIRCLean/beamercolorthemechameleon.sty create mode 100644 slides/CIRCLean/beamerinnerthemefancy.sty create mode 100644 slides/CIRCLean/beamerouterthemedecolines.sty create mode 100644 slides/CIRCLean/beamerthemeTorino.sty create mode 100644 slides/CIRCLean/circl-introduction.pdf create mode 100644 slides/CIRCLean/circl-introduction.tex create mode 100644 slides/CIRCLean/content.tex create mode 100644 slides/CIRCLean/logo-circl.pdf diff --git a/.gitignore b/.gitignore index a65d046..16c2fc5 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,12 @@ docs/_build/ # PyBuilder target/ + +# Latex +*.aux +*.log +*.nav +*.out +*.snm +*.toc +*.vrb diff --git a/slides/CIRCLean/beamercolorthemechameleon.sty b/slides/CIRCLean/beamercolorthemechameleon.sty new file mode 100644 index 0000000..27e4562 --- /dev/null +++ b/slides/CIRCLean/beamercolorthemechameleon.sty @@ -0,0 +1,30 @@ +% Copyright 2007 by Marco Barisione +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. + +\mode + +%\definecolor{chameleongreen1}{RGB}{129,138,143} %grey CIRCL +\definecolor{chameleongreen1}{RGB}{213,43,30} +\definecolor{chameleongreen2}{RGB}{213,43,30} %red CIRCL +\definecolor{chameleongreen3}{RGB}{30,30,30} %black CIRCL +\definecolor{chameleongreen4}{RGB}{129,138,143} + +\setbeamercolor*{palette primary}{fg=white,bg=chameleongreen2} +\setbeamercolor*{palette secondary}{fg=white,bg=chameleongreen3} +\setbeamercolor*{palette tertiary}{fg=white,bg=chameleongreen4} +\setbeamercolor*{palette quaternary}{fg=white,bg=chameleongreen1} + +\setbeamercolor*{titlelike}{bg=chameleongreen3} +\setbeamercolor*{frametitle}{bg=black,fg=black} +\setbeamercolor*{part title}{bg=black,fg=black} +\setbeamercolor*{item}{fg=chameleongreen3} + +\setbeamercolor*{separation line}{} +\setbeamercolor*{fine separation line}{} + +\mode + diff --git a/slides/CIRCLean/beamerinnerthemefancy.sty b/slides/CIRCLean/beamerinnerthemefancy.sty new file mode 100644 index 0000000..b79076c --- /dev/null +++ b/slides/CIRCLean/beamerinnerthemefancy.sty @@ -0,0 +1,182 @@ +% Copyright 2007 by Marco Barisione +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. + +\mode + +% Use alternative title page style. +\DeclareOptionBeamer{alternativetitlepage}[true]{\def\beamer@fancy@alternativetitlepage{#1}} + +% Logo to use in the alternative title page. +\def\beamer@fancy@titlepagelogo{} +\DeclareOptionBeamer{titlepagelogo}{\def\beamer@fancy@titlepagelogo{#1}} + +% Bullet shape. +\DeclareOptionBeamer{bullet}{\def\beamer@fancy@bullet{#1}} + +\ExecuteOptionsBeamer{alternativetitlepage=false,bullet=square} +\ProcessOptionsBeamer + +% Colors. +\setbeamercolor*{lineup}{parent=palette primary} +\setbeamercolor*{linemid}{parent=palette secondary} +\setbeamercolor*{linebottom}{parent=palette tertiary} +\setbeamercolor*{title page header}{parent=palette quaternary} + +% Lengths. +\newlength{\beamer@fancy@lineup} +\setlength{\beamer@fancy@lineup}{.025\paperheight} +\newlength{\beamer@fancy@linemid} +\setlength{\beamer@fancy@linemid}{.015\paperheight} +\newlength{\beamer@fancy@linebottom} +\setlength{\beamer@fancy@linebottom}{.01\paperheight} + +% Margins. +\newlength{\beamer@fancy@normalmargin} +\setlength{\beamer@fancy@normalmargin}{.06\paperwidth} +\setbeamersize{text margin left=\beamer@fancy@normalmargin} +\setbeamersize{text margin right=\beamer@fancy@normalmargin} +\setlength\leftmargini{.6\beamer@fancy@normalmargin} +\setlength\leftmarginii{.6\beamer@fancy@normalmargin} +\setlength\leftmarginiii{.6\beamer@fancy@normalmargin} + +% Normal title page. +\defbeamertemplate*{title page normal}{fancy theme}[1][] +{ + \vbox{} + \vfill + \begin{centering} + \begin{beamercolorbox}[wd=\paperwidth,sep=8pt,center,#1]{title page header} + \usebeamerfont{title}\inserttitle\par% + \ifx\insertsubtitle\@empty% + \else% + \vskip0.25em% + {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% + \fi% + \end{beamercolorbox}% + \vskip1em\par + \begin{beamercolorbox}[sep=8pt,center,#1]{author} + \usebeamerfont{author}\insertauthor + \end{beamercolorbox} + \begin{beamercolorbox}[sep=8pt,center,#1]{institute} + \usebeamerfont{institute}\insertinstitute + \end{beamercolorbox} + \begin{beamercolorbox}[sep=8pt,center,#1]{date} + \usebeamerfont{date}\insertdate + \end{beamercolorbox}\vskip0.5em + {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par} + \end{centering} + \vfill +} + +% Alternative title page, you should use this in a frame with the [plain] +% option. +\defbeamertemplate*{title page alternative}{fancy theme}[1][] +{ + {\parskip0pt\offinterlineskip% + \hbox{\hskip-\Gm@lmargin\hbox{\vbox{% + \@tempdima=\textwidth\textwidth=\paperwidth\hsize=\textwidth\def\\{,}\vbox{}\vskip-1.5ex% + % Title. + \begin{beamercolorbox}[wd=\paperwidth,ht=.4\paperheight,center,#1]{title page header} + \usebeamerfont{title}\inserttitle\par% + \ifx\insertsubtitle\@empty% + \else% + \vskip0.25em% + {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% + \fi% + \vspace{.125\paperheight}% + \end{beamercolorbox}% + \vbox{}\vskip-\beamer@fancy@lineup% + \vbox{}\vskip-\beamer@fancy@linemid% + % First line. + \hbox{% + \begin{beamercolorbox}[wd=.2\paperwidth,ht=\beamer@fancy@lineup,dp=0pt]{}% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.8\paperwidth,ht=\beamer@fancy@lineup,dp=0pt]{lineup}% + \end{beamercolorbox}% + }% + \vbox{}\vskip0ex% + % Second line. + \hbox{% + \begin{beamercolorbox}[wd=.1\paperwidth,ht=\beamer@fancy@linemid,dp=0pt]{}% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.9\paperwidth,ht=\beamer@fancy@linemid,dp=0pt]{linemid}% + \end{beamercolorbox}% + }% + % Third line. + \hbox{% + \begin{beamercolorbox}[wd=.5\paperwidth,ht=\beamer@fancy@linebottom,dp=0pt]{}% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.5\paperwidth,ht=\beamer@fancy@linebottom,dp=0pt]{linebottom}% + \end{beamercolorbox}% + }% + \vskip0pt% + }}% + \hskip-\Gm@rmargin% + }}\hfil% + % + \begin{columns} + \ifx\beamer@fancy@titlepagelogo\@empty% + \column{\textwidth} + \else + \column{.5\textwidth} + % Logo. + \begin{centering} + \vbox{}\vfill + \includegraphics[height=.2\paperheight]{\beamer@fancy@titlepagelogo} + \vfill + \end{centering} + \column{.5\textwidth} + \fi + % Authors, institute and date + \vskip1em\par + \begin{beamercolorbox}[sep=8pt,center,#1]{author} + \usebeamerfont{author}\insertauthor + \end{beamercolorbox} + \begin{beamercolorbox}[sep=8pt,center,#1]{institute} + \usebeamerfont{institute}\insertinstitute + \end{beamercolorbox} + \begin{beamercolorbox}[sep=8pt,center,#1]{date} + \usebeamerfont{date}\insertdate + \end{beamercolorbox}\vskip0.5em + {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par} + \end{columns} +} + +\defbeamertemplate*{title page}{fancy}[1][] +{ + \def\beamer@fancy@truetext{true}% + \ifx\beamer@fancy@alternativetitlepage\beamer@fancy@truetext% + \usebeamertemplate{title page alternative}% + \else% + \usebeamertemplate{title page normal}% + \fi% +} + +% Items. +\defbeamertemplate{itemize item}{squarealt}% +{\tiny\raise.5ex\hbox{\donotcoloroutermaths$\blacksquare$}} +\defbeamertemplate{itemize subitem}{squarealt}% +{\tiny\raise.4ex\hbox{\donotcoloroutermaths$\square$}} +\defbeamertemplate{itemize subsubitem}{squarealt}% +{\tiny\raise.3ex\hbox{\donotcoloroutermaths$\blacksquare$}} + +\defbeamertemplate{itemize item}{circlealt}% +{\small\raise.2ex\hbox{\donotcoloroutermaths$\bullet$}} +\defbeamertemplate{itemize subitem}{circlealt}% +{\small\raise.1ex\hbox{\donotcoloroutermaths$\circ$}} +\defbeamertemplate{itemize subsubitem}{circlealt}% +{\scriptsize\raise.1ex\hbox{\donotcoloroutermaths$\bullet$}} + +\def\circletext{circle} +\ifx\beamer@fancy@bullet\circletext + \setbeamertemplate{items}[circlealt] +\else + \setbeamertemplate{items}[squarealt] +\fi + +\mode + diff --git a/slides/CIRCLean/beamerouterthemedecolines.sty b/slides/CIRCLean/beamerouterthemedecolines.sty new file mode 100644 index 0000000..5893f91 --- /dev/null +++ b/slides/CIRCLean/beamerouterthemedecolines.sty @@ -0,0 +1,166 @@ +% Copyright 2007 by Marco Barisione +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. + +\mode + +% String used between the current page and the total page count. +\def\beamer@decolines@pageofpages{/} +\DeclareOptionBeamer{pageofpages}{\def\beamer@decolines@pageofpages{#1}} + +% Show a line below the frame title. +\DeclareOptionBeamer{titleline}[true]{\def\beamer@decolines@titleline{#1}} + +% Image used for the watermark. +\def\beamer@decolines@watermarkorig{} +\DeclareOptionBeamer{watermark}{\def\beamer@decolines@watermarkorig{#1}} + +% Height of the watermark. +\def\beamer@decolines@watermarkheight{100px} +\DeclareOptionBeamer{watermarkheight}{\def\beamer@decolines@watermarkheight{#1}} + +% The original image height is watermarkheightmult * watermarkheight. +\def\beamer@decolines@watermarkheightmult{1} +\DeclareOptionBeamer{watermarkheightmult}{\def\beamer@decolines@watermarkheightmult{#1}} + +\ExecuteOptionsBeamer{titleline=false} +\ProcessOptionsBeamer + +% Enable/disable the watermark. +\def\watermarkon{% + \def\beamer@decolines@watermark{\beamer@decolines@watermarkorig}% +} +\def\watermarkoff{\def\beamer@decolines@watermark{}} + +% Initially enable the watermark. +\watermarkon + +% Colors. +\setbeamercolor*{lineup}{parent=palette primary} +\setbeamercolor*{linemid}{parent=palette secondary} +\setbeamercolor*{linebottom}{parent=palette tertiary} +\setbeamercolor*{page header}{parent=titlelike} + +% Lengths +\newlength{\headerheight} +\setlength{\headerheight}{.045\paperheight} +\newlength{\beamer@decolines@lineup} +\setlength{\beamer@decolines@lineup}{.025\paperheight} +\newlength{\beamer@decolines@linemid} +\setlength{\beamer@decolines@linemid}{.015\paperheight} +\newlength{\beamer@decolines@linebottom} +\setlength{\beamer@decolines@linebottom}{.01\paperheight} + +% The height of the watermark part below the 3 bottom lines. +\newlength{\beamer@decolines@watermarkheightbottom} +\addtolength{\beamer@decolines@watermarkheightbottom}{\beamer@decolines@lineup} +\addtolength{\beamer@decolines@watermarkheightbottom}{\beamer@decolines@linemid} +\addtolength{\beamer@decolines@watermarkheightbottom}{\beamer@decolines@linebottom} + +% The height of the watermark part over the 3 bottom lines before shrinking. +\newlength{\beamer@decolines@watermarkheightupperorig} +\setlength{\beamer@decolines@watermarkheightupperorig}{\beamer@decolines@watermarkheight} +\addtolength{\beamer@decolines@watermarkheightupperorig}{-\beamer@decolines@watermarkheightbottom} +\multiply\beamer@decolines@watermarkheightupperorig by \beamer@decolines@watermarkheightmult + +% Footer. +\defbeamertemplate*{footline}{decolines theme} +{ + \leavevmode% + % Page number. + \hbox{% + \begin{beamercolorbox}[wd=.2\paperwidth,ht=0ex,dp=0ex,center]{}% + \usebeamerfont{palette primary}\insertframenumber{} \beamer@decolines@pageofpages{} \inserttotalframenumber% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.8\paperwidth,ht=0ex,dp=0ex]{}% + \end{beamercolorbox}% + } % + % First line. + \hbox{% + \begin{beamercolorbox}[wd=.2\paperwidth,ht=\beamer@decolines@lineup,dp=0pt]{}% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.8\paperwidth,ht=\beamer@decolines@lineup,dp=0pt]{lineup}% + \end{beamercolorbox}% + } % + % Second line. + \hbox{% + \begin{beamercolorbox}[wd=\paperwidth,ht=\beamer@decolines@linemid,dp=0pt]{linemid}% + \end{beamercolorbox}% + } % + % Third line. + \hbox{% + \begin{beamercolorbox}[wd=.1\paperwidth,ht=\beamer@decolines@linebottom,dp=0pt]{}% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.9\paperwidth,ht=\beamer@decolines@linebottom,dp=0pt]{linebottom}% + \end{beamercolorbox}% + }% + % This seems to fix some alignment problems with the watermark. It has to be + % always applied if you do not want to see the footer moving up and down when + % moving from a page with watermark to a page without or vice versa. + \vskip-.5px% + % Watermark. + \if\beamer@decolines@watermark\@empty\else% + \vskip-\beamer@decolines@watermarkheightbottom% + \llap{\includegraphics[height=\beamer@decolines@watermarkheightbottom,clip=true,% + trim=0pt 0pt 0pt \beamer@decolines@watermarkheightupperorig]{\beamer@decolines@watermark}\hskip-\paperwidth}% + \fi% +} + +\defbeamertemplate*{headline}{decolines theme} +{ + \leavevmode% + \hbox{% + \begin{beamercolorbox}[wd=\paperwidth,ht=\headerheight,dp=0pt]{page header}% + \end{beamercolorbox}% + } % + \vskip0pt% +} + +\defbeamertemplate*{frametitle}{decolines theme}[1][left] +{ + \ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}% + \@tempdima=\textwidth% + \advance\@tempdima by\beamer@leftmargin% + \advance\@tempdima by\beamer@rightmargin% + \vbox{}\vskip-.5\beamer@leftmargin% + \begin{beamercolorbox}[sep=\beamer@leftmargin,#1,wd=\the\@tempdima]{} + \usebeamerfont{frametitle}\usebeamercolor[bg]{framesubtitle}% + \vbox{}\vskip0ex% + \if@tempswa\else\csname beamer@fte#1\endcsname\fi% + \strut\insertframetitle\strut\par% + {% + \ifx\insertframesubtitle\@empty% + \else% + {\usebeamerfont{framesubtitle}\usebeamercolor[bg]{framesubtitle}\insertframesubtitle\strut\par}% + \fi + }% + \vskip-1ex% + \if@tempswa\else\vskip-\beamer@leftmargin\fi + \end{beamercolorbox}% + \def\beamer@decolines@truetext{true}% + \ifx\beamer@decolines@titleline\beamer@decolines@truetext% + \vskip-.5\beamer@leftmargin% + \begin{beamercolorbox}[wd=\textwidth,ht=.1ex,dp=0ex]{linemid}% + \end{beamercolorbox}% + \fi +} + +% Frame title continuations, default +\defbeamertemplate*{frametitle continuation}{decolines theme}{(\insertcontinuationcount)} + +\defbeamertemplate*{sidebar right}{decolines theme} +{ + \vskip.1\beamer@leftmargin% + \llap{\insertlogo\hskip.5\beamer@leftmargin}% + \vfill% + \if\beamer@decolines@watermark\@empty\else% + \llap{\includegraphics[height=\beamer@decolines@watermarkheight]{\beamer@decolines@watermark}}% + \vskip-\beamer@decolines@watermarkheightbottom% + \fi +} + +\mode + diff --git a/slides/CIRCLean/beamerthemeTorino.sty b/slides/CIRCLean/beamerthemeTorino.sty new file mode 100644 index 0000000..84b0964 --- /dev/null +++ b/slides/CIRCLean/beamerthemeTorino.sty @@ -0,0 +1,28 @@ +% Copyright 2007 by Marco Barisione +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. + +\mode + +\DeclareOptionBeamer{alternativetitlepage}[true]{\PassOptionsToPackage{alternativetitlepage=#1}{beamerinnerthemefancy}} +\DeclareOptionBeamer{titlepagelogo}{\PassOptionsToPackage{titlepagelogo=#1}{beamerinnerthemefancy}} +\DeclareOptionBeamer{bullet}{\PassOptionsToPackage{bullet=#1}{beamerinnerthemefancy}} +\DeclareOptionBeamer{pageofpages}{\PassOptionsToPackage{pageofpages=#1}{beamerouterthemedecolines}} +\DeclareOptionBeamer{titleline}[true]{\PassOptionsToPackage{titleline=#1}{beamerouterthemedecolines}} +\DeclareOptionBeamer{watermark}{\PassOptionsToPackage{watermark=#1}{beamerouterthemedecolines}} +\DeclareOptionBeamer{watermarkheight}{\PassOptionsToPackage{watermarkheight=#1}{beamerouterthemedecolines}} +\DeclareOptionBeamer{watermarkheightmult}{\PassOptionsToPackage{watermarkheightmult=#1}{beamerouterthemedecolines}} + +\ProcessOptionsBeamer + +\useinnertheme{fancy} +\useoutertheme{decolines} +\usecolortheme{chameleon} + +\setbeamertemplate{navigation symbols}{} + +\mode + diff --git a/slides/CIRCLean/circl-introduction.pdf b/slides/CIRCLean/circl-introduction.pdf new file mode 100644 index 0000000000000000000000000000000000000000..942c1b0cc7cdc04e5b0845856904ab28806c6281 GIT binary patch literal 69682 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 literal 0 HcmV?d00001 diff --git a/slides/CIRCLean/circl-introduction.tex b/slides/CIRCLean/circl-introduction.tex new file mode 100644 index 0000000..38e3615 --- /dev/null +++ b/slides/CIRCLean/circl-introduction.tex @@ -0,0 +1,24 @@ +\documentclass[14pt]{beamer} +\usetheme[pageofpages=of,% String used between the current page and the + % total page count. + bullet=circle,% Use circles instead of squares for bullets. + titleline=true,% Show a line below the frame title. + alternativetitlepage=true,% Use the fancy title page. + titlepagelogo=logo-circl.pdf,% Logo for the first page. +% watermark=watermark-polito,% Watermark used in every page. +% watermarkheight=100px,% Height of the watermark. +% watermarkheightmult=4,% The watermark image is 4 times bigger + % than watermarkheight. + ]{Torino} + +\usepackage[utf8]{inputenc} +\author{\emph{TLP:WHITE}} +\title{PyCIRCLean: a versatile Python framework to check and/or sanitize files} +\institute{info@circl.lu} +\date{\today} + +\begin{document} +\include{content} +\end{document} + + diff --git a/slides/CIRCLean/content.tex b/slides/CIRCLean/content.tex new file mode 100644 index 0000000..bb31c30 --- /dev/null +++ b/slides/CIRCLean/content.tex @@ -0,0 +1,125 @@ +% DO NOT COMPILE THIS FILE DIRECTLY! +% This is included by the other .tex files. + +\begin{frame}[t,plain] + \titlepage +\end{frame} + +\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 Generate audit logs + \item Comes with many helpers + \end{itemize} +\end{frame} + +\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 Creates a directory tree on the destination directory + \item Gets the mime type of each file + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Existing modules} + \begin{itemize} + \item bin/filecheck.py: Search for active content in the source documents + \item bin/generic.py: Converts documents if possible + \item bin/specific.py: Only copy a specific extension if the mimetype matches + \item bin/pier9.py: Only copy specific extensions (3D softwares) + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{File Check} + \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 Discards windows executables + \item Discard Office (Libreoffice and Windows Office) document with active content + \item Discard PDFs with active content + \item Unpack archives and process content + \item Extract metadata from images + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{File Check} + \begin{itemize} + \item Plus + \begin{itemize} + \item (almost) Pure python + \item Reliable + \item Fast + \end{itemize} + \item Minus + \begin{itemize} + \item Does not block a 0 day in a non-active content + \item Medium level of false positive (non-malicious active content) + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Generic} + \begin{itemize} + \item Verifies if the extension corresponds to the mimetype (polyglot files) + \item Converts to PDF and then to HTML all documents supported by libreoffice + \item Converts to HTML all PDF files + \item Discards windows executables + \item Unpack archives and process content + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Generic} + \begin{itemize} + \item Plus + \begin{itemize} + \item Very hard to have anything malicious in the output of the converted documents + \end{itemize} + \item Minus + \begin{itemize} + \item Slow + \item Opens the documents to convert (may run malicious code) + \item Many external dependencies + \item Unreliable: fails on 20\% of the documents + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Specific and Pier9} + \begin{itemize} + \item Dedicated to a very specific use + \item Whitelist on extension and/or MimeType + \item Plus + \begin{itemize} + \item Pure python + \item Very fast + \item Most secure + \end{itemize} + \item Minus + \begin{itemize} + \item Only works in a specific case + \item Many false positive + \end{itemize} + \end{itemize} +\end{frame} + +\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 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 + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Implement your own module - KittenGroomerBase} + \begin{itemize} + \item The default constructor cleans the destination directory, starts the general logging and logs the content of the source directory + \item Has helpers to handle safely the file management + \item Writes the logs files + \end{itemize} +\end{frame} + diff --git a/slides/CIRCLean/logo-circl.pdf b/slides/CIRCLean/logo-circl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..62c9239fbfa4e3807901e3754db322c2cb69ec09 GIT binary patch literal 9230 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 T{gqu1NRS_skx^Dv4)cEi-2Ec4 literal 0 HcmV?d00001