
FARO - Detector de Sensibilidade de Documentos

FARO é uma ferramenta para detetar informação sensível em documentos numa organização. Está orientada para ser usada por pequenas empresas e particulares que queiram rastrear os seus documentos sensíveis dentro da sua organização, mas que não possam gastar muito tempo e dinheiro a configurar ferramentas complexas de Proteção de Dados.
FARO extrai indicadores de sensibilidade de documentos (ex.: IDs de documentos, quantias monetárias, emails pessoais) e atribui uma pontuação de sensibilidade ao documento (de baixa a alta) usando a frequência e o tipo dos indicadores no documento.
Atualmente toda a funcionalidade desta ferramenta é para documentos escritos em espanhol, embora possa ser facilmente atualizada para cobrir mais idiomas.
Esta ferramenta é desenvolvida pela TEGRA R&D Cybersecurity Center.
O projeto contém as seguintes pastas:
faro/ : este é o módulo FARO com a funcionalidade principal.config/: os ficheiros de configuração yaml vão aqui. Há um ficheiro yaml por idioma (mais um nolanguage.yaml para fornecer funcionalidade básica para idiomas não detetados) e um ficheiro yaml com configurações comuns para todos os idiomas config/commons.yaml.models/: esta é a pasta para colocar os modelos FARO.faro_detection.py: lançador do FARO para operação autónoma sobre um único ficheiro.faro_spider.sh: script para processamento em lote.docker_build_faro.sh: script para construir a imagem Docker do FARO no Linux e Mac OS.docker_build_faro.bat: script para construir a imagem Docker do FARO no Windows.docker_run_faro.sh: script para executar um contentor FARO no Linux e Mac OS.docker_run_faro.bat: script para executar um contentor FARO no Windows.CHANGELOG: registo de alterações do FARO.O FARO pode ser executado como um contentor autónomo usando o Docker. Pode construir a imagem por si ou obtê-la do repositório Docker Hub.
Assumindo que tem o Docker instalado e em execução no seu sistema, execute o seguinte comando para obter a imagem FARO mais recente do Docker Hub.
docker pull gradiant/faro
Para executar a imagem Docker utilize os scripts docker_run_faro.sh (Linux/Mac OS) ou docker_run_faro.bat (Windows). Pode encontrá-los na raiz do projeto ou na versão mais recente.
Assumindo que tem o Docker instalado e em execução no seu sistema, faça o seguinte para construir a imagem FARO.
Linux e Mac OS
./docker_build_faro.sh
Windows
docker_build_faro.bat
Para executar um contentor FARO, alguns scripts são fornecidos na raiz do projeto. Pode copiá-los e usá-los a partir de qualquer outro local por conveniência. A pasta "output" será criada sob o seu diretório atual.
Linux e Mac OS
./docker_run_faro.sh <a sua pasta com ficheiros>
Windows
docker_run_faro.bat <a sua pasta com ficheiros>
Adicionámos suporte OCR ao tika através da sua integração com o tesseract. É possível personalizar alguns parâmetros do processo de OCR através do uso de um ficheiro env cujo caminho precisa de ser fornecido como segundo argumento do script. Fornecemos um exemplo comentado para servir de modelo aqui
./docker_run_faro.sh <a sua pasta com ficheiros> <caminho para o ficheiro env>
por exemplo:
./docker_run_faro.sh ../data docker_faro_env_example.list
O FARO cria uma pasta "output" dentro da pasta atual e armazena os resultados da execução em dois ficheiros:
output/scan.$CURRENT_TIME.csv: é um ficheiro csv com a pontuação atribuída ao documento e a frequência dos indicadores em cada ficheiro.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: é um json com a lista de indicadores (desagregados) extraídos num ficheiro. Por exemplo:{"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: APENAS LINUX E MAC OS X
O modo requer algum sistema operativo e bibliotecas para funcionar corretamente
É aconselhável usar um ambiente virtual separado. Para instanciar um ambiente virtual com virtualenv.
virtualenv -p `which python3` <nome_do_ambiente>
Para ativar o ambiente virtual no seu terminal basta digitar:
source <nome_do_ambiente>/bin/activate
A maneira mais fácil de deixar o sistema operacional é instalar as dependências desta forma
pip install -r requirements.txt
A lista de dependências é a seguinte: