diff --git a/2006/grothe/README.md b/2006/grothe/README.md index 20a414d0f..26f18310b 100644 --- a/2006/grothe/README.md +++ b/2006/grothe/README.md @@ -1,9 +1,7 @@ -# Most Obfuscaed Audio +# Most Obfuscated Audio - Aaron Grothe - 2205 South 51st Street - Omaha, NE 68106 - US +Aaron Grothe +US ## To build: @@ -43,86 +41,105 @@ feature to this entry. :-) ## Selected Author's Comments: The program draws patterns on the screen that can be picked up by a -shortwave radio. It emulates the frequencies for an old fashion touch -tone phone, so old songs can be played by hitting 0-9,#, and *. +[shortwave radio](https://en.wikipedia.org/wiki/Shortwave_radio). It emulates +the frequencies for an old fashion touch tone phone, so old songs can be played +by hitting `0-9`,`#`, and `*`. To be able to run the program you need to determine the following -parameters +parameters: - carrier_freq - base frequency used to host music - pixelclock - refresh rate of the monitor - horizontal_total - total scan along the horizontal axis +``` + carrier_freq - base frequency used to host music + pixelclock - refresh rate of the monitor + horizontal_total - total scan along the horizontal axis +``` -If you have xvidtune installed you can get the pixelclock and -horizontal total with the following command +If you have `xvidtune` installed you can get the `pixelclock` and +`horizontal_total` with the following command - xvidtune -show | head -n 1 | - awk '{ print "pixelclock " $2 * 1000000 " horizontal_total = " $6 }' +```sh +xvidtune -show | head -n 1 | awk '{ print "pixelclock " $2 * 1000000 " horizontal_total = " $6 }' +``` -example from my laptops +Example from my laptops: - ./grothe 65000000 10000000 1344 < twinkle.txt +```sh +./grothe 65000000 10000000 1344 < twinkle.txt +``` Even if the user gets a setting off, the sound will usually be able to be -heard on AM at a multiple of the original frequency +heard on [AM](https://en.wikipedia.org/wiki/AM_broadcasting) at a multiple of +the original frequency. The core idea of using a machine to play music on AM radio goes all the -way back to the Altair computers and Timex Sinclair ZX-81s. +way back to the [Altair computers](https://en.wikipedia.org/wiki/Altair_8800) +and [Timex Sinclair ZX-81](https://en.wikipedia.org/wiki/ZX81)s. ### Several example songs -Olympic Fanfare - from antang@phakt.usc.edu - Tony +Olympic Fanfare - from `antang@phakt.usc.edu` - Tony: +``` 4-9-91231,2222-321123123-9-91231,2222-32112321 +``` -Twinkle Twinkle Little Star - from fsufunkyb@aol.com - Ben Schmidt +Twinkle Twinkle Little Star - from `fsufunkyb@aol.com` - Ben Schmidt: +``` 1199##9-6633221-9966332-9966332-1199#9-6633221- +``` -Generic Arabian Tune - from rdippold@qualcomm.com -Ron "Asbestos" Dippold +Generic Arabian Tune - from `rdippold@qualcomm.com` - Ron "Asbestos" Dippold: +``` 453,54,4569564459,9#95458,8987453 54 +``` Others can be found by doing a search for "touch tone phone songs". ### Obfuscations - Some numbers expressed in Octal, some in hex and some in decimal - "A foolish consistency is the hobgoblin of little minds" - - Ralph Waldo Emerson -- Funky scoping, looking at the nanosleep section and - XsetWindowAttributes declares local variables -- Algorithm is very weird, uses y dimension to draw carrier frequency - and x dimension to draw audio frequency, based on Erik Thiele's - Tempest for Eliza -- lack of #defines confuses many people :-) -- figuring out your pixelclock and horizontal total and which carrier - frequency to use can be an exercise in obfuscation for the user -- use of commas in various places, confuses most c code beautifiers + "A foolish consistency is the hobgoblin of little minds" - Ralph Waldo + Emerson. + +- Funky scoping, looking at the nanosleep section and `XsetWindowAttributes` +declares local variables. +- Algorithm is very weird, uses `y` dimension to draw carrier frequency + and `x` dimension to draw audio frequency, based on [Erik + Thiele](http://www.erikyyy.de)'s + [Tempest for Eliza](http://www.erikyyy.de/tempest/). +- lack of `#define`s confuses many people :-) +- figuring out your `pixelclock` and `horizontal_total` and which `carrier_freq` + to use can be an exercise in obfuscation for the user. +- use of commas in various places, confuses most C code beautifiers sometimes making the beautified code harder to read -- use of static to ensure initilization is EVIL and done in several +- use of `static` to ensure initialization is EVIL and done in several places -- uses static declarations & voids function returns we don't care about - making the code harder to read -- does sound using only X11 libs, no other libs required -- demonstrates tempest emissions in a fun/easy way -- follows good programming practices of actually setting exit codes and - giving usage when run with incorrect parameters +- uses `static` declarations & `void` function returns we don't care about + making the code harder to read. +- does sound using only [X11 libs](https://en.wikipedia.org/wiki/Xlib), no other +libs required. +- demonstrates tempest emissions in a fun/easy way. +- follows good programming practices of actually setting exit codes and giving +usage when run with incorrect parameters. ### References -Tempest for Eliza - Basis for Algorithms +[Tempest for Eliza - Basis for Algorithms](http://www.erikyyy.de/tempest/). -> +[Tempest +AM](https://web.archive.org/web/20070612152538if_/http://silcnet.org/priikone/programs/tempest-AM-1.0.tar.gz) +\- Another early program in this field. See +[here](https://web.archive.org/web/20070612152538/http://silcnet.org/priikone/programs.php?lang=en) +for a bit more information on the program (search for `Tempest-AM Radio Signal +Transmitter`). -Tempest AM - Another early program in this field +The paper +[Soft Tempest: Hidden Data Transmission Using Electromagnetic +Emanations](https://www.cl.cam.ac.uk/~mgk25/ih98-tempest.pdf) by Markus G. +Kuhn's and Ross J. Anderson's. -> - -Paper by Markus G. Kuhn's and Ross J. Anderson's, -"Soft Tempest: Hidden Data Transmission Using Electromagnetic Emanations" - -> ## Copyright and CC BY-SA 4.0 License: