[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RSA - the song




Interesting.

Now for the obvious question, can you convert midi back to text?

Looks like a new way to hide encrypted messages.

amp

------------------------
  From: Kent Crispin <[email protected]>
  Subject: RSA - the song 
  Date: Sat, 02 Aug 1997 12:02:26 -0700 
  To: [email protected], [email protected]


> On Fri, Aug 01, 1997 at 11:35:02AM +0100, Adam Back wrote:
> [...]
> > 
> > print pack"C*",split/\D+/,`echo "16iII*o\U@{$/=$z;[(pop,pop,unpack"H*",<>
> > )]}\EsMsKsN0[lN*1lK[d2%Sa2/d0<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<J]dsJxp"|dc`
> > 
> > > I dug out a midi interpreter I wrote a number of years ago, 
> > > and it is indeed trivial to modify it to read any text as input.  
> > > Unfortunately, I wrote that long before the midi file spec was 
> > > finalized, and the hardware I wrote it for is also long gone.  But 
> > > it's probably not much work to get file output working again...and 
> > > the thought of a general text-to-midi translator is rather 
> > > entertaining -- I could play this entire mail message through it, for 
> > > example... It would definitely make better music if some rhythmic 
> > > variation was part of the coding, but that would make it a little 
> > > harder to make an automatic decoder...
> > 
> > I'd find it most cool to hear an audio file of the above.
> 
> Well, I generated a midi file that encodes music which in turn is a 
> direct algorithmic encoding of your program.  I didn't have a 
> convenient way to go to a direct sound file, but midi players are 
> very widely available -- any recent pc with a sound card will have a 
> "multimedia midi jukebox" or something like that.  And there are 
> probably free ones on the net -- I didn't look.  The midi file will 
> be a mime attachment to this message.  It's also at 
> 
> 	ftp://songbird.com/pub/rsa.mid 
> 
> For aesthetic reasons I modified the encoding from the simple one
> mentioned earlier, and, rather than try to modify one of my earlier
> midi programs, I just hacked this one out from other sources.  The
> program will actually encode any binary data into a piece of music. 
> 
> I think that musically the piece is actually somewhat interesting -- I
> kind of like it.  Like the source text, it is rather dense.  But if
> you listen to it a few times patterns and phrasing will appear.  It 
> sounds like reasonable avante garde music, actually -- something a 
> college radio station might broadcast to the world late at night...
> 
> The program is really rather trivial, so rather than describing the 
> encoding, I am just appending it to this message.
> 
> --------------------------------------------------------------------
> /*
>     dtom -- convert data to midi
>         dtom midifile <datafile
>             or
>         datasource | dtom midifile
> 
>         convert standard in to a midi representation of the data, and
>         write it to a standard midi file.  The midi data is designed
>         to so that the sound produced will permit decoding by a pitch
>         to midi device.  Two things are done to increase the musical
> 	interest:  First, the notes are selected from a diatonic 
> 	scale, instead of a chromatic.  And second, the rhythm is 
>         also varied algorithmically -- any decoding from the sound 
>         should ignore all rhythmic variation.
> 
> 	Code uses "midifilelib" from Tim Thompson & Michael 
> 	Czeiszperger, and is cobbled from one of their examples.
> 
> */
>     
> 
> #include <stdio.h>
> #include <ctype.h>
> #include "midifile.h"
> 
> #define ROOT 36
> 
> FILE *fp;
> 
> /* offsets for three octaves of diatonic major scale */
> int scale[] = {0,2,4,5,7,9,11,12,14,16,17,19,23,24,26,28,29,31,33,35,36};
> 
> mputc(c) { return(putc(c,fp));}
> 
> int writetrack(track)
> int track;
> {
>     int note_duration;
>     int rest_duration;
>     int high_nybble;
>     int low_nybble;
>     char c;
>     char n1[2];
>     char n2[2];
> 
>     mf_write_tempo((long)100000);
> 
>     while( (c = getchar()) != EOF ) {
> 
>         high_nybble = (c>>4) & 0xf;
>         low_nybble  = c & 0xf;
> 	
> 	/* low note */
>         n1[0] = scale[low_nybble]+ROOT;	/* note number */
>         n1[1] = 64;                     /* velocity */
> 
> 	/* high note */
>         n2[0] = scale[high_nybble]+ROOT+scale[16];
>         n2[1] = 64;
> 
> 	/* shouldn't happen */
> 	if( n1[0] >= n2[0] ) printf("warning -- voice crossover!\n");
> 
> 	/* note_duration needs to be long enough for pitch detectors */
> 	note_duration = 120*((c&15) + 4);
> 	rest_duration = 120*(((c>>5)&3));
> 
>         if(!mf_write_midi_event(rest_duration,note_on,1,n1,2)) 	return(-1);
>         if(!mf_write_midi_event(0,note_on,1,n2,2))		return(-1);
> 
>         if(!mf_write_midi_event(note_duration,note_off,1,n1,2))	return(-1);
>         if(!mf_write_midi_event(0,note_off,1,n2,2))		return(-1);
>     }
> 
>     return(1);
> } /* end of write_track() */
> 
> main(argc,argv)
> char **argv;
> {
>     if( !(fp = fopen(argv[1],"w")) ) exit(1);
> 
>     Mf_putc = mputc;
>     Mf_writetrack = writetrack;
>     mfwrite(0,1,480,fp);
> }
> 
> ---------------------------------------------------------------------------
> 
> 
> -- 
> Kent Crispin				"No reason to get excited",
> [email protected]			the thief he kindly spoke...
> PGP fingerprint:   B1 8B 72 ED 55 21 5E 44  61 F4 58 0F 72 10 65 55
> http://songbird.com/kent/pgp_key.html
> 

---------------End of Original Message-----------------

------------------------
Name: amp
E-mail: [email protected]
Date: 08/02/97
Time: 16:46:07
Visit me at http://www.pobox.com/~amp

'Drug Trafficking Offense' is the root passphrase to the Constitution.

Have you seen 
http://www.public-action.com/SkyWriter/WacoMuseum
------------------------