wholeaked is a file-sharing tool that allows you to find the responsible person in case of a leakage

Overview

Introduction

                          ,_         
                        ,'  '\,_     Utku Sen's
                        |_,-'_)         wholeaked
                        /##c '\  (   
                       ' |'  -{.  )  "When you have eliminated the impossible,
                         /\__-' \[]  whatever remains, however improbable,
                        /'-_'\       must be the truth" - Sherlock Holmes
                        '     \    

wholeaked is a file-sharing tool that allows you to find the responsible person in case of a leakage. It's written in Go.

How?

wholeaked gets the file that will be shared and a list of recipients. It creates a unique signature for each recipient and adds it to the file secretly. After then, it can automatically send files to the corresponding recipients by using Sendgrid, AWS SES or SMTP integrations. Instead of sending them by e-mail, you can also share them manually.

wholeaked works with every file type. However, it has additional features for common file types such as PDF, DOCX, MOV etc.

Sharing Process

                                                       +-----------+
                                                       |Top Secret |
                                                       |.pdf       |       
                                                       |           |       
                                                      -|           |       
                                                     / |           |       
                                                    /  |Hidden     |       
                                             [email protected] /   |signature1 |       
                                                  /    +-----------+       
                                                 /     +-----------+       
+-----------++-----------+                      /      |Top Secret |       
|Top Secret ||Recipient  |                     /       |.pdf       |       
|.pdf       ||List       |      +---------+   /        |           |       
|           ||           |      |utkusen/ |  /  [email protected]  |           |       
|           ||[email protected]      |----->|wholeaked| /----------+           |       
|           ||[email protected]      |      |         | \          |Hidden     |       
|           ||[email protected]      |      +---------+  \         |signature2 |       
|           ||           |                    \        +-----------+       
+-----------++-----------+                     \       +-----------+       
                                                \      |Top Secret |       
                                                 \     |.pdf       |       
                                           [email protected]  \    |           |       
                                                   \   |           |       
                                                    \  |           |       
                                                     \ |Hidden     |       
                                                      -|signature3 |       
                                                       +-----------+    

Validation Part

To find who leaked the document, you just need to provide the leaked file to wholeaked and it will reveal the responsible person by comparing the signatures in the database.

+-----------+             +---------+                           
|Top Secret |             |Signature|                           
|.pdf       |  +---------+|Database |                           
|           |  |utkusen/ ||         |         Document leaked by
|           |->|wholeaked||         |--------+                  
|           |  |         ||         |              [email protected]        
|Hidden     |  +---------+|         |                           
|Signature2 |             |         |                           
+-----------+             +---------+                           
                                                               

Demonstration Video

Demo Video

File Types and Detection Modes

wholeaked can add the unique signature to different sections of a file. Available detection modes are given below:

File Hash: SHA256 hash of the file. All file types are supported.

Binary: The signature is directly added to the binary. Almost all filetypes are supported.

Metadata: The signature is added to a metadata section of a file. Supported file types: PDF, DOCX, XLSX, PPTX, MOV, JPG, PNG, GIF, EPS, AI, PSD

Watermark: An invisible signature is inserted to the text. Only PDF files are supported.

Installation

From Binary

You can download the pre-built binaries from the releases page and run. For example:

unzip wholeaked_0.1.0_macOS_amd64.zip

./wholeaked --help

From Source

  1. Install Go on your system

  2. Run: go install github.com/utkusen/[email protected]

Installing Dependencies

wholeaked requires exiftool for adding signatures to metadata section of files. If you don't want to use this feature, you don't need to install it.

  1. Debian-based Linux: Run apt install exiftool
  2. macOS: Run brew install exiftool
  3. Windows: Download exiftool from here https://exiftool.org/ and put the exiftool.exe in the same directory with wholeaked.

wholeaked requires pdftotext for verifying watermarks inside PDF files. If you don't want to use this feature, you don't need to install it.

  1. Download "Xpdf command line tools" for Linux, macOS or Windows from here: https://www.xpdfreader.com/download.html
  2. Extract the archive and navigate to bin64 folder.
  3. Copy the pdftotext (or pdftotext.exe) executable to the same folder with wholeaked
  4. For Debian Based Linux: Run apt install libfontconfig command.

Usage

Basic Usage

wholeaked requires a project name -n, path of the base file which the signatures will added -f and a list of target recipients -t

Example command: ./wholeaked -n test_project -f secret.pdf -t targets.txt

The targets.txt file should contain name and the e-mail address in the following format:

After execution is completed, the following unique files will be generated:

test_project/files/Utku_Sen/secret.pdf
test_project/files/Bill_Gates/secret.pdf

By default, wholeaked adds signatures to all available places that are defined in the "File Types and Detection Modes" section. If you don't want to use a method, you can define it with a false flag. For example:

./wholeaked -n test_project -f secret.pdf -t targets.txt -binary=false -metadata=false -watermark=false

Sending E-mails

In order to send e-mails, you need to fill some sections in the CONFIG file.

  • If you want to send e-mails via Sendgrid, type your API key to the SENDGRID_API_KEY section.

  • If you want to send e-mails via AWS SES integration, you need to install awscli on your machine and add the required AWS key to it. wholeaked will read the key by itself. But you need to fill the AWS_REGION section in the config file.

  • If you want to send e-mails via a SMTP server, fill the SMTP_SERVER, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD sections.

The other necessary fields to fill:

  • EMAIL_TEMPLATE_PATH Path of the e-mail's body. You can specify use HTML or text format.
  • EMAIL_CONTENT_TYPE Can be html or text
  • EMAIL_SUBJECT Subject of the e-mail
  • FROM_NAME From name of the e-mail
  • FROM_EMAIL From e-mail of the e-mail

To specify the sending method, you can use -sendgrid, -ses or -smtp flags. For example:

./wholeaked -n test_project -f secret.pdf -t targets.txt -sendgrid

Validating a Leaked File

You can use the -validate flag to reveal the owner of a leaked file. wholeaked will compare the signatures detected in the file and the database located in the project folder. Example:

./wholeaked -n test_project -f secret.pdf -validate

Important: You shouldn't delete the project_folder/db.csv file if you want to use the file validation feature. If that file is deleted, wholeaked won't be able to compare the signatures.

Donation

Loved the project? You can buy me a coffee

Buy Me A Coffee

You might also like...
Wormhole-gui is a cross-platform application that lets you easily share files, folders and text between devices.
Wormhole-gui is a cross-platform application that lets you easily share files, folders and text between devices.

Cross-platform application for easy encrypted sharing of files, folders, and text between devices.

oDrop, a fast efficient cross-platform file transfer software for server and home environments

oDrop is a cross-platform LAN file transfer software to efficiently transfer files between computers, oDrop is useful in environments where GUI is not available.

JuiceFS is a distributed POSIX file system built on top of Redis and S3.
JuiceFS is a distributed POSIX file system built on top of Redis and S3.

JuiceFS is an open-source POSIX file system built on top of Redis and object storage

Syncthing is a continuous file synchronization program.
Syncthing is a continuous file synchronization program.

Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers. We strive to fulfill the goals below. The goals are listed in order of importance, the most important one being the first.

fsync - a file sync server

fsync - a file sync server

Yet another netcat for fast file transfer

nyan Yet another netcat for fast file transfer When I need to transfer a file in safe environment (e.g. LAN / VMs), I just want to use a simple comman

Golang PoC software for reliable file transfers over a data diode. DIY gigabit data diode hardware instructions
Golang PoC software for reliable file transfers over a data diode. DIY gigabit data diode hardware instructions

DIY Data Diode Simple DIY gigabit data diode (hardware and software). Presented at SEC-T 2021. Hardware By doing a simple hardware mod to a fiber conv

Built in user interface, LAN file transfer, such as mobile phone, computer, tablet, different operating system
Built in user interface, LAN file transfer, such as mobile phone, computer, tablet, different operating system

Modao Built in user interface, LAN file transfer, such as mobile phone, computer, tablet, different operating systems, etc., as well as text transfer

Rsync - rsync (File syncing) in golang

Go rsync Minimal file syncing based on the rsync algorithm completely written

Comments
  • Updates

    Updates

    1. Added .gitignore for untrucked file
    2. Updated defer usage which may cause resource leak. The resources created in the loop cannot be closed until the function exits, so they will accumulate until then.
    3. Always false expression.
    opened by svbnbyrk 2
  • Readme Güncellemesi

    Readme Güncellemesi

    Merhaba, yeni toolunuz harika olmuş, tebrikler :)

    Go 1.17 sürümünden itibaren go get kullanımdan kaldırılmıştır. Onun yerine go install [email protected] kullanılmaktadır. Toolu yükleyenlerin hatayla karşılaşmaması için kurulum komutunu go install github.com/utkusen/[email protected] olarak değiştirmek doğru olacaktır. Detaylı bilgi için: https://go.dev/doc/go-get-install-deprecation

    İyi çalışmalar dilerim.

    opened by adilsoybali 1
  • [BUG] runtime error: invalid memory address or nil pointer dereference

    [BUG] runtime error: invalid memory address or nil pointer dereference

    OS: Windows 10

     ./wholeaked -n secret_binary -f wholeaked.exe -t users.txt 
    
          ,_
        ,'  '\,_     Utku Sen's
        |_,-'_)         wholeaked
        /##c '\  (
       ' |'  -{.  )  "When you have eliminated the impossible,
         /\__-' \[]  whatever remains, however improbable,
        /'-_'\       must be the truth" - Sherlock Holmes
        '     \
    
    Operation started
    panic: runtime error: invalid memory address or nil pointer dereference
            panic: runtime error: invalid memory address or nil pointer dereference
    [signal 0xc0000005 code=0x1 addr=0x0 pc=0x9ed2b5]
    
    goroutine 1 [running]:
    github.com/barasher/go-exiftool.(*Exiftool).Close(0x0)
            /Users/temporaryadmin/go/pkg/mod/github.com/barasher/[email protected]/exiftool.go:93 +0x55
    panic({0xb9c3e0, 0x1189640})
            /usr/local/go/src/runtime/panic.go:1038 +0x215
    github.com/barasher/go-exiftool.(*Exiftool).ExtractMetadata(0x0, {0xc00019f678, 0x1, 0x5a})
            /Users/temporaryadmin/go/pkg/mod/github.com/barasher/[email protected]/exiftool.go:139 +0x74
    main.addMetadataSignature({0xc00002c120, 0x55}, {0xc00001a79a, 0x33})
            /Users/temporaryadmin/Desktop/dev/wholeaked/main.go:336 +0x609
    main.applySignature({0xc00002c120, 0x55}, {0xc00001a79a, 0x33}, 0x1, 0xf9, 0xc0)
            /Users/temporaryadmin/Desktop/dev/wholeaked/main.go:242 +0xe5
    main.createLocalFiles({0xc000024110, 0xd}, {0xc0000240d0, 0xd}, 0x1, 0x0, 0x0)
            /Users/temporaryadmin/Desktop/dev/wholeaked/main.go:564 +0x4f8
    main.startProcess({0xc000024110, 0xd}, {0xc000024140, 0x9}, {0xc0000240d0, 0xd}, 0x8, 0x1, 0xaa, 0x0, ...)
            /Users/temporaryadmin/Desktop/dev/wholeaked/main.go:126 +0x5eb
    main.main()
            /Users/temporaryadmin/Desktop/dev/wholeaked/main.go:81 +0x4ff
    
      // users.txt
      kruzya,[email protected]
      yuzia,[email protected]
    
    opened by BlackYuzia 0
Owner
Utku Sen
Utku Sen
Easy and fast file sharing from the command-line.

Easy and fast file sharing from the command-line. This code contains the server with everything you need to create your own instance.

Dutchcoders 13.6k Jan 2, 2023
aqua is a simple file uploading and sharing server for personal use.

aqua is a simple file uploading and sharing server for personal use. It is built to be easy to set up and host on your own server, for example to use it in combination with uploading tools like ShareX.

Tobias B. 14 Jul 7, 2022
Delta : File Sharing system for golang

delta is File Sharing system its good for Local networks or small teams Cross-platform delta runs anywhere Go can compile for: Windows, Mac, Linux, AR

null 0 Nov 29, 2021
Subspace - File sharing application for golang

subspace File sharing application. Supported Platforms OS 386 amd64 arm6 arm64 L

Jim Male 1 Jan 29, 2022
peer-to-peer file sharing

what i want is a tool to use to send files my many virtual machines. I want to do this myself, and i want to make it work as expected. So maybe a daem

Joseph Attah 0 Jun 13, 2022
An experimental project to build a framework for naming and sharing files and other data securely

Upspin Documentation: upspin.io About the project Upspin is an experimental project to build a framework for naming and sharing files and other data s

Rohan 0 Oct 20, 2021
Distributed File Store Application Consist of API Server to handle file operations and command line tool to do operations

Filestore Distributed File Store Application Consist of API Server to handle file operations and command line tool to do operations (store named binar

null 0 Nov 7, 2021
garlicshare is an open source tool that lets you securely and anonymously share files on a hosted onion service using the Tor network.

garlicshare is an open source tool that lets you securely and anonymously share files on a hosted onion service using the Tor network.

0xR4yan 106 Dec 22, 2022
A web based drag and drop file transfer tool for sending files across the internet.

DnD A file transfer tool. Demo Usage Get go get github.com/0xcaff/dnd or download the latest release (you don't need go to run it) Run dnd Now navig

Martin Charles 20 Dec 16, 2022
mini file transfer tool, use it just curl o wget

miniTransfer mini file transfer tool, use it just curl o wget How to use upload file curl -T localFileName 127.0.0.1:1234 # default save as localFileN

chenlianghong 0 Jan 12, 2022