|
Index
IntroductionTRex' primary goal is to provide a framework for the evaluation of steganography algorithms. As such, there is a need for a plugin interface, a clean interface to the algorithms and easy integration of new algorithms. Implementing new steganography algorithms primarily consists of implementing a new class derived/inheriting from the abstract class StegoAlgo. It's subclass StegoAlgoRGB simplifies integration of algorithms that operate pixel-wise, i.e. take one pixel, decide on what to do and return that pixel. On all questions first read the API documentation created from the source (by javadoc). Development environmentTRex development was done with Inprise's JBuilder 6.0 personal edition that is available for free for uncommercial use. You will find the JBuilder project file in the source distribution, so you can immediately start developing. Get JBuilder from Inprise's server here. Any combination of <put your favourite text editor here> and the java compiler will do the work fine, too, especially if you focus on algorithm development and do not change the GUI. The TRex APITRex' data flow is cleanly divided into the parts "GUI", "Data" and "Algorithm". The classes for GUI and algorithms are sourced out to their own packages (trex.GUI and trex.Algo, respectively). From the main window's (class MainFrame) events, control is passed to the StegData object that loads and saves files, receives updates to the pass phrase, loads algorithm classes and the like. StegData in turn calls the currently loaded algorithm class' encryption and decryption methods, getEncrypted and getDecrypted. As you can see from the method declaration, To include your new algorithm in the algorithm menu (eliminating the need to
manually load the algorithm class), simply create a new line at the top of the
file Important classes for algorithmsAs said above, implementing a new algorithm "simply" means to write a new class
that is a subclass of StegoAlgo.
The main work is done by the
getEncrypted
and
getDecrypted
methods, but a few additional methods that are declared If your algorithm works on the pixels serially (i.e. "only" considering
one pixel at a time in contrast to considering the whole image at once, or at
least parts of it), you may consider to have a look at the subclass
StegoAlgoRGB that
does some of the work on it's own and relies on the implementation of
TRexFilterRGB
subclasses doing the actual work in the end. Many useful functions are provided by the TRexUtil class. There are functions for type conversions, bit shifting "wizardry", and the like. Yes, I want to help! What can I do?Currently, TRex waits for the following extensions:
|