
uma ferramenta de compartilhamento de arquivos que permite encontrar o responsável em caso de vazamento
,_
,' '\,_ Utku Sen's
|_,-'_) wholeaked
/##c '\ (
' |' -{. ) "When you have eliminated the impossible,
/\__-' \[] whatever remains, however improbable,
/'-_'\ must be the truth" - Sherlock Holmes
' \
wholeaked é uma ferramenta de compartilhamento de arquivos que permite encontrar o responsável em caso de vazamento. Escrita em Go.
wholeaked recebe o arquivo que será compartilhado e uma lista de destinatários. Ele cria uma assinatura única para cada destinatário e a adiciona secretamente ao arquivo. Depois disso, pode enviar automaticamente os arquivos para os destinatários correspondentes usando integrações com Sendgrid, AWS SES ou SMTP. Em vez de enviá-los por e-mail, você também pode compartilhá-los manualmente.
wholeaked funciona com todos os tipos de arquivo. No entanto, possui recursos adicionais para tipos de arquivo comuns como PDF, DOCX, MOV etc.
+-----------+
|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 |
+-----------+
Para descobrir quem vazou o documento, basta fornecer o arquivo vazado ao wholeaked, e ele revelará o responsável comparando as assinaturas no banco de dados.
+-----------+ +---------+
|Top Secret | |Signature|
|.pdf | +---------+|Database |
| | |utkusen/ || | Document leaked by
| |->|wholeaked|| |--------+
| | | || | b@gov
|Hidden | +---------+| |
|Signature2 | | |
+-----------+ +---------+
wholeaked pode adicionar a assinatura única a diferentes seções de um arquivo. Os modos de detecção disponíveis são fornecidos abaixo:
Hash do Arquivo: Hash SHA256 do arquivo. Todos os tipos de arquivo são suportados.
Binário: A assinatura é adicionada diretamente ao binário. Quase todos os tipos de arquivo são suportados.
Metadados: A assinatura é adicionada a uma seção de metadados do arquivo. Tipos de arquivo suportados: PDF, DOCX, XLSX, PPTX, MOV, JPG, PNG, GIF, EPS, AI, PSD
Marca d'água: Uma assinatura invisível é inserida no texto. Apenas arquivos PDF são suportados.
Você pode baixar os binários pré-compilados da página de releases e executar. Por exemplo:
unzip wholeaked_0.1.0_macOS_amd64.zip
./wholeaked --help
Instale Go no seu sistema
Execute: go install github.com/utkusen/wholeaked@latest
wholeaked requer o exiftool para adicionar assinaturas à seção de metadados dos arquivos. Se você não quiser usar este recurso, não precisa instalá-lo.
apt install exiftoolbrew install exiftoolexiftool.exe no mesmo diretório do wholeaked.wholeaked requer o pdftotext para verificar marcas d'água dentro de arquivos PDF. Se você não quiser usar este recurso, não precisa instalá-lo.
bin64.pdftotext (ou pdftotext.exe) para a mesma pasta do wholeakedapt install libfontconfig.wholeaked requer um nome de projeto -n, o caminho do arquivo base ao qual as assinaturas serão adicionadas -f e uma lista de destinatários alvo -t
Exemplo de comando: ./wholeaked -n test_project -f secret.pdf -t targets.txt
O arquivo targets.txt deve conter nome e endereço de e-mail no seguinte formato:
Utku Sen,[email protected]
Bill Gates,[email protected]
Após a execução ser concluída, os seguintes arquivos únicos serão gerados:
test_project/files/Utku_Sen/secret.pdf
test_project/files/Bill_Gates/secret.pdf
Por padrão, o wholeaked adiciona assinaturas a todos os locais disponíveis definidos na seção "Tipos de Arquivo e Modos de Detecção". Se você não quiser usar um método, pode defini-lo com uma flag false. Por exemplo:
./wholeaked -n test_project -f secret.pdf -t targets.txt -binary=false -metadata=false -watermark=false
Para enviar e-mails, você precisa preencher algumas seções no arquivo CONFIG.
Se você quiser enviar e-mails via Sendgrid, digite sua chave de API na seção SENDGRID_API_KEY.
Se você quiser enviar e-mails via integração AWS SES, precisa instalar o awscli em sua máquina e adicionar a chave AWS necessária a ele. O wholeaked lerá a chave por si só. Mas você precisa preencher a seção AWS_REGION no arquivo de configuração.
Se você quiser enviar e-mails via um servidor SMTP, preencha as seções SMTP_SERVER, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD.
Os outros campos necessários a preencher:
EMAIL_TEMPLATE_PATH Caminho do corpo do e-mail. Você pode especificar uso de formato HTML ou texto.EMAIL_CONTENT_TYPE Pode ser html ou textEMAIL_SUBJECT Assunto do e-mailFROM_NAME Nome de remetente do e-mailFROM_EMAIL E-mail de remetente do e-mailPara especificar o método de envio, você pode usar as flags -sendgrid, -ses ou -smtp. Por exemplo:
./wholeaked -n test_project -f secret.pdf -t targets.txt -sendgrid
Você pode usar a flag -validate para revelar o proprietário de um arquivo vazado. O wholeaked comparará as assinaturas detectadas no arquivo com o banco de dados localizado na pasta do projeto. Exemplo:
./wholeaked -n test_project -f secret.pdf -validate
Importante: Você não deve deletar o arquivo project_folder/db.csv se quiser usar o recurso de validação de arquivos. Se esse arquivo for deletado, o wholeaked não conseguirá comparar as assinaturas.
Gostou do projeto? Você pode me pagar um café