#!/usr/bin/perl -l $_ = q[ for ( @_ ) { push @_, sort grep /\w+/, @_ } print unpack 'A*', pack 'B*', join '', reverse map { length ( $_ ) >> 1 } split /\S+/ ] and eval

This gets goofed when pasting from NS6, so use 'd/l code' link as appropriate.

No modules, semicolons, mirrors or smoke.

(ok, maybe a little smoke)

Spoiler tomorrow. There's a word for the type of encoding used, and I hope someone can remind me what it is :)

Replies are listed 'Best First'.
Re: japh's japh II
by japh (Friar) on Jan 22, 2002 at 01:47 UTC
    spoiler - code used to generate this japh

    $_ is assigned a string value, then eval'd. Inside the eval, $_ still contains all the code being executed, which then becomes the raw data for the code too.

    Everything before 'unpack' is filler. @_ is empty so the for loop is never executed.

    The print/length/split lines do this: compute how many spaces (including EOL) lie between the words in the string, subtract one (turning 1 1 2 1... into 0 0 1 0...), turn it backwards (the spacing was more aesthetically pleasing that way), pack that binary string then unpack it to ascii ('japh') and print.

    The word I was looking for was 'steganography', the science of hiding data within other data. This JAPH, as it turns out, is a watered-down version of the encryption that folks suspected Bin Laden's henchmen used to communicate via pictures on eBay and porn sites. And here I thought I was being original.

    There's More Than One Way To Communicate Fiendish Plans Of Destruction To Your Terrorist Operatives, apparently.

    Update: cogent coined the term steganobfuscation for exactly this sort of thing :)