Add preview of 1984-2019
The 2020 winners are hinted it, but the source code is not there,
nor are the hints. Someone could look into the HTML and
see what was commented out, but that is not a problem because
WHO won is known and the name of their AWARD is known already.
Moreover a number of the winners have talked about what their
entirs do, so the commented out spoiler text is not a bit problem.
One will find HTML commented out with:
<!-- XXX remove when 2020 is ready
2020 links here
XXX remove when 2020 is ready -->
The "XXX remove when 2020 is ready" string is found at the
start and end comment blocks. Again, soneone could read
what was commented out, but that is OK since most of that
information is known or can be known. The following files
have such HTML comment blocks in them.
./winners.html
./years-spoiler.html
./years.html
In addition, ./all/summary.txt was modified to not
include the 2020 entries for the momemt.
The 2020 winner code AND write-ups are NOT part of this set.
p.s. The all/all.tar.bz2 does not contain the 2020 source code (yet?).
This commit is contained in:
1 parent
28efc67f5d
commit
c0663537cb
1683 files changed
+220064
No files matched your search
@@ -0,0 +1,35 @@
|
||||
# 2006 makefile
|
||||
#
|
||||
# Copyright (C) 2006-2009, Landon Curt Noll, Simon Cooper, Peter Seebach
|
||||
# and Leonid A. Broukhis. All Rights Reserved. Permission for personal,
|
||||
# educational or non-profit use is granted provided this copyright and
|
||||
# notice are included in its entirety and remains unaltered. All other
|
||||
# uses must receive prior permission from the contest judges.
|
||||
|
||||
# Special flags for this entry
|
||||
#
|
||||
LOCAL_FLAGS= -I${X11_INCDIR} -L${X11_LIBDIR} -lX11 ${OPT}
|
||||
|
||||
# Data files for this entry
|
||||
#
|
||||
DATA= arabian.txt olympic.txt twinkle.txt test.txt
|
||||
|
||||
|
||||
build: ${ENTRY}
|
||||
|
||||
|
||||
clean:
|
||||
-${RM} ${ENTRY}
|
||||
|
||||
|
||||
clobber: clean
|
||||
|
||||
|
||||
alt:
|
||||
|
||||
|
||||
data:
|
||||
|
||||
|
||||
${ENTRY}: ${ENTRY}.c ${DATA}
|
||||
${CC} ${CFLAGS} ${LOCAL_FLAGS} ${ENTRY}.c -o ${ENTRY}
|
||||
@@ -0,0 +1 @@
|
||||
453,54,4569564459,9#95458,8987453 54
|
||||
@@ -0,0 +1,43 @@
|
||||
#include<stdio.h>
|
||||
#include<X11/Xlib.h>
|
||||
#include<stdlib.h>
|
||||
#include<sys/time.h>
|
||||
#include<time.h>
|
||||
#include<string.h>
|
||||
|
||||
static
|
||||
Display
|
||||
*b;static
|
||||
Window d; static GC e;
|
||||
static int f,g,i;static
|
||||
double j,k;static void l
|
||||
(int m){int _=00,__,x;double
|
||||
y,_x;y=m/j*02.0;_x=k/j*02.0;(void)
|
||||
XSetForeground(b,e,BlackPixel(b,DefaultScreen
|
||||
(b)));(void)XFillRectangle(b,d,e,00,00,(unsigned
|
||||
int)g,(unsigned int)f);if(m==00){for(__=0x0;__<g;__++)
|
||||
for(x=0;x<f;)(void)XDrawPoint(b,d,e,__,x),x++;return;}(void)XSetForeground
|
||||
(b,e,WhitePixel(b,DefaultScreen(b)));for(x=00;x<f;x++){__=0x0;if(((int)
|
||||
(_*y)%2)==0)for(;__<g;__++){if(((int)(_*_x)%2)==1)(void)XDrawPoint(b,
|
||||
d,e,__,x);_++;}_+=i-__;}}int main(int __x,char* ___[]){if(__x!=4)
|
||||
fprintf(stderr,"usage:%spixelclockcarrier_freqhorizontal_total"
|
||||
"\n",___[00]),exit(EXIT_FAILURE);j=atof(___[1]),k=atof(
|
||||
___[(1+1)]),i=atoi(___[(1+1+1)]),b=XOpenDisplay("");
|
||||
if(!b)exit(EXIT_FAILURE);{XSetWindowAttributes X;
|
||||
X.event_mask=ExposureMask|ButtonPressMask,
|
||||
X.override_redirect=True,
|
||||
g=WidthOfScreen(ScreenOfDisplay
|
||||
(b,DefaultScreen(b))),f=HeightOfScreen
|
||||
(ScreenOfDisplay(b,DefaultScreen(b))),d
|
||||
=XCreateWindow(b,RootWindow(b,DefaultScreen(b)),
|
||||
00,00,(unsigned int)g,(unsigned int)f,00,CopyFromParent,
|
||||
InputOutput,(Visual*)CopyFromParent,(unsigned long int)CWOverrideRedirect
|
||||
|CWEventMask,&X);}(void)XMapWindow(b,d),(void)XRaiseWindow(b,d),e=
|
||||
XCreateGC(b,d,0,0);{static int _X_[0377];int _x_;_X_[061]=948,
|
||||
_X_[0x32]=01763,_X_[043]=0x4b9,52[_X_]=0x3dd,_X_[063]=1082,
|
||||
_X_[0x36]=02143,_X_[42]=02063,_X_[070]=1094,065[_X_]=0x41d,
|
||||
_X_[48]=02162,_X_[0x39]=02214,55[_X_]=0x406;while((_x_=
|
||||
getchar())!=EOF){l(_X_[_x_]);{static struct timespec
|
||||
_l;_l.tv_nsec=03563262400,nanosleep(&_l,00);}}}
|
||||
(void)XDestroyWindow(b,d),(void)XCloseDisplay
|
||||
(b),exit(EXIT_SUCCESS);}
|
||||
@@ -0,0 +1,107 @@
|
||||
# Most Obfuscaed Audio
|
||||
|
||||
Aaron Grothe
|
||||
2205 South 51st Street
|
||||
Omaha, NE 68106
|
||||
US
|
||||
|
||||
## Judges' Comments:
|
||||
|
||||
### To build:
|
||||
|
||||
make grothe
|
||||
|
||||
### To run:
|
||||
|
||||
./grothe 65000000 10000000 1344 < twinkle.txt
|
||||
|
||||
... and then put on your "electronic ears". You may find using
|
||||
a tunable scanning electronic ear helps.
|
||||
|
||||
Most of the time, interference is annoying. This entry is the
|
||||
exception that proves the rule. What is a bug to some is a
|
||||
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 *.
|
||||
|
||||
To be able to run the program you need to determine the following
|
||||
parameters
|
||||
|
||||
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
|
||||
|
||||
xvidtune -show | head -n 1 |
|
||||
awk '{ print "pixelclock " $2 * 1000000 " horizontal_total = " $6 }'
|
||||
|
||||
example from my laptops
|
||||
|
||||
./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
|
||||
|
||||
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.
|
||||
|
||||
### Several example songs
|
||||
|
||||
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
|
||||
|
||||
1199##9-6633221-9966332-9966332-1199#9-6633221-
|
||||
|
||||
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
|
||||
sometimes making the beautified code harder to read
|
||||
- use of static to ensure initilization 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
|
||||
|
||||
### References
|
||||
|
||||
Tempest for Eliza - Basis for Algorithms
|
||||
|
||||
> <http://www.erikyyy.de/tempest/>
|
||||
|
||||
Tempest AM - Another early program in this field
|
||||
|
||||
> <http://silcnet.org/priikone/programs.php?lang=en>
|
||||
|
||||
Paper by Markus G. Kuhn's and Ross J. Anderson's,
|
||||
"Soft Tempest: Hidden Data Transmission Using Electromagnetic Emanations"
|
||||
|
||||
> <http://www.cl.cam.ac.uk/~mgk25/ih98-tempest.pdf>
|
||||
@@ -0,0 +1 @@
|
||||
3-9-91231,2222-321123123-9-91231,2222-32112321
|
||||
@@ -0,0 +1 @@
|
||||
123456789#0*123456789#0*123456789#0*123456789#0*
|
||||
@@ -0,0 +1 @@
|
||||
1199##9-6633221-9966332-9966332-1199#9-6633221-
|
||||
Reference in new issue
Block a user