4.6 KiB
No More Secrets
"No More Secrets" is the name I've lovingly given to the infamous "decrypting text effect" seen on screen in the 1992 hacker movie "Sneakers". If you are unfamiliar with the effect, it can be seen at 0:35 in this youtube video.
This project seeks to provide tools to recreate this effect in your projects.
Here is a standalone executable (provided in this project) that uses the provided tools to perform this effect on piped data:
Here is another example program called "sneakers" (type make sneakers
when installing.) that
utilizes these tools to recreate, almost identically, what we see in the above movie clip.
What's Provided
Two tools are provided for you to recreate this effect:
-
A standalone executable file named
nms
(shown above). This file accepts data from a shell pipe and displays it in a manner that is nearly identical to the effect we see in the movie. -
A module and header file, written in C, that can be included in programs and used to recreate this effect in a custonized way. In fact, the standalone executable
nms
is really just an example that shows how to use this module on piped data.
Installing the Standalone Executable
git clone https://github.com/bartobri/no-more-secrets.git
cd ./no-more-secrets
make
This will create an executable file named nms
and place it in the no-more-secrets/bin/
directory.
You may manually copy it in to your preferred bin directory.
Using the Standalone Executable
nms
accepts data from a shell pipe. Simply pipe some data to it and enjoy the magic!
ls -l | bin/nms
Once the "encrypted" data is displayed, the program will pause until you press a key. Then the decryption effect will start. After that is completed, it will again pause until you press a key, at which point the program will terminate.
Using the Modules in Your Program
Synopsis
File: synopsis.c
#include "nms.h"
int main() {
NmsArgs args = INIT_NMSARGS;
args.src = "This is a simple test";
nms_exec(&args);
return 0;
}
Compile synopsis.c (must include nms.c
and -lncurses
):
gcc nms.c synopsis.c -o synopsis -lncurses
The Details
You will need to copy two files to your project:
nms.h
nms.c
Include nms.h
in your program file:
#include <nms.h>
Add nms.c to your source file list when compiling:
gcc nms.c myprog.c -o myprog
You only need to call one function from inside your program to create this effect. It is defined as such:
char nms_exec(NmsArgs *);
This function only takes one argument: a pointer to a structure containing 5 members. One of these members is a character pointer to a string on which you want to perform this effect. The other members are explained below.
First, declare the structure like so (substitute 'args' with whatever name you desire):
NmsArgs args = INIT_NMSARGS;
The defined name INIT_NMSARGS represents a default set of values for all 5 members. This way, you can ignore the members you don't want to use and only program for those that you do. Below is the definition for the NmsArgs structure:
typedef struct {
char *src;
char *return_opts;
int input_cursor_x;
int input_cursor_y;
bool show_cursor;
} NmsArgs;
char *src
should contain a pointer to the string of character you wish to perform the effect on. This is the only member that you need to set prior to callingnms_exec()
.char *return_opts
shuold contain a string of characters, of which one is required by the user to press before nms_exec will return execution back to the calling function. Only use this if the user must choose an option from a menu that is presented after the text "decrypts". See the included program 'sneakers' as an example.int input_cursor_x
andint input_cursor_y
- These should contain the x/y coordinates for the cursor if you wish it to be placed at a specific location on screen after the text "decrypts".bool show_cursor
- Set totrue
if you want the cursor to be visible during the text decryption effect.
License
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. See COPYING for more details.