Check 1990/jaw/README.md for typos
Removed this task from todo.md, changing it to refer to just make sure all README.md files have been checked for typos. I _believe_ this means 1990 has been checked for typos except for the 1990/README.md file itself.
This commit is contained in:
1 parent
637a43d841
commit
ececfced3e
2 files changed
+62
-60
No files matched your search
+60
-57
@@ -70,49 +70,53 @@ 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`:
|
even if the receiver lacks `uncompress` and `btoa`:
|
||||||
|
|
||||||
mkdir -p test
|
```sh
|
||||||
cd test
|
mkdir -p test
|
||||||
sh ../receive
|
cd test
|
||||||
cmp ../jaw.c jaw.c
|
sh ../receive
|
||||||
cmp ../README.md README.md
|
cmp ../jaw.c jaw.c
|
||||||
|
cmp ../README.md README.md
|
||||||
|
```
|
||||||
|
|
||||||
## Authors' comments:
|
## Authors' comments:
|
||||||
|
|
||||||
### ABSTRACT
|
### ABSTRACT
|
||||||
|
|
||||||
Minimal, Universal File Bundling
|
#### Minimal, Universal File Bundling (or, Functional Obfuscation in a Self-Decoding Unix Shell Archive)
|
||||||
(or, Functional Obfuscation in a Self-Decoding Unix Shell Archive)
|
|
||||||
|
James A. Woods
|
||||||
|
Universities Space Research Association
|
||||||
|
NASA Ames Research Center
|
||||||
|
|
||||||
James A. Woods
|
---
|
||||||
Universities Space Research Association
|
|
||||||
NASA Ames Research Center
|
|
||||||
|
|
||||||
|
> "Use an algorithm, go to jail."
|
||||||
|
>
|
||||||
|
> -- anon., circa 1988, pre-Morris worm era
|
||||||
|
|
||||||
"Use an algorithm, go to jail."
|
----
|
||||||
[anon., circa 1988, pre-Morris worm era]
|
|
||||||
|
|
||||||
|
|
||||||
Myriad formats have been proposed for network-mailable data. A major difficulty
|
Myriad formats have been proposed for network-mailable data. A major difficulty
|
||||||
undermining the popularity of most file/message bundlers is that the sender
|
undermining the popularity of most file/message bundlers is that the sender
|
||||||
assumes prior installation of the computational dual of such bundling software
|
assumes prior installation of the computational dual of such bundling software
|
||||||
by the receiver. Command shell archives alleviate this problem somewhat, but
|
by the receiver. Command shell archives alleviate this problem somewhat, but
|
||||||
still require standardization for the function of data compression and
|
still require standardization for the function of data compression and
|
||||||
mail-transparency encoding. On Unix, these coding format quandaries are over-
|
mail-transparency encoding. On Unix, these coding format quandaries are overcome
|
||||||
come by planting a novel Trojan Horse in the archive header to perform
|
by planting a novel Trojan Horse in the archive header to perform
|
||||||
negotiation-less decoding.
|
negotiation-less decoding.
|
||||||
|
|
||||||
Specifically, we outline the development of an extraordinarily compact portable
|
Specifically, we outline the development of an extraordinarily compact portable
|
||||||
(un)bundler to (dis)assemble data-compressed, binary-to-ASCII-converted,
|
(un)bundler to (dis)assemble data-compressed, binary-to-ASCII-converted,
|
||||||
length-split, and checksummed directory structures using standard Unix tools.
|
length-split, and checksummed directory structures using standard Unix tools.
|
||||||
Miniature versions of counterparts to a Lempel-Ziv coder ('compress' or
|
Miniature versions of counterparts to a Lempel-Ziv coder (`compress` or
|
||||||
'squeeze') and an efficient bit packetizer ('btoa') are compiled on-the-fly at
|
`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
|
mail destination sites where they may not already exist. These are written in
|
||||||
purposefully obfuscated-C to accompany similarly-shrunk shell command glue. This
|
purposefully obfuscated-C to accompany similarly-shrunk shell command glue. This
|
||||||
resulting shell archiver is dubbed `shark`.
|
resulting shell archiver is dubbed `shark`.
|
||||||
|
|
||||||
`shark` procedure overhead consumes as few as three dozen shell lines (or
|
`shark` procedure overhead consumes as few as three dozen shell lines (or
|
||||||
`~1100` bytes), commensurate with the size of many Internet mail headers; it
|
`~1100` bytes), commensurate with the size of many Internet mail headers; it
|
||||||
amortizes favorably with message size. 'Shark' is portable across Unix
|
amortizes favorably with message size. `shark` is portable across Unix
|
||||||
variants, while the underlying technique is inherently generalizable to other
|
variants, while the underlying technique is inherently generalizable to other
|
||||||
encoding schemes.
|
encoding schemes.
|
||||||
|
|
||||||
@@ -123,12 +127,12 @@ environment.
|
|||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
> Oh, the shark has pretty teeth, dear--
|
> Oh, the shark has pretty teeth, dear--
|
||||||
> And he shows them pearly white
|
> And he shows them pearly white
|
||||||
> Just a jackknife has Macheath, dear--
|
> Just a jackknife has Macheath, dear--
|
||||||
> And he keeps it out of sight.
|
> And he keeps it out of sight.
|
||||||
|
>
|
||||||
> [Bertolt Brecht, Threepenny Opera]
|
> -- Bertolt Brecht, Threepenny Opera
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
@@ -137,7 +141,7 @@ environment.
|
|||||||
We have ported this program to a wide variety of systems. Among
|
We have ported this program to a wide variety of systems. Among
|
||||||
these are:
|
these are:
|
||||||
|
|
||||||
- SunOS 4.1 / Sun Sparcstation 1 (using both 'cc' and 'gcc 1.37.1')
|
- SunOS 4.1 / Sun SPARCstation 1 (using both 'cc' and 'gcc 1.37.1')
|
||||||
- SunOS 4.0.3 / Sun 3
|
- SunOS 4.0.3 / Sun 3
|
||||||
- BSD 4.3 / VAX 8650
|
- BSD 4.3 / VAX 8650
|
||||||
- SEIUX / Sumitomo Electric Ustation/S
|
- SEIUX / Sumitomo Electric Ustation/S
|
||||||
@@ -154,8 +158,8 @@ We (the authors) feel this program is obfuscated for the
|
|||||||
following reasons:
|
following reasons:
|
||||||
|
|
||||||
|
|
||||||
0. This is one of the few programs you'll see WHOSE VERY UTILITY DEPENDS ON ITS
|
0. This is one of the few programs you'll see _WHOSE VERY UTILITY DEPENDS ON ITS
|
||||||
OBFUSCATION!
|
OBFUSCATION_!
|
||||||
|
|
||||||
1. The contest entry may be used to send its wonderful self to anyone in the
|
1. The contest entry may be used to send its wonderful self to anyone in the
|
||||||
Unix world! Virus writers need not apply...
|
Unix world! Virus writers need not apply...
|
||||||
@@ -164,23 +168,22 @@ Unix world! Virus writers need not apply...
|
|||||||
kindness of our hearts (as well as to maintain eligibility for the large IOCCC
|
kindness of our hearts (as well as to maintain eligibility for the large IOCCC
|
||||||
prize fund), dedicated to the public domain. Claude Shannon, meet Alan Turing.
|
prize fund), dedicated to the public domain. Claude Shannon, meet Alan Turing.
|
||||||
|
|
||||||
3. Meta-obfuscation is via obfuscated description (see ABSTRACT).
|
3. Meta-obfuscation is via obfuscated description (see _ABSTRACT_).
|
||||||
|
|
||||||
4. "Literary" allusion. Production code contains a reference to self-reference,
|
4. "Literary" allusion. Production code contains a reference to self-reference,
|
||||||
preserved at amazing cost for sheer perversity.
|
preserved at amazing cost for sheer perversity.
|
||||||
|
|
||||||
5. Many, many micro obfuscations below, honed over three years time, in shell as
|
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
|
well as C. Ask about the 'tar' pit escape, the `argv[0]` flip, Paul's
|
||||||
portability hack, the "void where prohibited by flaw" fix, the scanf()
|
`&4294967295` portability hack, the "void where prohibited by flaw" fix, the
|
||||||
space-saver, shift shenanigans, signal madness, `exit()`ing stage left, and
|
`scanf()` space-saver, shift shenanigans, signal madness, `exit()`ing stage
|
||||||
source-to-source transformations galore.
|
left, and source-to-source transformations galore.
|
||||||
|
|
||||||
### For extra credit:
|
### For extra credit:
|
||||||
|
|
||||||
Construct 'sharkmail', to auto-split sharkives into mailable
|
Construct `sharkmail`, to auto-split `sharkives` into mailable segments and mail
|
||||||
segments and mail them. Here's a simple one, which could be
|
them. Here's a simple one, which could be extended to enable auto-reassembly
|
||||||
extended to enable auto-reassembly with one shell cmd at the
|
with one shell cmd at the far end.
|
||||||
far end.
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
@@ -199,39 +202,39 @@ rm /tmp/shark$$*
|
|||||||
|
|
||||||
### Shark history:
|
### Shark history:
|
||||||
|
|
||||||
May 1987: Karl Fox introduces 1023-byte zcat.c to USENET.
|
- May 1987: Karl Fox introduces 1023-byte zcat.c to USENET.
|
||||||
It's too late for the 4th IOCCC.
|
It's too late for the 4th IOCCC.
|
||||||
|
|
||||||
May 21, 1987: James A. Woods extends idea to construct self
|
- May 21, 1987: James A. Woods extends idea to construct self
|
||||||
decompressing shar Trojan horse, utilizing 'cc', 'shar',
|
decompressing shar Trojan horse, utilizing 'cc', 'shar',
|
||||||
'zcat', & 'btoa'; size: 2303 bytes.
|
'zcat', & 'btoa'; size: 2303 bytes.
|
||||||
|
|
||||||
May 23, 1987: 'jaw' trims 250 bytes without much thought.
|
- May 23, 1987: 'jaw' trims 250 bytes without much thought.
|
||||||
|
|
||||||
June 2, 1987: 52 lines of shell, 1991 bytes, now made with 'tar',
|
- June 2, 1987: 52 lines of shell, 1991 bytes, now made with 'tar',
|
||||||
short-circuit C-compile at far end, dual-use main.c,
|
short-circuit C-compile at far end, dual-use main.c,
|
||||||
portability mods. (jaw)
|
portability mods. (jaw)
|
||||||
|
|
||||||
Mar-May 1988: abortive run at 5th IOCCC.
|
- Mar-May 1988: abortive run at 5th IOCCC.
|
||||||
jaw.c - 1529 bytes. compile line: 152 bytes.
|
jaw.c - 1529 bytes. compile line: 152 bytes.
|
||||||
generated funny code with execvp() to invoke shell.
|
generated funny code with execvp() to invoke shell.
|
||||||
|
|
||||||
Aug 29, 1988: production version, now at 1830 bytes.
|
- Aug 29, 1988: production version, now at 1830 bytes.
|
||||||
|
|
||||||
Jan 1990: Paul Eggert does tour-de-force shark re-engineering.
|
- Jan 1990: Paul Eggert does tour-de-force shark re-engineering.
|
||||||
|
|
||||||
May 24, 1990: collaboration yields 999-byte jaw.c core (see above)
|
- May 24, 1990: collaboration yields 999-byte jaw.c core (see above)
|
||||||
and 1530-byte production shell code (w/comments).
|
and 1530-byte production shell code (w/comments).
|
||||||
Eggert comes through with lion's share of improvements.
|
Eggert comes through with lion's share of improvements.
|
||||||
7th IOCCC code now faster than the btoa/zcat it replaces.
|
7th IOCCC code now faster than the btoa/zcat it replaces.
|
||||||
|
|
||||||
May 1990: 'jaw' develops experimental replacement using
|
- May 1990: 'jaw' develops experimental replacement using
|
||||||
Dan Bernstein's high-compression 'squeeze'.
|
Dan Bernstein's high-compression 'squeeze'.
|
||||||
|
|
||||||
|
|
||||||
To which we add:
|
To which we add:
|
||||||
|
|
||||||
June 1990: 'shark' wins the IOCCC, finally! :-)
|
- June 1990: 'shark' wins the IOCCC, finally! :-)
|
||||||
|
|
||||||
## Copyright and CC BY-SA 4.0 License:
|
## Copyright and CC BY-SA 4.0 License:
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# A todo list of known things to check and/or do
|
# A todo list of known things to check and/or do
|
||||||
*Last updated: Sun 9 Apr 2023 05:12:09 PDT*
|
*Last updated: Sun 9 Apr 2023 13:38:05 UTC*
|
||||||
|
|
||||||
More things will likely be added over time and as items are done they _should
|
More things will likely be added over time and as items are done they _should
|
||||||
be_ removed from the list IF AND ONLY IF (!!) we are certain it is done (many
|
be_ removed from the list IF AND ONLY IF (!!) we are certain it is done (many
|
||||||
@@ -11,8 +11,7 @@ not been done).
|
|||||||
- Find entries with bugs and INABIAF and add to [bugs.md](/bugs.md).
|
- Find entries with bugs and INABIAF and add to [bugs.md](/bugs.md).
|
||||||
- Resolve as many of the issues in [bugs.md](/bugs.md) with the exception of the
|
- Resolve as many of the issues in [bugs.md](/bugs.md) with the exception of the
|
||||||
INABIAF ones. This is likely not possible but some certainly can be fixed.
|
INABIAF ones. This is likely not possible but some certainly can be fixed.
|
||||||
- Check for typos in [1990/jaw/README.md](/1990/jaw/README.md). Many other
|
- Check for typos in README.md files.
|
||||||
README.md files have to be checked for typos as well.
|
|
||||||
- Verify which README.md files have not been checked for correct formatting and
|
- Verify which README.md files have not been checked for correct formatting and
|
||||||
fix any issues.
|
fix any issues.
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user