Skip to content

Whynot46/Finding_confidential_information_in_emails

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anonymous_project

Team.name: cannot access private member declared in class Team.

Hackathon.name: cannot access private member declared in class Hackathon.

Project.name: cannot access private member declared in class Project.

Содержание

Описание

Перед нашей командой была поставлена задача "Анализ почты в режиме offline для оптимизации процессов выявления утечек конфиденциальной информации", на реализацию которой давалось 2 дня. Также нам был предоставлен датасет из ~70Гб писем формата .eml.
Увы, но изначально размеченных данных оказалось совсем мало, всего 23 файла на все 5 классов данных. Размечать достаточное количество данных для обучения нейронной модели не предоставлялось возможным, ибо на это ушло бы слишком много времени. Основная часть времени была бы потрачена на разметку данных, а на написание самой нейронной модели и её отладки осталось бы совсем мало времени и результат нельзя было бы назвать MVP. Поэтому было решено прибегнуть к написанию алгоритма на основе регулярных выражений и компьютерного зрения.
Нами было разработано desktop-приложение для анализа локального почтового ящика в режиме offline. Алгоритм поиска, основанный на регулярных выражениях и компьютерном зрении, определяет наличие конфиденциальных данных в письме и при их наличии сигнализирует об этом пользователю. Также был реализован фильтр сообщений по классу данных и счётчик писем с утечкой данных.
data_detector_example При нажатии на письмо, файл открывается в Microcoft Outlook.
data_detector_outlook_example
Но, дабы вовсе не отказываться от нейросетевого метода решения данной задачи, мы также создали удобное desktop-приложения для разметки писем формата .eml. Пользователь запускает приложение, выбирает папку с .eml файлами и начинает сортировать их, путём нажатия на кнопки соответсвуюшего класса данных. Размеченные данные сохраняются в папке с названием соответсвующего класса в формате .txt.

markup_example

Реализованная функциональность

Был реализован поиск конфиденциальных данных (паспортных данных, телефонов, данных аккаунтов, данных СНИЛСа, данных банковских карт и QR-кодов):

  • в тексте сообщений;
  • в тексе вложенных .pdf-файлов;
  • на изображениях вложенных .pdf-файлов;
  • во вложенных файлах формата .zip.

Особенности проекта

  • Алгоритм детектирования конфиденциальных данных в письмах, разработанный на основе регулярных выражений и компьютерного зрения, позволяет добиться более высокой точности, чем нейросетевые алгоритмы при данном наборе исходных данных;
  • Дополнительное desktop-приложение для удобной разметки датасета. Позволяет в дальнейшем легко собрать обучающее множество для обучение нейронной модели.

Основной стек технологий

  • Python 3.11.0
  • Re
  • OpenCV
  • Os
  • Email

Среда запуска

Для развёртывания проекта необходимо виртуальное окружение с установленным пакетом Python 3.10.0

Для создания и активации виртуального окружения последовательно введите последующие команды в терминал:

For Windows:

python -m venv venv
venv\Scripts\activate.bat

For Linux/MacOS:

python3 -m venv venv
source venv/bin/activate

Использование

Скачайте репозиторий:

For Windows:

git clone https://github.com/Whynot46/Anonymous_project

For Linux:

sudo git clone https://github.com/Whynot46/Anonymous_project

Установите необходимые библиотеки с помощью команды:

For Windows:
pip install -r requirements.txt

For Linux:

pip3 install -r requirements.txt

Запустите проект с помощью команды:

For Windows:
py EmailDataDetector/main.py

For Linux:

python3 EmailDataDetector/main.py

Разработчики

About

Кейс с хакатона "RinHack 2024" "Анализ почты в режиме offline для оптимизации процессов выявления утечек конфиденциальной информации"

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors