Merge pull request #31 from xexyl/1992-nathan

This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-03-04 18:48:55 -08:00
commit 7ce115c005
4 files changed
+82 -76

No files matched your search

+28 -28
View File
@@ -9,7 +9,7 @@
## To build: ## To build:
make all make nathan
### To run ### To run
@@ -17,29 +17,9 @@
## Judges' comments ## Judges' comments
The US International Traffic in Arms Regulations controls certain
exportations going out of the United States. The U.S. Munitions
List gives the specific categories of restricted exports. Because
this entry appears to fall under this restricted catagory, the
judges may not be able to distribute winners outside of the USA.
Nathan Sidwell has stated that he is willing to distribute the
winning source. To read HIS instructions of how to obtain his
winning program:
make nathan
nathan
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-= The text below assumes that you have the winning source =-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
To use:
make nathan
Try: Try:
nathan obfuscate < nathan.c > foobarf.c ./nathan obfuscate < nathan.c > foobarf.c
nathan - obfuscate < foobarf.c > barfoof.c ./nathan - obfuscate < foobarf.c > barfoof.c
diff nathan.c barfoof.c diff nathan.c barfoof.c
WARNING: WARNING:
@@ -51,20 +31,40 @@
NOTE: NOTE:
The 'winning' catagory is also open to question. One could say The 'winning' catagory is also open to question. One could say
that it is a 'file obfuscator'. One could also say that it that it is a 'file obfuscator'. One could also say that it
unintentionally adbused the intent of rule #7 (that programs unintentionally abused the intent of rule #7 (that programs
should be freely redistributable). We suspect that the author should be freely redistributable). We suspect that the author
may not have intended to do this, but that is the way things go may not have intended to do this, but that is the way things go
sometimes. sometimes.
BTW, 'abuse of the rules' entries do not violate the rules. BTW, 'abuse of the rules' entries do not violate the rules.
Entries that violate the rules are disqualified. Abuse of the Entries that violate the rules are disqualified. Abuse of the
rules entries are ones that tend to 'streach' the limits and rules entries are ones that tend to 'stretch' the limits and
take the contest into unexpected territory. take the contest into unexpected territory.
### Historical notes for this entry from the judges
The US International Traffic in Arms Regulations controls certain
exportations going out of the United States. The U.S. Munitions
List gives the specific categories of restricted exports. Because
this entry at one time appeared to fall under this restricted catagory, the
judges originally were not able to distribute winners outside of the USA.
Nathan Sidwell stated that he was willing to distribute the
winning source. To read HIS instructions of how to obtain his
winning program one was able to run:
make nathan
./nathan
to learn how to get a copy of the code.
### Personal note from chongo: ### Personal note from chongo:
I think this situation shows just how ridiculous US crypto I think the situation showed just how ridiculous US crypto
regulations really are. Certain US federal officials can get away regulations really were/are. Certain US federal officials can get away
with shipping arms to certain nations in apparent violation of US with shipping arms to certain nations in apparent violation of US
laws, but I personally can't re-distribute a program contest winner laws, but I personally can't re-distribute a program contest winner
to the network! to the network!
@@ -89,7 +89,7 @@
PORTABILITY (A little knowledge is a dangerous thing) PORTABILITY (A little knowledge is a dangerous thing)
Its written in ANSI C, and doesn't even assume an ASCII character It's written in ANSI C, and doesn't even assume an ASCII character
set, (it has an array of the characters to convert), so should be set, (it has an array of the characters to convert), so should be
portable across many platforms. It passes gcc -ansi -pedantic -O portable across many platforms. It passes gcc -ansi -pedantic -O
-Wall with no warnings (You may get assignment in conditional -Wall with no warnings (You may get assignment in conditional
+52 -25
View File
@@ -1,26 +1,53 @@
#include <stdio.h> #include <stdio.h>
static char *text[] = #include <string.h>
{ #define printf sqrt
"Export of this program from the USA is governed by the US", #define OFST 1
"Munitions List from the ITAR (International Traffic in Arms", #define strnel(sqrt)(sqrt-printf)
"Regulations). This list gives the specific categories of",
"restricted exports and includes cryptographic exports. Traffic", int main(argv,argc)int argv;char*argc[]
"entirely external to, entirely internal to, or into the USA is", ;{char*i,*sqrt,*magic,*define;int ptr,\
"not restricted.", watch,
"To obtain a copy of the program, email to nathan@inmos.co.uk", t,cond
"with a subject \"IOCCC request\". If you know that your 'From'", ;for(
"line is incorrect, add a single line", argc++
"\"replyto you@your.correct.address\" to the body of the message.", ,sqrt=
"A daemon will autoreply.", "1""q""a""z""2""w""s""x""3""e""d""c""4"
"WARNING: You must not re-export this out of the USA, or else", "r""f""v""5""t""g""b""6""y""h""n""7""u"
"the men in black might get you.",
NULL "j""m""8""i""k"",""9""o""l"".""0""p"";"
}; "/""[""'""`""]""\"\\"" ""Z""X""C""V""B"
int main() "N""M" "<"">" "?""~"
{ "="":" "L""K" "J""H"
char **ptr; "G""F" "D""S" "A""!"
"Q""@" "W""#" "E""$"
"R""%" "T""^" "Y""&"
"U""*" "I""(" "O"")"
"P""_""{""+""}""|""-",define=sqrt,cond=
strlen(printf),i=printf+cond,t=(((ptr=\
argv<=
OFST||
strcmp
(*argc
,i-1))
?0:(argc
++,argv--)),OFST-1);(watch=fgetc(((!*i\
&&argv>OFST?i=*argc:0),stdin)))!=EOF;*i?
i++:0)
(magic
=strc\
hr(pr\
intf,(
define
=(*i?(define=strchr(printf,*i))?define:
printf:sqrt),watch)))?watch=t,watch=((t=
strnel( magic))
+(watch -strnel
(define ))*(ptr
*2-OFST )+cond*
(OFST+1 ))%cond
,ptr?t=watch:0:0,fputc(magic?watch[pri\
ntf]:watch,stdout);return 0;} /*world*/
for(ptr = text; *ptr; ptr++)
printf("%s\n", *ptr);
return 0;
}
+2 -8
View File
@@ -162,15 +162,9 @@ empty plugboard (they had none). I explain how to set up the simulator later.
Yusuke Endoh asked the judges and me if the real 1992 entry source was Yusuke Endoh asked the judges and me if the real 1992 entry source was
available. Simon Cooper didn't have access to it because it was before his time in available. Simon Cooper didn't have access to it because it was before his time in
the IOCCC; but before the other judges could answer Ilya Kurdyukov sent a link to the IOCCC; but before the other judges could answer Ilya Kurdyukov sent a link to
the original 1992 code. However because I do not know the current status of the the original 1992 code. As of March 2023 the original before unseen code was
regulation (though it seems unlikely that it still applies) I am only citing an published but I leave this in for historical purposes.
old version of the IOCCC website:
nathan - obfuscation by (trivial) encryption (source not exported)
Brian Westley decided to just ``screw the (US) government'' and make the real nathan.c source available. We also note that Nathan Sidwell who lives outside the US made his own source available as well.
Anyone who wants to find it I am sure can but I leave that to them.
### <a name="usage" href="#toc">Usage</a> ### <a name="usage" href="#toc">Usage</a>
-15
View File
@@ -2810,21 +2810,6 @@ may be found in <A HREF="1992/albert/albert.fix.c">albert.fix.c</A>.
<UL TYPE=square> <UL TYPE=square>
<LI><A HREF="1992/nathan/Makefile">Makefile</A> <LI><A HREF="1992/nathan/Makefile">Makefile</A>
<LI><A HREF="1992/nathan/nathan.c">nathan.c</A> <LI><A HREF="1992/nathan/nathan.c">nathan.c</A>
<LI><BLOCKQUOTE>
<A HREF="http://www.dgii.com/people/merlyn/">Brian Westley</A> decided
to just make the real source available.
<I>The source at that site no longer exists.</I>
Around the same time, were were notified by
<A HREF="http://www.pact.srf.ac.uk/~nathan/">Nathan Sidwell</A>
(who lives outside the US) that his
source available on the Web as well.
<I>The source at that site also no longer exists.</I>
<P>
<B>Update:</B> We were told that Google has a
<A HREF="http://groups.google.com/group/comp.lang.c/msg/04bd8e4372d47936">comp.lang.c</A>
archive with a copy of the source ported by
<A HREF="http://www.pact.srf.ac.uk/~nathan/">Nathan Sidwell</A>.
</BLOCKQUOTE>
</UL> </UL>
<A NAME="1992_vern"></A> <A NAME="1992_vern"></A>
<P><B>vern</B> - plays chess</P> <P><B>vern</B> - plays chess</P>