Merge pull request #2541 from xexyl/spoiler
Reword the recent deobfuscation changes
This commit is contained in:
193 files changed
+531
-524
No files matched your search
+1
-1
@@ -41,7 +41,7 @@ better debugger or trace could easily be added.
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
The author's comments contains detailed deobfuscation information. If you
|
||||
The author's comments is a detailed program explanation and spoiler. If you
|
||||
want a real challenge, don't read any further and try to understand the program
|
||||
via the source.
|
||||
|
||||
|
||||
@@ -420,7 +420,7 @@ better debugger or trace could easily be added.</p>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<pre><code> ./paul.alt</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>The author’s comments contains detailed deobfuscation information. If you
|
||||
<p>The author’s comments is a detailed program explanation and spoiler. If you
|
||||
want a real challenge, don’t read any further and try to understand the program
|
||||
via the source.</p>
|
||||
<h3 id="historical-note">Historical note:</h3>
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ which we have done for the wider audience.
|
||||
If my preprocessor could hack it, I could write this as one single line rather
|
||||
than 4, but when I do that I get a complaint "defines nested too deeply".
|
||||
|
||||
### Debfuscation:
|
||||
### Obfuscation spoiler:
|
||||
|
||||
This is another rot13 job (believe it or not) - the `#define`s are a
|
||||
novel way of adding tokens: `#define b12(x) 12 x` means that at
|
||||
|
||||
+1
-1
@@ -418,7 +418,7 @@ which we have done for the wider audience.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p>If my preprocessor could hack it, I could write this as one single line rather
|
||||
than 4, but when I do that I get a complaint “defines nested too deeply”.</p>
|
||||
<h3 id="debfuscation">Debfuscation:</h3>
|
||||
<h3 id="obfuscation-spoiler">Obfuscation spoiler:</h3>
|
||||
<p>This is another rot13 job (believe it or not) - the <code>#define</code>s are a
|
||||
novel way of adding tokens: <code>#define b12(x) 12 x</code> means that at
|
||||
some point in the source a <code>12</code> is followed by the compressed nested
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ By use of pointers to functions returning a struct of pointers
|
||||
to functions!
|
||||
|
||||
|
||||
### Deobfuscation:
|
||||
### Spoiler:
|
||||
|
||||
This program prints out the string:
|
||||
|
||||
|
||||
+1
-1
@@ -425,7 +425,7 @@ well.</p>
|
||||
it is done?</p>
|
||||
<p>By use of pointers to functions returning a struct of pointers
|
||||
to functions!</p>
|
||||
<h3 id="deobfuscation">Deobfuscation:</h3>
|
||||
<h3 id="spoiler">Spoiler:</h3>
|
||||
<p>This program prints out the string:</p>
|
||||
<blockquote>
|
||||
<p>the quick brown fox jumped over the lazy dog</p>
|
||||
|
||||
@@ -86,7 +86,7 @@ In other words, even if we took steps to present the algorithm clearly, (we
|
||||
haven't) the relation of the computation performed to the specification of what
|
||||
the program was supposed to do would still be hard to understand.
|
||||
|
||||
### Quasi-deobfuscation on internals:
|
||||
### Quasi-spoiler on internals:
|
||||
|
||||
The program plays [Conway's Game of
|
||||
Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) in the root window's
|
||||
|
||||
@@ -458,7 +458,7 @@ In other words, even if we took steps to present the algorithm clearly, (we
|
||||
haven’t) the relation of the computation performed to the specification of what
|
||||
the program was supposed to do would still be hard to understand.</p></li>
|
||||
</ol>
|
||||
<h3 id="quasi-deobfuscation-on-internals">Quasi-deobfuscation on internals:</h3>
|
||||
<h3 id="quasi-spoiler-on-internals">Quasi-spoiler on internals:</h3>
|
||||
<p>The program plays <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Conway’s Game of
|
||||
Life</a> in the root window’s
|
||||
background pixmap. It starts by setting the background to random
|
||||
|
||||
+1
-1
@@ -142,7 +142,7 @@ eliminated. As AG also refrains from abusing the preprocessor, it
|
||||
doesn't really have much to offer in terms of "surface obfuscation".
|
||||
Instead, it tries to achieve both its speed and its obscurity through a
|
||||
careful choice of algorithms. Some of the finer points of those
|
||||
algorithms are outlined in the deobfuscation information below.
|
||||
algorithms are outlined in the spoiler below.
|
||||
|
||||
|
||||
### How it works:
|
||||
|
||||
@@ -487,7 +487,7 @@ eliminated. As AG also refrains from abusing the preprocessor, it
|
||||
doesn’t really have much to offer in terms of “surface obfuscation”.
|
||||
Instead, it tries to achieve both its speed and its obscurity through a
|
||||
careful choice of algorithms. Some of the finer points of those
|
||||
algorithms are outlined in the deobfuscation information below.</p>
|
||||
algorithms are outlined in the spoiler below.</p>
|
||||
<h3 id="how-it-works">How it works:</h3>
|
||||
<p>Here follows a description of some of the data structures and
|
||||
algorithms used by AG. It is by no means complete, but it may help
|
||||
|
||||
@@ -125,7 +125,7 @@ compilers) complain that there is no control path leading to a return from
|
||||
`main()`. At 125 characters, it still fits on a single line (for those of us
|
||||
who don't mind ruining our eyes with 132 column screens).
|
||||
|
||||
### Deobfuscation:
|
||||
### Obfuscation:
|
||||
|
||||
The first statement points the base of `l` (the argument vector) to
|
||||
be the first argument by incrementing it. It then assigns `O` to
|
||||
|
||||
@@ -481,7 +481,7 @@ return causes the line just written to be overwritten. <code>lint</code> (and mo
|
||||
compilers) complain that there is no control path leading to a return from
|
||||
<code>main()</code>. At 125 characters, it still fits on a single line (for those of us
|
||||
who don’t mind ruining our eyes with 132 column screens).</p>
|
||||
<h3 id="deobfuscation">Deobfuscation:</h3>
|
||||
<h3 id="obfuscation">Obfuscation:</h3>
|
||||
<p>The first statement points the base of <code>l</code> (the argument vector) to
|
||||
be the first argument by incrementing it. It then assigns <code>O</code> to
|
||||
point to the character before the first character of the second
|
||||
|
||||
@@ -68,7 +68,7 @@ numbers to get a pleasing result, or use it for your high school algebra
|
||||
class.
|
||||
|
||||
|
||||
### DEOBFUSCATION:
|
||||
### SPOILER:
|
||||
|
||||
As should be obvious from 20 feet away, the program is a cubic plotter.
|
||||
It plots against certain artists, splattering their cubes with graphs
|
||||
|
||||
@@ -429,7 +429,7 @@ newsletter and a PDF file of just the pages cited.</p>
|
||||
<p>Run it with any 4 numeric arguments, e.g. <code>./horton 3 2 1 0</code>. Play with the
|
||||
numbers to get a pleasing result, or use it for your high school algebra
|
||||
class.</p>
|
||||
<h3 id="deobfuscation">DEOBFUSCATION:</h3>
|
||||
<h3 id="spoiler">SPOILER:</h3>
|
||||
<p>As should be obvious from 20 feet away, the program is a cubic plotter.
|
||||
It plots against certain artists, splattering their cubes with graphs
|
||||
of their cubic equations. Those dastardly arguments are mere coefficients,
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ parameter or an invalid parameter is given, then 5 is assumed. The
|
||||
maximum parameter is determined only by the amount of CPU time, virtual
|
||||
memory and display (or file) space available.
|
||||
|
||||
### DEOBFUSCATION:
|
||||
### OBFUSCATION:
|
||||
|
||||
OK, so you have probably seen magic square printers before. But what
|
||||
about one that deals with even sizes as well as odd ones, or one that
|
||||
|
||||
+1
-1
@@ -424,7 +424,7 @@ other functions (apart from <code>main()</code>).</p>
|
||||
parameter or an invalid parameter is given, then 5 is assumed. The
|
||||
maximum parameter is determined only by the amount of CPU time, virtual
|
||||
memory and display (or file) space available.</p>
|
||||
<h3 id="deobfuscation">DEOBFUSCATION:</h3>
|
||||
<h3 id="obfuscation">OBFUSCATION:</h3>
|
||||
<p>OK, so you have probably seen magic square printers before. But what
|
||||
about one that deals with even sizes as well as odd ones, or one that
|
||||
prints out a different one each time (or attempts to, at any rate)?</p>
|
||||
|
||||
@@ -85,8 +85,6 @@ compile it and compare how it works to the original code.
|
||||
|
||||
## Author's remarks:
|
||||
|
||||
### DEOBFUSCATION:
|
||||
|
||||
This is a program which takes any text file as input and 'flips'
|
||||
the input file along a diagonal running from the top left corner
|
||||
down to the bottom right. In other words, the first row in the
|
||||
|
||||
@@ -439,7 +439,6 @@ find out why?</p>
|
||||
<p>You might also wish to redirect the output to another file,
|
||||
compile it and compare how it works to the original code.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="deobfuscation">DEOBFUSCATION:</h3>
|
||||
<p>This is a program which takes any text file as input and ‘flips’
|
||||
the input file along a diagonal running from the top left corner
|
||||
down to the bottom right. In other words, the first row in the
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
```
|
||||
|
||||
|
||||
The author provided a deobfuscated version as alternate code. See [Alternate
|
||||
The author provided a spoiler version as alternate code. See [Alternate
|
||||
code](#alternate-code) below.
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ Mode may be a value from 0 to 12.
|
||||
|
||||
## Alternate code:
|
||||
|
||||
The author provided us a deobfuscated version that might be of interest to some.
|
||||
The author provided us a spoiler version that might be of interest to some.
|
||||
|
||||
|
||||
### Alternate build:
|
||||
|
||||
+2
-2
@@ -403,7 +403,7 @@ Location: <a href="../../location.html#FI">FI</a> - <em>Republic of Finland </em
|
||||
<!-- BEFORE: 1st line of markdown file: 1994/tvr/README.md -->
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<pre><code> make all</code></pre>
|
||||
<p>The author provided a deobfuscated version as alternate code. See <a href="#alternate-code">Alternate
|
||||
<p>The author provided a spoiler version as alternate code. See <a href="#alternate-code">Alternate
|
||||
code</a> below.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
@@ -416,7 +416,7 @@ code</a> below.</p>
|
||||
<pre><code> ./try.color.sh # for colour displays
|
||||
./try.bw.sh # for Black & White displays</code></pre>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>The author provided us a deobfuscated version that might be of interest to some.</p>
|
||||
<p>The author provided us a spoiler version that might be of interest to some.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<pre><code> make alt</code></pre>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
|
||||
@@ -111,13 +111,7 @@ To see the game from start to complete, try:
|
||||
|
||||
Not all compiler errors are bad.
|
||||
|
||||
For deobfuscation information see the end of the notes from the author below.
|
||||
|
||||
To use:
|
||||
|
||||
``` <!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
For spoilers see the end of the notes from the author below.
|
||||
|
||||
|
||||
## Author's remarks:
|
||||
@@ -174,7 +168,7 @@ The goal of the game is to escape the dungeon.
|
||||
Here is a walk-through for the game, including a few dead-ends:
|
||||
|
||||
|
||||
### DEOBFUSCATION
|
||||
### SPOILER (HOW TO WIN):
|
||||
|
||||
``` <!---sh-->
|
||||
cc -Describe -Door westley.c
|
||||
|
||||
@@ -463,9 +463,7 @@ arguments:</p>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Not all compiler errors are bad.</p>
|
||||
<p>For deobfuscation information see the end of the notes from the author below.</p>
|
||||
<p>To use:</p>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<p>For spoilers see the end of the notes from the author below.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p>This program, in accordance with the rules, compiles into a legal
|
||||
C program without human intervention. However, it simply compiles
|
||||
@@ -501,7 +499,7 @@ the opening message each time, as if you are playing an adventure game
|
||||
with “verbose” turned on).</p>
|
||||
<p>The goal of the game is to escape the dungeon.</p>
|
||||
<p>Here is a walk-through for the game, including a few dead-ends:</p>
|
||||
<h3 id="deobfuscation">DEOBFUSCATION</h3>
|
||||
<h3 id="spoiler-how-to-win">SPOILER (HOW TO WIN):</h3>
|
||||
<pre><code> cc -Describe -Door westley.c
|
||||
cc -Describe -Drain westley.c
|
||||
cc -Describe -Dwarf westley.c
|
||||
|
||||
@@ -34,12 +34,12 @@
|
||||
"entry_text" : "original source code"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.html",
|
||||
"file_path" : "secret.html",
|
||||
"inventory_order" : 100,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "deobfuscation information web page"
|
||||
"entry_text" : "web page with the secret switch"
|
||||
},
|
||||
{
|
||||
"file_path" : "try.sh",
|
||||
@@ -90,12 +90,12 @@
|
||||
"entry_text" : "markdown source for this web page"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.md",
|
||||
"file_path" : "secret.md",
|
||||
"inventory_order" : 4000000000,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "markdown",
|
||||
"display_via_github" : true,
|
||||
"entry_text" : "markdown source for deobfuscation.html"
|
||||
"entry_text" : "markdown source for secret.html"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
|
||||
@@ -214,10 +214,6 @@ enjoy randomly changing patterns (the delay is 3 seconds),
|
||||
but there is a secret switch to suppress looping: useful
|
||||
if you want to pipe the output to a printer.
|
||||
|
||||
Here is a but of deobfuscation:
|
||||
|
||||
> The colon **is** the secret switch - the space before it is not a mistake.
|
||||
|
||||
If `Variable` is used, the actual value of `cycle` doesn't matter,
|
||||
as far as it is > 1. To figure out what difference
|
||||
`cycle` makes when `Variable` is not used, try
|
||||
|
||||
+2
-6
@@ -524,10 +524,6 @@ the opening for step 1 is not a single line but a cross:</p>
|
||||
enjoy randomly changing patterns (the delay is 3 seconds),
|
||||
but there is a secret switch to suppress looping: useful
|
||||
if you want to pipe the output to a printer.</p>
|
||||
<p>Here is a but of deobfuscation:</p>
|
||||
<blockquote>
|
||||
<p>The colon <strong>is</strong> the secret switch - the space before it is not a mistake.</p>
|
||||
</blockquote>
|
||||
<p>If <code>Variable</code> is used, the actual value of <code>cycle</code> doesn’t matter,
|
||||
as far as it is > 1. To figure out what difference
|
||||
<code>cycle</code> makes when <code>Variable</code> is not used, try</p>
|
||||
@@ -582,17 +578,17 @@ even want to explain what it does. You’ve been warned!</p>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/leo.c">leo.c</a> - entry source code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/leo.orig.c">leo.orig.c</a> - original source code</li>
|
||||
<li><a href="deobfuscation.html">deobfuscation.html</a> - deobfuscation information web page</li>
|
||||
<li><a href="secret.html">secret.html</a> - web page with the secret switch</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/try.sh">try.sh</a> - script to try entry</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="1995_leo.tar.bz2">1995_leo.tar.bz2</a> - download entry tarball</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/README.md">README.md</a> - markdown source for this web page</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/deobfuscation.md">deobfuscation.md</a> - markdown source for deobfuscation.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/.path">.path</a> - directory path from top level directory</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/leo/secret.md">secret.md</a> - markdown source for secret.html</li>
|
||||
<li><a href="index.html">index.html</a> - this web page</li>
|
||||
</ul>
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title>The International Obfuscated C Code Contest</title>
|
||||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||||
<meta name="description" content="deobfuscation.md for 1995/leo">
|
||||
<meta name="keywords" content="IOCCC, 1995/leo, deobfuscation.md">
|
||||
<meta name="description" content="secret.md for 1995/leo">
|
||||
<meta name="keywords" content="IOCCC, 1995/leo, secret.md">
|
||||
</head>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
@@ -26,13 +26,13 @@
|
||||
|
||||
<!-- -->
|
||||
<!-- This web page was formed via the tool: bin/gen-other-html.sh -->
|
||||
<!-- The content of main section of this web page came from: 1995/leo/deobfuscation.md -->
|
||||
<!-- The content of main section of this web page came from: 1995/leo/secret.md -->
|
||||
<!-- -->
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 1995/leo/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 1995/leo/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 1995/leo/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 1995/leo/secret.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 1995/leo/secret.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 1995/leo/secret.md !!! -->
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
|
||||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||||
@@ -363,7 +363,7 @@
|
||||
height=110>
|
||||
</a>
|
||||
<h1>The International Obfuscated C Code Contest</h1>
|
||||
<h2>deobfuscation.html for 1995/leo</h2>
|
||||
<h2>secret.html for 1995/leo</h2>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/header.default.html -->
|
||||
@@ -371,7 +371,7 @@
|
||||
|
||||
<div class="navbar">
|
||||
<a class="Left" href="index.html">↑ jump to index.html ↑</a>
|
||||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F1995%2Fleo%2Fdeobfuscation.html">✓</a>
|
||||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F1995%2Fleo%2Fsecret.html">✓</a>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/navbar.up2index.html -->
|
||||
@@ -382,7 +382,7 @@
|
||||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: 1995/leo/deobfuscation.md -->
|
||||
<!-- BEFORE: 1st line of markdown file: 1995/leo/secret.md -->
|
||||
<p>(The colon <em>is</em> the secret switch - the space before it is not a mistake)</p>
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
@@ -399,7 +399,7 @@
|
||||
https://creativecommons.org/licenses/by-sa/4.0/
|
||||
|
||||
-->
|
||||
<!-- AFTER: last line of markdown file: 1995/leo/deobfuscation.md -->
|
||||
<!-- AFTER: last line of markdown file: 1995/leo/secret.md -->
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||||
@@ -459,7 +459,7 @@
|
||||
|
||||
<div id="coda"><h3>Coda</h3>
|
||||
<p>
|
||||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F1995%2Fleo%2Fdeobfuscation.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F1995%2Fleo%2Fsecret.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a>
|
||||
</p>
|
||||
</div>
|
||||
File renamed without changes.
@@ -38,7 +38,8 @@ For more detailed information see [1995/vanschnitz in bugs.html](../../bugs.html
|
||||
The authors provided a deobfuscated version of the program. Originally uuencoded we
|
||||
have decoded it for the wider audience in [vanschnitz.alt.c](%%REPO_URL%%/1995/vanschnitz/vanschnitz.alt.c).
|
||||
|
||||
They encourage you to first try and figure out the program without reading the deobfuscated version,
|
||||
They encourage you to first try and figure out the program without reading the
|
||||
deobfuscated version.
|
||||
|
||||
|
||||
### Alternate build:
|
||||
@@ -120,7 +121,7 @@ solution wherein the disks end up on peg 2; for an even
|
||||
number of disks, they will end on peg 3. This should
|
||||
provide some hint as to what sort of algorithm is used.
|
||||
|
||||
We have included a [deobfuscated](%%REPO_URL%%/1995/vanschnitz/vanschnitz.alt.c) version of the program, with
|
||||
We have included a [deobfuscated version](%%REPO_URL%%/1995/vanschnitz/vanschnitz.alt.c) of the program, with
|
||||
meaningful symbol names and comments, but we encourage you
|
||||
to try to decipher the program without it...
|
||||
|
||||
|
||||
@@ -421,7 +421,8 @@ in 2023. See <a href="#alternate-code">Alternate code</a> below.</p>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>The authors provided a deobfuscated version of the program. Originally uuencoded we
|
||||
have decoded it for the wider audience in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/vanschnitz/vanschnitz.alt.c">vanschnitz.alt.c</a>.</p>
|
||||
<p>They encourage you to first try and figure out the program without reading the deobfuscated version,</p>
|
||||
<p>They encourage you to first try and figure out the program without reading the
|
||||
deobfuscated version.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<pre><code> make alt</code></pre>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
@@ -475,7 +476,7 @@ the resulting program (on a Unix system) is to do the command</p>
|
||||
solution wherein the disks end up on peg 2; for an even
|
||||
number of disks, they will end on peg 3. This should
|
||||
provide some hint as to what sort of algorithm is used.</p>
|
||||
<p>We have included a <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/vanschnitz/vanschnitz.alt.c">deobfuscated</a> version of the program, with
|
||||
<p>We have included a <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/vanschnitz/vanschnitz.alt.c">deobfuscated version</a> of the program, with
|
||||
meaningful symbol names and comments, but we encourage you
|
||||
to try to decipher the program without it…</p>
|
||||
<!--
|
||||
|
||||
@@ -32,12 +32,12 @@ For more detailed information see [1996/huffman in bugs.html](../../bugs.html#19
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
If you are still confused and want to run the deobfuscation command, check out
|
||||
If you are still confused and want to read a spoiler, check out
|
||||
the source and it will be clear as mud!
|
||||
|
||||
And for a misleading hint, consider who won! :-)
|
||||
|
||||
And if you really can't see what is going on, try this deobfuscation command:
|
||||
And if you really can't see what is going on, here is an extra spoiler:
|
||||
|
||||
``` <!---sh-->
|
||||
./huffman < huffman.c 2>/dev/null
|
||||
|
||||
@@ -412,10 +412,10 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>If you are still confused and want to run the deobfuscation command, check out
|
||||
<p>If you are still confused and want to read a spoiler, check out
|
||||
the source and it will be clear as mud!</p>
|
||||
<p>And for a misleading hint, consider who won! :-)</p>
|
||||
<p>And if you really can’t see what is going on, try this deobfuscation command:</p>
|
||||
<p>And if you really can’t see what is going on, here is an extra spoiler:</p>
|
||||
<pre><code> ./huffman < huffman.c 2>/dev/null</code></pre>
|
||||
<p>This entry was very well received at the IOCCC BOF.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
|
||||
+8
-6
@@ -111,20 +111,22 @@ I decided it would be better this way...
|
||||
These restrictions have been removed for your convenience.
|
||||
|
||||
The following lines describe how this program works; if you don't
|
||||
want to know it at this time, please skip them.
|
||||
want to know it at this time, please skip them. If this entry would
|
||||
by some mistake win the contest, please do not rot13 this - I hate
|
||||
rot13 spoilers since it is somewhat complicated on a Mac to
|
||||
reverse them. Anyone out there should have enough discipline and
|
||||
rot13 shouldn't be required, really. After all, we are not children
|
||||
anymore :-)
|
||||
|
||||
You should have enough discipline to make an effort to understand
|
||||
the code without reading the deobfuscation information below.
|
||||
After all, we are not children anymore :-)
|
||||
|
||||
## Deobfuscation information
|
||||
## Obfuscation information:
|
||||
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
|
||||
This paragraph is not part of the author's remarks, but is a helpful
|
||||
gift from the judges; if you read too fast to stop yourself, this should
|
||||
give you enough time to stop, which you really need to do RIGHT NOW if
|
||||
you don't want to read the deobfuscation information: we mean it.
|
||||
you don't want to read the obfuscation information: we mean it.
|
||||
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
|
||||
|
||||
+8
-6
@@ -481,16 +481,18 @@ My first private version would only run when compiled on a Friday.
|
||||
I decided it would be better this way…
|
||||
These restrictions have been removed for your convenience.</p>
|
||||
<p>The following lines describe how this program works; if you don’t
|
||||
want to know it at this time, please skip them.</p>
|
||||
<p>You should have enough discipline to make an effort to understand
|
||||
the code without reading the deobfuscation information below.
|
||||
After all, we are not children anymore :-)</p>
|
||||
<h2 id="deobfuscation-information">Deobfuscation information</h2>
|
||||
want to know it at this time, please skip them. If this entry would
|
||||
by some mistake win the contest, please do not rot13 this - I hate
|
||||
rot13 spoilers since it is somewhat complicated on a Mac to
|
||||
reverse them. Anyone out there should have enough discipline and
|
||||
rot13 shouldn’t be required, really. After all, we are not children
|
||||
anymore :-)</p>
|
||||
<h2 id="obfuscation-information">Obfuscation information:</h2>
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
<p>This paragraph is not part of the author’s remarks, but is a helpful
|
||||
gift from the judges; if you read too fast to stop yourself, this should
|
||||
give you enough time to stop, which you really need to do RIGHT NOW if
|
||||
you don’t want to read the deobfuscation information: we mean it.</p>
|
||||
you don’t want to read the obfuscation information: we mean it.</p>
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
<p>The source file needs to be present because the words are read from
|
||||
it. The wordlist is encoded within the source using a 24 entry
|
||||
|
||||
@@ -112,7 +112,7 @@ is the same as
|
||||
```
|
||||
|
||||
- The file [dorssel.html](dorssel.html) contains all the information needed to
|
||||
understand this program. For deobfuscation information, try:
|
||||
understand this program. For spoiler information, try:
|
||||
|
||||
``` <!---sh-->
|
||||
./dorssel < dorssel.md
|
||||
|
||||
@@ -468,7 +468,7 @@ text that can be reversibly Morsified, i.e.</li>
|
||||
<pre><code> ./dorssel < dorssel.c | ./dorssel</code></pre>
|
||||
<ul>
|
||||
<li>The file <a href="dorssel.html">dorssel.html</a> contains all the information needed to
|
||||
understand this program. For deobfuscation information, try:</li>
|
||||
understand this program. For spoiler information, try:</li>
|
||||
</ul>
|
||||
<pre><code> ./dorssel < dorssel.md</code></pre>
|
||||
<!--
|
||||
|
||||
@@ -116,7 +116,7 @@ looping. To see the resulting program run, redirect the output from
|
||||
and then compile it.
|
||||
|
||||
|
||||
### Deobfuscation And Hints:
|
||||
### Obfuscation hints:
|
||||
|
||||
The big key to this program is figuring out what the names of the
|
||||
functions ought to be; a bit of research may allow you to guess at
|
||||
|
||||
@@ -470,7 +470,7 @@ looping. To see the resulting program run, redirect the output from
|
||||
<code>schnitzi</code> into another file, like this</p>
|
||||
<pre><code> ./schnitzi 4 > sort.c</code></pre>
|
||||
<p>and then compile it.</p>
|
||||
<h3 id="deobfuscation-and-hints">Deobfuscation And Hints:</h3>
|
||||
<h3 id="obfuscation-hints">Obfuscation hints:</h3>
|
||||
<p>The big key to this program is figuring out what the names of the
|
||||
functions ought to be; a bit of research may allow you to guess at
|
||||
a few crucial ones.</p>
|
||||
|
||||
@@ -99,7 +99,7 @@ Count the number of non-whitespace characters in the source
|
||||
file to find out what dark force drove me to write this ;-).
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Obfuscation
|
||||
|
||||
First of all, if you run a C beautifier on the program (thereby of course losing
|
||||
the nice code shape I worked so hard on ;-) ) the code will become a bit more
|
||||
|
||||
@@ -445,7 +445,7 @@ valid exit value to indicate failure (replace them with <code>EOF</code> resp.
|
||||
<h3 id="special-notes">Special notes</h3>
|
||||
<p>Count the number of non-whitespace characters in the source
|
||||
file to find out what dark force drove me to write this ;-).</p>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="obfuscation">Obfuscation</h3>
|
||||
<p>First of all, if you run a C beautifier on the program (thereby of course losing
|
||||
the nice code shape I worked so hard on ;-) ) the code will become a bit more
|
||||
readable.</p>
|
||||
|
||||
@@ -34,7 +34,7 @@ NOTE: `n` is an integer.
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
Don't read the author remarks until you're ready for some obfuscation information.
|
||||
Don't read the author's remarks until you're ready for the spoiler.
|
||||
Just stop and read the program; it won't take long. Once you've figured
|
||||
out what it does, run it. It may surprise you.
|
||||
|
||||
@@ -69,7 +69,7 @@ running the program a second time. Try:
|
||||
diff textfile textfile2
|
||||
```
|
||||
|
||||
where n is the same number (modulo 64). So, the prime number generator
|
||||
where `n` is the same number (modulo 64). So, the prime number generator
|
||||
is actually a simple text encoder/decoder! Of course, don't forget that
|
||||
argument, otherwise the "bugs" in the program will cause it to crash!
|
||||
|
||||
|
||||
@@ -413,7 +413,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Don’t read the author remarks until you’re ready for some obfuscation information.
|
||||
<p>Don’t read the author’s remarks until you’re ready for the spoiler.
|
||||
Just stop and read the program; it won’t take long. Once you’ve figured
|
||||
out what it does, run it. It may surprise you.</p>
|
||||
<p>This entry won, not because the obfuscation is impenetrable, but because
|
||||
@@ -437,7 +437,7 @@ Instead, the program reads input from <code>stdin</code> and returns garbled tex
|
||||
running the program a second time. Try:</p>
|
||||
<pre><code> ./primenum n < textfile | ./primenum n > textfile2
|
||||
diff textfile textfile2</code></pre>
|
||||
<p>where n is the same number (modulo 64). So, the prime number generator
|
||||
<p>where <code>n</code> is the same number (modulo 64). So, the prime number generator
|
||||
is actually a simple text encoder/decoder! Of course, don’t forget that
|
||||
argument, otherwise the “bugs” in the program will cause it to crash!</p>
|
||||
<h3 id="features">Features</h3>
|
||||
|
||||
@@ -117,7 +117,7 @@ the game entertaining, see if you can find
|
||||
in the source code.)
|
||||
|
||||
|
||||
### GAME STRATEGY DEOBFUSCATION
|
||||
### GAME STRATEGY SPOILER
|
||||
|
||||
The trick, of course, is to drop items in empty rooms to mark them. That way
|
||||
you usually know if you're in a room you've seen before. It greatly aids
|
||||
|
||||
@@ -481,7 +481,7 @@ the game entertaining, see if you can find</p>
|
||||
<pre><code> the fish scales Q)++j<
|
||||
the shooting star -~- ~ -~i +</code></pre>
|
||||
<p>in the source code.)</p>
|
||||
<h3 id="game-strategy-deobfuscation">GAME STRATEGY DEOBFUSCATION</h3>
|
||||
<h3 id="game-strategy-spoiler">GAME STRATEGY SPOILER</h3>
|
||||
<p>The trick, of course, is to drop items in empty rooms to mark them. That way
|
||||
you usually know if you’re in a room you’ve seen before. It greatly aids
|
||||
mapping.</p>
|
||||
|
||||
@@ -130,12 +130,12 @@
|
||||
"entry_text" : "hibachi-start.sh declarations"
|
||||
},
|
||||
{
|
||||
"file_path" : "src/localhost/CHANGES-DEOBFUSCATED.TXT",
|
||||
"file_path" : "src/localhost/CHANGES-SPOILER.TXT",
|
||||
"inventory_order" : 200,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "text",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "Debofuscation change log"
|
||||
"entry_text" : "spoiler change log"
|
||||
},
|
||||
{
|
||||
"file_path" : "2004_hibachi.tar.bz2",
|
||||
|
||||
@@ -159,7 +159,7 @@ style](https://wiki.c2.com/?OneTrueBraceStyle).
|
||||
|
||||
* `Hibachi` can serve [www.ioccc.org](https://www.ioccc.org).
|
||||
|
||||
* Commented deobfuscation information available.
|
||||
* Commented spoiler information available.
|
||||
|
||||
### Known Issues
|
||||
|
||||
|
||||
@@ -486,7 +486,7 @@ style</a>.</p></li>
|
||||
<li><p><code>HTTP/1.0 200 OK</code> == <code>HTTP/1.1 200 OK CRLF Connection: close</code> ?</p></li>
|
||||
<li><p><code>getenv()</code> == <code>putenv()</code> ?</p></li>
|
||||
<li><p><code>Hibachi</code> can serve <a href="https://www.ioccc.org">www.ioccc.org</a>.</p></li>
|
||||
<li><p>Commented deobfuscation information available.</p></li>
|
||||
<li><p>Commented spoiler information available.</p></li>
|
||||
</ul>
|
||||
<h3 id="known-issues">Known Issues</h3>
|
||||
<ul>
|
||||
@@ -543,7 +543,7 @@ paragraph 3 sentence 2, and so fails to display responses from
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl">src/localhost/test/perl/yahoo-ticker.pl</a> - stock price fetch example in Perl</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/hibachi/src/configure.in">src/configure.in</a> - GNU Autoconf script</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/hibachi/src/hibachi-start.sh.in">src/hibachi-start.sh.in</a> - hibachi-start.sh declarations</li>
|
||||
<li><a href="src/localhost/CHANGES-DEOBFUSCATED.TXT">src/localhost/CHANGES-DEOBFUSCATED.TXT</a> - Debofuscation change log</li>
|
||||
<li><a href="src/localhost/CHANGES-SPOILER.TXT">src/localhost/CHANGES-SPOILER.TXT</a> - spoiler change log</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
|
||||
File renamed without changes.
+4
-3
@@ -12,7 +12,8 @@ version](#alternate-code) below. If your terminal has problems with the
|
||||
make anon-no_stty
|
||||
```
|
||||
|
||||
This will compile [anon.c](%%REPO_URL%%/2005/anon/anon.c) as `anon` to not use `stty(1)`.
|
||||
This will compile [anon.c](%%REPO_URL%%/2005/anon/anon.c) as `anon` to not use
|
||||
`stty(1)`, with the support of an `#ifdef..#endif` added by the author.
|
||||
|
||||
|
||||
### Bugs and (Mis)features:
|
||||
@@ -202,7 +203,7 @@ hit enter after every key), but it works.
|
||||
The game requires lots of space on the runtime stack space due to deep
|
||||
recursion, among other things. :-)
|
||||
|
||||
See the "**DEOBFUSCATION**" section below for more notes about portability.
|
||||
See the "**OBFUSCATION**" section below for more notes about portability.
|
||||
|
||||
|
||||
### ABOUT THE CODE
|
||||
@@ -280,7 +281,7 @@ It probably will also compile and work on many (all?) other \*nix platforms as
|
||||
well. How does it achieve this incredible feat?
|
||||
|
||||
|
||||
### DEOBFUSCATION
|
||||
### OBFUSCATION
|
||||
|
||||
Read the following only if you give up figuring it out :-)
|
||||
|
||||
|
||||
@@ -407,7 +407,8 @@ Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em></l
|
||||
version</a> below. If your terminal has problems with the
|
||||
<code>stty(1)</code> commands try:</p>
|
||||
<pre><code> make anon-no_stty</code></pre>
|
||||
<p>This will compile <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/anon/anon.c">anon.c</a> as <code>anon</code> to not use <code>stty(1)</code>.</p>
|
||||
<p>This will compile <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/anon/anon.c">anon.c</a> as <code>anon</code> to not use
|
||||
<code>stty(1)</code>, with the support of an <code>#ifdef..#endif</code> added by the author.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
<pre><code> STATUS: INABIAF - please DO NOT fix</code></pre>
|
||||
@@ -514,7 +515,7 @@ with <code>-DNO_STTY</code>. The game interface will be a bit annoying (you will
|
||||
hit enter after every key), but it works.</p>
|
||||
<p>The game requires lots of space on the runtime stack space due to deep
|
||||
recursion, among other things. :-)</p>
|
||||
<p>See the “<strong>DEOBFUSCATION</strong>” section below for more notes about portability.</p>
|
||||
<p>See the “<strong>OBFUSCATION</strong>” section below for more notes about portability.</p>
|
||||
<h3 id="about-the-code">ABOUT THE CODE</h3>
|
||||
<p>Clearly, the author is very, very confused. Although he has broken up the file
|
||||
into sections labelled with helpful headings, and although he has left ample
|
||||
@@ -577,7 +578,7 @@ on the following architectures:</p>
|
||||
</ul>
|
||||
<p>It probably will also compile and work on many (all?) other *nix platforms as
|
||||
well. How does it achieve this incredible feat?</p>
|
||||
<h3 id="deobfuscation">DEOBFUSCATION</h3>
|
||||
<h3 id="obfuscation">OBFUSCATION</h3>
|
||||
<p>Read the following only if you give up figuring it out :-)</p>
|
||||
<h4 id="the-evil-hack">The Evil Hack</h4>
|
||||
<p>The program (ab)uses an implicit assumption underlying practically all
|
||||
|
||||
@@ -248,7 +248,7 @@ changing the definitions of `W`, `H` and `I` at the beginning of the code.
|
||||
parameter.
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Obfuscation
|
||||
|
||||
Sure, I don't want to deprive you of the pleasure of digging
|
||||
into the infernal mess created by my corrupted mind (writing
|
||||
@@ -262,9 +262,9 @@ of how all the program works to be worked out).
|
||||
|
||||
This program is a formula parser that outputs machine code that
|
||||
calculates the formula and check the given conditions. The
|
||||
machine code targets the x87 stack based
|
||||
machine code targets the `x87` stack based
|
||||
[FPU](https://en.wikipedia.org/wiki/Floating-point_unit), and it is almost
|
||||
identical for x86 and x86_64 (except for the comparison
|
||||
identical for `x86` and `x86_64` (except for the comparison
|
||||
instructions, that have to be generated differently). The
|
||||
program keeps track of the FPU stack (the FPU has a cyclic stack
|
||||
of 8 registers) and will automatically swap to and from the
|
||||
|
||||
@@ -553,7 +553,7 @@ numbers.</li>
|
||||
<li>There should be some way to switch from Mandelbrot to Julia with chosen
|
||||
parameter.</li>
|
||||
</ul>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="obfuscation">Obfuscation</h3>
|
||||
<p>Sure, I don’t want to deprive you of the pleasure of digging
|
||||
into the infernal mess created by my corrupted mind (writing
|
||||
this remark I noticed that I was ending sentences with ‘;’ instead
|
||||
@@ -564,9 +564,9 @@ are different from the tricks used in most common IOCCC program
|
||||
of how all the program works to be worked out).</p>
|
||||
<p>This program is a formula parser that outputs machine code that
|
||||
calculates the formula and check the given conditions. The
|
||||
machine code targets the x87 stack based
|
||||
machine code targets the <code>x87</code> stack based
|
||||
<a href="https://en.wikipedia.org/wiki/Floating-point_unit">FPU</a>, and it is almost
|
||||
identical for x86 and x86_64 (except for the comparison
|
||||
identical for <code>x86</code> and <code>x86_64</code> (except for the comparison
|
||||
instructions, that have to be generated differently). The
|
||||
program keeps track of the FPU stack (the FPU has a cyclic stack
|
||||
of 8 registers) and will automatically swap to and from the
|
||||
|
||||
@@ -222,7 +222,7 @@ In Unix the min 0 on `stty` is required but circa 2001
|
||||
it was not required.
|
||||
|
||||
|
||||
### How it works (deobfuscation)
|
||||
### How it works (obfuscation)
|
||||
|
||||
The `l` array contains the 64K memory; it is initialized with a boot image
|
||||
loaded from the `C` file. The [program
|
||||
|
||||
@@ -534,7 +534,7 @@ is not what is needed.</p>
|
||||
<p>On PC/DOS you need to add <code>ANSI.SYS</code> to <code>CONFIG.SYS</code>.</p>
|
||||
<p>In Unix the min 0 on <code>stty</code> is required but circa 2001
|
||||
it was not required.</p>
|
||||
<h3 id="how-it-works-deobfuscation">How it works (deobfuscation)</h3>
|
||||
<h3 id="how-it-works-obfuscation">How it works (obfuscation)</h3>
|
||||
<p>The <code>l</code> array contains the 64K memory; it is initialized with a boot image
|
||||
loaded from the <code>C</code> file. The <a href="https://en.wikipedia.org/wiki/Program_counter">program
|
||||
counter</a> is the <code>c</code> pointer and
|
||||
|
||||
@@ -199,7 +199,7 @@ Just say
|
||||
(Btw, tcc has its roots in IOCCC...)
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Obfuscation
|
||||
|
||||
* The initialized char array includes the source code of the real program,
|
||||
as well as its name and commands to build and run it, all
|
||||
|
||||
@@ -536,7 +536,7 @@ C99, or long lines as an extension. This code has been tested on:</p></li>
|
||||
<li><p>AIX 5.3, IBM eServer p5-550, gcc 3.3.3 and AIX CC Version 6</p>
|
||||
<p>(Btw, tcc has its roots in IOCCC…)</p></li>
|
||||
</ul>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="obfuscation">Obfuscation</h3>
|
||||
<ul>
|
||||
<li>The initialized char array includes the source code of the real program,
|
||||
as well as its name and commands to build and run it, all
|
||||
|
||||
+1
-1
@@ -110,7 +110,7 @@ the actual `argv` strings to be writable, though.
|
||||
- Some seemingly redundant code works to eliminate warnings and evade a gcc bug.
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Spoilers
|
||||
|
||||
The parser parses function names, subtraction, and division as single-letter
|
||||
unary operators. A bitmask encoded hash table is used to check no-ops/digits
|
||||
|
||||
+1
-1
@@ -462,7 +462,7 @@ the actual <code>argv</code> strings to be writable, though.</li>
|
||||
<li>This program doesn’t work with <code>%e</code> style numbers like <code>1e-4</code>.</li>
|
||||
<li>Some seemingly redundant code works to eliminate warnings and evade a gcc bug.</li>
|
||||
</ul>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="spoilers">Spoilers</h3>
|
||||
<p>The parser parses function names, subtraction, and division as single-letter
|
||||
unary operators. A bitmask encoded hash table is used to check no-ops/digits
|
||||
and another hash function maps the ASCII to a function ordinal, which is then
|
||||
|
||||
@@ -153,7 +153,7 @@ reflection ray at an object's surface, given the incoming
|
||||
direction and surface normal.
|
||||
|
||||
|
||||
#### Further deobfuscation:
|
||||
#### Further details:
|
||||
|
||||
The program is not quite a traditional [ray
|
||||
tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)), but a "[sphere
|
||||
|
||||
@@ -480,7 +480,7 @@ by the source code itself: the geometric construction of a
|
||||
reflection ray at an object’s surface, given the incoming
|
||||
direction and surface normal.</p></li>
|
||||
</ul>
|
||||
<h4 id="further-deobfuscation">Further deobfuscation:</h4>
|
||||
<h4 id="further-details">Further details:</h4>
|
||||
<p>The program is not quite a traditional <a href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics)">ray
|
||||
tracer</a>, but a “<a href="sphere-tracing.pdf">sphere
|
||||
tracer</a>” which uses distance fields to encode proximity to
|
||||
|
||||
@@ -259,7 +259,7 @@ a usage of `I` (complex's imaginary unit), but I bet this is cygwin's issue;
|
||||
it is surely a C99 feature.
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Obfuscation
|
||||
|
||||
First of all, the source code itself serves as an initial configuration.
|
||||
Preprocessing directives (such as `#include`)'s `#` serve as walls.
|
||||
|
||||
@@ -554,7 +554,7 @@ used to clear screen and move cursor to home.</p>
|
||||
and gcc-4.5.3 and clang-3.1 on Cygwin. On Cygwin, gcc and clang complain about
|
||||
a usage of <code>I</code> (complex’s imaginary unit), but I bet this is cygwin’s issue;
|
||||
it is surely a C99 feature.</p>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="obfuscation">Obfuscation</h3>
|
||||
<p>First of all, the source code itself serves as an initial configuration.
|
||||
Preprocessing directives (such as <code>#include</code>)’s <code>#</code> serve as walls.</p>
|
||||
<p>This program uses <code>double complex</code> to represent any 2D vector. But, note that
|
||||
|
||||
+2
-2
@@ -150,7 +150,7 @@ The design of the program explicitly allows for `EOF` even if it does not equal
|
||||
endian-independent.
|
||||
|
||||
|
||||
### Debfuscation
|
||||
### Obfuscation
|
||||
|
||||
Many obfuscations used are typical for standard IOCCC entries:
|
||||
|
||||
@@ -218,7 +218,7 @@ Having said this important trick, other details should be relatively easier to
|
||||
follow. The order of lookup table, for example, is very important,
|
||||
and the biggest constant 6177 is not arbitrarily chosen.
|
||||
|
||||
Even [more deobfuscation information](https://gist.github.com/lifthrasiir/3909337) is available.
|
||||
Even more obfuscation information is [available](https://gist.github.com/lifthrasiir/3909337).
|
||||
|
||||
|
||||
### Acknowledgement
|
||||
|
||||
@@ -493,7 +493,7 @@ character set and two’s complement representation.</li>
|
||||
<code>-1</code> (it has to be negative per the standard but not necessarily <code>-1</code>) and both
|
||||
<code>signed char</code> and <code>unsigned char</code>, for example. Furthermore it is
|
||||
endian-independent.</p>
|
||||
<h3 id="debfuscation">Debfuscation</h3>
|
||||
<h3 id="obfuscation">Obfuscation</h3>
|
||||
<p>Many obfuscations used are typical for standard IOCCC entries:</p>
|
||||
<ul>
|
||||
<li>Two arguments from <code>main()</code> function are reused as normal variables.</li>
|
||||
@@ -547,7 +547,7 @@ one character.</li>
|
||||
<p>Having said this important trick, other details should be relatively easier to
|
||||
follow. The order of lookup table, for example, is very important,
|
||||
and the biggest constant 6177 is not arbitrarily chosen.</p>
|
||||
<p>Even <a href="https://gist.github.com/lifthrasiir/3909337">more deobfuscation information</a> is available.</p>
|
||||
<p>Even more obfuscation information is <a href="https://gist.github.com/lifthrasiir/3909337">available</a>.</p>
|
||||
<h3 id="acknowledgement">Acknowledgement</h3>
|
||||
<p>The cleaner (size-optimized) version of this program was originally published
|
||||
in my website in July 2011. Sun Park and others have reviewed it and made me
|
||||
|
||||
@@ -66,12 +66,12 @@
|
||||
"entry_text" : "script to try entry"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.html",
|
||||
"file_path" : "obfuscation.html",
|
||||
"inventory_order" : 200,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "Deobfuscation information web page"
|
||||
"entry_text" : "JavaScript page with full recording of development"
|
||||
},
|
||||
{
|
||||
"file_path" : "2012_omoikane.tar.bz2",
|
||||
|
||||
@@ -83,7 +83,7 @@ We have no way to test the second version, sorry (tm Canada :-) )!
|
||||
## Judges' remarks:
|
||||
|
||||
The judges have nothing to add that has not already been written about in the
|
||||
[deobfuscation.html](deobfuscation.html) (requires JavaScript) file! :-)
|
||||
[obfuscation.html](obfuscation.html) (requires JavaScript) file! :-)
|
||||
|
||||
|
||||
## Author's remarks:
|
||||
@@ -195,7 +195,7 @@ default, this means `Nyaruko` may not faithfully encode files on MingW.
|
||||
|
||||
### Extra files
|
||||
|
||||
[deobfuscation.html](deobfuscation.html) - Contains full recording of how the code went from
|
||||
[obfuscation.html](obfuscation.html) - Contains full recording of how the code went from
|
||||
blank state to an obfuscated program, gzipped to fit under 1MB. Requires
|
||||
JavaScript.
|
||||
|
||||
|
||||
@@ -443,7 +443,7 @@ binary mode on <code>stdin</code> and <code>stdout</code>.</p>
|
||||
<p>We have no way to test the second version, sorry (tm Canada :-) )!</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>The judges have nothing to add that has not already been written about in the
|
||||
<a href="deobfuscation.html">deobfuscation.html</a> (requires JavaScript) file! :-)</p>
|
||||
<a href="obfuscation.html">obfuscation.html</a> (requires JavaScript) file! :-)</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="usage">Usage</h3>
|
||||
<p><code>Nyaruko</code> is a binary to text filter. Given some input on <code>stdin</code>,
|
||||
@@ -524,7 +524,7 @@ combinations:</p>
|
||||
<p>Note that on MingW, <code>stdin</code> and <code>stdout</code> are not opened in binary mode by
|
||||
default, this means <code>Nyaruko</code> may not faithfully encode files on MingW.</p>
|
||||
<h3 id="extra-files">Extra files</h3>
|
||||
<p><a href="deobfuscation.html">deobfuscation.html</a> - Contains full recording of how the code went from
|
||||
<p><a href="obfuscation.html">obfuscation.html</a> - Contains full recording of how the code went from
|
||||
blank state to an obfuscated program, gzipped to fit under 1MB. Requires
|
||||
JavaScript.</p>
|
||||
<!--
|
||||
@@ -559,7 +559,7 @@ JavaScript.</p>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.c">omoikane.c</a> - entry source code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.alt.sh">try.alt.sh</a> - script to try alternate code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.sh">try.sh</a> - script to try entry</li>
|
||||
<li><a href="deobfuscation.html">deobfuscation.html</a> - Deobfuscation information web page</li>
|
||||
<li><a href="obfuscation.html">obfuscation.html</a> - JavaScript page with full recording of development</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
|
||||
File renamed without changes.
@@ -39,7 +39,7 @@
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "author supplied debofuscation information"
|
||||
"entry_text" : "author supplied obfuscation information"
|
||||
},
|
||||
{
|
||||
"file_path" : "primes.pl",
|
||||
|
||||
+1
-1
@@ -383,7 +383,7 @@
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: 2012/tromp/how.md -->
|
||||
<h1 id="deobfuscation">Deobfuscation</h1>
|
||||
<h1 id="obfuscation">Obfuscation</h1>
|
||||
<p>The program implements a so called <a href="https://en.wikipedia.org/wiki/Krivine_machine">Krivine
|
||||
machine</a>, enhanced with a <a href="https://en.wikipedia.org/wiki/BIOS">basic
|
||||
input/output system</a> and a reference
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Deobfuscation
|
||||
# Obfuscation
|
||||
|
||||
The program implements a so called [Krivine
|
||||
machine](https://en.wikipedia.org/wiki/Krivine_machine), enhanced with a [basic
|
||||
|
||||
@@ -787,7 +787,7 @@ Higher Order Symbol. Comput. 20, 3 (September 2007), 199-207.
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/tromp.c">tromp.c</a> - entry source code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/tromp.orig.c">tromp.orig.c</a> - original source code</li>
|
||||
<li><a href="how.html">how.html</a> - author supplied debofuscation information</li>
|
||||
<li><a href="how.html">how.html</a> - author supplied obfuscation information</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/primes.pl">primes.pl</a> - post process entry output to print primes</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/try.sh">try.sh</a> - script to try entry</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/hw.bf">hw.bf</a> - hello world brainfuck source code</li>
|
||||
|
||||
@@ -106,7 +106,7 @@ and to satisfy IOCCC's size rule.
|
||||
|
||||
These led to the good obfuscation.
|
||||
|
||||
See the [deobfuscation section](#Deobfuscation) in detail, if you need.
|
||||
See the [obfuscation section](#obfuscation) in detail, if you need.
|
||||
|
||||
|
||||
### Limitation
|
||||
@@ -120,7 +120,7 @@ Also, it requires a space between identifiers. In short, use `(S K)` instead of
|
||||
Huge memory may be required to compile the program (about 300 MB on my machine).
|
||||
|
||||
In addition, there are some limitations (and workarounds) mentioned in
|
||||
the [deobfuscation section](#Deobfuscation).
|
||||
the [obfuscation section](#obfuscation).
|
||||
|
||||
But I think it would only matter when you run the attached programs.
|
||||
|
||||
@@ -156,7 +156,7 @@ run it as a standalone program, at least. In fact, tcc does not support the
|
||||
macro, but does work.
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Obfuscation
|
||||
|
||||
The whole program is interpreted by macro expansion.
|
||||
For example, `S (K I)` is translated to a normal C code, `(s)((k)(i))`, or
|
||||
|
||||
@@ -450,7 +450,7 @@ and to satisfy IOCCC’s size rule.</p>
|
||||
<li>Short coding.</li>
|
||||
</ul>
|
||||
<p>These led to the good obfuscation.</p>
|
||||
<p>See the <a href="#Deobfuscation">deobfuscation section</a> in detail, if you need.</p>
|
||||
<p>See the <a href="#obfuscation">obfuscation section</a> in detail, if you need.</p>
|
||||
<h3 id="limitation">Limitation</h3>
|
||||
<p>This program supports only “Combinator-calculus style notation” of Lazy K.
|
||||
“Unlambda style” and “Iota and Jot” style are not supported.</p>
|
||||
@@ -458,7 +458,7 @@ and to satisfy IOCCC’s size rule.</p>
|
||||
<code>(SK)</code>, “`sk”, <code>**i*i*i*ii*i*i*ii</code>, or <code>11111100011100</code>.</p>
|
||||
<p>Huge memory may be required to compile the program (about 300 MB on my machine).</p>
|
||||
<p>In addition, there are some limitations (and workarounds) mentioned in
|
||||
the <a href="#Deobfuscation">deobfuscation section</a>.</p>
|
||||
the <a href="#obfuscation">obfuscation section</a>.</p>
|
||||
<p>But I think it would only matter when you run the attached programs.</p>
|
||||
<h3 id="portability">Portability</h3>
|
||||
<p>I confirmed that the program successfully worked with the following compilers:</p>
|
||||
@@ -486,7 +486,7 @@ It is a gcc extension, and also supported by clang. If your compiler does not
|
||||
support it, you cannot use the program as a library. But you can compile and
|
||||
run it as a standalone program, at least. In fact, tcc does not support the
|
||||
macro, but does work.</p>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="obfuscation-1">Obfuscation</h3>
|
||||
<p>The whole program is interpreted by macro expansion.
|
||||
For example, <code>S (K I)</code> is translated to a normal C code, <code>(s)((k)(i))</code>, or
|
||||
simply <code>s(k(i))</code>.</p>
|
||||
|
||||
@@ -62,7 +62,7 @@ I believe that the JPEG encoder is the world's smallest ever.
|
||||
Nevertheless, the program was too big to meet the IOCCC's size rule. So I
|
||||
created a smaller bootstrap program that generates the main program. `endoh2.c`
|
||||
contains fragments of the main program *as a comment* which `iocccsize -i` does
|
||||
*not* count. I gratefully thank the judges for deobfuscating the size rule this
|
||||
*not* count. I gratefully thank the judges for spoiling the size rule this
|
||||
year.
|
||||
|
||||
I think the program will work on any major platforms and compilers.
|
||||
|
||||
@@ -441,7 +441,7 @@ I believe that the JPEG encoder is the world’s smallest ever.</p>
|
||||
<p>Nevertheless, the program was too big to meet the IOCCC’s size rule. So I
|
||||
created a smaller bootstrap program that generates the main program. <code>endoh2.c</code>
|
||||
contains fragments of the main program <em>as a comment</em> which <code>iocccsize -i</code> does
|
||||
<em>not</em> count. I gratefully thank the judges for deobfuscating the size rule this
|
||||
<em>not</em> count. I gratefully thank the judges for spoiling the size rule this
|
||||
year.</p>
|
||||
<p>I think the program will work on any major platforms and compilers.</p>
|
||||
<h3 id="legal">Legal</h3>
|
||||
|
||||
@@ -181,7 +181,7 @@ For the same reason, do not post a score that contains only `z1092`.
|
||||
You know, it is ["the famous song"](http://en.wikipedia.org/wiki/4%E2%80%B233%E2%80%B3).
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Spoiler
|
||||
|
||||
Here is a magical expression which I found by brute-force:
|
||||
|
||||
|
||||
@@ -516,7 +516,7 @@ such as <code>C2E2</code>.</p>
|
||||
But I do not attach it to protect you from W****r.</p>
|
||||
<p>For the same reason, do not post a score that contains only <code>z1092</code>.
|
||||
You know, it is <a href="http://en.wikipedia.org/wiki/4%E2%80%B233%E2%80%B3">“the famous song”</a>.</p>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="spoiler">Spoiler</h3>
|
||||
<p>Here is a magical expression which I found by brute-force:</p>
|
||||
<pre><code> (c % 32 + 5) * 9 / 5 % 13 + n / 32 * 12 - 22</code></pre>
|
||||
<p>Interestingly, it converts an ASCII number of ABC notes
|
||||
|
||||
+1
-1
@@ -192,7 +192,7 @@ quite memory consuming, requires IEEE754-compliant `double`, and assumes `int` t
|
||||
doesn't copy saved sessions across different endianness.
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Spoiler
|
||||
|
||||
```
|
||||
3225 3225 3225 9 9 3225 3225
|
||||
|
||||
+1
-1
@@ -538,7 +538,7 @@ quite memory consuming, requires IEEE754-compliant <code>double</code>, and assu
|
||||
<li>Though technically endian-dependent, <code>a.c</code> remains portable providing that one
|
||||
doesn’t copy saved sessions across different endianness.</li>
|
||||
</ul>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<h3 id="spoiler">Spoiler</h3>
|
||||
<pre><code> 3225 3225 3225 9 9 3225 3225
|
||||
1 1 1 1 1 1 1 1 1 1
|
||||
4225 1226 1 1 1 1 1222 1226
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
"entry_text" : "script to try entry"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.html",
|
||||
"file_path" : "obfuscation.html",
|
||||
"inventory_order" : 200,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "Deobfuscation information web page"
|
||||
"entry_text" : "JavaScript page with full recording of development"
|
||||
},
|
||||
{
|
||||
"file_path" : "2013_misaka.tar.bz2",
|
||||
|
||||
@@ -115,7 +115,7 @@ PROG= ${ENTRY}
|
||||
#
|
||||
OBJ= misaka.o misaka2.o misaka3.o misaka4.o misaka5.o \
|
||||
misaka6.o misaka7.o misaka8.o misaka9.o
|
||||
DATA= bf.pl deobfuscation.html
|
||||
DATA= bf.pl obfuscation.html
|
||||
TARGET= ${PROG} horizontal_cat vertical_cat long_cat loong_cat \
|
||||
loooong_cat loooooooong_cat long_fat_cat \
|
||||
long_faat_cat same_as_long_cat
|
||||
|
||||
@@ -263,7 +263,7 @@ needed for the program to work.
|
||||
|
||||
* [bf.pl](%%REPO_URL%%/2013/misaka/bf.pl) - a perl brainfuck interpreter, in case you don't have one
|
||||
handy.
|
||||
* [deobfuscation.html](deobfuscation.html) - making of this program.
|
||||
* [obfuscation.html](obfuscation.html) - making of this program.
|
||||
|
||||
|
||||
### About `Misaka`
|
||||
|
||||
@@ -562,7 +562,7 @@ needed for the program to work.</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/bf.pl">bf.pl</a> - a perl brainfuck interpreter, in case you don’t have one
|
||||
handy.</li>
|
||||
<li><a href="deobfuscation.html">deobfuscation.html</a> - making of this program.</li>
|
||||
<li><a href="obfuscation.html">obfuscation.html</a> - making of this program.</li>
|
||||
</ul>
|
||||
<h3 id="about-misaka">About <code>Misaka</code></h3>
|
||||
<p>The name, layout, and functionality of <code>Misaka</code> is inspired by a particular
|
||||
@@ -601,7 +601,7 @@ stackable figure:</p>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/misaka.orig.c">misaka.orig.c</a> - original source code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/bf.pl">bf.pl</a> - brainfuck interpreter in perl</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/try.sh">try.sh</a> - script to try entry</li>
|
||||
<li><a href="deobfuscation.html">deobfuscation.html</a> - Deobfuscation information web page</li>
|
||||
<li><a href="obfuscation.html">obfuscation.html</a> - JavaScript page with full recording of development</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
|
||||
File renamed without changes.
@@ -42,12 +42,12 @@
|
||||
"entry_text" : "Ruby Makefile"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.html",
|
||||
"file_path" : "quine-qr.html",
|
||||
"inventory_order" : 100,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "Deobfuscation information about Q(uine)R code generator"
|
||||
"entry_text" : "information about Q(uine)R code generator"
|
||||
},
|
||||
{
|
||||
"file_path" : "rake.sh",
|
||||
@@ -218,7 +218,7 @@
|
||||
"entry_text" : "markdown source for this web page"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.md",
|
||||
"file_path" : "quine-qr.md",
|
||||
"inventory_order" : 4000000000,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "markdown",
|
||||
|
||||
@@ -112,7 +112,7 @@ PROG= prog
|
||||
#
|
||||
OBJ= ${PROG}.o
|
||||
DATA= Rakefile alpha.rb assemble.rb ast-def.rb gen-prog.rb gen-table.rb link.rb \
|
||||
machine.rb main.c parse.rb prog-tmpl.c deobfuscation.md register.rb \
|
||||
machine.rb main.c parse.rb prog-tmpl.c quine-qr.md register.rb \
|
||||
serialize.rb src.rb tool.rb vm.c
|
||||
TARGET= ${PROG} main treacle
|
||||
#
|
||||
|
||||
@@ -62,9 +62,9 @@ more than 1000 words.
|
||||
You may want to use a large display with a very small terminal font.
|
||||
|
||||
|
||||
### Deobfuscation
|
||||
### Q(uine)R code generator
|
||||
|
||||
See [deobfuscation.html](deobfuscation.html).
|
||||
See [quine-qr.html](quine-qr.html).
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
@@ -432,8 +432,8 @@ more than 1000 words.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="remarks">Remarks</h3>
|
||||
<p>You may want to use a large display with a very small terminal font.</p>
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<p>See <a href="deobfuscation.html">deobfuscation.html</a>.</p>
|
||||
<h3 id="quiner-code-generator">Q(uine)R code generator</h3>
|
||||
<p>See <a href="quine-qr.html">quine-qr.html</a>.</p>
|
||||
<!--
|
||||
|
||||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||||
@@ -463,7 +463,7 @@ more than 1000 words.</p>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/prog.orig.c">prog.orig.c</a> - original source code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/Rakefile">Rakefile</a> - Ruby Makefile</li>
|
||||
<li><a href="deobfuscation.html">deobfuscation.html</a> - Deobfuscation information about Q(uine)R code generator</li>
|
||||
<li><a href="quine-qr.html">quine-qr.html</a> - information about Q(uine)R code generator</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/rake.sh">rake.sh</a> - make rake script</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/try.sh">try.sh</a> - script to try entry</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/alpha.rb">alpha.rb</a> - support program for Rakefile</li>
|
||||
@@ -485,10 +485,10 @@ more than 1000 words.</p>
|
||||
<ul>
|
||||
<li><a href="2014_endoh1.tar.bz2">2014_endoh1.tar.bz2</a> - download entry tarball</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/README.md">README.md</a> - markdown source for this web page</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/deobfuscation.md">deobfuscation.md</a> - markdown source for deobfuscation.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/.path">.path</a> - directory path from top level directory</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/endoh1/quine-qr.md">quine-qr.md</a> - markdown source for deobfuscation.html</li>
|
||||
<li><a href="index.html">index.html</a> - this web page</li>
|
||||
</ul>
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title>The International Obfuscated C Code Contest</title>
|
||||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||||
<meta name="description" content="deobfuscation.md for 2014/endoh1">
|
||||
<meta name="keywords" content="IOCCC, 2014/endoh1, deobfuscation.md">
|
||||
<meta name="description" content="quine-qr.md for 2014/endoh1">
|
||||
<meta name="keywords" content="IOCCC, 2014/endoh1, quine-qr.md">
|
||||
</head>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
@@ -26,13 +26,13 @@
|
||||
|
||||
<!-- -->
|
||||
<!-- This web page was formed via the tool: bin/gen-other-html.sh -->
|
||||
<!-- The content of main section of this web page came from: 2014/endoh1/deobfuscation.md -->
|
||||
<!-- The content of main section of this web page came from: 2014/endoh1/quine-qr.md -->
|
||||
<!-- -->
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2014/endoh1/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2014/endoh1/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2014/endoh1/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2014/endoh1/quine-qr.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2014/endoh1/quine-qr.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2014/endoh1/quine-qr.md !!! -->
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
|
||||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||||
@@ -363,7 +363,7 @@
|
||||
height=110>
|
||||
</a>
|
||||
<h1>The International Obfuscated C Code Contest</h1>
|
||||
<h2>deobfuscation.html for 2014/endoh1</h2>
|
||||
<h2>quine-qr.html for 2014/endoh1</h2>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/header.default.html -->
|
||||
@@ -371,7 +371,7 @@
|
||||
|
||||
<div class="navbar">
|
||||
<a class="Left" href="index.html">↑ jump to index.html ↑</a>
|
||||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2014%2Fendoh1%2Fdeobfuscation.html">✓</a>
|
||||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2014%2Fendoh1%2Fquine-qr.html">✓</a>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/navbar.up2index.html -->
|
||||
@@ -382,7 +382,7 @@
|
||||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: 2014/endoh1/deobfuscation.md -->
|
||||
<!-- BEFORE: 1st line of markdown file: 2014/endoh1/quine-qr.md -->
|
||||
<h1 id="quiner-code-generator">Q(uine)R code generator</h1>
|
||||
<h2 id="what-is-difficult">What is difficult?</h2>
|
||||
<p>As you may know, QR code (specification: ISO/IEC 18004) is quite complex. It
|
||||
@@ -533,7 +533,7 @@ but it appears to no longer exist.</p>
|
||||
https://creativecommons.org/licenses/by-sa/4.0/
|
||||
|
||||
-->
|
||||
<!-- AFTER: last line of markdown file: 2014/endoh1/deobfuscation.md -->
|
||||
<!-- AFTER: last line of markdown file: 2014/endoh1/quine-qr.md -->
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||||
@@ -593,7 +593,7 @@ but it appears to no longer exist.</p>
|
||||
|
||||
<div id="coda"><h3>Coda</h3>
|
||||
<p>
|
||||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2014%2Fendoh1%2Fdeobfuscation.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2014%2Fendoh1%2Fquine-qr.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a>
|
||||
</p>
|
||||
</div>
|
||||
File renamed without changes.
@@ -58,12 +58,12 @@
|
||||
"entry_text" : "script to try entry"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.html",
|
||||
"file_path" : "obfuscation.html",
|
||||
"inventory_order" : 200,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "Deobfuscation information web page"
|
||||
"entry_text" : "JavaScript page with full recording of development"
|
||||
},
|
||||
{
|
||||
"file_path" : "2014_sinon.tar.bz2",
|
||||
|
||||
@@ -112,7 +112,7 @@ that there are no files named "run" and "run.c" in current directory
|
||||
|
||||
File size and CRC32 of [prog.c](%%REPO_URL%%/2014/sinon/prog.c) are embedded in line 7.
|
||||
|
||||
Process for making `Sinon` is included in [deobfuscation.html](deobfuscation.html).
|
||||
Process for making `Sinon` is included in [obfuscation.html](obfuscation.html).
|
||||
|
||||
Layout of this code is based on Asada Shino, also known as "`Sinon`",
|
||||
from Sword Art Online.
|
||||
|
||||
@@ -474,7 +474,7 @@ that there are no files named “run” and “run.c” in current directory
|
||||
(they will be overwritten) and run:</p>
|
||||
<pre><code> perl prog.c | bash</code></pre>
|
||||
<p>File size and CRC32 of <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/sinon/prog.c">prog.c</a> are embedded in line 7.</p>
|
||||
<p>Process for making <code>Sinon</code> is included in <a href="deobfuscation.html">deobfuscation.html</a>.</p>
|
||||
<p>Process for making <code>Sinon</code> is included in <a href="obfuscation.html">obfuscation.html</a>.</p>
|
||||
<p>Layout of this code is based on Asada Shino, also known as “<code>Sinon</code>”,
|
||||
from Sword Art Online.</p>
|
||||
<!--
|
||||
@@ -508,7 +508,7 @@ from Sword Art Online.</p>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/sinon/glock.sh">glock.sh</a> - script to run entry</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/sinon/hecate.sh">hecate.sh</a> - script to run entry</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/sinon/try.sh">try.sh</a> - script to try entry</li>
|
||||
<li><a href="deobfuscation.html">deobfuscation.html</a> - Deobfuscation information web page</li>
|
||||
<li><a href="obfuscation.html">obfuscation.html</a> - JavaScript page with full recording of development</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
|
||||
File renamed without changes.
+1
-1
@@ -46,7 +46,7 @@ one of the all time best IOCCC entries from 1984.
|
||||
We also suggest that you take a very good look at how the
|
||||
[muth](muth/index.html) code makes full use of the C Pre-Processor.
|
||||
|
||||
...We'll stop spouting deobfuscation information now. Have fun exploring all the entries!
|
||||
...We'll stop spouting spoilers now. Have fun exploring all the entries!
|
||||
|
||||
|
||||
## Remarks on some of submissions that did not win
|
||||
|
||||
@@ -106,12 +106,12 @@
|
||||
"entry_text" : "test suite comparison data for 32-bit systems"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.html",
|
||||
"file_path" : "obfuscation.html",
|
||||
"inventory_order" : 200,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "Deobfuscation information web page"
|
||||
"entry_text" : "obfuscation information web page"
|
||||
},
|
||||
{
|
||||
"file_path" : "src.doc.txt",
|
||||
@@ -162,12 +162,12 @@
|
||||
"entry_text" : "markdown source for this web page"
|
||||
},
|
||||
{
|
||||
"file_path" : "deobfuscation.md",
|
||||
"file_path" : "obfuscation.md",
|
||||
"inventory_order" : 4000000000,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "markdown",
|
||||
"display_via_github" : true,
|
||||
"entry_text" : "markdown source for deobfuscation.html"
|
||||
"entry_text" : "markdown source for obfuscation.html"
|
||||
},
|
||||
{
|
||||
"file_path" : "road.to.obscurity.md",
|
||||
|
||||
@@ -228,9 +228,9 @@ This allows for a convenient test suite:
|
||||
```
|
||||
|
||||
|
||||
### Deobfuscation:
|
||||
### Obfuscation:
|
||||
|
||||
If you do not want to puzzle out how it works, see [deobfuscation.html](deobfuscation.html).
|
||||
If you do not want to puzzle out how it works, see [obfuscation.html](obfuscation.html).
|
||||
|
||||
<!--
|
||||
|
||||
|
||||
@@ -528,8 +528,8 @@ To stifle these complaints:</p>
|
||||
This allows for a convenient test suite:</p>
|
||||
<pre><code> ln -sf prog eprog
|
||||
PATH=. eprog < test.in | diff - test.out</code></pre>
|
||||
<h3 id="deobfuscation">Deobfuscation:</h3>
|
||||
<p>If you do not want to puzzle out how it works, see <a href="deobfuscation.html">deobfuscation.html</a>.</p>
|
||||
<h3 id="obfuscation">Obfuscation:</h3>
|
||||
<p>If you do not want to puzzle out how it works, see <a href="obfuscation.html">obfuscation.html</a>.</p>
|
||||
<!--
|
||||
|
||||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||||
@@ -567,16 +567,16 @@ This allows for a convenient test suite:</p>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/test32.out">test32.out</a> - test suite comparison data for 32-bit systems</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/test.in">test.in</a> - test suite input data</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/test.out">test.out</a> - test suite comparison data</li>
|
||||
<li><a href="deobfuscation.html">deobfuscation.html</a> - Deobfuscation information web page</li>
|
||||
<li><a href="obfuscation.html">obfuscation.html</a> - obfuscation information web page</li>
|
||||
<li><a href="src.doc.txt">src.doc.txt</a> - hints about the source code</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="2015_burton.tar.bz2">2015_burton.tar.bz2</a> - download entry tarball</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/README.md">README.md</a> - markdown source for this web page</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/deobfuscation.md">deobfuscation.md</a> - markdown source for deobfuscation.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/obfuscation.md">obfuscation.md</a> - markdown source for obfuscation.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/.path">.path</a> - directory path from top level directory</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/road.to.obscurity.md">road.to.obscurity.md</a> - markdown source for road.to.obscurity.html</li>
|
||||
<li><a href="index.html">index.html</a> - this web page</li>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title>The International Obfuscated C Code Contest</title>
|
||||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||||
<meta name="description" content="deobfuscation.md for 2015/burton">
|
||||
<meta name="keywords" content="IOCCC, 2015/burton, deobfuscation.md">
|
||||
<meta name="description" content="obfuscation.md for 2015/burton">
|
||||
<meta name="keywords" content="IOCCC, 2015/burton, obfuscation.md">
|
||||
</head>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
@@ -26,13 +26,13 @@
|
||||
|
||||
<!-- -->
|
||||
<!-- This web page was formed via the tool: bin/gen-other-html.sh -->
|
||||
<!-- The content of main section of this web page came from: 2015/burton/deobfuscation.md -->
|
||||
<!-- The content of main section of this web page came from: 2015/burton/obfuscation.md -->
|
||||
<!-- -->
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/deobfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/obfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/obfuscation.md !!! -->
|
||||
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/obfuscation.md !!! -->
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
|
||||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||||
@@ -363,7 +363,7 @@
|
||||
height=110>
|
||||
</a>
|
||||
<h1>The International Obfuscated C Code Contest</h1>
|
||||
<h2>deobfuscation.html for 2015/burton</h2>
|
||||
<h2>obfuscation.html for 2015/burton</h2>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/header.default.html -->
|
||||
@@ -371,7 +371,7 @@
|
||||
|
||||
<div class="navbar">
|
||||
<a class="Left" href="index.html">↑ jump to index.html ↑</a>
|
||||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2015%2Fburton%2Fdeobfuscation.html">✓</a>
|
||||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2015%2Fburton%2Fobfuscation.html">✓</a>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/navbar.up2index.html -->
|
||||
@@ -382,7 +382,7 @@
|
||||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: 2015/burton/deobfuscation.md -->
|
||||
<!-- BEFORE: 1st line of markdown file: 2015/burton/obfuscation.md -->
|
||||
<h3 id="deobfuscation">Deobfuscation</h3>
|
||||
<p><code>calc</code> is a recursive-descent parser. It allocates from the stack deep enough
|
||||
that all expressions are exhausted before the recursion stack depth reaches the
|
||||
@@ -428,7 +428,7 @@ obfuscation, and remarkably effective.</p>
|
||||
https://creativecommons.org/licenses/by-sa/4.0/
|
||||
|
||||
-->
|
||||
<!-- AFTER: last line of markdown file: 2015/burton/deobfuscation.md -->
|
||||
<!-- AFTER: last line of markdown file: 2015/burton/obfuscation.md -->
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||||
@@ -488,7 +488,7 @@ obfuscation, and remarkably effective.</p>
|
||||
|
||||
<div id="coda"><h3>Coda</h3>
|
||||
<p>
|
||||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2015%2Fburton%2Fdeobfuscation.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2015%2Fburton%2Fobfuscation.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a>
|
||||
</p>
|
||||
</div>
|
||||
File renamed without changes.
Loaded 100 of 193 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user