Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/skgleba/blobpak
unorganized encrypted file container aiming to be indistinguishable from garbage data
https://github.com/skgleba/blobpak
Last synced: 17 days ago
JSON representation
unorganized encrypted file container aiming to be indistinguishable from garbage data
- Host: GitHub
- URL: https://github.com/skgleba/blobpak
- Owner: SKGleba
- License: mit
- Created: 2022-02-04T21:07:49.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-28T22:43:25.000Z (9 months ago)
- Last Synced: 2024-05-01T21:53:27.410Z (7 months ago)
- Language: C
- Size: 3.11 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# blobpak
unorganized encrypted file container aiming to be indistinguishable from garbage data# usage
```./blobpak [pak] [mode] [file] [password] ```
- pak: target container or file to append to
- file: file or entry name
- password: file/entry password
- mode: one of
- 'add' : encrypts file/entry and packs into the container
- 'get' : decrypts and extracts file/entry from the container
- 'del' : finds and deletes file/entry from the container
- overrides:
- '--stdin' : gets input data from stdin
- '--stdout' : writes output data to stdout, incompatible with '--replace'
- '--replace' : for 'add' mode, if file/entry exists blobpak will remove it first
- '--view' : for 'get' mode, prints data as ascii
- '--math1v0' : use blobmath v1.0 - v1.2
- '--maxpad [size]' : for 'add' mode, use random padding up to [size] bytes (default 2048)
- '--hashparam [param]' : one of SHA1, SHA256_SHA1, SHA256_AES_SHA1 (default SHA256_SHA1)
- '--enchdr' : encrypt the entry header
- '--namesalt [salt]' : use [salt] as the entry name xor salt
- '--pwdsalt [salt]' : use [salt] as the password xor salt
- '--aes128param [param]' : one of AES_128_CBC, AES_128_CCBC (default AES_128_CBC)
- '--threads [num]' : enable threading and use [num] threads, set to 1 for auto# data layout
- entries are appended to the main pak consecutively one after another
- each entry starts and ends with a random-sized block of random data
- after the random data block there is an entry header that contains the entry ID and size hashes
- the encrypted entry data is stored after the header# encryption
- entry name and size are stored as one-way salted hashes (sha1(sha256) and crc)
- entry AES-128 key is the first 128 bits of password's sha1(sha256)
- entry AES-128 iv is the encrypted size crc, last 32 bits of password's sha1(sha256) and random 64bits# notes
- this is a PoC
- it is slow by design (unorganized, one-way hash)
- the package size is limited to 4GB, but can have unlimited file/entry count
- i strongly recommend extracting the data to a ramdisk so it cannot be scrapped from a disk image
- after finishing, you should write garbage to the file before unmounting the ramdisk
- all operating data is trashed upon program exit, should be safe from RAM freeze attacks
# todo
- other languages