How to Properly Submit Tools for the Null Byte Suite
Hello everyone. I've recently made the annoucement of the Null Byte suite of tools, and we've covered how to download and install it. Now it's time we cover how to submit a tool for inclusion into the suite. It's relatively simple, but we need to get a few ground rules out of the way.
There are a few basic things that we need to understand before we can start submitting tools. We'll be covering all that follows.
- Each tool must be submitted as a single compressed file
- Each tool must be accompanied by the required configuration files
- Each tool's 'author' file must contain an accurate description of the tool along with the specifications for the variables
If you need help with file compression, please see this article. These rules may not make sense as of now, so let's cover configuration file requirements in finer detail.
Each submission must come with 3 total files. The first of which being the tool itself, the second being the 'config' file, and the third being the 'author' file. We'll cover the two configuration files separately.
This file will be read by the suite to determine what variables need to be set for the tool to work properly. In order to function correctly, each tool must take arguments in the same order of the variables in the config file.
No tool will have to take it's own input, it will be taken by the suite and fed to tool upon execution. Each variable will be fed to the tool as an argument. We'll see this in detail in our example tool. Let's move on to talking about the author file.
This file's contents will be read and printed directly into the terminal. This file should contain a brief, yet precise description of the purpose of the tool, how it works, and what the specifications are for the variables, it may also contain the name of the developer. We'll also see this file in our example tool.
The first step is to build the tool itself. We'll be building a simple script to print whatever the user gives as a variable. Remember, we need to take our input as arguments. Let's look at our script:
We can see in the above screen shot that we've taken the first argument and printed it. Now that we've built our tool with the correct form of argument taking, let's look at how our configuration files would look. We'll start with the config file then we'll cover the author file.
When we make config files, we can only place one variable per line. A variable name may not contain any spaces, and each line must be ended with an equal sign (=). Let's look at how our config file for this tool would look:
This config file is very simple since we only need one variable. But remember; the order of the variables in the config file must be the same as the order of the arguments in the tool! Let's take a look at our author file next.
This file will contain a brief summary of the purpose of the tool, how it works, the needed values for the variables, and it may also contain the developers name. Let's take a look at our author file for this example tool:
We've stated that this tool will print the value of WORD, and that it was developed as an example. This is the last of the files we need, so let's compress them.
In order to maintain organization we've asked that only one compressed file be submitted per tool. This file must be aptly named. We'll compress these with the tar and gzip commands. For more information about these commands, I again refer to this article by our admin. Let's take a look at the commands we'll be using to compress our files together:
Now we should have a single tar.gz file which we can submit. Now that we have our final file, let's discuss where we can submit it.
In order for us to receive your compressed file, it should be emailed to us. Please include your user name (If you have one) in the subject. All compressed files must be emailed to us at
Upon receiving the compressed file, we will go through it throughly, it will then be pushed into the dedicated repository. If you mail a tool to us and it doesn't show up soon, don't worry, we're pushing tools out in small bundles through minor updates. If an update is available, you'll be prompted when the suite starts up.
That's all we have for submitting tools. But let's go ahead and test our example tool so we can see if we configured it correctly. I've manually installed it in my version of the suite, so let's see if it works:
This tutorial has outlined the process for tool submission rather throughly. If you have any remaining questions, please put them in the comments below and I'll do my best to answer them. As a side note; the names of the configuration files must be config and author, this lets the suite know to use them.
We're very excited to see what the community can come up with!