
инструмент для обмена файлами, который позволяет найти ответственного лица в случае утечки
,_
,' '\,_ Utku Sen's
|_,-'_) wholeaked
/##c '\ (
' |' -{. ) "When you have eliminated the impossible,
/\__-' \[] whatever remains, however improbable,
/'-_'\ must be the truth" - Sherlock Holmes
' \
wholeaked — это инструмент для обмена файлами, который позволяет найти ответственное лицо в случае утечки. Написан на Go.
wholeaked получает файл, который будет распространяться, и список получателей. Он создаёт уникальную подпись для каждого получателя и незаметно добавляет её в файл. После этого он может автоматически отправлять файлы соответствующим получателям с помощью Sendgrid, AWS SES или SMTP-интеграций. Вместо отправки по электронной почте вы также можете распространять их вручную.
wholeaked работает с любыми типами файлов. Однако он имеет дополнительные возможности для распространённых типов файлов, таких как PDF, DOCX, MOV и др.
+-----------+
|Top Secret |
|.pdf |
| |
-| |
/ | |
/ |Hidden |
a@gov / |signature1 |
/ +-----------+
/ +-----------+
+-----------++-----------+ / |Top Secret |
|Top Secret ||Recipient | / |.pdf |
|.pdf ||List | +---------+ / | |
| || | |utkusen/ | / b@gov | |
| ||a@gov |----->|wholeaked| /----------+ |
| ||b@gov | | | \ |Hidden |
| ||c@gov | +---------+ \ |signature2 |
| || | \ +-----------+
+-----------++-----------+ \ +-----------+
\ |Top Secret |
\ |.pdf |
c@gov \ | |
\ | |
\ | |
\ |Hidden |
-|signature3 |
+-----------+
Чтобы найти, кто совершил утечку документа, достаточно передать утекший файл в wholeaked, и он раскроет ответственное лицо, сравнив подписи в базе данных.
+-----------+ +---------+
|Top Secret | |Signature|
|.pdf | +---------+|Database |
| | |utkusen/ || | Document leaked by
| |->|wholeaked|| |--------+
| | | || | b@gov
|Hidden | +---------+| |
|Signature2 | | |
+-----------+ +---------+
wholeaked может добавлять уникальную подпись в различные разделы файла. Доступные режимы обнаружения приведены ниже:
Хеш файла: SHA256 хеш файла. Поддерживаются все типы файлов.
Бинарный: Подпись напрямую добавляется в бинарный код. Поддерживаются почти все типы файлов.
Метаданные: Подпись добавляется в секцию метаданных файла. Поддерживаемые типы файлов: PDF, DOCX, XLSX, PPTX, MOV, JPG, PNG, GIF, EPS, AI, PSD
Водяной знак: Невидимая подпись вставляется в текст. Поддерживаются только PDF-файлы.
Вы можете загрузить готовые бинарные файлы со страницы релизов и запустить. Например:
unzip wholeaked_0.1.0_macOS_amd64.zip
./wholeaked --help
Установите Go в вашей системе
Выполните: go install github.com/utkusen/wholeaked@latest
wholeaked требует exiftool для добавления подписей в секцию метаданных файлов. Если вы не планируете использовать эту функцию, устанавливать его не обязательно.
apt install exiftoolbrew install exiftoolexiftool.exe в ту же директорию, что и wholeaked.wholeaked требует pdftotext для проверки водяных знаков внутри PDF-файлов. Если вы не планируете использовать эту функцию, устанавливать его не обязательно.
bin64.pdftotext (или pdftotext.exe) в ту же папку, что и wholeakedapt install libfontconfig.wholeaked требует имя проекта -n, путь к исходному файлу, в который будут добавляться подписи -f, и список целевых получателей -t
Пример команды: ./wholeaked -n test_project -f secret.pdf -t targets.txt
Файл targets.txt должен содержать имя и адрес электронной почты в следующем формате:
Utku Sen,[email protected]
Bill Gates,[email protected]
После завершения выполнения будут сгенерированы следующие уникальные файлы:
test_project/files/Utku_Sen/secret.pdf
test_project/files/Bill_Gates/secret.pdf
По умолчанию wholeaked добавляет подписи во все доступные места, описанные в разделе "Типы файлов и режимы обнаружения". Если вы не хотите использовать какой-либо метод, вы можете указать это с помощью флага со значением false. Например:
./wholeaked -n test_project -f secret.pdf -t targets.txt -binary=false -metadata=false -watermark=false
Чтобы отправлять письма, необходимо заполнить некоторые разделы в файле CONFIG.
Если вы хотите отправлять письма через Sendgrid, укажите ваш API-ключ в разделе SENDGRID_API_KEY.
Если вы хотите отправлять письма через интеграцию AWS SES, вам необходимо установить awscli на вашу машину и добавить в него требуемый ключ AWS. wholeaked прочитает ключ самостоятельно. Но необходимо заполнить раздел AWS_REGION в файле конфигурации.
Если вы хотите отправлять письма через SMTP-сервер, заполните разделы SMTP_SERVER, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD.
Другие необходимые поля для заполнения:
EMAIL_TEMPLATE_PATH — путь к телу письма. Можно указать в формате HTML или текстовом.EMAIL_CONTENT_TYPE — может быть html или textEMAIL_SUBJECT — тема письмаFROM_NAME — имя отправителяFROM_EMAIL — адрес отправителяЧтобы указать метод отправки, используйте флаги -sendgrid, -ses или -smtp. Например: