    IiiiIiIIIIIIIIIIIIIIIIIIIIIIIIIIIIiIIIiIiIIIIiiIiIiiIiiIIiiiIiiIIIiiIiI
    IIIIIIiIIiIIiiIiIiiiiIiiIiIiIiiiIIIIIIiIIIiiIIiiIiiiiIiiIiIiIiiiIIiiiIi
    iIIIiIIiiIIIII    000    00000   00000    000      0     IiIIIIiIiiiIII
    IiIiiIiIIiIiiI   0         0     0       0        0 0    iiIIiiiIIiiiIi
    IIiIiiIIIIIiIi    000      0     000     0 000   00000   IIIIiIiiIiIIII
    IIIiIIiIIIIIiI       0     0     0       0   0   0   0   iiIIiiiIiiIiIi
    iIiiiiIiiIIIII    000      0     00000    000    0   0   IiIIIiiIiIiIiI
    iIiiiIiiiiIiiIIiIIiiiIiIIiIiiIIIiiIiIIIIIIIiIIIiiIIIiIiIIiIiiIIiiiIiiII
    IiiIiiIiIIIIiiIIiiiIiiIIIiIIiiIiIiiIIIIIiIiIIIIiiiiiiiiiiiiiiiiiiiiiiii

          STEGA.COM v2.01 - Tiny 4058-bytes Steganography Program
                 Copyright(c) 2006 by Asko Vuori, Finland
                            All Rights Reserved


    Released into the FreeWare - FREE TO USE.
    Please distribute this stuff as you got it.
    Don't distribute modified files. Thanx.
    File list:
        stega.com       <- main program
        stega.diz       <- tiny info
        stega.gif       <- picture + stegasrc.zip
        stega.txt       <- this file
        stega4f.bat     <- bat to show messages inside stega4f.gif
        stega4f.gif     <- picture + 4 short text messages


    Program to hide file inside BMP/GIF/PCX/TGA picture or VOC/WAV
    sound file or RAW 8-bit data file or LST/TXT text file.
    It's recomended that the picture is GrayScale or TrueColor.
    Written in 8086 assembly.

    Usage:
      STEGA +|-[ABs,cHtPs,b,dRSUs,e] Host.Gif Hide.Ext

    STEGA.GIF file has full assembler source for STEGA v2.01 inside
    2 low bits. Try this:
      STEGA -B1,2 STEGA.GIF STEGASRC.ZIP
      PKUNZIP STEGASRC.ZIP

    Options (MUST BE after hide/seek mark without spaces):
      A      - Append if file exists (only in seek mode, default overwrite)
      Bs[,c] - Set bit position and count to use (default B1,1).
               s - start position (1 to 8)
               c - bit count inside one byte (1 to 8)
                   Lowest bits are used first. Disabled on LST/TXT files.
               If you use all 8 bits there is NOTHING left from the original
               picture.
               Use 2 low bits (256 Colors)    Use 2 high bits (4*64 colors)
                 +B1,2     Byte: 00100101       +B7,2     Byte: 00100101
                       Use bits:       ^^             Use bits: ^^
      Ht     - Set header type (default +H2 is 32-bit file length).
               t - Type of header
                   (0 = none, 1 = 16-bit, 2 = 32-bit file length)
      Lw     - Set line wide (only used in TXT file with Us=c option).
               w - expand lines to length
               ex. +L78U32=255  fills lines to 78 with (32 or 255).
      Ps,b,d - Set byte positions for spread bits (default P0,1,0):
               s - start position (=skip over first s bytes)
               b - byte counter (=use next b bytes)
               d - dummy byte counter (=skip over next d bytes)
               Number range is 0 to 65535. If you use big dummy value you
               need a very big picture/sound file.
               ex. +P0,1,65535  only 32-bit file size need 2097152 bytes.
      R      - Reverse bit order (high-bit first, default is low-bit first).
      S      - Scramble with 128-bit IDEA key (from archive IDEA3A.ZIP).
               Tiny IDEA Encryption Program Copyright (C) Fauzan Mirza 1995-96
               Fauzan Mirza            Department of Computer Science
               fauzan@dcs.rhbnc.ac.uk  Royal Holloway, Univ of London
               Due to the strength of the encryption algorithm, the author
               disclaims all responsibilities for the use or misuse of this
               software. You are warned that files encrypted with this
               program will not be recoverable without the correct key.
      Us,e   - To use only byte range start..end (default U0,255):
               s - start of range   (byte/ascii value in range 0..255)
               e - end of range     (       or in hexadecimal $0..$FF)
               If start > end then EXCLUDE range start..end.
               Be carefull when you use this.
               ex. +B1U2,253    (2<>3) .. (253<>252) is ok
                   +B2U2,253    (2<>0) .. (253<>255) both range over
                   +B1U$30,$39  ("0"<>"1") .. ("8"<>"9") use only "0".."9"
      Us=e     To use only 2 different bytes to handle 0/1.
               ex. +B1U47=92    where "/" is 0 and "\" is 1
                   +B3U59=58    where ";" is 0 and ":" is 1 with skip first
                                ;:::;:;:;:;;;:;:;::: like cool asm comment

    Notes:   You can't use A or B after hex value ex. +U$10,$EFA because it
             will be counted inside hex value, but +U16,239A is ok.
             Be carefull when using multiple options.

             REMEMBER ALWAYS TEST/UNPACK PICTURE/SOUND/TEXT FILE.

    Some file format notes (file identify depends for extension):
      BMP - Only unpacked BMP with 4/8/24 bit colors supported.
            In 16 color picture use bit position 1 for low-nybble LSB
            and bit position 5 for high-nybble LSB.
      GIF - Hide/Seek can continue to the next image if needed (only in
            multi-picture Gif).
      LST - Normal ASCII text or list file contain LineFeed (0Ah).
            Bit position used (default 1):
              1 - Use extra space(s) character at EndOfLine.
                  Lines with extra space are 1 and lines without extra
                  space are 0. Multiple spaces are used by bit count.
              2 - Count spaces between words. Multiple spaces are used
                  by bit count. Skip margin = first space(s).
              3 - One space=0, Two spaces=1. Multiple space are converted
                  to 1 or 2 spaces. Skip margin = first space(s).
              4 - Ascii=0, Space+Ascii=1.
            You can also use with bit counter.
            ex. +B1,4     use 0 to 15 space at EndOfLine
                +B2,2     use 1 to 4 space between word
            Option 'U' disabled for future use.
      PCX - 16 color (4 ColorPlane * 1 BitsPerPixel) PCX must be convert to
            (1 ColorPlane * 4 BitsPerPixel) before use.
      RAW - It's pure 8-bit data file starting at file position 0.
      TGA - Packed TGA with 8/16/24/32 bit converted to unpacked format.
            In 32k color TGA there is only bits 1 to 5 availabe
            (B8 is special code to use bit 16).
      TXT - Normal ASCII text file.
            Bit position used (default 1):
              1 - Uses UPPER/lower case characters.
                  Only chars 'A'..'Z', 'a'..'z' are used. Upper case chars
                  are 0 and lower case chars are 1. So 8 chars will be
                  converted to one byte. Text file size don't change.
              2 - Same as 1 but uses only first char of word.
              3 - Same as 1 but don't use first char of word.
            You can use bit position (2 & 3) in same file.
            If you use option 'Us,e' it will use normal bit position,
            but 'Us=e' will use this bit position format, because only
            2 different bytes are availabe.
      VOC - Only 8-bit files supported.
      WAV - Program can handle only uncompressed 8/16-bit WAV file where
            sound data start at offset 002Ch.


    To hide file:
      STEGA + Host.Gif Hide.Ext
    and seek file:
      STEGA - Host.Gif Hide.Ext
    get maximum hide file size (Dummy.Ext size - 4):
      STEGA -h0 Host.Gif Dummy.Ext

    To clear bit position 2:
      STEGA +B2 Host.Gif

    To use only picture half of example picture with 4 bits. 
    (copy gif, seek zip, clear 2 low bits, hide zip) 
      copy stega.gif s2.gif 
      stega -b1,2 s2.gif stegasrc.zip 
      stega +b1,2 s2.gif 
      stega +b1,4p0,180,140 s2.gif stegasrc.zip 

    Even gif file global color palette can used to hide 92 bytes message
    (must use raw format) 
      ren test.gif test.raw 
      stega +p13,1,0 test.raw text.txt 
      ren test.raw test.gif


    Technical stuff:
      All processor 8086 to Pentium III are supported.
      Maximum hide file size is approximatly (Width*Depth/8)-4 bytes.
      Hide file size will be stored inside first 32 picture/sound bytes
      (Note: 16 bytes if 'W', none if 'X'). Picture time/date don't change.
      Maximum picture width is appr. 54000 bytes (24-bit = 18000 pixel)
      and depth is 65535 lines.
      If only one LSB's (Least Significant Bits) of the picture file is used.
      - thus, roughly 50% of the colors are changed, but if they are it
        is only by one palette value (0-255). If the picture's palette
        is based on gradients (GrayScale/TrueColor), then this will most
        likely be undetectable.
      You can hide 2 or more files using bit interlance or different bit
      position.
      128-bit IDEA is cutted from archive IDEA3A.ZIP
        - Tiny IDEA Encryption Program Copyright (C) Fauzan Mirza 1995-96
        - It uses 8 round IDEA in ciphertext feedback mode.
        - The pass phrase is hashed using tandem Davies-Meyer (with IDEA).
        - The feedback is done on 8 byte blocks.
        - The initialisation vector (IV) is set to zeros.


    This program has very limit error handling. Beep on error.
      - Unknown format
        (Unsupported file extension)
      - Can't open file
        (Can't find or create file)
      - Hide file is too big
        (hidden to maximum length. Use seek '-' to see how big file you
        can hide.)
      - File error
        (Read/Write error or unsupported color/sound/compression format)
        If you are hiding/clearing look for file "STEGA.TMP" which is
        new picture/sound file build before error.


                       What is steganography ?
                       =======================

    Steganography is the ancient art of hiding sensitive information
    amongst inconspicuous information. Many years ago people used to
    use illustrations to conceal messages. The idea being that one
    party could send the illustration to the other in reasonable
    confidence that if the messenger was questioned then the
    illustration would not arouse any interest from his enemies.

    Since the advent of computers there has been a vast dissemination
    of information, some of which needs to be kept private, some of
    which does not. STEGA brings you the capability of `hiding' files
    within bitmap (.BMP / .GIF / .PCX / .TGA) or sound (.VOC / .WAV)
    or raw data (.RAW) or text (.LST / .TXT) files.

    You could use STEGA to conceal private or confidential information
    that you don't want to fall into the wrong hands. You could use it
    to send information to another individual via a broadcast network
    such as Usenet. By agreeing on a passphrase you can keep the
    information out of unauthorised hands.

    In short, STEGA allows you to place private information in an
    inconspicuous 'envelope' that will not arouse suspicion.


                       With another programs
                       =====================

    MandelSteg V1.0 files can be encode/decode using reverse bit order
    without file header. STEGA need bit position +1.
    ex. STEGA -B8RH0 mandel.gif hidden.bin

    STEGA can also encode/decode SIF v1.0 BETA files (without password).
    Text file need only RETURN ascii code 13 (=0Dh) without line feed
    and text must end with ESC ascii code 27 (=1Bh)
    ex. STEGA -U32=0H0 sif_file.txt hidden.msg

    I found ffencode/ffdecode programs, but they are not yet fully
    analysed. They use 32/255 ascii chars. Lines expanded to 64 chars?
    STEGA can decode FF file by skipping over header id 'ffcode'.
    ex. STEGA -P48,1,0RU32=255H0 ff_file.txt hidden.bin



    If you have some other ideas or source code to hide information
    inside file, send me a letter (or 1.44M disk or CD) and I may add
    it inside future version of STEGA. I don't mean 100k JPG/PNG format
    only something small and easy to write (GIF is complex enough).

    To contact me: askovuori(a)hotmail.com


                              DISCLAIMER
                              ==========

    This program is provided on an AS IS basis.
    I am NO liability whatsoever for any damage caused by this program.


                               LICENSE
                               =======

    This is published proprietary source code of the author, and may
    be freely distributed and copied as long as this and any other
    copyright, trademark, and ownership notices are not altered in
    any way shape or form.
    This software is hereby deemed freeware and may not be sold.
    A small duplication charge (less than $5.00 US) may be made as
    compensation for the specific distribution of this software.
    This software may be included on any CD-ROM collection of
    freeware and/or shareware. Please feel free to give out copies
    of this software to your friends.
    You may not distribute modified copies of this software without
    the written consent of the author.
    Usage of this software indicates an agreement to the above license.
    Should any statement in this license be deemed invalid, only that
    statement shall be revoked, leaving the rest of this license valid.
    This license terminates when the user destroys all copies of this
    software from all media on which it resides.

