wbStego4 Developer Documentation


This documentation coveres wbStego4.3open. The source distribution contains forms and source files for Delphi 5 or higher and Kylix 1 or higher.

wbStego4.3open is published under the GNU General Public License (GPL).

Contents of the Source Distribution

The source distribution contains the following directories:

/ root directory, containg the project file, the source files (*.pas), and the text and image files needed to run the program
/d5dfms contains the forms in Delphi 5 format, copy them into the root directory to use them
/kylixdfms contains the forms in Kylix format, copy them into the root directory to use them
/dcpcrypt contains files of DCPCrypt library by Dave Barton

The distribution's root directory contains the following files (if the file type is "Form", there is a .pas file in the root directory and a .dfm in the D5 or Kylix directory).

File name File type Description
wbsData.pas Unit holds global data
main32.pas Form defines Form14, the wbStego main window containing both wizard and flow chart user interface; does all the initialization
SelDType.pas Form defines Form1, dialog to select data type of carrier file if it has not been detected automatically
Fc_set.pas Form defines Form2, encryption settings dialog (called from flow chart UI)
Fc_pwd.pas Form defines Form3, encryption password dialog (called from flow chart UI)
Bin32Hdl.pas Unit Bit operations on 32bit integers
splash.pas Form defines Form5, splash screen
nocrypt.pas Form defines Form6, dialog saying that encryption not supported (obsolete)
regtools.pas Form defines Form7, registration dialog (obsolete)
copyrightmgr.pas Form defines Form8, copyright information manager dialog (definition of copyright info profiles)
selectcopyright.pas Form defines Form9, selection dialog for existing copyright information profiles
MultiLang.pas Unit handling of internationalization, uses custom file format (cf. MultiDataFile.pas) to store string table and images
SmartFileCopy.pas Unit file copy utility
MultiDataFile.pas Unit handling of files composed of block introduced by a size header and terminated by zeros
working.pas Form defines Form11
EncryptedDataFile.pas Unit class representing encrypted files to be hidden
MLKBBSGenerator.pas Unit generates sequences of pseudo random numbers
findcarrier.pas Form defines Form4
wbsUtil.pas Unit Formatting of label caption strings
cpi_decod.pas Form defines Form14
settings.pas Form defines Form10
ASCIIInsert.pas Unit carrier file class for insertion method into text files
ASCIIReplace.pas Unit carrier file class for replacement method into text files
BasicFile.pas Unit generic file class
DataFile.pas Unit class representing file to be hidden
CarrierFile.pas Unit generic carrier file class
BMPReplace.pas Unit carrier file class for replacement method using BMPs
PDFInsert.pas Unit carrier file class for insertion method into PDFs
BMPPalettes.pas Unit BMP color table handling
BMPUtils.pas Unit BMP utilities
wbHelpViewer.pas Unit simple viewer to display HTML file and react to basic help commands (Kylix version only)
dummy.bmp Image 1x1 dummy image
ilsupp.dat   Data file containing english and german images and string tables
wbStego.ini   Initialization data (Kylix only, under Win32 the registry is used)
wbstego.rtf RTF English help
wbstego_ger.rtf RTF German help
wbstego4en.hpj   MS Help Compiler project for english help
wbstego4de.hpj   MS Help Compiler project for german help
wbsimg.int   non-language specific image index table
wbsimg.eng   english image index table
wbsimg.ger   german image index table
wbsmsg.eng   english string table
wbsmsg.ger   german string table
wbs43en.hlp   english Win32 help file
wbs43de.hlp   german Win32 help file
wbs43en.hlp.html   english HTML help file
wbs43de.hlp.html   german HTML help file
help_rtf2html.pl   Perl script for converting RTF help files into simple HTML help files
splash.Image1.Picture.bmp Image Image shown in splash screen
main32.Image10.Picture.bmp Image Carrier file icon
main32.Image11.Picture.bmp Image Data file icon
main32.Image12.Picture.bmp Image background image of flowchart mode
main32.Image2.Picture.bmp Image Carrier file icon
main32.Image4.Picture.bmp Image Data file icon
main32.Image6.Picture.bmp Image carrier file icon
main32.Image8.Picture.bmp Image key icon
main32.Image9.Picture.bmp Image key icon
stego.ico Image wbStego4 icon

Opening the project in Delphi/Kylix

  • copy the correct .dfm files from the subdirectory to the root directory
  • Delphi or Kylix may complain about undefined attributes or variables defined bot not used in the form - ignore them all and don't allow Delphi/Kylix to remove the declarations, otherwise cross-platfrom compatibility is no longer given.


wbStego uses a custom mechanism for localization, implemented in MultiLang.pas using MultiDataFile.pas. All information is stored in the file ilsupp.dat, which consists of a number of blocks, all introduced by a 3 byte header specifying the size of the block. The file is a terminated by 3 bytes set to 0, i.e. a block header without data block.

ilsupp.dat contains both the string table and the images. The file can be created by just putting togehter the blocks in a Hex editor and inserting the headers. The structure of the file is as follows:

  • Index table for language independent images (images.int)
  • English string table (wbsmsg.eng)
  • Index table for english images (wbsimg.eng)
  • German string table (wbsimg.ger)
  • Index table for german images (wbsimg.ger)
  • image data

The format of the string table files is a key value format, specifiying the full name of a property as key and a string as value on each line, e.g.


Lines starting with a semicolon are treated as comments.

The format for image index tables is the same, with the value being the index of the part of ilsupp.dat containing the bitmap data. For example, in the list above, the index and string table are parts 0 through 4 of hte file, so the first image has the value 5.

Which language definition is loaded fromwhere is defined in the parameters of the InitMLSupport function, called from wbsData.pas.

Creating the online help

The text of the online help is stored in wbstego.rtf (wbstego_ger.rtf for the german version). This RTF file contains hyper-text help according to the MS specification.

  • Win32: just open the .hpj file with MS Help Compiler and run it
  • Linux: use the Perl script help_rtf2html.pl to convert the RTF file to HTML. The file expects wbstego.rtf as input and will produce wbstego.html as output. Rename the output file correctly (e.g. wbs43en.hlp.html). By default, the Linux HTML help files are expected to have the same name as the Win32 help file (as defined in the string table) plus the additional extension .html.

wbStego web pages © 1999-2004, last modified: Mar. 1, 2004.