Tapestry
A command line tool written in C to encrypt videos into other videos
Install / Use
/learn @HarrisonKeeling/TapestryREADME
Tapestry
A command line tool for encrypting/decrypting videos inside other videos.

Status
The current encryption method utilizes an XOR method on the message file and the cloak file as a one-time-pad type encryption. I plan to update this program to allow the user to specify an encryption/decryption method from a subset of standard ciphers for more practical use.
Additionally, you'll notice some loss of quality in the encrypted and decrypted messages when compared to the originals. I plan to implement and option to store encrypted bits in a 1:2 message:cloak frame format which will allow you to preserve the entire quality of the message at the limitation of having a cloak file with twice as many frames than the message file.
I've begun adding noise distribution and optional cartesian distribution,
you can take a look on the add-noise-distribution
branch.
Requirements
Tapestry is written in C and uses FFmpeg to encode and decode video files.
Installation
The easiest option to install FFmpeg is through Homebrew.
brew install ffmpeg
However, you can install FFmpeg via their website if you prefer.
Compiling
You can probably use a C compiler of your choice, but I prefer gcc.
gcc -o tapestry main.c
Usage
Currently, two operations are provided:
-enc <cloak path> <message path>
* Purpose: embed a video with filename `message` into a video with the filename `cloak`
* Example: ./tapestry -enc cloak.mp4 message.mp4
-dec <encrypted video path> <original cloak path>
* Purpose: attempt to pull out a video message from an encrypted video with the filename `secret.mkv`
by using the original `cloak` file as a decyprtion key
* Example: ./tapestry -dec secret.mkv cloak.mp4
Limitations
Since the encryption and decryption methods currently perform operations on the pixels in each videos' frame, there are limitations regarding the dimensions of the cloak and message video files.
- The message video file must be of equal or lesser pixel dimensions (in both width and height) than the cloak video.
You could encrypt a
720x720message into a1280×720cloak file, but not the other way around. The encryption method does not have a scaling operation yet.
Example
Suppose you have a video called Picklock_Tutorial.mp4 which is a DIY video containing instructions on how to picklock.
We can hide this tutorial in another video that both you and your recipient have, say a video of your favorite mountain biking trail,
named Mountain_Biking.mp4.
TIP: A cloak file with plenty of movement and colors is the best type of file to hide content in, as it makes it harder to notice slight differences in pixel color or movement
./tapestry -enc Mountain_Biking.mp4 Picklock_Tutorial.mp4
You could then send output.mkv to a peer.
Your peer could decrypt this inconspicuous video file using the copy of the speech video they also have.
./tapestry -dec output.mkv Mountain_Biking.mp4
Voila! The peer can open output.mp4 and watch your picklocking tutorial unencrypted.
Related Skills
docs-writer
99.3k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
339.3kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Design
Campus Second-Hand Trading Platform \- General Design Document (v5.0 \- React Architecture \- Complete Final Version)1\. System Overall Design 1.1. Project Overview This project aims t
ddd
Guía de Principios DDD para el Proyecto > 📚 Documento Complementario : Este documento define los principios y reglas de DDD. Para ver templates de código, ejemplos detallados y guías paso
