,_
,' '\,_ Utku Sen's
|_,-'_) wholeaked
/##c '\ (
' |' -{. ) "当你排除了所有不可能的情况,剩下的,
/\__-' \[] 无论多么不可能,都必定是真相" - 夏洛克·福尔摩斯
/'-_'\
' \
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 可以将唯一签名添加到文件的不同部分。可用检测模式如下:
文件哈希(File Hash): 文件的 SHA256 哈希值。支持所有文件类型。
二进制(Binary): 签名直接添加到二进制文件中。几乎支持所有文件类型。
元数据(Metadata): 签名添加到文件的元数据部分。支持的文件类型:PDF、DOCX、XLSX、PPTX、MOV、JPG、PNG、GIF、EPS、AI、PSD
水印(Watermark): 在文本中插入不可见签名。仅支持 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)可执行文件复制到与 wholeaked 相同的文件夹中。apt 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 发送电子邮件,请在 SENDGRID_API_KEY 部分输入你的 API 密钥。
如果你想通过 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 标志。例如:
./wholeaked -n test_project -f secret.pdf -t targets.txt -sendgrid
你可以使用 -validate 标志来揭示泄露文件的所有者。wholeaked 会比较文件中检测到的签名与项目文件夹中的数据库。例如:
./wholeaked -n test_project -f secret.pdf -validate
重要提示: 如果你想使用文件验证功能,不应删除 project_folder/db.csv 文件。如果该文件被删除,wholeaked 将无法比较签名。
喜欢这个项目?你可以请我喝杯咖啡