Logan Shaw wrote:

>[snip]
>And there's also an easy way around it.  Simply add noise to
>the image.  There are a number of techniques, but an obvious
>one to use with GIF is to assign two palette entries to
>two nearly (but not quite) identical colors.  For example,
>put 0xffffff and 0xfffeff in your palette.  Then, for every
>white pixel in the original image, choose at random whether it
>gets represented by a 0xffffff or 0xfffeff pixel.  There will
>be virtually no discernable difference to the eye, but the
>files will completely different, especially since GIF uses
>LZW compression on the pixel data.
>
>There are similar methods for other formats:  with JPEG, you
>can just change the quality settings, causing the JPEG decoder
>itself to add noise to your image.  (And perfectly legit noise,
>too, since the quality parameters vary on legit images.)
>
>And of course you can just add noise to the least significant
>bit in any generic format as well.
>
>   - Logan
>  
>

If I could revisit this issue and be less sinister in doing so, I'm
trying to look at ways to generate a fingerprint from GIF stock
spams that could be used to filter them.

I'll need to reduce a large number of spam (no, I don't need any
extra, so don't bother forwarding them ;-)... and then do a stochastic
analysis of those parameters.

In the meantime, a couple of questions and observations...

First, CPAN seems to come up short on modules to parse and
decompose (and render!) GIF or PNG file formats. Most
disappointing. I finally decided on the now stagnant and
unsupported Image::Info module (sigh), but it doesn't
decompress that data once it deconstructs the GIF data stream
into its component parts.

I tried to use Compress::LZW to decompress the stream, but
that only seems to work on 12 or 16 bit minimum codesize,
whereas GIF images are routinely 4, 6, or 8 bits long.

Does anyone have a handle on what Perl modules to use for
dissecting GIF objects?

Thanks,

-Philip

Reply via email to