Unlisted mirror of private melamine repo for CSC842 students
Find a file
2023-07-16 17:34:02 -07:00
melamine mvp 2023-07-16 17:34:02 -07:00
.flake8 MVP for testing 2023-07-16 09:30:36 -07:00
.gitignore Initial 2023-07-15 13:08:04 -07:00
.pre-commit-config.yaml Initial 2023-07-15 13:08:04 -07:00
LICENSE Initial 2023-07-15 13:08:04 -07:00
melamine.png Add logo, fix orphaned await 2023-07-16 15:19:57 -07:00
pyproject.toml Trying out aiopath 2023-07-16 12:59:30 -07:00
README.md Custom recurse globs and readme 2023-07-16 16:10:32 -07:00

melamine logo

melamine

melamine is a better file shredder

it runs on linux (Ubuntu tested) for now

InstallationExampleContributingLicense

Installation

todo

sudo apt install --yes --no-install-recommends build-essential python3-dev libzfslinux-dev && \
sudo pip3 install Cython && \
git clone https://github.com/truenas/py-libzfs && pushd py-libzfs && \
./configure --prefix=/usr && sudo make install && popd && \
git clone https://sillyhats.mips.uk/pdf/melamine && pushd melamine && \
python3 -m pip install .

Example

melamine is not yet ready for production use. If you'd like to try it, generate dummy files below. Preferably, do this on a separate mount point than any essential files or in a virtual machine.

Currently, only inode discovery and the beginnings of ext2/3 and zfs support exist.

rm -rf /tmp/melamine && mkdir -p /tmp/melamine;
rm -rf /tmp/melamine_hardlinks && mkdir -p /tmp/melamine_hardlinks;
for i in $(seq 1 4); do dd if=/dev/urandom of=/tmp/melamine/test_$i bs=1 count=$(( RANDOM % 256 * 256 )); done;
ln /tmp/melamine/test_1 /tmp/melamine_hardlinks/hardlink_1;
ln /tmp/melamine/test_2 /tmp/melamine_hardlinks/hardlink_2;

You can then confirm that the two hardlink inodes match using ls -li.

ls -li /tmp/melamine/test_*;
ls -li /tmp/melamine_hardlinks/hardlink_*;

Contributing

If you would like to contribute to this project, feel free to submit a pull request or open an issue on GitHub.

This tool was written as part of my coursework for CSC 842 - Security Tool Development at Dakota State University. Consequently, I may choose not to maintain this tool beyond the length of the course, but have selected a license that enables open contributions in any case.

License

This project is licensed under the MIT License. See the LICENSE file for details.