Steganographs: [Note: the addresses ftp.netcom.com, or netcom#.netcom.com where # is 1-10 should now be used to "ftp to netcom.com".] Stego by Romana Machado (ftp to netcom.com in /pub/qwerty as stego1.0a2.sit.hqx) will hide text as the least significant bit in a Mac PICT file. Stealth by "Henry Hastur" (ftp to netcom.com in /pub/qwerty as stealth1.1.tar.Z) strips a binary PGP message down to the bare message without any of PGP's convenience wrappers. The resulting message should be hard to distinguish from random noise data, and this thus turns steganography into an EXCUSE to send random-looking data, by hiding it as noise. Sophisticated steganographs are now needed however since real noise in the digital domain is rarely white noise. Stealth will now compile on DOS or Unix. The C source code is contained in the file stealth1.1.tar.Z or separately as stealth1.1.source.code. To get Stealth set up under Unix, ftp stealth1.1.tar.Z in binary mode, then do 'uncompress stealth1.1.tar.Z', 'tar xvf stealth1.1.tar', and finally 'make'. Stealth has also been ported to work on the Amiga by Peter Simons (ftp to netcom.com in /pub/qwerty as AmigaStealth1.0.lha, or to wuarchive.wustl.edu in /pub/aminet/util/crypt as StealthPGP1_0.lha). However, Stealth1.1 above, should now also compile on the Amiga, as Peter sent the changes to Henry, to be included in 1.1. MandelSteg by Henry Hastur (ftp to ftp.netcom.com in /pub/qwerty). For Unix and DOS so far. Generates fractal GIF pictures and injects your messages into them. Jsteg by Derek Upham (ftp to netcom.com in /pub/qwerty). Get everything. jpeg-v4.tar.gz is the raw sources for the djpeg/cjpeg utilities, jpeg-jsteg-v4.diff.gz are the diffs for building djsteg and cjsteg, and jpeg.announcement.gz is a readme file describing the steganographic format. I have NOT used jsteg so I'm not the guy to ask about it. It's so far only ported to Unix. S-Tools by Andrew Brown (ftp to netcom.com in /pub/qwerty as s-tools1.0.zip): I quote, sci.crypt #21969 (0 + 1 more) Newsgroups: sci.crypt,alt.security.pgp From: asb@cs.nott.ac.uk (Andrew Brown) [1] Steganography tools for Windows available Organization: The University of Nottingham Date: Sun Mar 06 08:51:26 EST 1994 Version 1.00 of a new steganography toolkit for MS Windows 3.1 is now available by email from me. S-Tools conceals files within Windows WAV sound files, and is of course able to extract previously hidden files. The modified sound file is indistiguishable to the human ear (well it is to mine anyway!). S-Tools supports 8 and 16 bit WAV files, in mono or stereo. The registered version of S-Tools supports encryption of files as they are hidden in the sound wave. The encryption algorithms supported are IDEA, DES, 3DES and MPJ2, in ECB and CBC modes of operation. You get the source code if you register so you can satisfy yourself as to the security of the implementation. If you want a copy of S-Tools then mail me and I'll send you a uuencoded copy. Offers to place it on an ftp site would be greatly appreciated :) Regards, - Andy (asb@cs.nott.ac.uk) PGMstealth by Timo Rinne (ftp to netcom.com in /pub/qwerty as PGM.stealth.c): I quote, A program to merge data into the pgm pixmap. PGM-pixmap is a normal grayscale bitmap created by almost any program. At least in pbmplus package (or netpbm) there are giftoppm and ppmtopgm converters to create these beasts and at least xv-3.* can save pictures in pgm format. PGMstealth can read either ascii or binary PGMs (P2 or P5). I add the format description of PGM from netpbm package at the end of this mail. When I used the pgp extension in one of my examples, I was only referring to the data file created by Phil Zimmerman's PGP program and maybe stripped by stealth program I found in your ftp-site. Anyway, if one can create PGM pictures out of their favourite images, the usage of PGMstealth is quite self explanatory, and of course there are few good examples in the comments of the code. The main principle of the program is that it strips the least meaningful bits out of the picture and uses these bits to store information. More bits you spend to your information, greater is the affect on the quality of the picture. In my experience 1-bit (some cases even 2-bits ) of stored information can hardly be noticed in the 8-bit grayscale image. And of course you can always deny that there is any crypted information in your pictures. Spreading the grayscale pictures with noise in their least meaningful bits can hardly be considered encriminating, especially when this is the case in the most 8-bit grayscale picture. If you (or someone else) like to write a manual page I'd be delighted :-). Description of pgm format: pgm(5) NAME pgm - portable graymap file format DESCRIPTION The portable graymap format is a lowest common denominator grayscale file format. The definition is as follows: - A "magic number" for identifying the file type. A pgm file's magic number is the two characters "P2". - Whitespace (blanks, TABs, CRs, LFs). - A width, formatted as ASCII characters in decimal. - Whitespace. - A height, again in ASCII decimal. - Whitespace. - The maximum gray value, ain in ASCII decimal. - Whitespace. - Width * height gray values, each in ASCII decimal, between 0 and the specified maximum value, separated by whitespace, starting at the top- left corner of the graymap, proceeding in normal English reading order. A value of 0 means black, and the maximum value means white. - Characters from a "#" to the next end-of-line are ignored (comments). - No line should be longer than 70 characters. Here is an example of a small graymap in this format: P # feep.pgm 24 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Programs that read this format should be as lenient as possible, accepting anything that looks remotely like a graymap. There is also a variant on the format, available by setting the RAWBITS option at compile time. This variant is different in the following ways: - The "magic number" is "P5" instead of "P2". - The gray values are stored as plain bytes, instead of ASCII decimal. - No whitespace is allowed in the grays section, and only a single character of whitespace (typically a newline) is allowed after the maxval. - The files are smaller and many times faster to read and write. Note that this raw format can only be used for maxvals less than or equal to 255. If you use the pgm library and try to write a file with a larger maxval, it will automatically fall back on the slower but more general plain format. SEE ALSO fitstopgm(1), fstopgm(1), hipstopgm(1), lispmtopgm(1), psidtopgm(1), rawtopgm(1), pgmbentley(1), pgmcrater(1), pgmedge(1), pgmenhance(1), pgmhist(1), pgmnorm(1), pgmoil(1), pgmramp(1), pgmtexture(1), pgmtofits(1), pgmtofs(1), pgmtolispm(1), pgmtopbm(1), pnm(5), pbm(5), ppm(5) AUTHOR Copyright (C) 1989, 1991 by Jef Poskanzer. [Sorry, this list is under construction! Help appreciated.] -=Xenon=- Note that grayscale pictures are better for steganography, especially if you only have 8-bit color pictures. Note also that even with a stealth encryptor (one whose output is not easy to tell from "noise") there is the problem that unless your steganograph is somewhat sophisticated, which none are so far, someone who really cares to can tell if the "noise" in the carrier message is natural or is a hidden message, since noise in the digital domain is usually biased towards having more ones than zeros (or vice versa, depending on its source, and especially on the analogue-to-digital circuits). This list is more for use by those developing better steganographs, not so much for casual "gimmee easy software" types. One day soon they will arrive in sophisticated form for the Mac and Windows (100 million people user base) and you wont even know they exist, except in the background ;-).