We wanted a more efficient way to securely transfer files, particularly to people who may not be very technically knowledgeable. This allows people to communicate in an almost untraceable manner, giving more freedom to residents of countries where free speech is highly regulated.
What it does
Secret hides files in live audio streams by reading the file as binary, then converting each bit into a specific frequency based on its place in the byte (units, twos, etc) and its on or off value. These frequencies are appended into a sine wave, which is mixed into the microphone input using a Virtual Audio Cable. Mixed microphone input is sent into a VoIP stream, just like regular microphone input. Files are decoded on the receiving end using fast Fourier transformations, focused on peaks above a certain threshold in the inaudible range specified. The web app is build for Moxtra, but the backend can work with any VoIP stream.
Challenges I ran into
We hit the hardware limits of the audio output on the Windows Surface — getting it to output near-undetectable frequencies was hard because it only seemed to support a bitrate of 48000. Implementing Moxtra Meet was confusing, and no one on Slack was willing to help.
What I learned
Lots about granular audio manipulation, Fourier transforms, and Virtual Audio Cables.
What's next for Secret
User accounts, output frequency adjustments (particularly for devices that only support low bitrates), and out-of-the-box integration with most popular VoIP programs.