Merge pull request #32 from xexyl/1992-nathan
Fixes in 1992/nathan/README.md
This commit is contained in:
2 files changed
+75
-69
No files matched your search
+75
-69
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
## To build:
|
## To build:
|
||||||
|
|
||||||
make nathan
|
make all
|
||||||
|
|
||||||
### To run
|
### To run
|
||||||
|
|
||||||
@@ -17,42 +17,45 @@
|
|||||||
|
|
||||||
## Judges' comments
|
## Judges' comments
|
||||||
|
|
||||||
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:
|
||||||
The judges make no claim as to the strength or security
|
|
||||||
of this program. It is likely to be nil, or the next
|
|
||||||
best thing to it. Still, you might consider installing
|
|
||||||
it in /usr/games/nathan. :-)
|
|
||||||
|
|
||||||
NOTE:
|
The judges make no claim as to the strength or security
|
||||||
The 'winning' catagory is also open to question. One could say
|
of this program. It is likely to be nil, or the next
|
||||||
that it is a 'file obfuscator'. One could also say that it
|
best thing to it. Still, you might consider installing
|
||||||
unintentionally abused the intent of rule #7 (that programs
|
it in /usr/games/nathan. :-)
|
||||||
should be freely redistributable). We suspect that the author
|
|
||||||
may not have intended to do this, but that is the way things go
|
|
||||||
sometimes.
|
|
||||||
|
|
||||||
BTW, 'abuse of the rules' entries do not violate the rules.
|
### NOTE:
|
||||||
Entries that violate the rules are disqualified. Abuse of the
|
|
||||||
rules entries are ones that tend to 'stretch' the limits and
|
The 'winning' category is also open to question. One could say
|
||||||
take the contest into unexpected territory.
|
that it is a 'file obfuscator'. One could also say that it
|
||||||
|
unintentionally abused the intent of rule #7 (that programs
|
||||||
|
should be freely re-distributable). We suspect that the author
|
||||||
|
may not have intended to do this, but that is the way things go
|
||||||
|
sometimes.
|
||||||
|
|
||||||
|
BTW, 'abuse of the rules' entries do not violate the rules.
|
||||||
|
Entries that violate the rules are disqualified. Abuse of the
|
||||||
|
rules entries are ones that tend to 'stretch' the limits and
|
||||||
|
take the contest into unexpected territory.
|
||||||
|
|
||||||
|
|
||||||
### Historical notes for this entry from the judges
|
### Historical notes from the judges about this entry
|
||||||
|
|
||||||
The US International Traffic in Arms Regulations controls certain
|
The US International Traffic in Arms Regulations controls certain exportations
|
||||||
exportations going out of the United States. The U.S. Munitions
|
going out of the United States. The U.S. Munitions List gives the specific
|
||||||
List gives the specific categories of restricted exports. Because
|
categories of restricted exports. Because this entry at one time appeared to
|
||||||
this entry at one time appeared to fall under this restricted catagory, the
|
fall under this restricted category, the judges originally were not able to
|
||||||
judges originally were not able to distribute winners outside of the USA.
|
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:
|
||||||
|
|
||||||
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
|
make nathan
|
||||||
./nathan
|
./nathan
|
||||||
@@ -60,61 +63,64 @@
|
|||||||
|
|
||||||
to learn how to get a copy of the code.
|
to learn how to get a copy of the code.
|
||||||
|
|
||||||
|
See the 1992/nathan.c file in the
|
||||||
|
[../../archive/archive-1992.tar.bz2](archive/archive-1992.tar.bz2) tarball if
|
||||||
|
you're interested in this file.
|
||||||
|
|
||||||
|
|
||||||
### Personal note from chongo:
|
### Personal note from chongo:
|
||||||
|
|
||||||
I think the situation showed just how ridiculous US crypto
|
I think the situation showed just how ridiculous US crypto regulations really
|
||||||
regulations really were/are. Certain US federal officials can get away
|
were/are. Certain US federal officials can get away with shipping arms to
|
||||||
with shipping arms to certain nations in apparent violation of US
|
certain nations in apparent violation of US laws, but I personally can't
|
||||||
laws, but I personally can't re-distribute a program contest winner
|
re-distribute a program contest winner to the network!
|
||||||
to the network!
|
|
||||||
|
|
||||||
## Author's comments
|
## Author's comments
|
||||||
|
|
||||||
PROGRAM USE
|
### PROGRAM USE
|
||||||
|
|
||||||
This program is a hello world text encrypter/decrypter. It uses an
|
This program is a hello world text encryptor/decryptor. It uses an
|
||||||
enigma (I think) style encryption algorithm, where the encryption
|
enigma (I think) style encryption algorithm, where the encryption
|
||||||
key character is modified by a value, determined from the previous
|
key character is modified by a value, determined from the previous
|
||||||
character. Non-printable characters (those with ASCII values < ' '
|
character. Non-printable characters (those with ASCII values < ' '
|
||||||
or > 0x7e) are passed unaltered, thus any kind of file may be
|
or > 0x7e) are passed unaltered, thus any kind of file may be
|
||||||
successfully procesed, but if the original is printable, the
|
successfully processed, but if the original is printable, the
|
||||||
processed file will be too. The input is read from stdin, and the
|
processed file will be too. The input is read from stdin, and the
|
||||||
output presented to stdout. The key, a text string, is presented as
|
output presented to stdout. The key, a text string, is presented as
|
||||||
a command argument. This is optional, and if ommitted, the file is
|
a command argument. This is optional, and if omitted, the file is
|
||||||
self-{de,en}crypted. To specify decryption, a "-" should be given
|
self-{de,en}crypted. To specify decryption, a "-" should be given
|
||||||
before the key. (Actually encryption and dycryption proper inverse
|
before the key. (Actually encryption and decryption proper inverse
|
||||||
operations, so you can use decrypt to scramble and encrypt to
|
operations, so you can use decrypt to scramble and encrypt to
|
||||||
descramble, if you're perverse.)
|
descramble, if you're perverse.)
|
||||||
|
|
||||||
PORTABILITY (A little knowledge is a dangerous thing)
|
### PORTABILITY (A little knowledge is a dangerous thing)
|
||||||
|
|
||||||
It's 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
|
||||||
warnings on other platforms though). Because I've heard that
|
warnings on other platforms though). Because I've heard that
|
||||||
conditional jumps slow down fast processors, I've eliminated all
|
conditional jumps slow down fast processors, I've eliminated all
|
||||||
the ifs from the code, indeed, as its only one statement, it should
|
the ifs from the code, indeed, as its only one statement, it should
|
||||||
compile to one instruction an a suitably designed CISC machine. To
|
compile to one instruction and a suitably designed CISC machine. To
|
||||||
speed compilation, there is only one statement in the loop, so that
|
speed compilation, there is only one statement in the loop, so that
|
||||||
another scoping level does not need to be opened.
|
another scoping level does not need to be opened.
|
||||||
|
|
||||||
Being an encrypter/decrypter, you probably want the source code to
|
Being an encryptor/decryptor, you probably want the source code to
|
||||||
be obfuscated, to hide the algorithm.
|
be obfuscated, to hide the algorithm.
|
||||||
|
|
||||||
OBFUSCATION
|
### OBFUSCATION
|
||||||
|
|
||||||
Inspite of the fact that it looks like a nice friendly hello world
|
In spite of the fact that it looks like a nice friendly hello world
|
||||||
program, it isn't (as documented above). (Short lines have been padded,
|
program, it isn't (as documented above). (Short lines have been padded,
|
||||||
as you'll find if you look at an encrypted copy of the source.)
|
as you'll find if you look at an encrypted copy of the source.)
|
||||||
|
|
||||||
I've also named some of the macros from commonly used functions,
|
I've also named some of the macros from commonly used functions,
|
||||||
just to keep things muddy. Of course, all the variables are
|
just to keep things muddy. Of course, all the variables are
|
||||||
misnamed. The program is kept simply (one for statement), by
|
misnamed. The program is kept simply (one for statement), by
|
||||||
serious overuse of , and ? :. These are really confusing when used
|
serious overuse of , and ? :. These are really confusing when used
|
||||||
together, nested or put in argument lists (is that a comma
|
together, nested or put in argument lists (is that a comma
|
||||||
operator, or argument separator?)
|
operator, or argument separator?)
|
||||||
|
|
||||||
Copyright (c) 1992, Landon Curt Noll & Larry Bassel.
|
Copyright (c) 1992, Landon Curt Noll & Larry Bassel.
|
||||||
All Rights Reserved. Permission for personal, educational or non-profit use is
|
All Rights Reserved. Permission for personal, educational or non-profit use is
|
||||||
|
|||||||
Binary file not shown.
Reference in new issue
Block a user