Format fixes in 1990/jaw/README.md
I did not check for typos and I believe I only fixed one. I will look for typos at a later time.
This commit is contained in:
1 parent
8ba53b5eb4
commit
a3bb267ec0
1 file changed
+94
-90
+94
-90
@@ -1,28 +1,29 @@
|
||||
# Best Entropy-reducer
|
||||
|
||||
James A. Woods
|
||||
Research Institute for Advanced Computer Science
|
||||
MS 230-5
|
||||
NASA Ames Research Center
|
||||
Moffett Field, CA 94131
|
||||
USA
|
||||
James A. Woods
|
||||
Research Institute for Advanced Computer Science
|
||||
MS 230-5
|
||||
NASA Ames Research Center
|
||||
Moffett Field, CA 94131
|
||||
USA
|
||||
|
||||
Karl F. Fox
|
||||
Morning Star Technologies, Inc.
|
||||
1760 Zollinger Road
|
||||
Columbus, OH 43221
|
||||
USA
|
||||
Karl F. Fox
|
||||
Morning Star Technologies, Inc.
|
||||
1760 Zollinger Road
|
||||
Columbus, OH 43221
|
||||
USA
|
||||
|
||||
Paul Eggert
|
||||
Twin Sun Inc.
|
||||
360 N. Sepulveda Blvd. #2055
|
||||
El Segundo, CA 90245
|
||||
USA
|
||||
Paul Eggert
|
||||
Twin Sun Inc.
|
||||
360 N. Sepulveda Blvd. #2055
|
||||
El Segundo, CA 90245
|
||||
USA
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
|
||||
```sh
|
||||
make all
|
||||
```
|
||||
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the script to
|
||||
work properly in modern environments (to do with PATH not having '.' in it). He
|
||||
@@ -40,14 +41,15 @@ Endoh](/winners.html#Yusuke_Endoh). Thank you Yusuke for your implementation of
|
||||
|
||||
To test the official C entry, one might try:
|
||||
|
||||
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
||||
```sh
|
||||
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
||||
```
|
||||
|
||||
which should apply the identity transformation to a minimal
|
||||
holoalphabetic sentence.
|
||||
which should apply the identity transformation to a minimal holoalphabetic
|
||||
sentence.
|
||||
|
||||
NOTE: Cody notes the above will not work under macOS. The `sh shark.sh jaw.*
|
||||
README.md > receive` and following commands below do work with macOS after the
|
||||
fixes he made.
|
||||
Cody noted the above will not work under macOS. The commands in the judges'
|
||||
comments do work in macOS after the fixes he made.
|
||||
|
||||
|
||||
## Judges' comments:
|
||||
@@ -55,19 +57,21 @@ fixes he made.
|
||||
|
||||
The program, in its base form, implements two useful utilities:
|
||||
|
||||
atob - ascii to binary conversion
|
||||
zcat - decompression filter
|
||||
|
||||
Included with this entry is a shell script (with comments edited down
|
||||
to reduce it to 1530 bytes) which implements the complete
|
||||
shark utility. The script, shark.sh, contains a 'jaw.c' embedded
|
||||
within it!
|
||||
- `atob` - ascii to binary conversion
|
||||
- `zcat` - decompression filter
|
||||
|
||||
Included with this entry is a shell script (with comments edited down to reduce
|
||||
it to 1530 bytes) which implements the complete shark utility. The script,
|
||||
shark.sh, contains a 'jaw.c' embedded within it!
|
||||
|
||||
The sender must have `compress` and `btoa`. To send, try:
|
||||
|
||||
sh shark.sh jaw.* README.md > receive
|
||||
```sh
|
||||
sh shark.sh jaw.* README.md > receive
|
||||
```
|
||||
|
||||
The resulting file, 'receive', unpacks the input files
|
||||
The resulting file, `receive`, unpacks the input files
|
||||
even if the receiver lacks `uncompress` and `btoa`:
|
||||
|
||||
mkdir -p test
|
||||
@@ -78,7 +82,7 @@ even if the receiver lacks `uncompress` and `btoa`:
|
||||
|
||||
## Authors' comments:
|
||||
|
||||
ABSTRACT
|
||||
### ABSTRACT
|
||||
|
||||
Minimal, Universal File Bundling
|
||||
(or, Functional Obfuscation in a Self-Decoding Unix Shell Archive)
|
||||
@@ -92,63 +96,63 @@ even if the receiver lacks `uncompress` and `btoa`:
|
||||
[anon., circa 1988, pre-Morris worm era]
|
||||
|
||||
|
||||
Myriad formats have been proposed for network-mailable
|
||||
data. A major difficulty undermining the popularity of most
|
||||
file/message bundlers is that the sender assumes prior
|
||||
installation of the computational dual of such bundling
|
||||
software by the receiver. Command shell archives alleviate
|
||||
this problem somewhat, but still require standardization for
|
||||
the function of data compression and mail-transparency
|
||||
encoding. On Unix, these coding format quandaries are over-
|
||||
come by planting a novel Trojan Horse in the archive header
|
||||
to perform negotiation-less decoding.
|
||||
Myriad formats have been proposed for network-mailable data. A major difficulty
|
||||
undermining the popularity of most file/message bundlers is that the sender
|
||||
assumes prior installation of the computational dual of such bundling software
|
||||
by the receiver. Command shell archives alleviate this problem somewhat, but
|
||||
still require standardization for the function of data compression and
|
||||
mail-transparency encoding. On Unix, these coding format quandaries are over-
|
||||
come by planting a novel Trojan Horse in the archive header to perform
|
||||
negotiation-less decoding.
|
||||
|
||||
Specifically, we outline the development of an extraordinarily compact
|
||||
portable (un)bundler to (dis)assemble data-compressed,
|
||||
binary-to-ASCII-converted, length-split, and checksummed directory structures
|
||||
using standard Unix tools. Miniature versions of counterparts to a Lempel-Ziv
|
||||
coder ('compress' or 'squeeze') and an efficient bit packet- izer ('btoa') are
|
||||
compiled on-the-fly at mail destination sites where they may not already
|
||||
exist. These are written in purposefully obfuscated-C to accompany
|
||||
similarly-shrunk shell command glue. This resulting shell archiver is dubbed
|
||||
'shark'.
|
||||
Specifically, we outline the development of an extraordinarily compact portable
|
||||
(un)bundler to (dis)assemble data-compressed, binary-to-ASCII-converted,
|
||||
length-split, and checksummed directory structures using standard Unix tools.
|
||||
Miniature versions of counterparts to a Lempel-Ziv coder ('compress' or
|
||||
'squeeze') and an efficient bit packetizer ('btoa') are compiled on-the-fly at
|
||||
mail destination sites where they may not already exist. These are written in
|
||||
purposefully obfuscated-C to accompany similarly-shrunk shell command glue. This
|
||||
resulting shell archiver is dubbed `shark`.
|
||||
|
||||
'Shark' procedure overhead consumes as few as three dozen shell lines (or
|
||||
~1100 bytes), commensurate with the size of many Internet mail headers; it
|
||||
`shark` procedure overhead consumes as few as three dozen shell lines (or
|
||||
`~1100` bytes), commensurate with the size of many Internet mail headers; it
|
||||
amortizes favorably with message size. 'Shark' is portable across Unix
|
||||
variants, while the underlying technique is inherently generalizable to other
|
||||
encoding schemes.
|
||||
|
||||
In the function-theoretic sense of minimal
|
||||
Chaitin/Kolmogorov complexity, and within a modified Shannon
|
||||
model of communication, the 'shark' effort aims to construct
|
||||
a "shortest program" for source decoding in the Turing-
|
||||
universal Unix environment.
|
||||
In the function-theoretic sense of minimal Chaitin/Kolmogorov complexity, and
|
||||
within a modified Shannon model of communication, the 'shark' effort aims to
|
||||
construct a "shortest program" for source decoding in the Turing-universal Unix
|
||||
environment.
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
Oh, the shark has pretty teeth, dear--
|
||||
And he shows them pearly white
|
||||
Just a jackknife has Macheath, dear--
|
||||
And he keeps it out of sight.
|
||||
> Oh, the shark has pretty teeth, dear--
|
||||
> And he shows them pearly white
|
||||
> Just a jackknife has Macheath, dear--
|
||||
> And he keeps it out of sight.
|
||||
|
||||
[Bertolt Brecht, Threepenny Opera]
|
||||
> [Bertolt Brecht, Threepenny Opera]
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
### Portability:
|
||||
|
||||
We have ported this program to a wide variety of systems. Among
|
||||
these are:
|
||||
|
||||
SunOS 4.1 / Sun Sparcstation 1 (using both 'cc' and 'gcc 1.37.1')
|
||||
SunOS 4.0.3 / Sun 3
|
||||
BSD 4.3 / VAX 8650
|
||||
SEIUX / Sumitomo Electric Ustation/S
|
||||
Sony NEWS-OS 3.3 / Sony NEWS (fairly vanilla 4.3BSD)
|
||||
System V.? / Hitachi 2050
|
||||
System V.? / NEC EWS 4800
|
||||
UNIOS-B / Omron Luna
|
||||
Dynix / Sequent Balance ('cc' for Natl. Semi. base + 'gcc 1.36')
|
||||
Unicos / Cray 2
|
||||
- SunOS 4.1 / Sun Sparcstation 1 (using both 'cc' and 'gcc 1.37.1')
|
||||
- SunOS 4.0.3 / Sun 3
|
||||
- BSD 4.3 / VAX 8650
|
||||
- SEIUX / Sumitomo Electric Ustation/S
|
||||
- Sony NEWS-OS 3.3 / Sony NEWS (fairly vanilla 4.3BSD)
|
||||
- System V.? / Hitachi 2050
|
||||
- System V.? / NEC EWS 4800
|
||||
- UNIOS-B / Omron Luna
|
||||
- Dynix / Sequent Balance ('cc' for Natl. Semi. base + 'gcc 1.36')
|
||||
- Unicos / Cray 2
|
||||
|
||||
### Obfuscation:
|
||||
|
||||
We (the authors) feel this program is obfuscated for the
|
||||
following reasons:
|
||||
@@ -172,32 +176,32 @@ preserved at amazing cost for sheer perversity.
|
||||
5. Many, many micro obfuscations below, honed over three years time, in shell as
|
||||
well as C. Ask about the 'tar' pit escape, the argv[0] flip, Paul's &4294967295
|
||||
portability hack, the "void where prohibited by flaw" fix, the scanf()
|
||||
spacesaver, shift shenanigans, signal madness, exit()ing stage left, and
|
||||
space-saver, shift shenanigans, signal madness, `exit()`ing stage left, and
|
||||
source-to-source transformations galore.
|
||||
|
||||
For extra credit:
|
||||
### For extra credit:
|
||||
|
||||
Construct 'sharkmail', to auto-split sharkives into mailable
|
||||
segments and mail them. Here's a simple one, which could be
|
||||
extended to enable auto-reassembly with one shell cmd at the
|
||||
far end.
|
||||
|
||||
------------------------ cut here for sharkmail -----------------------
|
||||
#!/bin/sh
|
||||
m=$1; shift
|
||||
shark $* | split -800 - /tmp/shark$$
|
||||
n=`ls /tmp/shark$$* | wc -l | sed 's/ *//'`
|
||||
p=0
|
||||
for f in `ls /tmp/shark$$*`
|
||||
do
|
||||
p=`expr $p + 1`
|
||||
mail -s "bundle ($p of $n) from '`whoami`'" $m < $f
|
||||
done
|
||||
rm /tmp/shark$$*
|
||||
------------------------ end of sharkmail -----------------------------
|
||||
```sh
|
||||
#!/bin/sh
|
||||
m=$1; shift
|
||||
shark $* | split -800 - /tmp/shark$$
|
||||
n=`ls /tmp/shark$$* | wc -l | sed 's/ *//'`
|
||||
p=0
|
||||
for f in `ls /tmp/shark$$*`
|
||||
do
|
||||
p=`expr $p + 1`
|
||||
mail -s "bundle ($p of $n) from '`whoami`'" $m < $f
|
||||
done
|
||||
rm /tmp/shark$$*
|
||||
```
|
||||
|
||||
|
||||
Shark history:
|
||||
### Shark history:
|
||||
|
||||
May 1987: Karl Fox introduces 1023-byte zcat.c to USENET.
|
||||
It's too late for the 4th IOCCC.
|
||||
|
||||
Reference in new issue
Block a user