
FARO - Detector de Sensibilidad de Documentos

FARO es una herramienta para detectar información sensible en documentos de una organización. Está orientada a su uso por pequeñas empresas y particulares que quieren realizar un seguimiento de sus documentos sensibles dentro de su organización, pero que no pueden dedicar mucho tiempo y dinero a configurar herramientas complejas de protección de datos.
FARO extrae indicadores de sensibilidad de los documentos (p. ej., identificadores de documentos, cantidades monetarias, correos electrónicos personales) y asigna una puntuación de sensibilidad al documento (de baja a alta) utilizando la frecuencia y el tipo de los indicadores del documento.
Actualmente, toda la funcionalidad de esta herramienta es para documentos escritos en español, aunque puede ampliarse fácilmente para cubrir más idiomas.
Esta herramienta está desarrollada por TEGRA R&D Cybersecurity Center.
El proyecto contiene las siguientes carpetas:
faro/ : este es el módulo de FARO con la funcionalidad principal.config/: aquí se encuentran los archivos de configuración yaml. Hay un archivo yaml por idioma (además de un nolanguage.yaml para proporcionar funcionalidad básica para idiomas no detectados) y un archivo yaml con configuraciones comunes para todos los idiomas config/commons.yaml.models/: esta es la carpeta para colocar los modelos de FARO.faro_detection.py: lanzador de FARO para operación autónoma sobre un solo archivo.faro_spider.sh: script para procesamiento masivo.docker_build_faro.sh: script para construir la imagen docker de FARO en Linux y Mac OS.docker_build_faro.bat: script para construir la imagen docker de FARO en Windows.docker_run_faro.sh: script para ejecutar un contenedor FARO en Linux y Mac OS.docker_run_faro.bat: script para ejecutar un contenedor FARO en Windows.CHANGELOG: registro de cambios de FARO.FARO puede ejecutarse como un contenedor independiente usando Docker. Puedes crear la imagen tú mismo u obtenerla desde el repositorio de Docker Hub.
Si tienes Docker instalado y en ejecución en tu sistema, ejecuta el siguiente comando para obtener la última imagen de FARO desde Docker Hub.
docker pull gradiant/faro
Para ejecutar la imagen docker utiliza los scripts docker_run_faro.sh (Linux/Mac OS) o docker_run_faro.bat (Windows). Puedes encontrarlos en la raíz del proyecto o en la última versión.
Si tienes Docker instalado y en ejecución en tu sistema, haz lo siguiente para construir la imagen de FARO.
Linux y Mac OS
./docker_build_faro.sh
Windows
docker_build_faro.bat
Para ejecutar un contenedor FARO se proporcionan algunos scripts en la raíz del proyecto. Puedes copiar y usar esos scripts desde cualquier otro lugar por conveniencia. La carpeta "output" se creará en tu directorio actual.
Linux y Mac OS
./docker_run_faro.sh <your folder with files>
Windows
docker_run_faro.bat <your folder with files>
Hemos añadido soporte OCR a tika mediante su integración con tesseract. Algunas personalizaciones del proceso OCR se pueden ajustar mediante el uso de un archivo env cuya ruta debe proporcionarse como segundo argumento del script. Hemos incluido un ejemplo comentado que sirve como plantilla aquí
./docker_run_faro.sh <your folder with files> <path to env file>
por ejemplo:
./docker_run_faro.sh ../data docker_faro_env_example.list
FARO crea una carpeta "output" dentro de la carpeta actual y guarda los resultados de la ejecución en dos archivos:
output/scan.$CURRENT_TIME.csv: es un archivo csv con la puntuación asignada al documento y la frecuencia de indicadores en cada archivo.filepath,score,person_position_organization,monetary_quantity,signature,personal_email,mobile_phone_number,financial_data,document_id,custom_words,meta:content-type,meta:author,meta:pages,meta:lang,meta:date,meta:filesize,meta:num_words,meta:num_chars,meta:ocr
/Users/test/code/FARO_datasets/quick_test_data/Factura_NRU_0_1_001.pdf,high,0,0,0,0,0,0,1,4,application/pdf,Powered By Crystal,1,es,,85739,219,1185,False
/Users/test/code/FARO_datasets/quick_test_data/Factura_Plancha.pdf,high,0,6,0,0,0,0,2,8,application/pdf,Python PDF Library - http://pybrary.net/pyPdf/,1,es,,77171,259,1524,True
/Users/test/code/FARO_datasets/quick_test_data/20190912-FS2019.pdf,high,0,3,0,0,0,0,1,2,application/pdf,FPDF 1.6,1,es,2019-09-12T20:08:19Z,1545,62,648,False
output/scan.$CURRENT_TIME.entity: es un json con la lista de indicadores (desglosados) extraídos en un archivo. Por ejemplo:{"filepath": "/Users/test/code/FARO_datasets/quick_test_data/Factura_NRU_0_1_001.pdf", "entities": {"custom_words": {"facturar": 3, "total": 1}, "prob_currency": {"12,0021": 1, "12,00": 1, "9,92": 1, "3,9921": 1, "3,99": 1, "3,30": 1, "15,99": 1, "13,21": 1, "1.106.166": 1, "1,00": 1, "99,00": 1}, "document_id": {"89821284M": 1}}, "datetime": "2019-12-11 14:19:17"}
{"filepath": "/Users/test/code/FARO_datasets/quick_test_data/Factura_Plancha.pdf", "entities": {"document_id": {"H82547761": 1, "21809943D": 2}, "custom_words": {"factura": 2, "facturar": 2, "total": 2, "importe": 2}, "monetary_quantity": {"156,20": 4, "2,84": 2, "0,00": 2, "159,04": 2, "32,80": 4, "191,84": 2}, "prob_currency": {"1,00": 6, "189,00": 2}}, "datetime": "2019-12-11 14:19:27"}
{"filepath": "/Users/test/code/FARO_datasets/quick_test_data/20190912-FS2019.pdf", "entities": {"document_id": {"C-01107564": 1}, "custom_words": {"factura": 1, "total": 1}, "monetary_quantity": {"3,06": 1, "0,64": 1, "3,70": 1}}, "datetime": "2019-12-11 14:19:33"}
NOTA: SOLO LINUX Y MAC OS X
El modo requiere un sistema operativo y librerías para funcionar correctamente.
Es recomendable usar un entorno virtual separado. Para instanciar un entorno virtual con virtualenv.
virtualenv -p `which python3` <yourenvname>
Para activar el entorno virtual en tu terminal, simplemente escribe:
source <yourenvname>/bin/activate